diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index fcf5fd48e2..c46942d0c2 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -1452,7 +1452,7 @@ components:
format: int64
type: integer
PageSize:
- description: Size for a given page. The maximum allowed value is 100.
+ description: Number of items to return per page. The maximum allowed value is 100.
in: query
name: page[size]
required: false
@@ -7702,7 +7702,7 @@ components:
description: An arbitrary object value with additional properties.
type: object
AnyValueString:
- description: A scalar string value.
+ description: A scalar value represented as a string.
type: string
ApiID:
description: API identifier.
diff --git a/datadog_api_client/__init__.py b/datadog_api_client/__init__.py
new file mode 100644
index 0000000000..4a6b58de3f
--- /dev/null
+++ b/datadog_api_client/__init__.py
@@ -0,0 +1,9 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+from datadog_api_client.api_client import ApiClient, AsyncApiClient, ThreadedApiClient
+from datadog_api_client.configuration import Configuration
+
+
+__all__ = ["ApiClient", "AsyncApiClient", "ThreadedApiClient", "Configuration"]
\ No newline at end of file
diff --git a/datadog_api_client/api_client.py b/datadog_api_client/api_client.py
new file mode 100644
index 0000000000..5cad79d1a7
--- /dev/null
+++ b/datadog_api_client/api_client.py
@@ -0,0 +1,915 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+import json
+import atexit
+import mimetypes
+import warnings
+import multiprocessing
+from multiprocessing.pool import ThreadPool
+import io
+import os
+import re
+from typing import Any, Dict, Optional, List, Tuple, Union
+from typing_extensions import Self
+from urllib.parse import quote
+from urllib3.fields import RequestField # type: ignore
+
+
+from datadog_api_client import rest
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.exceptions import ApiTypeError, ApiValueError
+from datadog_api_client.model_utils import (
+ check_allowed_values,
+ check_validations,
+ deserialize_file,
+ file_type,
+ data_to_dict,
+ get_file_data_and_close_file,
+ validate_and_convert_types,
+ get_attribute_from_path,
+ set_attribute_from_path,
+)
+
+
+class ApiClient:
+ """Generic API client for OpenAPI client library builds.
+
+ OpenAPI generic API client. This client handles the client-
+ server communication, and is invariant across implementations. Specifics of
+ the methods and models for each application are generated from the OpenAPI
+ templates.
+
+ :param configuration: Configuration object for this client
+ :param header_name: A header to pass when making calls to the API.
+ :param header_value: A header value to pass when making calls to
+ the API.
+ """
+
+ def __init__(self, configuration: Configuration):
+ self.configuration = configuration
+
+ self.rest_client = self._build_rest_client()
+ self.default_headers = {}
+ if self.configuration.compress:
+ self.default_headers["Accept-Encoding"] = "gzip"
+ # Set default User-Agent.
+ self.user_agent = user_agent()
+
+ # Initialize delegated token config if delegated auth is configured
+ self._delegated_token_config = None
+ if (self.configuration.delegated_auth_provider is not None and
+ self.configuration.delegated_auth_org_uuid is not None):
+ from datadog_api_client.delegated_auth import DelegatedTokenConfig
+ self._delegated_token_config = DelegatedTokenConfig(
+ org_uuid=self.configuration.delegated_auth_org_uuid,
+ provider="aws",
+ provider_auth=self.configuration.delegated_auth_provider,
+ )
+
+ def __enter__(self) -> Self:
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback) -> None:
+ self.close()
+
+ def close(self) -> None:
+ self.rest_client.pool_manager.clear()
+
+ def _build_rest_client(self):
+ return rest.RESTClientObject(self.configuration)
+
+ @property
+ def user_agent(self) -> str:
+ """User agent for this API client"""
+ return self.default_headers["User-Agent"]
+
+ @user_agent.setter
+ def user_agent(self, value: str) -> None:
+ self.default_headers["User-Agent"] = value
+
+ def set_default_header(self, header_name: str, header_value: str) -> None:
+ self.default_headers[header_name] = header_value
+
+ def _call_api(
+ self,
+ method: str,
+ url: str,
+ query_params: Optional[List[Tuple[str, Any]]] = None,
+ header_params: Optional[Dict[str, Any]] = None,
+ body: Optional[Any] = None,
+ post_params: Optional[List[Tuple[str, Any]]] = None,
+ response_type: Optional[Tuple[Any]] = None,
+ return_http_data_only: Optional[bool] = None,
+ preload_content: bool = True,
+ request_timeout: Optional[Union[int, float, Tuple[Union[int, float], Union[int, float]]]] = None,
+ check_type: Optional[bool] = None,
+ ):
+ # perform request and return response
+ response = self.rest_client.request(
+ method,
+ url,
+ query_params=query_params,
+ headers=header_params,
+ post_params=post_params,
+ body=body,
+ preload_content=preload_content,
+ request_timeout=request_timeout,
+ )
+
+ if not preload_content:
+ return response
+
+ # deserialize response data
+ if response_type:
+ if response_type == (file_type,):
+ content_disposition = response.headers.get("Content-Disposition")
+ return_data = deserialize_file(
+ response.data, self.configuration.temp_folder_path, content_disposition=content_disposition
+ )
+ else:
+ encoding = "utf-8"
+ content_type = response.headers.get("Content-Type")
+ if content_type is not None:
+ match = re.search(r"charset=([a-zA-Z\-\d]+)[\s\;]?", content_type)
+ if match:
+ encoding = match.group(1)
+ response_data = response.data.decode(encoding)
+
+ return_data = self.deserialize(response_data, response_type, check_type)
+ else:
+ return_data = None
+
+ if return_http_data_only:
+ return return_data
+ return (return_data, response.status, dict(response.headers))
+
+ def parameters_to_multipart(self, params):
+ """Get parameters as list of tuples, formatting as json if value is dict.
+
+ :param params: Parameters as list of two-tuples.
+
+ :return: Parameters as list of tuple or urllib3.fields.RequestField
+ """
+ new_params = []
+ for k, v in params.items() if isinstance(params, dict) else params:
+ if isinstance(v, dict): # v is instance of collection_type, formatting as application/json
+ v = json.dumps(v, ensure_ascii=False).encode("utf-8")
+ field = RequestField(k, v)
+ field.make_multipart(content_type="application/json; charset=utf-8")
+ new_params.append(field)
+ else:
+ new_params.append((k, v))
+ return new_params
+
+ def deserialize(self, response_data: str, response_type: Any, check_type: Optional[bool]):
+ """Deserializes response into an object.
+
+ :param response_data: Response data to be deserialized.
+ :param response_type: For the response, a tuple containing:
+ valid classes
+ a list containing valid classes (for list schemas)
+ a dict containing a tuple of valid classes as the value
+ Example values:
+ (str,)
+ (Pet,)
+ (float, none_type)
+ ([int, none_type],)
+ ({str: (bool, str, int, float, date, datetime, str, none_type)},)
+ :param check_type: boolean, whether to check the types of the data
+ received from the server
+ :type check_type: bool
+
+ :return: deserialized object.
+ """
+ # fetch data from response object
+ try:
+ received_data = json.loads(response_data)
+ except ValueError:
+ received_data = response_data
+
+ # store our data under the key of 'received_data' so users have some
+ # context if they are deserializing a string and the data type is wrong
+ deserialized_data = validate_and_convert_types(
+ received_data, response_type, ["received_data"], True, check_type,
+ configuration=self.configuration,
+ )
+ return deserialized_data
+
+ def call_api(
+ self,
+ resource_path: str,
+ method: str,
+ path_params: Optional[Dict[str, Any]] = None,
+ query_params: Optional[List[Tuple[str, Any]]] = None,
+ header_params: Optional[Dict[str, Any]] = None,
+ body: Optional[Any] = None,
+ post_params: Optional[List[Tuple[str, Any]]] = None,
+ files: Optional[Dict[str, List[io.FileIO]]] = None,
+ response_type: Optional[Tuple[Any]] = None,
+ return_http_data_only: Optional[bool] = None,
+ collection_formats: Optional[Dict[str, str]] = None,
+ preload_content: bool = True,
+ request_timeout: Optional[Union[int, float, Tuple[Union[int, float], Union[int, float]]]] = None,
+ host: Optional[str] = None,
+ check_type: Optional[bool] = None,
+ ):
+ """Makes the HTTP request (synchronous) and returns deserialized data.
+
+ :param resource_path: Path to method endpoint.
+ :param method: Method to call.
+ :param path_params: Path parameters in the url.
+ :param query_params: Query parameters in the url.
+ :param header_params: Header parameters to be
+ placed in the request header.
+ :param body: Request body.
+ :param post_params dict: Request post form parameters,
+ for `application/x-www-form-urlencoded`, `multipart/form-data`.
+ :param response_type: For the response, a tuple containing:
+ valid classes
+ a list containing valid classes (for list schemas)
+ a dict containing a tuple of valid classes as the value
+ Example values:
+ (str,)
+ (Pet,)
+ (float, none_type)
+ ([int, none_type],)
+ ({str: (bool, str, int, float, date, datetime, str, none_type)},)
+ :param files: key -> field name, value -> a list of open file
+ objects for `multipart/form-data`.
+ :type files: dict
+ :param return_http_data_only: response data without head status code
+ and headers
+ :type return_http_data_only: bool, optional
+ :param collection_formats: dict of collection formats for path, query,
+ header, and post parameters.
+ :type collection_formats: dict, optional
+ :param preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :type preload_content: bool, optional
+ :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.
+ :param check_type: boolean describing if the data back from the server
+ should have its type checked.
+ :type check_type: bool, optional
+ :return: the HTTP response.
+ """
+ # header parameters
+ header_params = header_params or {}
+ header_params.update(self.default_headers)
+ if header_params:
+ header_params = data_to_dict(header_params)
+ header_params = dict(self.parameters_to_tuples(header_params, collection_formats))
+
+ # path parameters
+ if path_params:
+ path_params = data_to_dict(path_params)
+ for k, v in self.parameters_to_tuples(path_params, collection_formats):
+ # specified safe chars, encode everything
+ resource_path = resource_path.replace(
+ f"{{{k}}}", quote(str(v), safe=self.configuration.safe_chars_for_path_param)
+ )
+
+ # query parameters
+ if query_params:
+ query_params = data_to_dict(query_params)
+ query_params = self.parameters_to_tuples(query_params, collection_formats)
+
+ # post parameters
+ if post_params or files:
+ post_params = post_params or []
+ post_params = data_to_dict(post_params)
+ post_params = self.parameters_to_tuples(post_params, collection_formats)
+ post_params.extend(self.files_parameters(files))
+ if header_params["Content-Type"].startswith("multipart"):
+ post_params = self.parameters_to_multipart(post_params)
+
+ # body
+ if body:
+ body = data_to_dict(body)
+
+ # request url
+ if host is None:
+ url = self.configuration.host + resource_path
+ else:
+ # use server/host defined in path or operation instead
+ url = host + resource_path
+
+ return self._call_api(
+ method,
+ url,
+ query_params,
+ header_params,
+ body,
+ post_params,
+ response_type,
+ return_http_data_only,
+ preload_content,
+ request_timeout,
+ check_type,
+ )
+
+ def call_api_paginated(
+ self,
+ resource_path: str,
+ method: str,
+ pagination: dict,
+ response_type: Optional[Tuple[Any]] = None,
+ request_timeout: Optional[Union[int, float, Tuple[Union[int, float], Union[int, float]]]] = None,
+ host: Optional[str] = None,
+ check_type: Optional[bool] = None,
+ ):
+ if "page_param" in pagination:
+ page_start = pagination.get("page_start", 0)
+ set_attribute_from_path(
+ pagination["kwargs"],
+ pagination["page_param"],
+ page_start,
+ pagination["endpoint"].params_map,
+ )
+ params = pagination["endpoint"].gather_params(pagination["kwargs"])
+ while True:
+ response = self.call_api(
+ resource_path,
+ method,
+ params["path"],
+ params["query"],
+ params["header"],
+ body=params["body"],
+ post_params=params["form"],
+ files=params["file"],
+ response_type=response_type,
+ check_type=check_type,
+ return_http_data_only=True,
+ preload_content=True,
+ request_timeout=request_timeout,
+ host=host,
+ collection_formats=params["collection_format"],
+ )
+ results = get_attribute_from_path(response, pagination.get("results_path"))
+ for item in results:
+ yield item
+ if "cursor_param" in pagination:
+ if len(results) == 0 or not get_attribute_from_path(response, pagination["cursor_path"], default=""):
+ break
+ elif len(results) < pagination["limit_value"]:
+ break
+
+ params = self._update_paginated_params(pagination, response)
+
+ def _update_paginated_params(self, pagination, response):
+ if "page_offset_param" in pagination:
+ set_attribute_from_path(
+ pagination["kwargs"],
+ pagination["page_offset_param"],
+ get_attribute_from_path(pagination["kwargs"], pagination["page_offset_param"], 0)
+ + pagination["limit_value"],
+ pagination["endpoint"].params_map,
+ )
+ elif "page_param" in pagination:
+ page_start = pagination.get("page_start", 0)
+ set_attribute_from_path(
+ pagination["kwargs"],
+ pagination["page_param"],
+ get_attribute_from_path(pagination["kwargs"], pagination["page_param"], page_start) + 1,
+ pagination["endpoint"].params_map,
+ )
+ else:
+ set_attribute_from_path(
+ pagination["kwargs"],
+ pagination["cursor_param"],
+ get_attribute_from_path(response, pagination["cursor_path"]),
+ pagination["endpoint"].params_map,
+ )
+
+ return pagination["endpoint"].gather_params(pagination["kwargs"])
+
+ def parameters_to_tuples(self, params, collection_formats) -> List[Tuple[str, Any]]:
+ """Get parameters as list of tuples, formatting collections.
+
+ :param params: Parameters as dict or list of two-tuples
+ :param dict collection_formats: Parameter collection formats
+ :return: Parameters as list of tuples, collections formatted
+ """
+ new_params: List[Tuple[str, str]] = []
+ if collection_formats is None:
+ collection_formats = {}
+ for k, v in params.items() if isinstance(params, dict) else params:
+ if k in collection_formats:
+ collection_format = collection_formats[k]
+ if collection_format == "multi":
+ new_params.extend((k, value) for value in v)
+ else:
+ if collection_format == "ssv":
+ delimiter = " "
+ elif collection_format == "tsv":
+ delimiter = "\t"
+ elif collection_format == "pipes":
+ delimiter = "|"
+ else: # csv is the default
+ delimiter = ","
+ new_params.append((k, delimiter.join(str(value) for value in v)))
+ else:
+ if isinstance(v, bool):
+ v = json.dumps(v)
+ new_params.append((k, v))
+ return new_params
+
+ def files_parameters(self, files: Optional[Dict[str, List[io.FileIO]]] = None):
+ """Builds form parameters.
+
+ :param files: None or a dict with key=param_name and
+ value is a list of open file objects
+ :return: List of tuples of form parameters with file data
+ """
+ if files is None:
+ return []
+
+ params = []
+ for param_name, file_instances in files.items():
+ if file_instances is None:
+ # if the file field is nullable, skip None values
+ continue
+ for file_instance in file_instances:
+ if file_instance is None:
+ # if the file field is nullable, skip None values
+ continue
+ if file_instance.closed is True:
+ raise ApiValueError(
+ "Cannot read a closed file. The passed in file_type " "for %s must be open." % param_name
+ )
+ filename = os.path.basename(str(file_instance.name))
+ filedata = get_file_data_and_close_file(file_instance)
+ mimetype = mimetypes.guess_type(filename)[0] or "application/octet-stream"
+ params.append(tuple([param_name, tuple([filename, filedata, mimetype])]))
+
+ return params
+
+ def select_header_accept(self, accepts: List[str]) -> str:
+ """Returns `Accept` based on an array of accepts provided.
+
+ :param accepts: List of headers.
+ :return: Accept (e.g. application/json).
+ """
+ return ", ".join(accepts)
+
+ def select_header_content_type(self, content_types: List[str]) -> str:
+ """Returns `Content-Type` based on an array of content_types provided.
+
+ :param content_types: List of content-types.
+ :return: Content-Type (e.g. application/json).
+ """
+ if not content_types:
+ return "application/json"
+
+ content_types = [x.lower() for x in content_types]
+
+ if "application/json" in content_types or "*/*" in content_types:
+ return "application/json"
+ return content_types[0]
+
+ def use_delegated_token_auth(self, headers: Dict[str, Any]) -> None:
+ """Use delegated token authentication if configured.
+
+ :param headers: Header parameters dict to be updated.
+ :raises: ApiValueError if delegated token authentication fails
+ """
+ # Skip if no delegated token config
+ if self._delegated_token_config is None:
+ return
+
+ # Check if we need to get or refresh the token
+ if (self.configuration._delegated_token_credentials is None or
+ self.configuration._delegated_token_credentials.is_expired()):
+
+ # Get new token from provider, passing the API configuration
+ try:
+ self.configuration._delegated_token_credentials = self.configuration.delegated_auth_provider.authenticate(
+ self._delegated_token_config, self.configuration
+ )
+ except Exception as e:
+ raise ApiValueError(f"Failed to get delegated token: {str(e)}")
+
+ # Set the Authorization header with the delegated token
+ token = self.configuration._delegated_token_credentials.delegated_token
+ headers["Authorization"] = f"Bearer {token}"
+
+
+class ThreadedApiClient(ApiClient):
+
+ _pool = None
+
+ def __init__(self, configuration: Configuration, pool_threads: int = 1):
+ self.pool_threads = pool_threads
+ self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
+ super().__init__(configuration)
+
+ def _build_rest_client(self):
+ return rest.RESTClientObject(self.configuration, maxsize=self.connection_pool_maxsize)
+
+ def close(self) -> None:
+ self.rest_client.pool_manager.clear()
+ if self._pool:
+ self._pool.close()
+ self._pool.join()
+ self._pool = None
+ if hasattr(atexit, "unregister"):
+ atexit.unregister(self.close)
+
+ @property
+ def pool(self) -> ThreadPool:
+ """Create thread pool on first request
+ avoids instantiating unused threadpool for blocking clients.
+ """
+ if self._pool is None:
+ atexit.register(self.close)
+ self._pool = ThreadPool(self.pool_threads)
+ return self._pool
+
+ def _call_api(
+ self,
+ method: str,
+ url: str,
+ query_params: Optional[List[Tuple[str, Any]]] = None,
+ header_params: Optional[Dict[str, Any]] = None,
+ body: Optional[Any] = None,
+ post_params: Optional[List[Tuple[str, Any]]] = None,
+ response_type: Optional[Tuple[Any]] = None,
+ return_http_data_only: Optional[bool] = None,
+ preload_content: bool = True,
+ request_timeout: Optional[Union[int, float, Tuple]] = None,
+ check_type: Optional[bool] = None,
+ ):
+ return self.pool.apply_async(
+ super()._call_api,
+ (
+ method,
+ url,
+ query_params,
+ header_params,
+ body,
+ post_params,
+ response_type,
+ return_http_data_only,
+ preload_content,
+ request_timeout,
+ check_type,
+ ),
+ )
+
+
+class AsyncApiClient(ApiClient):
+ def _build_rest_client(self):
+ return rest.AsyncRESTClientObject(self.configuration)
+
+ async def __aenter__(self) -> Self:
+ return self
+
+ async def __aexit__(self, exc_type, exc, tb):
+ if exc:
+ raise exc
+ await self.rest_client._client.__aexit__(exc_type, exc, tb)
+
+ def close(self):
+ self.rest_client.close()
+
+ async def _call_api(
+ self,
+ method: str,
+ url: str,
+ query_params: Optional[List[Tuple[str, Any]]] = None,
+ header_params: Optional[Dict[str, Any]] = None,
+ body: Optional[Any] = None,
+ post_params: Optional[List[Tuple[str, Any]]] = None,
+ response_type: Optional[Tuple[Any]] = None,
+ return_http_data_only: Optional[bool] = None,
+ preload_content: bool = True,
+ request_timeout: Optional[Union[int, float, Tuple[Union[int, float], Union[int, float]]]] = None,
+ check_type: Optional[bool] = None,
+ ):
+
+ # perform request and return response
+ response = await self.rest_client.request(
+ method,
+ url,
+ query_params=query_params,
+ headers=header_params,
+ post_params=post_params,
+ body=body,
+ preload_content=preload_content,
+ request_timeout=request_timeout,
+ )
+
+ if not preload_content:
+ return response
+
+ # deserialize response data
+ if response_type:
+ if response_type == (file_type,):
+ content_disposition = response.headers.get("Content-Disposition")
+ response_data = await response.content()
+ return_data = deserialize_file(
+ response_data, self.configuration.temp_folder_path, content_disposition=content_disposition
+ )
+ else:
+ response_data = await response.text()
+
+ return_data = self.deserialize(response_data, response_type, check_type)
+ else:
+ return_data = None
+
+ if return_http_data_only:
+ return return_data
+ return (return_data, response.status_code, response.headers)
+
+ async def call_api_paginated(
+ self,
+ resource_path: str,
+ method: str,
+ pagination: dict,
+ response_type: Optional[Tuple[Any]] = None,
+ request_timeout: Optional[Union[int, float, Tuple[Union[int, float], Union[int, float]]]] = None,
+ host: Optional[str] = None,
+ check_type: Optional[bool] = None,
+ ):
+ params = pagination["endpoint"].gather_params(pagination["kwargs"])
+ while True:
+ response = await self.call_api(
+ resource_path,
+ method,
+ params["path"],
+ params["query"],
+ params["header"],
+ body=params["body"],
+ post_params=params["form"],
+ files=params["file"],
+ response_type=response_type,
+ check_type=check_type,
+ return_http_data_only=True,
+ preload_content=True,
+ request_timeout=request_timeout,
+ host=host,
+ collection_formats=params["collection_format"],
+ )
+ results = get_attribute_from_path(response, pagination.get("results_path"))
+ for item in results:
+ yield item
+ if "cursor_param" in pagination:
+ if len(results) == 0 or not get_attribute_from_path(response, pagination["cursor_path"], default=""):
+ break
+ elif len(results) < pagination["limit_value"]:
+ break
+
+ params = self._update_paginated_params(pagination, response)
+
+
+class Endpoint:
+ def __init__(
+ self,
+ settings: Dict[str, Any],
+ params_map: Dict[str, Dict[str, Any]],
+ headers_map: Dict[str, List[str]],
+ api_client: ApiClient,
+ ):
+ """Creates an endpoint.
+
+ :param settings: See below key value pairs:
+ 'response_type' (tuple/None): response type
+ 'auth' (list): a list of auth type keys
+ 'endpoint_path' (str): the endpoint path
+ 'operation_id' (str): endpoint string identifier
+ 'http_method' (str): POST/PUT/PATCH/GET etc
+ 'servers' (list): list of str servers that this endpoint is at
+ 'version' (str): the API version
+ :type settings: dict
+ :param params_map: See below key value pairs:
+ 'required' (bool): whether the parameter is required
+ 'nullable' (bool): whether the parameter is nullable
+ 'validations' (dict): the validations dictionaries
+ 'allowed_values' (dict): the allowed values (enum) dictionaries
+ 'openapi_types' (dict): param_name to openapi type
+ 'attribute' (str): camelCase name
+ 'location' (str): 'body', 'file', 'form', 'header', 'path', 'query'
+ 'collection_format' (str): `csv` etc.
+ :type params_map: dict
+ :param headers_map: See below key value pairs:
+ 'accept' (list): list of Accept header strings
+ 'content_type' (list): list of Content-Type header strings
+ :type headers_map: dict
+ :param api_client API client instance.
+ :type api_client: ApiClient
+ """
+ self.settings = settings
+ self.params_map = params_map
+ self.headers_map = headers_map
+ self.api_client = api_client
+
+ def _validate_inputs(self, kwargs):
+ for param in kwargs:
+ param_map = self.params_map[param]
+ allowed_values = param_map.get("allowed_values")
+ if allowed_values:
+ check_allowed_values(list(allowed_values.values()), param, kwargs[param])
+
+ validations = param_map.get("validation")
+ if validations:
+ check_validations(validations, param, kwargs[param], configuration=self.api_client.configuration)
+
+ if not self.api_client.configuration.check_input_type:
+ return
+
+ for key, value in kwargs.items():
+ fixed_val = validate_and_convert_types(
+ value,
+ self.params_map[key]["openapi_types"],
+ [key],
+ self.api_client.configuration.spec_property_naming,
+ self.api_client.configuration.check_input_type,
+ configuration=self.api_client.configuration,
+ )
+ kwargs[key] = fixed_val
+
+ def gather_params(self, kwargs):
+ params = {"body": None, "collection_format": {}, "file": {}, "form": [], "header": {}, "path": {}, "query": []}
+
+ for param_name, param_value in kwargs.items():
+ param_map = self.params_map[param_name]
+ param_location = param_map.get("location")
+ if param_location is None:
+ continue
+ if param_location:
+ if param_location == "body":
+ params["body"] = param_value
+ continue
+ base_name = param_map["attribute"]
+ openapi_types = param_map["openapi_types"]
+ if param_location == "form" and openapi_types == (file_type,):
+ params["file"][param_name] = [param_value]
+ elif param_location == "form" and openapi_types == ([file_type],):
+ # param_value is already a list
+ params["file"][param_name] = param_value
+ elif param_location in {"form", "query"}:
+ param_value_full = (base_name, param_value)
+ params[param_location].append(param_value_full)
+ if param_location not in {"form", "query"}:
+ params[param_location][base_name] = param_value
+ collection_format = param_map.get("collection_format")
+ if collection_format:
+ params["collection_format"][base_name] = collection_format
+
+ accept_headers_list = self.headers_map["accept"]
+ if accept_headers_list:
+ params["header"]["Accept"] = self.api_client.select_header_accept(accept_headers_list)
+
+ content_type_headers_list = self.headers_map.get("content_type")
+ if content_type_headers_list:
+ header_list = self.api_client.select_header_content_type(content_type_headers_list)
+ params["header"]["Content-Type"] = header_list
+
+ self.update_params_for_auth(params["header"], params["query"])
+
+ return params
+
+ def _validate_and_get_host(self, kwargs):
+ is_unstable = self.api_client.configuration.unstable_operations.get(
+ "{}.{}".format(self.settings["version"], self.settings["operation_id"])
+ )
+ if is_unstable:
+ warnings.warn("Using unstable operation '{0}'".format(self.settings["operation_id"]))
+ elif is_unstable is False:
+ raise ApiValueError("Unstable operation '{0}' is disabled".format(self.settings["operation_id"]))
+
+ servers = self.settings.get("servers")
+ try:
+ index = self.api_client.configuration.server_operation_index.get(
+ self.settings["operation_id"], self.api_client.configuration.server_index
+ )
+ server_variables = self.api_client.configuration.server_operation_variables.get(
+ self.settings["operation_id"], self.api_client.configuration.server_variables
+ )
+ host = self.api_client.configuration.get_host_from_settings(
+ index, variables=server_variables, servers=servers
+ )
+ except IndexError:
+ if servers:
+ raise ApiValueError("Invalid host index. Must be 0 <= index < %s" % len(servers))
+ host = None
+
+ for key, value in kwargs.items():
+ if key not in self.params_map:
+ raise ApiTypeError(
+ "Got an unexpected parameter '%s'" " to method `%s`" % (key, self.settings["operation_id"])
+ )
+ # only throw this nullable ApiValueError if check_input_type
+ # is False, if check_input_type==True we catch this case
+ # in self._validate_inputs
+ if (
+ not self.params_map[key].get("nullable")
+ and value is None
+ and not self.api_client.configuration.check_input_type
+ ):
+ raise ApiValueError(
+ "Value may not be None for non-nullable parameter `%s`"
+ " when calling `%s`" % (key, self.settings["operation_id"])
+ )
+
+ for key, param_map in self.params_map.items():
+ if param_map.get("required") and key not in kwargs:
+ raise ApiValueError(
+ "Missing the required parameter `%s` when calling " "`%s`" % (key, self.settings["operation_id"])
+ )
+
+ self._validate_inputs(kwargs)
+
+ return host
+
+ def call_with_http_info(self, **kwargs):
+ host = self._validate_and_get_host(kwargs)
+
+ params = self.gather_params(kwargs)
+
+ return self.api_client.call_api(
+ self.settings["endpoint_path"],
+ self.settings["http_method"],
+ params["path"],
+ params["query"],
+ params["header"],
+ body=params["body"],
+ post_params=params["form"],
+ files=params["file"],
+ response_type=self.settings["response_type"],
+ check_type=self.api_client.configuration.check_return_type,
+ return_http_data_only=self.api_client.configuration.return_http_data_only,
+ preload_content=self.api_client.configuration.preload_content,
+ request_timeout=self.api_client.configuration.request_timeout,
+ host=host,
+ collection_formats=params["collection_format"],
+ )
+
+ def call_with_http_info_paginated(self, pagination):
+ host = self._validate_and_get_host(pagination["kwargs"])
+
+ return self.api_client.call_api_paginated(
+ self.settings["endpoint_path"],
+ self.settings["http_method"],
+ response_type=self.settings["response_type"],
+ check_type=self.api_client.configuration.check_return_type,
+ request_timeout=self.api_client.configuration.request_timeout,
+ host=host,
+ pagination=pagination
+ )
+
+ def update_params_for_auth(self, headers, queries) -> None:
+ """Updates header and query params based on authentication setting.
+
+ :param headers: Header parameters dict to be updated.
+ :param queries: Query parameters tuple list to be updated.
+ """
+ if not self.settings["auth"]:
+ return
+
+ # check if endpoint uses appKeyAuth and if delegated token config is available
+ has_app_key_auth = "appKeyAuth" in self.settings["auth"]
+
+ # Check if delegated auth is configured (using our actual attributes)
+ has_delegated_auth = (
+ hasattr(self.api_client.configuration, 'delegated_auth_provider') and
+ self.api_client.configuration.delegated_auth_provider is not None and
+ hasattr(self.api_client.configuration, 'delegated_auth_org_uuid') and
+ self.api_client.configuration.delegated_auth_org_uuid is not None
+ )
+
+ if has_app_key_auth and has_delegated_auth:
+ # Use delegated token authentication
+ self.api_client.use_delegated_token_auth(headers)
+ else:
+ # Use regular authentication
+ for auth in self.settings["auth"]:
+ auth_setting = self.api_client.configuration.auth_settings().get(auth)
+ if auth_setting:
+ if auth_setting["in"] == "header":
+ if auth_setting["type"] != "http-signature":
+ if auth_setting["value"] is None:
+ raise ApiValueError("Invalid authentication token for {}".format(auth_setting["key"]))
+ headers[auth_setting["key"]] = auth_setting["value"]
+ elif auth_setting["in"] == "query":
+ queries.append((auth_setting["key"], auth_setting["value"]))
+ else:
+ raise ApiValueError("Authentication token must be in `query` or `header`")
+
+
+def user_agent() -> str:
+ """Generate default User-Agent header."""
+ import platform
+ from datadog_api_client.version import __version__
+
+ return "datadog-api-client-python/{version} (python {py}; os {os}; arch {arch})".format(
+ version=__version__,
+ py=platform.python_version(),
+ os=platform.system(),
+ arch=platform.machine(),
+ )
diff --git a/datadog_api_client/aws.py b/datadog_api_client/aws.py
new file mode 100644
index 0000000000..8b40ff8a02
--- /dev/null
+++ b/datadog_api_client/aws.py
@@ -0,0 +1,265 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+import base64
+import hashlib
+import hmac
+import json
+import os
+import platform
+from datetime import datetime
+from typing import Dict, List, Optional, Tuple
+from urllib.parse import quote
+from datadog_api_client.version import __version__
+
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.delegated_auth import DelegatedTokenProvider, DelegatedTokenConfig, DelegatedTokenCredentials, get_delegated_token
+from datadog_api_client.exceptions import ApiValueError
+
+
+# AWS specific constants
+AWS_ACCESS_KEY_ID_NAME = "AWS_ACCESS_KEY_ID"
+AWS_SECRET_ACCESS_KEY_NAME = "AWS_SECRET_ACCESS_KEY"
+AWS_SESSION_TOKEN_NAME = "AWS_SESSION_TOKEN"
+
+AMZ_DATE_HEADER = "X-Amz-Date"
+AMZ_TOKEN_HEADER = "X-Amz-Security-Token"
+AMZ_DATE_FORMAT = "%Y%m%d"
+AMZ_DATE_TIME_FORMAT = "%Y%m%dT%H%M%SZ"
+DEFAULT_REGION = "us-east-1"
+DEFAULT_STS_HOST = "sts.amazonaws.com"
+REGIONAL_STS_HOST = "sts.{}.amazonaws.com"
+SERVICE = "sts"
+ALGORITHM = "AWS4-HMAC-SHA256"
+AWS4_REQUEST = "aws4_request"
+GET_CALLER_IDENTITY_BODY = "Action=GetCallerIdentity&Version=2011-06-15"
+
+# Common Headers
+ORG_ID_HEADER = "x-ddog-org-id"
+HOST_HEADER = "host"
+APPLICATION_FORM = "application/x-www-form-urlencoded; charset=utf-8"
+
+PROVIDER_AWS = "aws"
+
+
+class AWSCredentials:
+ """AWS credentials for authentication."""
+
+ def __init__(self, access_key_id: str, secret_access_key: str, session_token: str):
+ self.access_key_id = access_key_id
+ self.secret_access_key = secret_access_key
+ self.session_token = session_token
+
+
+class SigningData:
+ """Data structure for AWS signing information."""
+
+ def __init__(self, headers_encoded: str, body_encoded: str, url_encoded: str, method: str):
+ self.headers_encoded = headers_encoded
+ self.body_encoded = body_encoded
+ self.url_encoded = url_encoded
+ self.method = method
+
+
+class AWSAuth(DelegatedTokenProvider):
+ """AWS authentication provider for delegated tokens."""
+
+ def __init__(self, aws_region: Optional[str] = None):
+ super().__init__()
+ self.aws_region = aws_region
+
+ def authenticate(self, config: DelegatedTokenConfig, api_config: Configuration) -> DelegatedTokenCredentials:
+ """Authenticate using AWS credentials and return delegated token credentials.
+
+ :param config: Delegated token configuration
+ :param api_config: API client configuration with host and other settings
+ :return: DelegatedTokenCredentials object
+ :raises: ApiValueError if authentication fails
+ """
+ # Check org UUID first
+ if not config or not config.org_uuid:
+ raise ApiValueError("Missing org UUID in config")
+
+ # Get local AWS Credentials
+ creds = self.get_credentials()
+
+ # Use the credentials to generate the signing data
+ data = self.generate_aws_auth_data(config.org_uuid, creds)
+
+ # Generate the auth string passed to the token endpoint
+ auth_string = f"{data.body_encoded}|{data.headers_encoded}|{data.method}|{data.url_encoded}"
+
+ # Pass the api_config and self (provider) to get_delegated_token for REST client caching
+ auth_response = get_delegated_token(config.org_uuid, auth_string, api_config, self)
+ return auth_response
+
+ def get_credentials(self) -> AWSCredentials:
+ """Get AWS credentials from environment variables.
+
+ :return: AWSCredentials object
+ :raises: ApiValueError if credentials are missing
+ """
+ access_key = os.getenv(AWS_ACCESS_KEY_ID_NAME)
+ secret_key = os.getenv(AWS_SECRET_ACCESS_KEY_NAME)
+ session_token = os.getenv(AWS_SESSION_TOKEN_NAME)
+
+ if not access_key or not secret_key or not session_token:
+ raise ApiValueError("Missing AWS credentials. Please set AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN environment variables.")
+
+ return AWSCredentials(
+ access_key_id=access_key,
+ secret_access_key=secret_key,
+ session_token=session_token
+ )
+
+ def _get_connection_parameters(self) -> Tuple[str, str, str]:
+ """Get connection parameters for AWS STS.
+
+ :return: Tuple of (sts_full_url, region, host)
+ """
+ region = self.aws_region or DEFAULT_REGION
+
+ if self.aws_region:
+ host = REGIONAL_STS_HOST.format(region)
+ else:
+ host = DEFAULT_STS_HOST
+
+ sts_full_url = f"https://{host}"
+ return sts_full_url, region, host
+
+ def generate_aws_auth_data(self, org_uuid: str, creds: AWSCredentials) -> SigningData:
+ """Generate AWS authentication data for signing.
+
+ :param org_uuid: Organization UUID
+ :param creds: AWS credentials
+ :return: SigningData object
+ :raises: ApiValueError if generation fails
+ """
+ if not org_uuid:
+ raise ApiValueError("Missing org UUID")
+
+ if not creds or not creds.access_key_id or not creds.secret_access_key or not creds.session_token:
+ raise ApiValueError("Missing AWS credentials")
+
+ sts_full_url, region, host = self._get_connection_parameters()
+
+ now = datetime.utcnow()
+
+ request_body = GET_CALLER_IDENTITY_BODY
+ payload_hash = hashlib.sha256(request_body.encode('utf-8')).hexdigest()
+
+ # Create the headers that factor into the signing algorithm
+ header_map = {
+ "Content-Length": [str(len(request_body))],
+ "Content-Type": [APPLICATION_FORM],
+ AMZ_DATE_HEADER: [now.strftime(AMZ_DATE_TIME_FORMAT)],
+ ORG_ID_HEADER: [org_uuid],
+ AMZ_TOKEN_HEADER: [creds.session_token],
+ HOST_HEADER: [host],
+ }
+
+ # Create canonical headers
+ header_arr = []
+ signed_headers_arr = []
+
+ for k, v in header_map.items():
+ lowered_header_name = k.lower()
+ header_arr.append(f"{lowered_header_name}:{','.join(v)}")
+ signed_headers_arr.append(lowered_header_name)
+
+ header_arr.sort()
+ signed_headers_arr.sort()
+ signed_headers = ";".join(signed_headers_arr)
+
+ canonical_request = "\n".join([
+ "POST",
+ "/",
+ "", # No query string
+ "\n".join(header_arr) + "\n",
+ signed_headers,
+ payload_hash,
+ ])
+
+ # Create the string to sign
+ hash_canonical_request = hashlib.sha256(canonical_request.encode('utf-8')).hexdigest()
+ credential_scope = "/".join([
+ now.strftime(AMZ_DATE_FORMAT),
+ region,
+ SERVICE,
+ AWS4_REQUEST,
+ ])
+
+ string_to_sign = self._make_signature(
+ now,
+ credential_scope,
+ hash_canonical_request,
+ region,
+ SERVICE,
+ creds.secret_access_key,
+ ALGORITHM,
+ )
+
+ # Create the authorization header
+ credential = f"{creds.access_key_id}/{credential_scope}"
+ auth_header = f"{ALGORITHM} Credential={credential}, SignedHeaders={signed_headers}, Signature={string_to_sign}"
+
+ header_map["Authorization"] = [auth_header]
+ header_map["User-Agent"] = [self._get_user_agent()]
+
+ headers_json = json.dumps(header_map, separators=(',', ':'))
+
+ return SigningData(
+ headers_encoded=base64.b64encode(headers_json.encode('utf-8')).decode('utf-8'),
+ body_encoded=base64.b64encode(request_body.encode('utf-8')).decode('utf-8'),
+ method="POST",
+ url_encoded=base64.b64encode(sts_full_url.encode('utf-8')).decode('utf-8')
+ )
+
+ def _make_signature(self, t: datetime, credential_scope: str, payload_hash: str,
+ region: str, service: str, secret_access_key: str, algorithm: str) -> str:
+ """Create AWS signature.
+
+ :param t: Current datetime
+ :param credential_scope: Credential scope string
+ :param payload_hash: Hash of the canonical request
+ :param region: AWS region
+ :param service: AWS service name
+ :param secret_access_key: AWS secret access key
+ :param algorithm: Signing algorithm
+ :return: Signature string
+ """
+ # Create the string to sign
+ string_to_sign = "\n".join([
+ algorithm,
+ t.strftime(AMZ_DATE_TIME_FORMAT),
+ credential_scope,
+ payload_hash,
+ ])
+
+ # Create the signing key
+ k_date = self._hmac256(t.strftime(AMZ_DATE_FORMAT), f"AWS4{secret_access_key}".encode('utf-8'))
+ k_region = self._hmac256(region, k_date)
+ k_service = self._hmac256(service, k_region)
+ k_signing = self._hmac256(AWS4_REQUEST, k_service)
+
+ # Sign the string
+ signature = self._hmac256(string_to_sign, k_signing)
+ return signature.hex()
+
+ def _hmac256(self, data: str, key: bytes) -> bytes:
+ """Create HMAC-SHA256 hash.
+
+ :param data: Data to hash
+ :param key: Key for HMAC
+ :return: HMAC hash bytes
+ """
+ return hmac.new(key, data.encode('utf-8'), hashlib.sha256).digest()
+
+ def _get_user_agent(self) -> str:
+ """Get user agent string.
+
+ :return: User agent string
+ """
+
+ return f"datadog-api-client-python/{__version__} (python {platform.python_version()}; os {platform.system()}; arch {platform.machine()})"
\ No newline at end of file
diff --git a/datadog_api_client/configuration.py b/datadog_api_client/configuration.py
new file mode 100644
index 0000000000..a70c07e318
--- /dev/null
+++ b/datadog_api_client/configuration.py
@@ -0,0 +1,1119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+import copy
+import logging
+import os
+import urllib3 # type: ignore
+
+from http import client as http_client
+from datadog_api_client.exceptions import ApiValueError
+
+
+JSON_SCHEMA_VALIDATION_KEYWORDS = {
+ "multipleOf",
+ "maximum",
+ "exclusiveMaximum",
+ "minimum",
+ "exclusiveMinimum",
+ "maxLength",
+ "minLength",
+ "pattern",
+ "maxItems",
+ "minItems",
+}
+
+
+class _UnstableOperations:
+
+ def __init__(self, values):
+ self.values = values
+
+ def get(self, key, default=None):
+ if key in self:
+ return self[key]
+ return default
+
+ def __getitem__(self, key):
+ if key in self.values:
+ return self.values[key]
+ for version in ("v1", "v2"):
+ version_key = f"{version}.{key}"
+ if version_key in self.values:
+ return self.values[version_key]
+ raise KeyError(f"Unknown unstable operation {key}")
+
+ def __setitem__(self, key, value):
+ if key in self.values:
+ self.values[key] = value
+ for version in ("v1", "v2"):
+ version_key = f"{version}.{key}"
+ if version_key in self.values:
+ self.values[version_key] = value
+ break
+ else:
+ raise KeyError(f"Unknown unstable operation {key}")
+
+ def __contains__(self, key):
+ if key in self.values:
+ return True
+ for version in ("v1", "v2"):
+ version_key = f"{version}.{key}"
+ if version_key in self.values:
+ return True
+ return False
+
+
+class Configuration:
+ """
+ :param host: Base url.
+ :param api_key: Dict to store API key(s).
+ Each entry in the dict specifies an API key.
+ The dict key is the name of the security scheme in the OAS specification.
+ The dict value is the API key secret.
+ :param api_key_prefix: Dict to store API prefix (e.g. Bearer).
+ The dict key is the name of the security scheme in the OAS specification.
+ The dict value is an API key prefix when generating the auth data.
+ :param username: Username for HTTP basic authentication.
+ :param password: Password for HTTP basic authentication.
+ :param discard_unknown_keys: Boolean value indicating whether to discard
+ unknown properties. A server may send a response that includes additional
+ properties that are not known by the client in the following scenarios:
+
+ 1. The OpenAPI document is incomplete, i.e. it does not match the server
+ implementation.
+ 2. The client was generated using an older version of the OpenAPI document
+ and the server has been upgraded since then.
+
+ If a schema in the OpenAPI document defines the additionalProperties
+ attribute, then all undeclared properties received by the server are injected
+ into the additional properties map. In that case, there are undeclared
+ properties, and nothing to discard.
+ :param disabled_client_side_validations: Comma-separated list of
+ JSON schema validation keywords to disable JSON schema structural validation
+ rules. The following keywords may be specified: multipleOf, maximum,
+ exclusiveMaximum, minimum, exclusiveMinimum, maxLength, minLength, pattern,
+ maxItems, minItems.
+ By default, the validation is performed for data generated locally by the client
+ and data received from the server, independent of any validation performed by
+ the server side. If the input data does not satisfy the JSON schema validation
+ rules specified in the OpenAPI document, an exception is raised.
+ If disabled_client_side_validations is set, structural validation is
+ disabled. This can be useful to troubleshoot data validation problem, such as
+ when the OpenAPI document validation rules do not match the actual API data
+ received by the server.
+ :type disabled_client_side_validations: str
+ :param server_index: Index to servers configuration.
+ :param server_variables: Mapping with string values to replace variables in
+ templated server configuration. The validation of enums is performed for
+ variables with defined enum values before.
+ :param server_operation_index: Mapping from operation ID to an index to
+ server configuration.
+ :param server_operation_variables: Mapping from operation ID to a mapping with
+ string values to replace variables in templated server configuration.
+ The validation of enums is performed for variables with defined enum values before.
+ :param ssl_ca_cert: The path to a file of concatenated CA certificates
+ in PEM format.
+ :param compress: Boolean indicating whether encoded responses are accepted or not.
+ :type compress: bool
+ :param return_http_data_only: Response data without head status
+ code and headers. Default is True.
+ :type return_http_data_only: bool
+ :param preload_content: If False, the urllib3.HTTPResponse object
+ will be returned without reading/decoding response data.
+ Default is True.
+ :type preload_content: bool
+ :param request_timeout: Timeout setting for this request. If one
+ number is provided, it will be total request timeout. It can also be a
+ pair (tuple) of (connection, read) timeouts. Default is None.
+ :type request_timeout: float/tuple
+ :param check_input_type: Specifies if type checking should be done on
+ the data sent to the server. Default is True.
+ :type check_input_type: bool
+ :param check_return_type: Specifies if type checking should be done
+ on the data received from the server. Default is True.
+ :type check_return_type: bool
+ :param spec_property_naming: Whether names in properties are expected to respect the spec or use snake case.
+ :type spec_property_naming: bool
+ :param enable_retry: If set, the client will retry requests on backend errors (5xx status codes), and 429.
+ On 429 if will use the returned headers to wait until the next requests, otherwise it will retry using
+ the backoff factor.
+ :type enable_retry: bool
+ :param retry_backoff_factor: Factor used to space out retried requests on backend errors.
+ :type retry_backoff_factor: float
+ :param max_retries: The maximum number of times a single request can be retried.
+ :type max_retries: int
+ :param retry_policy: Custom retry policy instance (e.g., urllib3.util.Retry). If provided, this overrides
+ the default retry behavior and the enable_retry, retry_backoff_factor, and max_retries settings.
+ :type retry_policy: urllib3.util.Retry
+ :param delegated_auth_provider: The delegated authentication provider (e.g., 'aws' for AWS).
+ :type delegated_auth_provider: str
+ :param delegated_auth_org_uuid: The organization UUID for delegated authentication.
+ :type delegated_auth_org_uuid: str
+ """
+
+ def __init__(
+ self,
+ host=None,
+ api_key=None,
+ api_key_prefix=None,
+ access_token=None,
+ username=None,
+ password=None,
+ discard_unknown_keys=True,
+ disabled_client_side_validations="",
+ server_index=None,
+ server_variables=None,
+ server_operation_index=None,
+ server_operation_variables=None,
+ ssl_ca_cert=None,
+ compress=True,
+ return_http_data_only=True,
+ preload_content=True,
+ request_timeout=None,
+ check_input_type=True,
+ check_return_type=True,
+ spec_property_naming=False,
+ enable_retry=False,
+ retry_backoff_factor=2,
+ max_retries=3,
+ retry_policy=None,
+ delegated_auth_provider=None,
+ delegated_auth_org_uuid=None,
+ ):
+ """Constructor."""
+ self._base_path = "https://api.datadoghq.com" if host is None else host
+ self.server_index = 0 if server_index is None and host is None else server_index
+ self.server_operation_index = server_operation_index or {}
+ self.server_variables = server_variables or {}
+ self.server_operation_variables = server_operation_variables or {}
+ self.temp_folder_path = None
+
+ # Authentication Settings
+ self.access_token = access_token
+ self.api_key = {}
+ if api_key:
+ self.api_key = api_key
+
+ self.api_key_prefix = {}
+ if api_key_prefix:
+ self.api_key_prefix = api_key_prefix
+
+ self.refresh_api_key_hook = None
+ self.username = username
+ self.password = password
+ self.discard_unknown_keys = discard_unknown_keys
+ self.disabled_client_side_validations = disabled_client_side_validations
+ self.logger = {}
+ self.logger["package_logger"] = logging.getLogger("datadog_api_client")
+ self.logger["urllib3_logger"] = logging.getLogger("urllib3")
+ self.logger_format = "%(asctime)s %(levelname)s %(message)s"
+ self.logger_stream_handler = None
+ self.logger_file_handler = None
+ self.logger_file = None
+ self.debug = False
+
+ self.verify_ssl = True
+ self.ssl_ca_cert = ssl_ca_cert
+ self.cert_file = None
+ self.key_file = None
+ self.assert_hostname = None
+
+ self.proxy = None
+ self.proxy_headers = None
+ self.safe_chars_for_path_param = ""
+ # Enable client side validation
+ self.client_side_validation = True
+
+ # Options to pass down to the underlying urllib3 socket
+ self.socket_options = None
+
+ # Will translate to a Accept-Encoding header
+ self.compress = compress
+
+ self.return_http_data_only = return_http_data_only
+ self.preload_content = preload_content
+ self.request_timeout = request_timeout
+ self.check_input_type = check_input_type
+ self.check_return_type = check_return_type
+ self.spec_property_naming = spec_property_naming
+
+ # Options for http retry
+ self.enable_retry = enable_retry
+ self.retry_backoff_factor = retry_backoff_factor
+ self.max_retries = max_retries
+ self.retry_policy = retry_policy
+
+ # Keep track of unstable operations
+ self.unstable_operations = _UnstableOperations({
+ "v2.create_fleet_schedule": False,
+ "v2.delete_fleet_schedule": False,
+ "v2.list_fleet_agent_tracers": False,
+ "v2.list_fleet_tracers": False,
+ "v2.trigger_fleet_schedule": False,
+ "v2.update_fleet_schedule": False,
+ "v2.aggregate_llm_obs_experimentation": False,
+ "v2.batch_update_llm_obs_dataset": False,
+ "v2.clone_llm_obs_dataset": False,
+ "v2.create_llm_obs_annotation_queue": False,
+ "v2.create_llm_obs_annotation_queue_interactions": False,
+ "v2.create_llm_obs_dataset": False,
+ "v2.create_llm_obs_dataset_records": False,
+ "v2.create_llm_obs_experiment": False,
+ "v2.create_llm_obs_experiment_events": False,
+ "v2.create_llm_obs_integration_inference": False,
+ "v2.create_llm_obs_project": False,
+ "v2.create_llm_obs_prompt": False,
+ "v2.create_llm_obs_prompt_version": False,
+ "v2.delete_llm_obs_annotation_queue": False,
+ "v2.delete_llm_obs_annotation_queue_interactions": False,
+ "v2.delete_llm_obs_annotations": False,
+ "v2.delete_llm_obs_custom_eval_config": False,
+ "v2.delete_llm_obs_data": False,
+ "v2.delete_llm_obs_dataset_records": False,
+ "v2.delete_llm_obs_datasets": False,
+ "v2.delete_llm_obs_experiments": False,
+ "v2.delete_llm_obs_patterns_config": False,
+ "v2.delete_llm_obs_projects": False,
+ "v2.delete_llm_obs_prompt": False,
+ "v2.export_llm_obs_dataset": False,
+ "v2.get_llm_obs_annotated_interactions": False,
+ "v2.get_llm_obs_annotated_interactions_by_trace_i_ds": False,
+ "v2.get_llm_obs_annotation_queue_label_schema": False,
+ "v2.get_llm_obs_custom_eval_config": False,
+ "v2.get_llm_obs_dataset_draft_state": False,
+ "v2.get_llm_obs_patterns_config": False,
+ "v2.get_llm_obs_patterns_run_status": False,
+ "v2.get_llm_obs_prompt": False,
+ "v2.get_llm_obs_prompt_version": False,
+ "v2.list_llm_obs_annotation_queues": False,
+ "v2.list_llm_obs_custom_eval_configs": False,
+ "v2.list_llm_obs_dataset_records": False,
+ "v2.list_llm_obs_datasets": False,
+ "v2.list_llm_obs_dataset_versions": False,
+ "v2.list_llm_obs_experiment_events": False,
+ "v2.list_llm_obs_experiment_events_v1": False,
+ "v2.list_llm_obs_experiment_events_v2": False,
+ "v2.list_llm_obs_experiments": False,
+ "v2.list_llm_obs_integration_accounts": False,
+ "v2.list_llm_obs_integration_models": False,
+ "v2.list_llm_obs_patterns_clustered_points": False,
+ "v2.list_llm_obs_patterns_configs": False,
+ "v2.list_llm_obs_patterns_runs": False,
+ "v2.list_llm_obs_patterns_topics": False,
+ "v2.list_llm_obs_patterns_topics_with_clustered_points": False,
+ "v2.list_llm_obs_projects": False,
+ "v2.list_llm_obs_prompts": False,
+ "v2.list_llm_obs_prompt_versions": False,
+ "v2.list_llm_obs_spans": False,
+ "v2.lock_llm_obs_dataset_draft_state": False,
+ "v2.restore_llm_obs_dataset_version": False,
+ "v2.search_llm_obs_experimentation": False,
+ "v2.search_llm_obs_spans": False,
+ "v2.simple_search_llm_obs_experimentation": False,
+ "v2.trigger_llm_obs_patterns": False,
+ "v2.unlock_llm_obs_dataset_draft_state": False,
+ "v2.update_llm_obs_annotation_queue": False,
+ "v2.update_llm_obs_annotation_queue_label_schema": False,
+ "v2.update_llm_obs_custom_eval_config": False,
+ "v2.update_llm_obs_dataset": False,
+ "v2.update_llm_obs_dataset_records": False,
+ "v2.update_llm_obs_experiment": False,
+ "v2.update_llm_obs_project": False,
+ "v2.update_llm_obs_prompt": False,
+ "v2.update_llm_obs_prompt_version": False,
+ "v2.upload_llm_obs_dataset_records_file": False,
+ "v2.upsert_llm_obs_annotations": False,
+ "v2.upsert_llm_obs_patterns_config": False,
+ "v2.create_annotation": False,
+ "v2.delete_annotation": False,
+ "v2.get_page_annotations": False,
+ "v2.list_annotations": False,
+ "v2.update_annotation": False,
+ "v2.anonymize_users": False,
+ "v2.validate": False,
+ "v2.create_open_api": False,
+ "v2.delete_open_api": False,
+ "v2.get_open_api": False,
+ "v2.list_apis": False,
+ "v2.update_open_api": False,
+ "v2.get_investigation": False,
+ "v2.list_investigations": False,
+ "v2.trigger_investigation": False,
+ "v2.create_change_request": False,
+ "v2.create_change_request_branch": False,
+ "v2.delete_change_request_decision": False,
+ "v2.get_change_request": False,
+ "v2.update_change_request": False,
+ "v2.update_change_request_decision": False,
+ "v2.create_aws_cloud_auth_persona_mapping": False,
+ "v2.delete_aws_cloud_auth_persona_mapping": False,
+ "v2.get_aws_cloud_auth_persona_mapping": False,
+ "v2.list_aws_cloud_auth_persona_mappings": False,
+ "v2.activate_content_pack": False,
+ "v2.activate_integration": False,
+ "v2.batch_get_security_monitoring_dataset_dependencies": False,
+ "v2.bulk_create_sample_log_generation_subscriptions": False,
+ "v2.bulk_export_security_monitoring_terraform_resources": False,
+ "v2.cancel_historical_job": False,
+ "v2.convert_job_result_to_signal": False,
+ "v2.convert_security_monitoring_terraform_resource": False,
+ "v2.create_io_c_triage_state": False,
+ "v2.create_sample_log_generation_subscription": False,
+ "v2.create_security_findings_automation_due_date_rule": False,
+ "v2.create_security_findings_automation_mute_rule": False,
+ "v2.create_security_findings_automation_ticket_creation_rule": False,
+ "v2.create_security_monitoring_dataset": False,
+ "v2.create_security_monitoring_integration_config": False,
+ "v2.create_static_analysis_ast": False,
+ "v2.create_static_analysis_server_analysis": False,
+ "v2.deactivate_content_pack": False,
+ "v2.deactivate_integration": False,
+ "v2.delete_historical_job": False,
+ "v2.delete_sample_log_generation_subscription": False,
+ "v2.delete_security_findings_automation_due_date_rule": False,
+ "v2.delete_security_findings_automation_mute_rule": False,
+ "v2.delete_security_findings_automation_ticket_creation_rule": False,
+ "v2.delete_security_monitoring_dataset": False,
+ "v2.delete_security_monitoring_integration_config": False,
+ "v2.export_security_monitoring_terraform_resource": False,
+ "v2.get_content_packs_states": False,
+ "v2.get_entity_context": False,
+ "v2.get_entra_id_azure_app_registrations": False,
+ "v2.get_finding": False,
+ "v2.get_historical_job": False,
+ "v2.get_indicator_of_compromise": False,
+ "v2.get_rule_version_history": False,
+ "v2.get_secrets_rules": False,
+ "v2.get_security_findings_automation_due_date_rule": False,
+ "v2.get_security_findings_automation_mute_rule": False,
+ "v2.get_security_findings_automation_ticket_creation_rule": False,
+ "v2.get_security_monitoring_dataset": False,
+ "v2.get_security_monitoring_dataset_by_version": False,
+ "v2.get_security_monitoring_dataset_version_history": False,
+ "v2.get_security_monitoring_histsignal": False,
+ "v2.get_security_monitoring_histsignals_by_job_id": False,
+ "v2.get_security_monitoring_integration_config": False,
+ "v2.get_signal_entities": False,
+ "v2.get_single_entity_context": False,
+ "v2.get_static_analysis_default_rulesets": False,
+ "v2.get_static_analysis_node_types": False,
+ "v2.get_static_analysis_ruleset": False,
+ "v2.get_static_analysis_tree_sitter_wasm": False,
+ "v2.import_security_vulnerabilities": False,
+ "v2.list_findings": False,
+ "v2.list_historical_jobs": False,
+ "v2.list_indicators_of_compromise": False,
+ "v2.list_multiple_rulesets": False,
+ "v2.list_sample_log_generation_subscriptions": False,
+ "v2.list_scanned_assets_metadata": False,
+ "v2.list_security_findings_automation_due_date_rules": False,
+ "v2.list_security_findings_automation_mute_rules": False,
+ "v2.list_security_findings_automation_ticket_creation_rules": False,
+ "v2.list_security_monitoring_datasets": False,
+ "v2.list_security_monitoring_histsignals": False,
+ "v2.list_security_monitoring_integration_configs": False,
+ "v2.list_static_analysis_codegen_rulesets": False,
+ "v2.list_vulnerabilities": False,
+ "v2.list_vulnerable_assets": False,
+ "v2.reorder_security_findings_automation_due_date_rules": False,
+ "v2.reorder_security_findings_automation_mute_rules": False,
+ "v2.reorder_security_findings_automation_ticket_creation_rules": False,
+ "v2.restore_security_monitoring_rule": False,
+ "v2.run_historical_job": False,
+ "v2.search_security_monitoring_histsignals": False,
+ "v2.update_findings_assignee": False,
+ "v2.update_security_findings_automation_due_date_rule": False,
+ "v2.update_security_findings_automation_mute_rule": False,
+ "v2.update_security_findings_automation_ticket_creation_rule": False,
+ "v2.update_security_monitoring_dataset": False,
+ "v2.update_security_monitoring_integration_config": False,
+ "v2.validate_security_monitoring_integration_config": False,
+ "v2.validate_security_monitoring_integration_credentials": False,
+ "v2.get_code_coverage_branch_summary": False,
+ "v2.get_code_coverage_commit_summary": False,
+ "v2.get_rule_based_view": False,
+ "v2.get_commitments_commitment_list": False,
+ "v2.get_commitments_coverage_scalar": False,
+ "v2.get_commitments_coverage_timeseries": False,
+ "v2.get_commitments_on_demand_hotspots_scalar": False,
+ "v2.get_commitments_savings_scalar": False,
+ "v2.get_commitments_savings_timeseries": False,
+ "v2.get_commitments_utilization_scalar": False,
+ "v2.get_commitments_utilization_timeseries": False,
+ "v2.get_cost_anomaly": False,
+ "v2.get_cost_tag_metadata_currency": False,
+ "v2.list_cost_anomalies": False,
+ "v2.list_cost_tag_key_sources": False,
+ "v2.list_cost_tag_metadata": False,
+ "v2.list_cost_tag_metadata_metrics": False,
+ "v2.list_cost_tag_metadata_months": False,
+ "v2.list_cost_tag_metadata_orchestrators": False,
+ "v2.search_cost_recommendations": False,
+ "v2.create_ownership_feedback": False,
+ "v2.get_ownership_evidence": False,
+ "v2.get_ownership_inference": False,
+ "v2.get_ownership_settings": False,
+ "v2.get_ownership_untagged_findings": False,
+ "v2.list_ownership_history": False,
+ "v2.list_ownership_history_by_owner_type": False,
+ "v2.list_ownership_inferences": False,
+ "v2.post_ownership_settings": False,
+ "v2.get_csm_agentless_host_facet_info": False,
+ "v2.get_csm_unified_host_facet_info": False,
+ "v2.list_csm_agentless_host_facets": False,
+ "v2.list_csm_agentless_hosts": False,
+ "v2.list_csm_unified_host_facets": False,
+ "v2.list_csm_unified_hosts": False,
+ "v2.list_shared_dashboards_by_dashboard_id": False,
+ "v2.create_dashboard_secure_embed": False,
+ "v2.delete_dashboard_secure_embed": False,
+ "v2.get_dashboard_secure_embed": False,
+ "v2.update_dashboard_secure_embed": False,
+ "v2.get_dashboard_usage": False,
+ "v2.list_dashboards_usage": False,
+ "v2.get_data_observability_monitor_run_status": False,
+ "v2.run_data_observability_monitor": False,
+ "v2.create_dataset": False,
+ "v2.delete_dataset": False,
+ "v2.get_all_datasets": False,
+ "v2.get_dataset": False,
+ "v2.update_dataset": False,
+ "v2.cancel_data_deletion_request": False,
+ "v2.create_data_deletion_request": False,
+ "v2.get_data_deletion_requests": False,
+ "v2.create_deployment_gate": False,
+ "v2.create_deployment_rule": False,
+ "v2.delete_deployment_gate": False,
+ "v2.delete_deployment_rule": False,
+ "v2.get_deployment_gate": False,
+ "v2.get_deployment_gate_rules": False,
+ "v2.get_deployment_gates_evaluation_result": False,
+ "v2.get_deployment_rule": False,
+ "v2.list_deployment_gates": False,
+ "v2.trigger_deployment_gates_evaluation": False,
+ "v2.update_deployment_gate": False,
+ "v2.update_deployment_rule": False,
+ "v2.patch_dora_deployment_by_version": False,
+ "v2.clone_form": False,
+ "v2.create_and_publish_form": False,
+ "v2.create_form": False,
+ "v2.delete_form": False,
+ "v2.get_form": False,
+ "v2.list_forms": False,
+ "v2.publish_form": False,
+ "v2.update_form": False,
+ "v2.upsert_and_publish_form_version": False,
+ "v2.upsert_form_version": False,
+ "v2.update_org_saml_configurations": False,
+ "v2.get_governance_config": False,
+ "v2.get_governance_control": False,
+ "v2.get_governance_control_notification_settings": False,
+ "v2.get_governance_detection": False,
+ "v2.get_governance_notification_settings": False,
+ "v2.list_governance_control_detections": False,
+ "v2.list_governance_controls": False,
+ "v2.list_governance_insights": False,
+ "v2.mitigate_governance_detections": False,
+ "v2.update_governance_control": False,
+ "v2.update_governance_control_notification_settings": False,
+ "v2.update_governance_detection": False,
+ "v2.update_governance_notification_settings": False,
+ "v2.create_hamr_org_connection": False,
+ "v2.get_hamr_org_connection": False,
+ "v2.delete_entity_integration_config": False,
+ "v2.get_entity_integration_config": False,
+ "v2.update_entity_integration_config": False,
+ "v2.create_global_incident_handle": False,
+ "v2.create_incident": False,
+ "v2.create_incident_attachment": False,
+ "v2.create_incident_configuration": False,
+ "v2.create_incident_google_chat_configuration": False,
+ "v2.create_incident_google_meet_configuration": False,
+ "v2.create_incident_impact_field": False,
+ "v2.create_incident_integration": False,
+ "v2.create_incident_notification_rule": False,
+ "v2.create_incident_notification_template": False,
+ "v2.create_incident_postmortem_attachment": False,
+ "v2.create_incident_postmortem_template": False,
+ "v2.create_incident_responder": False,
+ "v2.create_incident_rule": False,
+ "v2.create_incident_service_now_record": False,
+ "v2.create_incident_todo": False,
+ "v2.create_incident_type": False,
+ "v2.create_incident_user_defined_field": False,
+ "v2.create_incident_user_defined_role": False,
+ "v2.create_on_call_page_from_incident": False,
+ "v2.create_page_from_incident": False,
+ "v2.create_timestamp_override": False,
+ "v2.delete_global_incident_handle": False,
+ "v2.delete_incident": False,
+ "v2.delete_incident_attachment": False,
+ "v2.delete_incident_impact_field": False,
+ "v2.delete_incident_integration": False,
+ "v2.delete_incident_notification_rule": False,
+ "v2.delete_incident_notification_template": False,
+ "v2.delete_incident_postmortem_template": False,
+ "v2.delete_incident_responder": False,
+ "v2.delete_incident_rule": False,
+ "v2.delete_incident_todo": False,
+ "v2.delete_incident_type": False,
+ "v2.delete_incident_user_defined_field": False,
+ "v2.delete_incident_user_defined_role": False,
+ "v2.delete_timestamp_override": False,
+ "v2.get_global_incident_settings": False,
+ "v2.get_incident": False,
+ "v2.get_incident_ai_postmortem": False,
+ "v2.get_incident_integration": False,
+ "v2.get_incident_notification_rule": False,
+ "v2.get_incident_notification_template": False,
+ "v2.get_incident_postmortem_template": False,
+ "v2.get_incident_responder": False,
+ "v2.get_incident_rule": False,
+ "v2.get_incident_todo": False,
+ "v2.get_incident_type": False,
+ "v2.get_incident_user_defined_field": False,
+ "v2.get_incident_user_defined_role": False,
+ "v2.get_org_settings_by_incident_type": False,
+ "v2.import_incident": False,
+ "v2.link_page_to_incident": False,
+ "v2.list_global_incident_handles": False,
+ "v2.list_incident_attachments": False,
+ "v2.list_incident_impact_fields": False,
+ "v2.list_incident_integrations": False,
+ "v2.list_incident_notification_rules": False,
+ "v2.list_incident_notification_templates": False,
+ "v2.list_incident_postmortem_templates": False,
+ "v2.list_incident_responders": False,
+ "v2.list_incident_rules": False,
+ "v2.list_incidents": False,
+ "v2.list_incident_todos": False,
+ "v2.list_incident_types": False,
+ "v2.list_incident_user_defined_fields": False,
+ "v2.list_incident_user_defined_roles": False,
+ "v2.list_org_settings": False,
+ "v2.list_timestamp_overrides": False,
+ "v2.patch_incident_impact": False,
+ "v2.search_incidents": False,
+ "v2.update_global_incident_handle": False,
+ "v2.update_global_incident_settings": False,
+ "v2.update_incident": False,
+ "v2.update_incident_attachment": False,
+ "v2.update_incident_configuration": False,
+ "v2.update_incident_google_chat_configuration": False,
+ "v2.update_incident_google_meet_configuration": False,
+ "v2.update_incident_impact_field": False,
+ "v2.update_incident_integration": False,
+ "v2.update_incident_notification_rule": False,
+ "v2.update_incident_notification_template": False,
+ "v2.update_incident_postmortem_template": False,
+ "v2.update_incident_rule": False,
+ "v2.update_incident_todo": False,
+ "v2.update_incident_type": False,
+ "v2.update_incident_user_defined_field": False,
+ "v2.update_incident_user_defined_role": False,
+ "v2.update_timestamp_override": False,
+ "v2.create_aws_account_ccm_config": False,
+ "v2.delete_aws_account_ccm_config": False,
+ "v2.get_aws_account_ccm_config": False,
+ "v2.get_aws_metric_name_filter_preview": False,
+ "v2.preview_aws_metric_name_filter": False,
+ "v2.update_aws_account_ccm_config": False,
+ "v2.validate_awsccm_config": False,
+ "v2.create_jira_issue_template": False,
+ "v2.delete_jira_account": False,
+ "v2.delete_jira_issue_template": False,
+ "v2.get_jira_issue_template": False,
+ "v2.list_jira_accounts": False,
+ "v2.list_jira_issue_templates": False,
+ "v2.update_jira_issue_template": False,
+ "v2.create_tenancy_config": False,
+ "v2.get_tenancy_configs": False,
+ "v2.add_role_to_restriction_query": False,
+ "v2.create_restriction_query": False,
+ "v2.delete_restriction_query": False,
+ "v2.get_restriction_query": False,
+ "v2.get_role_restriction_query": False,
+ "v2.list_restriction_queries": False,
+ "v2.list_restriction_query_roles": False,
+ "v2.list_user_restriction_queries": False,
+ "v2.remove_role_from_restriction_query": False,
+ "v2.replace_restriction_query": False,
+ "v2.update_restriction_query": False,
+ "v2.create_historical_metrics_configuration": False,
+ "v2.create_tag_indexing_rule": False,
+ "v2.create_tag_indexing_rule_exemption": False,
+ "v2.delete_historical_metrics_configuration": False,
+ "v2.delete_tag_indexing_rule": False,
+ "v2.delete_tag_indexing_rule_exemption": False,
+ "v2.get_historical_metrics_configuration": False,
+ "v2.get_tag_indexing_rule": False,
+ "v2.get_tag_indexing_rule_exemption": False,
+ "v2.list_tag_indexing_rules": False,
+ "v2.list_tag_indexing_rules_for_metric": False,
+ "v2.reorder_tag_indexing_rules": False,
+ "v2.update_tag_indexing_rule": False,
+ "v2.delete_model_lab_run": False,
+ "v2.get_model_lab_artifact_content": False,
+ "v2.get_model_lab_project": False,
+ "v2.get_model_lab_run": False,
+ "v2.list_model_lab_project_artifacts": False,
+ "v2.list_model_lab_project_facet_keys": False,
+ "v2.list_model_lab_project_facet_values": False,
+ "v2.list_model_lab_projects": False,
+ "v2.list_model_lab_run_artifacts": False,
+ "v2.list_model_lab_run_facet_keys": False,
+ "v2.list_model_lab_run_facet_values": False,
+ "v2.list_model_lab_runs": False,
+ "v2.pin_model_lab_run": False,
+ "v2.star_model_lab_project": False,
+ "v2.unpin_model_lab_run": False,
+ "v2.unstar_model_lab_project": False,
+ "v2.create_monitor_user_template": False,
+ "v2.delete_monitor_user_template": False,
+ "v2.get_monitor_user_template": False,
+ "v2.list_monitor_user_templates": False,
+ "v2.update_monitor_user_template": False,
+ "v2.validate_existing_monitor_user_template": False,
+ "v2.validate_monitor_user_template": False,
+ "v2.list_network_health_insights": False,
+ "v2.delete_scopes_restriction": False,
+ "v2.get_o_auth2_well_known_sites": False,
+ "v2.get_scopes_restriction": False,
+ "v2.register_o_auth_client": False,
+ "v2.upsert_scopes_restriction": False,
+ "v2.disable_customer_org": False,
+ "v2.bulk_update_org_group_memberships": False,
+ "v2.create_org_group": False,
+ "v2.create_org_group_policy": False,
+ "v2.create_org_group_policy_override": False,
+ "v2.delete_org_group": False,
+ "v2.delete_org_group_policy": False,
+ "v2.delete_org_group_policy_override": False,
+ "v2.get_org_group": False,
+ "v2.get_org_group_membership": False,
+ "v2.get_org_group_policy": False,
+ "v2.get_org_group_policy_override": False,
+ "v2.list_org_group_memberships": False,
+ "v2.list_org_group_policies": False,
+ "v2.list_org_group_policy_configs": False,
+ "v2.list_org_group_policy_overrides": False,
+ "v2.list_org_group_policy_suggestions": False,
+ "v2.list_org_groups": False,
+ "v2.update_org_group": False,
+ "v2.update_org_group_membership": False,
+ "v2.update_org_group_policy": False,
+ "v2.update_org_group_policy_override": False,
+ "v2.list_role_templates": False,
+ "v2.create_connection": False,
+ "v2.delete_connection": False,
+ "v2.get_account_facet_info": False,
+ "v2.get_mapping": False,
+ "v2.get_user_facet_info": False,
+ "v2.list_connections": False,
+ "v2.query_accounts": False,
+ "v2.query_event_filtered_users": False,
+ "v2.query_users": False,
+ "v2.update_connection": False,
+ "v2.get_pruned_trace_by_id": False,
+ "v2.get_trace_by_id": False,
+ "v2.get_asm_service_by_name": False,
+ "v2.get_rum_sdk_config": False,
+ "v2.update_rum_sdk_config": False,
+ "v2.create_report_schedule": False,
+ "v2.patch_report_schedule": False,
+ "v2.delete_sourcemaps": False,
+ "v2.get_service_repository_info": False,
+ "v2.get_sourcemaps": False,
+ "v2.list_sourcemaps": False,
+ "v2.restore_sourcemaps": False,
+ "v2.create_rum_config": False,
+ "v2.get_rum_config": False,
+ "v2.update_rum_config": False,
+ "v2.create_rum_operation": False,
+ "v2.create_rum_operation_strong_link": False,
+ "v2.delete_rum_operation": False,
+ "v2.delete_rum_operation_strong_link": False,
+ "v2.get_rum_operation": False,
+ "v2.get_rum_operation_by_name": False,
+ "v2.list_rum_operations": False,
+ "v2.update_rum_operation": False,
+ "v2.update_rum_operation_strong_link": False,
+ "v2.query_aggregated_long_tasks": False,
+ "v2.query_aggregated_signals_problems": False,
+ "v2.query_aggregated_waterfall": False,
+ "v2.create_scorecard_outcomes_batch": False,
+ "v2.get_entity_risk_score": False,
+ "v2.list_entity_risk_scores": False,
+ "v2.create_slo_report_job": False,
+ "v2.get_slo_report": False,
+ "v2.get_slo_report_job_status": False,
+ "v2.get_slo_status": False,
+ "v2.create_snapshot": False,
+ "v2.get_spa_recommendations": False,
+ "v2.get_spa_recommendations_with_shard": False,
+ "v2.create_ai_custom_rule": False,
+ "v2.create_ai_custom_rule_revision": False,
+ "v2.create_ai_custom_ruleset": False,
+ "v2.create_ai_memory_violation_result": False,
+ "v2.create_custom_rule": False,
+ "v2.create_custom_rule_revision": False,
+ "v2.create_custom_ruleset": False,
+ "v2.create_sca_resolve_vulnerable_symbols": False,
+ "v2.create_sca_result": False,
+ "v2.create_sca_scan": False,
+ "v2.delete_ai_custom_rule": False,
+ "v2.delete_ai_custom_ruleset": False,
+ "v2.delete_ai_memory_violation_result": False,
+ "v2.delete_custom_rule": False,
+ "v2.delete_custom_ruleset": False,
+ "v2.get_ai_custom_rule": False,
+ "v2.get_ai_custom_rule_revision": False,
+ "v2.get_ai_custom_ruleset": False,
+ "v2.get_custom_rule": False,
+ "v2.get_custom_rule_revision": False,
+ "v2.get_custom_ruleset": False,
+ "v2.get_sca_scan": False,
+ "v2.list_ai_custom_rule_revisions": False,
+ "v2.list_ai_custom_rulesets": False,
+ "v2.list_ai_memory_violation_results": False,
+ "v2.list_ai_prompts": False,
+ "v2.list_custom_rule_revisions": False,
+ "v2.list_custom_rulesets": False,
+ "v2.list_sca_licenses": False,
+ "v2.revert_custom_rule_revision": False,
+ "v2.update_ai_custom_ruleset": False,
+ "v2.update_custom_ruleset": False,
+ "v2.create_tag_policy": False,
+ "v2.delete_tag_policy": False,
+ "v2.get_tag_policy": False,
+ "v2.get_tag_policy_score": False,
+ "v2.list_tag_policies": False,
+ "v2.update_tag_policy": False,
+ "v2.add_member_team": False,
+ "v2.list_member_teams": False,
+ "v2.remove_member_team": False,
+ "v2.create_web_integration_account": False,
+ "v2.delete_web_integration_account": False,
+ "v2.get_web_integration_account": False,
+ "v2.list_web_integration_accounts": False,
+ "v2.update_web_integration_account": False,
+ })
+
+ # Delegated token configuration
+ self.delegated_token_config = None
+ self.delegated_auth_provider = delegated_auth_provider
+ self.delegated_auth_org_uuid = delegated_auth_org_uuid
+ self._delegated_token_credentials = None
+
+ # Load default values from environment
+ if "DD_SITE" in os.environ:
+ self.server_variables["site"] = os.environ["DD_SITE"]
+ if "DD_API_KEY" in os.environ and not self.api_key.get("apiKeyAuth"):
+ self.api_key["apiKeyAuth"] = os.environ["DD_API_KEY"]
+ if "DD_APP_KEY" in os.environ and not self.api_key.get("appKeyAuth"):
+ self.api_key["appKeyAuth"] = os.environ["DD_APP_KEY"]
+
+ def __deepcopy__(self, memo):
+ cls = self.__class__
+ result = cls.__new__(cls)
+ memo[id(self)] = result
+ for k, v in self.__dict__.items():
+ if k not in ("logger", "logger_file_handler"):
+ setattr(result, k, copy.deepcopy(v, memo))
+ # Shallow copy of loggers
+ result.logger = copy.copy(self.logger)
+ # Use setters to configure loggers
+ result.logger_file = self.logger_file
+ result.debug = self.debug
+ return result
+
+ def __setattr__(self, name, value):
+ object.__setattr__(self, name, value)
+ if name == "disabled_client_side_validations":
+ s = set(filter(None, value.split(",")))
+ for v in s:
+ if v not in JSON_SCHEMA_VALIDATION_KEYWORDS:
+ raise ApiValueError("Invalid keyword: '{0}''".format(v))
+ self._disabled_client_side_validations = s
+
+ @property
+ def logger_file(self):
+ """The logger file.
+
+ If the logger_file is None, then add stream handler and remove file
+ handler. Otherwise, add file handler and remove stream handler.
+
+ :return: The logger_file path.
+ :rtype: str
+ """
+ return self._logger_file
+
+ @logger_file.setter
+ def logger_file(self, value):
+ """The logger file.
+
+ If the logger_file is None, then add stream handler and remove file
+ handler. Otherwise, add file handler and remove stream handler.
+
+ :param value: The logger_file path.
+ :type value: str
+ """
+ self._logger_file = value
+ if self._logger_file:
+ # If set logging file,
+ # then add file handler and remove stream handler.
+ self.logger_file_handler = logging.FileHandler(self._logger_file)
+ self.logger_file_handler.setFormatter(self.logger_formatter)
+ for _, logger in self.logger.items():
+ logger.addHandler(self.logger_file_handler)
+
+ @property
+ def debug(self):
+ """Debug status.
+
+ :return: The debug status, True or False.
+ :rtype: bool
+ """
+ return self._debug
+
+ @debug.setter
+ def debug(self, value):
+ """Debug status.
+
+ :param value: The debug status, True or False.
+ :type value: bool
+ """
+ self._debug = value
+ if self._debug:
+ # if debug status is True, turn on debug logging
+ for _, logger in self.logger.items():
+ logger.setLevel(logging.DEBUG)
+ # turn on http_client debug
+ http_client.HTTPConnection.debuglevel = 1
+ else:
+ # if debug status is False, turn off debug logging,
+ # setting log level to default `logging.WARNING`
+ for _, logger in self.logger.items():
+ logger.setLevel(logging.WARNING)
+ # turn off http_client debug
+ http_client.HTTPConnection.debuglevel = 0
+
+ @property
+ def logger_format(self):
+ """The logger format.
+
+ The logger_formatter will be updated when sets logger_format.
+
+ :return: The format string.
+ :rtype: str
+ """
+ return self._logger_format
+
+ @logger_format.setter
+ def logger_format(self, value):
+ """The logger format.
+
+ The logger_formatter will be updated when sets logger_format.
+
+ :param value: The format string.
+ :type value: str
+ """
+ self._logger_format = value
+ self.logger_formatter = logging.Formatter(self._logger_format)
+
+ @property
+ def retry_backoff_factor(self):
+ """Retry backoff factor.
+
+ :return: The backoff factor, float
+ :rtype: float
+ """
+ return self._retry_backoff_factor
+
+ @retry_backoff_factor.setter
+ def retry_backoff_factor(self, value):
+ """Retry backoff factor.
+
+ :param value: The backoff factor used to calculate intervals between retry attempts
+ :type value: float
+ """
+ if value < 2:
+ raise ValueError("Retry backoff factor cannot be smaller than 2")
+ self._retry_backoff_factor = value
+
+ def get_api_key_with_prefix(self, identifier, alias=None):
+ """Gets API key (with prefix if set).
+
+ :param identifier: The identifier of apiKey.
+ :param alias: The alternative identifier of apiKey.
+
+ :return: The token for api key authentication.
+ """
+ if self.refresh_api_key_hook is not None:
+ self.refresh_api_key_hook(self)
+ key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
+ if key:
+ prefix = self.api_key_prefix.get(identifier)
+ if prefix:
+ return "%s %s" % (prefix, key)
+ return key
+
+ def get_basic_auth_token(self):
+ """Gets HTTP basic authentication header (string).
+
+ :return: The token for basic HTTP authentication.
+ """
+ username = ""
+ if self.username is not None:
+ username = self.username
+ password = ""
+ if self.password is not None:
+ password = self.password
+ return urllib3.util.make_headers(basic_auth=username + ":" + password).get("authorization")
+
+ def get_host_settings(self):
+ """Gets an array of host settings
+
+ :return: An array of host settings
+ """
+ return [
+ {
+ "url": "https://{subdomain}.{site}",
+ "description": "No description provided",
+ "variables": {
+ "site": {
+ "description": "The regional site for Datadog customers.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "us3.datadoghq.com",
+ "us5.datadoghq.com",
+ "ap1.datadoghq.com",
+ "ap2.datadoghq.com",
+ "uk1.datadoghq.com",
+ "datadoghq.eu",
+ "ddog-gov.com",
+ "us2.ddog-gov.com",
+ "uk1.datadoghq.com",
+ ],
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "api",
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "description": "No description provided",
+ "variables": {
+ "name": {
+ "description": "Full site DNS name.",
+ "default_value": "api.datadoghq.com",
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "description": "No description provided",
+ "variables": {
+ "site": {
+ "description": "Any Datadog deployment.",
+ "default_value": "datadoghq.com",
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "api",
+ },
+ },
+ },
+ ]
+
+ def get_host_from_settings(self, index, variables=None, servers=None):
+ """Gets host URL based on the index and variables.
+
+ :param index: Array index of the host settings.
+ :param variables: Hash of variable and the corresponding value.
+ :param servers: An array of host settings or None.
+
+ :return: URL based on host settings.
+ """
+ if index is None:
+ return self._base_path
+
+ variables = {} if variables is None else variables
+ servers = self.get_host_settings() if servers is None else servers
+
+ try:
+ server = servers[index]
+ except IndexError:
+ raise ValueError(
+ "Invalid index {} when selecting the host settings. "
+ "Must be less than {}".format(index, len(servers))
+ )
+
+ url = server["url"]
+
+ # go through variables and replace placeholders
+ for variable_name, variable in server.get("variables", {}).items():
+ used_value = variables.get(variable_name, variable["default_value"])
+
+ if "enum_values" in variable and used_value not in variable["enum_values"]:
+ raise ValueError(
+ "The variable `{}` in the host URL has invalid value "
+ "{}. Must be {}.".format(variable_name, variables[variable_name], variable["enum_values"])
+ )
+
+ url = url.replace(f"{{{variable_name}}}", used_value)
+
+ return url
+
+ @property
+ def host(self):
+ """Return generated host."""
+ return self.get_host_from_settings(self.server_index, variables=self.server_variables)
+
+ @host.setter
+ def host(self, value):
+ """Fix base path."""
+ self._base_path = value
+ self.server_index = None
+
+ def auth_settings(self):
+ """Gets Auth Settings dict for api client.
+
+ :return: The Auth Settings information dict.
+ """
+ auth = {}
+ if self.access_token is not None:
+ auth["AuthZ"] = {
+ "type": "oauth2",
+ "in": "header",
+ "key": "Authorization",
+ "value": "Bearer " + self.access_token,
+ }
+ if "apiKeyAuth" in self.api_key:
+ auth["apiKeyAuth"] = {
+ "type": "api_key",
+ "in": "header",
+ "key": "DD-API-KEY",
+ "value": self.get_api_key_with_prefix(
+ "apiKeyAuth",
+ ),
+ }
+ if "appKeyAuth" in self.api_key:
+ auth["appKeyAuth"] = {
+ "type": "api_key",
+ "in": "header",
+ "key": "DD-APPLICATION-KEY",
+ "value": self.get_api_key_with_prefix(
+ "appKeyAuth",
+ ),
+ }
+ return auth
diff --git a/datadog_api_client/delegated_auth.py b/datadog_api_client/delegated_auth.py
new file mode 100644
index 0000000000..f1a060e664
--- /dev/null
+++ b/datadog_api_client/delegated_auth.py
@@ -0,0 +1,161 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+import json
+import time
+from datetime import datetime, timedelta
+from typing import Optional
+from urllib.parse import urljoin
+
+from datadog_api_client import rest
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.exceptions import ApiValueError
+
+
+TOKEN_URL_ENDPOINT = "/api/v2/delegated-token"
+AUTHORIZATION_TYPE = "Delegated"
+APPLICATION_JSON = "application/json"
+
+
+class DelegatedTokenCredentials:
+ """Credentials for delegated token authentication."""
+
+ def __init__(self, org_uuid: str, delegated_token: str, delegated_proof: str, expiration: datetime):
+ self.org_uuid = org_uuid
+ self.delegated_token = delegated_token
+ self.delegated_proof = delegated_proof
+ self.expiration = expiration
+
+ def is_expired(self) -> bool:
+ """Check if the token is expired."""
+ return datetime.now() >= self.expiration
+
+
+class DelegatedTokenConfig:
+ """Configuration for delegated token authentication."""
+
+ def __init__(self, org_uuid: str, provider: str, provider_auth: 'DelegatedTokenProvider'):
+ self.org_uuid = org_uuid
+ self.provider = provider
+ self.provider_auth = provider_auth
+
+
+class DelegatedTokenProvider:
+ """Abstract base class for delegated token providers."""
+
+ def __init__(self):
+ self._rest_client = None
+
+ def authenticate(self, config: DelegatedTokenConfig, api_config: Configuration) -> DelegatedTokenCredentials:
+ """Authenticate and return delegated token credentials.
+
+ :param config: Delegated token configuration
+ :param api_config: API client configuration with host and other settings
+ :return: DelegatedTokenCredentials object
+ """
+ raise NotImplementedError("Subclasses must implement authenticate method")
+
+
+def get_delegated_token(org_uuid: str, delegated_auth_proof: str, config: Configuration, provider=None) -> DelegatedTokenCredentials:
+ """Get a delegated token from the Datadog API.
+
+ :param org_uuid: Organization UUID
+ :param delegated_auth_proof: Authentication proof string
+ :param config: Configuration object with host and other settings
+ :param provider: Optional provider instance that may have a cached REST client
+ :return: DelegatedTokenCredentials object
+ :raises: ApiValueError if the request fails
+ """
+ url = get_delegated_token_url(config)
+
+ # Use provider's cached REST client if available, otherwise create a new one
+ if provider and hasattr(provider, '_rest_client') and provider._rest_client is not None:
+ rest_client = provider._rest_client
+ else:
+ rest_client = rest.RESTClientObject(config)
+ # Cache it in the provider if provided
+ if provider:
+ provider._rest_client = rest_client
+
+ headers = {
+ "Content-Type": APPLICATION_JSON,
+ "Authorization": f"{AUTHORIZATION_TYPE} {delegated_auth_proof}",
+ "Content-Length": "0"
+ }
+
+ try:
+ response = rest_client.request(
+ method="POST",
+ url=url,
+ headers=headers,
+ body="",
+ preload_content=True
+ )
+
+ if response.status != 200:
+ raise ApiValueError(f"Failed to get token: {response.status}")
+
+ response_data = response.data.decode('utf-8')
+ creds = parse_delegated_token_response(response_data, org_uuid, delegated_auth_proof)
+ return creds
+
+ except Exception as e:
+ raise ApiValueError(f"Failed to get delegated token: {str(e)}")
+
+
+def parse_delegated_token_response(response_data: str, org_uuid: str, delegated_auth_proof: str) -> DelegatedTokenCredentials:
+ """Parse the delegated token response.
+
+ :param response_data: JSON response data as string
+ :param org_uuid: Organization UUID
+ :param delegated_auth_proof: Authentication proof string
+ :return: DelegatedTokenCredentials object
+ :raises: ApiValueError if parsing fails
+ """
+ try:
+ token_response = json.loads(response_data)
+ except json.JSONDecodeError as e:
+ raise ApiValueError(f"Failed to parse token response: {str(e)}")
+
+ # Get attributes from the response
+ data_response = token_response.get("data")
+ if not data_response:
+ raise ApiValueError(f"Failed to get data from response: {token_response}")
+
+ attributes = data_response.get("attributes")
+ if not attributes:
+ raise ApiValueError(f"Failed to get attributes from response: {token_response}")
+
+ # Get the access token from the response
+ token = attributes.get("access_token")
+ if not token:
+ raise ApiValueError(f"Failed to get token from response: {token_response}")
+
+ # get expiration time from the response, default to 15 min
+ expiration_time = datetime.now() + timedelta(minutes=15)
+ expires_str = attributes.get("expires")
+ if expires_str:
+ try:
+ expiration_int = int(expires_str)
+ expiration_time = datetime.fromtimestamp(expiration_int)
+ except (ValueError, TypeError):
+ # Use default expiration if parsing fails
+ pass
+
+ return DelegatedTokenCredentials(
+ org_uuid=org_uuid,
+ delegated_token=token,
+ delegated_proof=delegated_auth_proof,
+ expiration=expiration_time
+ )
+
+
+def get_delegated_token_url(config: Configuration) -> str:
+ """Get the URL for the delegated token endpoint.
+
+ :param config: Configuration object
+ :return: Full URL for the delegated token endpoint
+ """
+ base_url = config.host
+ return urljoin(base_url, TOKEN_URL_ENDPOINT)
\ No newline at end of file
diff --git a/datadog_api_client/exceptions.py b/datadog_api_client/exceptions.py
new file mode 100644
index 0000000000..39cf939067
--- /dev/null
+++ b/datadog_api_client/exceptions.py
@@ -0,0 +1,146 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+import json
+
+
+class OpenApiException(Exception):
+ """The base exception class for all OpenAPIExceptions"""
+
+
+class ApiTypeError(OpenApiException, TypeError):
+ def __init__(self, msg, path_to_item=None, valid_classes=None, key_type=None):
+ """Raises an exception for TypeErrors.
+
+ :param msg: The exception message.
+ :type msg: str
+ :param path_to_item: A list of keys an indices to get to the
+ current_item None if unset.
+ :type path_to_item: list
+ :param valid_classes: The primitive classes that current item should
+ be an instance of None if unset.
+ :type valid_classes: tuple
+ :param key_type: False if our value is a value in a dict True if
+ it is a key in a dict False if our item is an item in a list None if unset.
+ :type key_type: bool
+ """
+ self.path_to_item = path_to_item
+ self.valid_classes = valid_classes
+ self.key_type = key_type
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiTypeError, self).__init__(full_msg)
+
+
+class ApiValueError(OpenApiException, ValueError):
+ def __init__(self, msg, path_to_item=None):
+ """
+ :param msg: The exception message.
+ :type msg: str
+
+ :param path_to_item: The path to the exception in the received_data
+ dict. None if unset.
+ :type path_to_item: list
+ """
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiValueError, self).__init__(full_msg)
+
+
+class ApiAttributeError(OpenApiException, AttributeError):
+ def __init__(self, msg, path_to_item=None):
+ """
+ Raised when an attribute reference or assignment fails.
+
+ :param msg: The exception message.
+ :type msg: str
+
+ :param path_to_item: The path to the exception in the received_data
+ dict. None if unset.
+ :type path_to_item: list
+ """
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiAttributeError, self).__init__(full_msg)
+
+
+class ApiKeyError(OpenApiException, KeyError):
+ def __init__(self, msg, path_to_item=None):
+ """
+ :param msg: The exception message.
+ :type msg: str
+
+ :param path_to_item: The path to the exception in the received_data
+ dict. None if unset.
+ :type path_to_item: list
+ """
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiKeyError, self).__init__(full_msg)
+
+
+class ApiException(OpenApiException):
+ def __init__(self, status=None, reason=None, http_resp=None):
+ if http_resp:
+ self.status = http_resp.status
+ self.reason = http_resp.reason
+ try:
+ self.body = json.loads(http_resp.data)
+ except Exception:
+ self.body = http_resp.data.decode("utf-8")
+ self.headers = dict(http_resp.headers)
+ else:
+ self.status = status
+ self.reason = reason
+ self.body = None
+ self.headers = None
+
+ def __str__(self):
+ """Custom error messages for exception"""
+ error_message = "({0})\n" "Reason: {1}\n".format(self.status, self.reason)
+ if self.headers:
+ error_message += "HTTP response headers: {0}\n".format(self.headers)
+
+ if self.body:
+ error_message += "HTTP response body: {0}\n".format(self.body)
+
+ return error_message
+
+
+class NotFoundException(ApiException):
+ def __init__(self, status=None, reason=None, http_resp=None):
+ super(NotFoundException, self).__init__(status, reason, http_resp)
+
+
+class UnauthorizedException(ApiException):
+ def __init__(self, status=None, reason=None, http_resp=None):
+ super(UnauthorizedException, self).__init__(status, reason, http_resp)
+
+
+class ForbiddenException(ApiException):
+ def __init__(self, status=None, reason=None, http_resp=None):
+ super(ForbiddenException, self).__init__(status, reason, http_resp)
+
+
+class ServiceException(ApiException):
+ def __init__(self, status=None, reason=None, http_resp=None):
+ super(ServiceException, self).__init__(status, reason, http_resp)
+
+
+def render_path(path_to_item):
+ """Returns a string representation of a path"""
+ result = ""
+ for pth in path_to_item:
+ if isinstance(pth, int):
+ result += "[{0}]".format(pth)
+ else:
+ result += "['{0}']".format(pth)
+ return result
diff --git a/datadog_api_client/model_utils.py b/datadog_api_client/model_utils.py
new file mode 100644
index 0000000000..3ba0bac1a3
--- /dev/null
+++ b/datadog_api_client/model_utils.py
@@ -0,0 +1,1880 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+from contextlib import suppress
+from datetime import date, datetime
+from uuid import UUID
+import enum
+from functools import lru_cache
+import inspect
+import io
+import os
+import pprint
+import re
+import tempfile
+from types import MappingProxyType
+from typing import Collection, Mapping, Union, overload
+from typing_extensions import Final, Self
+
+from dateutil.parser import parse
+
+from datadog_api_client.exceptions import (
+ ApiKeyError,
+ ApiAttributeError,
+ ApiTypeError,
+ ApiValueError,
+)
+
+none_type = type(None)
+file_type = io.IOBase
+empty_dict = MappingProxyType({}) # type: ignore
+
+
+def _make_hashable(obj):
+ """Convert potentially unhashable objects to hashable representations for caching."""
+ if isinstance(obj, (list, tuple)):
+ return tuple(_make_hashable(item) for item in obj)
+ elif isinstance(obj, dict):
+ return tuple(sorted((_make_hashable(k), _make_hashable(v)) for k, v in obj.items()))
+ elif isinstance(obj, set):
+ return tuple(sorted(_make_hashable(item) for item in obj))
+ else:
+ try:
+ hash(obj)
+ return obj
+ except TypeError:
+ return str(obj)
+
+
+class UnsetType(enum.Enum):
+ unset = 0
+
+
+unset: Final = UnsetType.unset
+
+
+class cached_property(object):
+ # This caches the result of the function call for fn with no inputs
+ # use this as a decorator on function methods that you want converted
+ # into cached properties
+ result_key = "_results"
+
+ def __init__(self, fn):
+ self._fn = fn
+
+ def __get__(self, instance, cls=None):
+ if self.result_key in vars(self):
+ return vars(self)[self.result_key]
+ else:
+ result = self._fn(instance)
+ setattr(self, self.result_key, result)
+ return result
+
+
+PRIMITIVE_TYPES = (list, float, int, bool, datetime, date, str, UUID, file_type)
+
+
+def allows_single_value_input(cls):
+ """
+ This function returns True if the input composed schema model or any
+ descendant model allows a value only input.
+ """
+ if issubclass(cls, ModelSimple) or cls in PRIMITIVE_TYPES:
+ return True
+ elif issubclass(cls, ModelComposed):
+ if not cls._composed_schemas["oneOf"]:
+ return False
+ return any(
+ isinstance(c, list) or allows_single_value_input(c) for c in cls._composed_schemas["oneOf"]
+ )
+ return False
+
+
+def composed_model_input_classes(cls):
+ """
+ This function returns a list of the possible models that can be accepted as
+ inputs.
+ """
+ # Handle list types (e.g., [str], [float])
+ if isinstance(cls, list):
+ return [cls]
+ if issubclass(cls, ModelSimple) or cls in PRIMITIVE_TYPES:
+ return [cls]
+ elif issubclass(cls, ModelNormal):
+ return [cls]
+ elif issubclass(cls, ModelComposed):
+ if not cls._composed_schemas["oneOf"]:
+ return []
+ input_classes = []
+ for c in cls._composed_schemas["oneOf"]:
+ input_classes.extend(composed_model_input_classes(c))
+ return input_classes
+ return []
+
+
+class OpenApiModel:
+ """The base class for all OpenAPIModels.
+
+ :var attribute_map: The key is attribute name and the value is json
+ key in definition.
+ :type attribute_map: dict
+ :var validations: The key is the name of the attribute. The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ :type validations: dict
+ :var additional_properties_type: A tuple of classes accepted
+ as additional properties values.
+ :type additional_properties_type: tuple
+ """
+
+ _composed_schemas = empty_dict
+
+ additional_properties_type = (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)
+
+ attribute_map: Mapping[str, str] = empty_dict
+
+ _nullable = False
+
+ validations: Mapping[str, Mapping[str, Union[int, float]]] = empty_dict
+
+ openapi_types = empty_dict
+
+ read_only_vars: Collection[str] = frozenset()
+
+ def set_attribute(self, name, value):
+ # this is only used to set properties on self
+
+ path_to_item = []
+ if self._path_to_item:
+ path_to_item.extend(self._path_to_item)
+ path_to_item.append(name)
+
+ if name in self.openapi_types:
+ required_types_mixed = self.openapi_types[name]
+ elif self.additional_properties_type is None:
+ raise ApiAttributeError("{0} has no attribute '{1}'".format(type(self).__name__, name), path_to_item)
+ elif self.additional_properties_type is not None:
+ required_types_mixed = self.additional_properties_type
+
+ if get_simple_class(name) != str:
+ error_msg = type_error_message(var_name=name, var_value=name, valid_classes=(str,), key_type=True)
+ raise ApiTypeError(error_msg, path_to_item=path_to_item, valid_classes=(str,), key_type=True)
+
+ if self._check_type and value is not None:
+ value = validate_and_convert_types(
+ value,
+ required_types_mixed,
+ path_to_item,
+ self._spec_property_naming,
+ self._check_type,
+ configuration=self._configuration,
+ )
+ if isinstance(value, list):
+ for x in value:
+ if isinstance(x, UnparsedObject) or (isinstance(x, OpenApiModel) and x._unparsed):
+ self._unparsed = True
+ if name in self.validations:
+ check_validations(self.validations[name], name, value, self._configuration)
+ self.__dict__["_data_store"][name] = value
+ if isinstance(value, OpenApiModel) and value._unparsed:
+ self._unparsed = True
+
+ def __repr__(self):
+ """For `print` and `pprint`"""
+ return self.to_str()
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
+
+ def __setattr__(self, attr, value):
+ """Set the value of an attribute using dot notation: `instance.attr = val`."""
+ self[attr] = value
+
+ def __getattr__(self, attr):
+ """Get the value of an attribute using dot notation: `instance.attr`."""
+ return self.__getitem__(attr)
+
+ @overload
+ def __new__(cls, arg: None) -> None: # type: ignore
+ ...
+
+ @overload
+ def __new__(cls, arg: "ModelComposed") -> Self:
+ ...
+
+ @overload
+ def __new__(cls, *args, **kwargs) -> Self:
+ ...
+
+ def __new__(cls, *args, **kwargs):
+ if len(args) == 1:
+ arg = args[0]
+ if arg is None and is_type_nullable(cls):
+ # The input data is the 'null' value and the type is nullable.
+ return None
+
+ if issubclass(cls, ModelComposed) and allows_single_value_input(cls):
+ model_kwargs = {}
+ oneof_instance = get_oneof_instance(cls, model_kwargs, kwargs, model_arg=arg)
+ return oneof_instance
+
+ return super().__new__(cls)
+
+ def __init__(self, kwargs):
+ """
+ :param _check_type: If True, values for parameters in openapi_types
+ will be type checked and a TypeError will be raised if the wrong type is input.
+ Defaults to True.
+ :type _check_type: bool
+ :param _path_to_item: This is a list of keys or values to drill down to
+ the model in received_data when deserializing a response.
+ :type _path_to_item: tuple/list
+ :param _spec_property_naming: True if the variable names in the input
+ data are serialized names, as specified in the OpenAPI document. False if the
+ variable names in the input data are pythonic names, e.g. snake case (default).
+ :type _spec_property_naming: bool
+ :param _configuration: The instance to use when deserializing a
+ file_type parameter. If passed, type conversion is attempted If omitted no
+ type conversion is done.
+ :type _configuration: Configuration
+ """
+ _check_type = kwargs.pop("_check_type", True)
+ _spec_property_naming = kwargs.pop("_spec_property_naming", False)
+ _path_to_item = kwargs.pop("_path_to_item", ())
+ _configuration = kwargs.pop("_configuration", None)
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._unparsed = False
+
+ def _check_pos_args(self, args):
+ if args:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments."
+ % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=self._path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ def _check_kw_args(self, kwargs):
+ if kwargs:
+ raise ApiTypeError(
+ "Invalid named arguments=%s passed to %s. Remove those invalid named arguments."
+ % (
+ kwargs,
+ self.__class__.__name__,
+ ),
+ path_to_item=self._path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+
+class ModelSimple(OpenApiModel):
+ """
+ The parent class of models whose type != object in their
+ swagger/openapi.
+
+ :var allowed_values: Set of allowed values.
+ :type allowed_values: set
+ """
+
+ allowed_values: Collection[Union[str, int]] = frozenset()
+
+ required_properties = set(
+ [
+ "_data_store",
+ "_check_type",
+ "_spec_property_naming",
+ "_path_to_item",
+ "_configuration",
+ "_unparsed",
+ ]
+ )
+
+ def __init__(self, value, **kwargs):
+ super().__init__(kwargs)
+ self.value = value
+ self._check_kw_args(kwargs)
+
+ def __setitem__(self, name, value):
+ """Set the value of an attribute using square-bracket notation: `instance[attr] = val`."""
+ if name in self.required_properties:
+ self.__dict__[name] = value
+ return
+
+ if self.allowed_values and name == "value":
+ try:
+ check_allowed_values(self.allowed_values, name, value)
+ except ApiValueError:
+ self.__dict__["_data_store"][name] = value
+ self._unparsed = True
+ return
+
+ self.set_attribute(name, value)
+
+ def get(self, name, default=None):
+ """Returns the value of an attribute or some default value if the attribute was not set."""
+ if name in self.required_properties:
+ return self.__dict__[name]
+
+ return self.__dict__["_data_store"].get(name, default)
+
+ def __getitem__(self, name):
+ """Get the value of an attribute using square-bracket notation: `instance[attr]`."""
+ if name in self:
+ return self.get(name)
+
+ raise ApiAttributeError(
+ "{0} has no attribute '{1}'".format(type(self).__name__, name), [e for e in (self._path_to_item, name) if e]
+ )
+
+ def __contains__(self, name):
+ """Used by `in` operator to check if an attribute value was set in an instance: `'attr' in instance`."""
+ if name in self.required_properties:
+ return name in self.__dict__
+
+ return name in self.__dict__["_data_store"]
+
+ def to_str(self):
+ """Returns the string representation of the model"""
+ return str(self.value)
+
+ def __eq__(self, other):
+ """Returns true if both objects are equal"""
+ if not isinstance(other, self.__class__):
+ return False
+
+ this_val = self._data_store["value"]
+ that_val = other._data_store["value"]
+ return this_val == that_val
+
+
+class ModelNormal(OpenApiModel):
+ """
+ The parent class of models whose type == object in their swagger/openapi.
+ """
+
+ required_properties = set(
+ [
+ "_data_store",
+ "_check_type",
+ "_spec_property_naming",
+ "_path_to_item",
+ "_configuration",
+ "_unparsed",
+ ]
+ )
+
+ def __setitem__(self, name, value):
+ """Set the value of an attribute using square-bracket notation: `instance[attr] = val`."""
+ if name in self.required_properties:
+ self.__dict__[name] = value
+ return
+
+ self.set_attribute(name, value)
+
+ def get(self, name, default=None):
+ """Returns the value of an attribute or some default value if the attribute was not set."""
+ if name in self.required_properties:
+ return self.__dict__[name]
+
+ return self.__dict__["_data_store"].get(name, default)
+
+ def __getitem__(self, name):
+ """Get the value of an attribute using square-bracket notation: `instance[attr]`."""
+ if name in self:
+ return self.get(name)
+
+ raise ApiAttributeError(
+ "{0} has no attribute '{1}'".format(type(self).__name__, name), [e for e in (self._path_to_item, name) if e]
+ )
+
+ def __contains__(self, name):
+ """Used by `in` operator to check if an attribute value was set in an instance: `'attr' in instance`."""
+ if name in self.required_properties:
+ return name in self.__dict__
+
+ return name in self.__dict__["_data_store"]
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ return model_to_dict(self, serialize=False)
+
+ def to_str(self):
+ """Returns the string representation of the model"""
+ return pprint.pformat(self.to_dict())
+
+ def __eq__(self, other):
+ """Returns true if both objects are equal"""
+ if not isinstance(other, self.__class__):
+ return False
+
+ if not set(self._data_store.keys()) == set(other._data_store.keys()):
+ return False
+ for _var_name, this_val in self._data_store.items():
+ that_val = other._data_store[_var_name]
+ if this_val != that_val:
+ return False
+ return True
+
+ def __init__(self, kwargs):
+ super().__init__(kwargs)
+ for var_name, var_value in kwargs.items():
+ setattr(self, var_name, var_value)
+ if not self._spec_property_naming and var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute.")
+
+
+class ModelComposed(OpenApiModel):
+ """
+ The parent class of models whose type == object in their swagger/openapi
+ and have oneOf.
+
+ When one sets a property we use var_name_to_model_instances to store the value in
+ the correct class instances + run any type checking + validation code.
+ When one gets a property we use var_name_to_model_instances to get the value
+ from the correct class instances.
+ This allows multiple composed schemas to contain the same property with additive
+ constraints on the value.
+
+ :var _composed_schemas: Stores the oneOf classes.
+ :type _composed_schemas: dict
+ :var _composed_instances: Stores a list of instances of the composed schemas
+ defined in _composed_schemas. When properties are accessed in the self instance,
+ they are returned from the self._data_store or the data stores in the instances
+ in self._composed_schemas.
+ :type _composed_schemas: list
+ :var _var_name_to_model_instances: Map between a variable name on self and
+ the composed instances (self included) which contain that data.
+ :type _var_name_to_model_instances: dict
+ """
+
+ required_properties = set(
+ [
+ "_data_store",
+ "_check_type",
+ "_spec_property_naming",
+ "_path_to_item",
+ "_configuration",
+ "_composed_instances",
+ "_var_name_to_model_instances",
+ "_additional_properties_model_instances",
+ "_unparsed",
+ ]
+ )
+
+ def __init__(self, kwargs):
+ super().__init__(kwargs)
+ constant_args = {
+ "_check_type": self._check_type,
+ "_path_to_item": self._path_to_item,
+ "_spec_property_naming": self._spec_property_naming,
+ "_configuration": self._configuration,
+ }
+ composed_info = validate_get_composed_info(constant_args, kwargs, self)
+ self._composed_instances = composed_info[0]
+ self._var_name_to_model_instances = composed_info[1]
+ self._additional_properties_model_instances = composed_info[2]
+ self._unparsed = any(isinstance(composed_instance, UnparsedObject)
+ for composed_instance in self._composed_instances)
+
+ def __setitem__(self, name, value):
+ """Set the value of an attribute using square-bracket notation: `instance[attr] = val`."""
+ if name in self.required_properties:
+ self.__dict__[name] = value
+ return
+
+ # Set attribute on composed instances
+ for model_instance in self._composed_instances:
+ setattr(model_instance, name, value)
+ if name not in self._var_name_to_model_instances:
+ # we assigned an additional property
+ self.__dict__["_var_name_to_model_instances"][name] = self._composed_instances + [self]
+ return None
+
+ __unset_attribute_value__ = object()
+
+ def get(self, name, default=None):
+ """Returns the value of an attribute or some default value if the attribute was not set."""
+ if name in self.required_properties:
+ return self.__dict__[name]
+
+ # get the attribute from the correct instance
+ model_instances = self._var_name_to_model_instances.get(name)
+ values = []
+ # A composed model stores self and child (oneof) models under
+ # self._var_name_to_model_instances.
+ # Any property must exist in self and all model instances
+ # The value stored in all model instances must be the same
+ if model_instances:
+ for model_instance in model_instances:
+ if name in model_instance._data_store:
+ v = model_instance._data_store[name]
+ if v not in values:
+ values.append(v)
+ len_values = len(values)
+ if len_values == 0:
+ return default
+ elif len_values == 1:
+ return values[0]
+ elif len_values > 1:
+ raise ApiValueError(
+ "Values stored for property {0} in {1} differ when looking "
+ "at self and self's composed instances. All values must be "
+ "the same".format(name, type(self).__name__),
+ [e for e in (self._path_to_item, name) if e],
+ )
+
+ def __getitem__(self, name):
+ """Get the value of an attribute using square-bracket notation: `instance[attr]`."""
+ value = self.get(name, self.__unset_attribute_value__)
+ if value is self.__unset_attribute_value__:
+ raise ApiAttributeError(
+ "{0} has no attribute '{1}'".format(type(self).__name__, name),
+ [e for e in (self._path_to_item, name) if e],
+ )
+ return value
+
+ def __contains__(self, name):
+ """Used by `in` operator to check if an attribute value was set in an instance: `'attr' in instance`."""
+
+ if name in self.required_properties:
+ return name in self.__dict__
+
+ model_instances = self._var_name_to_model_instances.get(name, self._additional_properties_model_instances)
+
+ if model_instances:
+ for model_instance in model_instances:
+ if name in model_instance._data_store:
+ return True
+
+ return False
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ return model_to_dict(self, serialize=False)
+
+ def to_str(self):
+ """Returns the string representation of the model"""
+ return pprint.pformat(self.to_dict())
+
+ def get_oneof_instance(self):
+ """Returns the oneOf instance"""
+ return self._composed_instances[0]
+
+ def __eq__(self, other):
+ """Returns true if both objects are equal"""
+ if not isinstance(other, self.__class__):
+ return False
+
+ if not set(self._data_store.keys()) == set(other._data_store.keys()):
+ return False
+ for _var_name, this_val in self._data_store.items():
+ that_val = other._data_store[_var_name]
+ if this_val != that_val:
+ return False
+ return True
+
+
+COERCION_INDEX_BY_TYPE = {
+ ModelComposed: 0,
+ ModelNormal: 1,
+ ModelSimple: 2,
+ none_type: 3, # The type of 'None'.
+ list: 4,
+ dict: 5,
+ float: 6,
+ int: 7,
+ bool: 8,
+ datetime: 9,
+ date: 10,
+ str: 11,
+ UUID: 12,
+ file_type: 13, # 'file_type' is an alias for the built-in 'file' or 'io.IOBase' type.
+}
+
+# these are used to limit what type conversions we try to do
+# when we have a valid type already and we want to try converting
+# to another type
+UPCONVERSION_TYPE_PAIRS = (
+ (str, datetime),
+ (str, date),
+ # (str, UUID), # Strings shouldn't always be converted to UUIDs, only when the format is a UUID explicitly.
+ (int, float), # A float may be serialized as an integer, e.g. '3' is a valid serialized float.
+ (list, ModelComposed),
+ (dict, ModelComposed),
+ (bool, ModelComposed),
+ (str, ModelComposed),
+ (int, ModelComposed),
+ (float, ModelComposed),
+ (list, ModelComposed),
+ (list, ModelNormal),
+ (dict, ModelNormal),
+ (bool, ModelSimple),
+ (str, ModelSimple),
+ (int, ModelSimple),
+ (float, ModelSimple),
+ (list, ModelSimple),
+)
+
+COERCIBLE_TYPE_PAIRS = {
+ False: ( # client instantiation of a model with client data
+ # (dict, ModelComposed),
+ # (list, ModelComposed),
+ # (dict, ModelNormal),
+ # (list, ModelNormal),
+ # (str, ModelSimple),
+ # (int, ModelSimple),
+ # (float, ModelSimple),
+ # (list, ModelSimple),
+ # (str, int),
+ # (str, float),
+ # (str, datetime),
+ # (str, date),
+ # (int, str),
+ # (float, str),
+ ),
+ True: ( # server -> client data
+ (dict, ModelComposed),
+ (list, ModelComposed),
+ (dict, ModelNormal),
+ (list, ModelNormal),
+ (bool, ModelSimple),
+ (str, ModelSimple),
+ (int, ModelSimple),
+ (float, ModelSimple),
+ (list, ModelSimple),
+ # (str, int),
+ # (str, float),
+ (str, datetime),
+ (str, date),
+ (str, UUID),
+ # (int, str),
+ # (float, str),
+ (str, file_type),
+ ),
+}
+
+
+def get_simple_class(input_value):
+ """Returns an input_value's simple class that we will use for type checking.
+
+ :param input_value: The item for which we will return the simple class.
+ :type input_value: class/class_instance
+ """
+ if isinstance(input_value, type):
+ # input_value is a class
+ return input_value
+ elif isinstance(input_value, tuple):
+ return tuple
+ elif isinstance(input_value, list):
+ return list
+ elif isinstance(input_value, dict):
+ return dict
+ elif input_value is None:
+ return none_type
+ elif isinstance(input_value, file_type):
+ return file_type
+ elif isinstance(input_value, bool):
+ # this must be higher than the int check because
+ # isinstance(True, int) == True
+ return bool
+ elif isinstance(input_value, int):
+ return int
+ elif isinstance(input_value, datetime):
+ # this must be higher than the date check because
+ # isinstance(datetime_instance, date) == True
+ return datetime
+ elif isinstance(input_value, date):
+ return date
+ elif isinstance(input_value, str):
+ return str
+ elif isinstance(input_value, UUID):
+ return UUID
+ return type(input_value)
+
+
+def check_allowed_values(allowed_values, input_variable, input_values):
+ """Raises an exception if the input_values are not allowed.
+
+ :type allowed_values: set
+ :param input_variable: The name of the input variable.
+ :type input_variable: str
+ :param input_values: The values that we are checking to see if they are in
+ allowed_values.
+ :type input_values: list/str/int/float/date/datetime/uuid
+ """
+ if isinstance(input_values, list) and not set(input_values).issubset(allowed_values):
+ invalid_values = (", ".join(map(str, set(input_values) - allowed_values)),)
+ raise ApiValueError(
+ "Invalid values for `%s` [%s], must be a subset of [%s]"
+ % (input_variable, invalid_values, ", ".join(str(v) for v in allowed_values))
+ )
+ elif isinstance(input_values, dict) and not set(input_values.keys()).issubset(allowed_values):
+ invalid_values = ", ".join(map(str, set(input_values.keys()) - allowed_values))
+ raise ApiValueError(
+ "Invalid keys in `%s` [%s], must be a subset of [%s]"
+ % (input_variable, invalid_values, ", ".join(str(v) for v in allowed_values))
+ )
+ elif not isinstance(input_values, (list, dict)) and input_values not in allowed_values:
+ raise ApiValueError(
+ "Invalid value for `%s` (%s), must be one of %s" % (input_variable, input_values, allowed_values)
+ )
+
+
+def is_json_validation_enabled(schema_keyword, configuration=None):
+ """
+ Returns True if JSON schema validation is enabled for the specified
+ validation keyword. This can be used to skip JSON schema structural validation
+ as requested in the configuration.
+
+ :param schema_keyword: The name of a JSON schema validation keyword.
+ :type schema_keyword: string
+ :param configuration: The configuration instance.
+ :type configuration: Configuration
+ """
+ return (
+ configuration is None
+ or not hasattr(configuration, "_disabled_client_side_validations")
+ or schema_keyword not in configuration._disabled_client_side_validations
+ )
+
+
+def check_validations(validations, input_variable, input_values, configuration=None):
+ """Raises an exception if the input_values are invalid.
+
+ :param validations: The validation dictionary.
+ :type validations: dict
+ :param input_variable: The name of the input variable.
+ :type input_variable: str
+ :param input_values: The values that we are checking.
+ :type input_values: list/str/int/float/date/datetime/uuid
+ :param configuration: The configuration instance.
+ :type configuration: Configuration
+ """
+ if input_values is None:
+ return
+
+ if (
+ is_json_validation_enabled("multipleOf", configuration)
+ and "multiple_of" in validations
+ and isinstance(input_values, (int, float))
+ and not (float(input_values) / validations["multiple_of"]).is_integer()
+ ):
+ # Note 'multipleOf' will be as good as the floating point arithmetic.
+ raise ApiValueError(
+ "Invalid value for `%s`, value must be a multiple of " "`%s`" % (input_variable, validations["multiple_of"])
+ )
+
+ if (
+ is_json_validation_enabled("maxLength", configuration)
+ and "max_length" in validations
+ and len(input_values) > validations["max_length"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, length must be less than or equal to "
+ "`%s`" % (input_variable, validations["max_length"])
+ )
+
+ if (
+ is_json_validation_enabled("minLength", configuration)
+ and "min_length" in validations
+ and len(input_values) < validations["min_length"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, length must be greater than or equal to "
+ "`%s`" % (input_variable, validations["min_length"])
+ )
+
+ if (
+ is_json_validation_enabled("maxItems", configuration)
+ and "max_items" in validations
+ and len(input_values) > validations["max_items"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, number of items must be less than or "
+ "equal to `%s`" % (input_variable, validations["max_items"])
+ )
+
+ if (
+ is_json_validation_enabled("minItems", configuration)
+ and "min_items" in validations
+ and len(input_values) < validations["min_items"]
+ ):
+ raise ValueError(
+ "Invalid value for `%s`, number of items must be greater than or "
+ "equal to `%s`" % (input_variable, validations["min_items"])
+ )
+
+ items = ("exclusive_maximum", "inclusive_maximum", "exclusive_minimum", "inclusive_minimum")
+ if any(item in validations for item in items):
+ if isinstance(input_values, list):
+ max_val = max(input_values)
+ min_val = min(input_values)
+ elif isinstance(input_values, dict):
+ max_val = max(input_values.values())
+ min_val = min(input_values.values())
+ else:
+ max_val = input_values
+ min_val = input_values
+
+ if (
+ is_json_validation_enabled("exclusiveMaximum", configuration)
+ and "exclusive_maximum" in validations
+ and max_val >= validations["exclusive_maximum"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, must be a value less than `%s`"
+ % (input_variable, validations["exclusive_maximum"])
+ )
+
+ if (
+ is_json_validation_enabled("maximum", configuration)
+ and "inclusive_maximum" in validations
+ and max_val > validations["inclusive_maximum"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, must be a value less than or equal to "
+ "`%s`" % (input_variable, validations["inclusive_maximum"])
+ )
+
+ if (
+ is_json_validation_enabled("exclusiveMinimum", configuration)
+ and "exclusive_minimum" in validations
+ and min_val <= validations["exclusive_minimum"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, must be a value greater than `%s`"
+ % (input_variable, validations["exclusive_maximum"])
+ )
+
+ if (
+ is_json_validation_enabled("minimum", configuration)
+ and "inclusive_minimum" in validations
+ and min_val < validations["inclusive_minimum"]
+ ):
+ raise ApiValueError(
+ "Invalid value for `%s`, must be a value greater than or equal "
+ "to `%s`" % (input_variable, validations["inclusive_minimum"])
+ )
+ flags = validations.get("regex", {}).get("flags", 0)
+ if (
+ is_json_validation_enabled("pattern", configuration)
+ and "regex" in validations
+ and not re.search(validations["regex"]["pattern"], input_values, flags=flags)
+ ):
+ err_msg = r"Invalid value for `%s`, must match regular expression `%s`" % (
+ input_variable,
+ validations["regex"]["pattern"],
+ )
+ if flags != 0:
+ # Don't print the regex flags if the flags are not
+ # specified in the OAS document.
+ err_msg = r"%s with flags=`%s`" % (err_msg, flags)
+ raise ApiValueError(err_msg)
+
+
+def order_response_types(required_types):
+ """Returns the required types sorted in coercion order.
+
+ :param required_types: Collection of classes or instance of
+ list or dict with class information inside it.
+ :type required_types: list/tuple
+
+ :return: Coercion order sorted collection of classes or instance
+ of list or dict with class information inside it.
+ :rtype: list
+ """
+ def index_getter(class_or_instance):
+ if isinstance(class_or_instance, list):
+ return COERCION_INDEX_BY_TYPE[list]
+ elif isinstance(class_or_instance, dict):
+ return COERCION_INDEX_BY_TYPE[dict]
+ elif inspect.isclass(class_or_instance) and issubclass(class_or_instance, ModelComposed):
+ return COERCION_INDEX_BY_TYPE[ModelComposed]
+ elif inspect.isclass(class_or_instance) and issubclass(class_or_instance, ModelNormal):
+ return COERCION_INDEX_BY_TYPE[ModelNormal]
+ elif inspect.isclass(class_or_instance) and issubclass(class_or_instance, ModelSimple):
+ return COERCION_INDEX_BY_TYPE[ModelSimple]
+ elif class_or_instance in COERCION_INDEX_BY_TYPE:
+ return COERCION_INDEX_BY_TYPE[class_or_instance]
+ raise ApiValueError("Unsupported type: %s" % class_or_instance)
+
+ sorted_types = sorted(required_types, key=index_getter)
+ return tuple(sorted_types)
+
+
+def remove_uncoercible(required_types_classes, current_item, spec_property_naming, must_convert=True):
+ """Only keeps the type conversions that are possible.
+
+ :param required_types_classes: Classes that are required, these should be
+ ordered by COERCION_INDEX_BY_TYPE.
+ :type required_types_classes: tuple
+ :param spec_property_naming: True if the variable names in the input data
+ are serialized names as specified in the OpenAPI document. False if the
+ variables names in the input data are python variable names in PEP-8 snake
+ case.
+ :type spec_property_naming: bool
+ :param current_item: The current item (input data) to be converted.
+
+ :param must_convert: If True the item to convert is of the wrong type and
+ we want a big list of coercibles if False, we want a limited list of coercibles.
+ :type must_convert: bool
+
+ :return: The remaining coercible required types, classes only.
+ :rtype: list
+ """
+ current_type_simple = get_simple_class(current_item)
+ return list(_remove_uncoercible_impl(required_types_classes, current_type_simple, spec_property_naming, must_convert))
+
+
+def _remove_uncoercible_impl(required_types_classes, current_type_simple, spec_property_naming, must_convert=True):
+ """Implementation of remove_uncoercible logic."""
+ results_classes = []
+ for required_type_class in required_types_classes:
+ # convert our models to OpenApiModel
+ required_type_class_simplified = required_type_class
+ if isinstance(required_type_class_simplified, type):
+ if issubclass(required_type_class_simplified, ModelComposed):
+ required_type_class_simplified = ModelComposed
+ elif issubclass(required_type_class_simplified, ModelNormal):
+ required_type_class_simplified = ModelNormal
+ elif issubclass(required_type_class_simplified, ModelSimple):
+ required_type_class_simplified = ModelSimple
+
+ if required_type_class_simplified == current_type_simple:
+ # don't consider converting to one's own class
+ continue
+
+ class_pair = (current_type_simple, required_type_class_simplified)
+ if must_convert and class_pair in COERCIBLE_TYPE_PAIRS[spec_property_naming]:
+ results_classes.append(required_type_class)
+ elif class_pair in UPCONVERSION_TYPE_PAIRS:
+ results_classes.append(required_type_class)
+ return tuple(results_classes)
+
+
+def get_possible_classes(cls, from_server_context):
+ possible_classes = [cls]
+ if from_server_context:
+ return possible_classes
+ if issubclass(cls, ModelComposed):
+ possible_classes.extend(composed_model_input_classes(cls))
+ return possible_classes
+
+
+_type_classes_cache: dict = {}
+
+
+def get_required_type_classes(required_types_mixed, spec_property_naming):
+ """Converts the tuple required_types into a tuple and a dict described below.
+
+ :param required_types_mixed: Will contain either classes or instance of
+ list or dict.
+ :type required_types_mixed: tuple/list
+ :param spec_property_naming: if True these values came from the server, and
+ we use the data types in our endpoints. If False, we are client side and we
+ need to include oneOf classes inside the data types in our endpoints.
+ :type spec_property_naming: bool
+
+ :return (valid_classes, dict_valid_class_to_child_types_mixed):
+ valid_classes (tuple): The valid classes that the current item should be.
+ dict_valid_class_to_child_types_mixed (dict):
+
+ valid_class (class): This is the key.
+ child_types_mixed (list/dict/tuple): Describes the valid child types.
+
+ :rtype: tuple
+ """
+ cache_key = (_make_hashable(required_types_mixed), spec_property_naming)
+ result = _type_classes_cache.get(cache_key)
+ if result is None:
+ result = _get_required_type_classes_impl(required_types_mixed, spec_property_naming)
+ _type_classes_cache[cache_key] = result
+ return result
+
+
+def _get_required_type_classes_impl(required_types_mixed, spec_property_naming):
+ """Implementation of get_required_type_classes without caching."""
+ valid_classes = []
+ child_req_types_by_current_type = {}
+ for required_type in required_types_mixed:
+ if isinstance(required_type, list):
+ valid_classes.append(list)
+ child_req_types_by_current_type[list] = required_type
+ elif isinstance(required_type, tuple):
+ valid_classes.append(tuple)
+ child_req_types_by_current_type[tuple] = required_type
+ elif isinstance(required_type, dict):
+ valid_classes.append(dict)
+ child_req_types_by_current_type[dict] = required_type[str]
+ else:
+ valid_classes.extend(get_possible_classes(required_type, spec_property_naming))
+ return tuple(valid_classes), child_req_types_by_current_type
+
+
+def change_keys_js_to_python(input_dict, model_class):
+ """
+ Converts from javascript_key keys in the input_dict to python_keys in
+ the output dict using the mapping in model_class.
+ If the input_dict contains a key which does not declared in the model_class,
+ the key is added to the output dict as is. The assumption is the model_class
+ may have undeclared properties (additionalProperties attribute in the OAS
+ document).
+ """
+ if issubclass(model_class, ModelComposed):
+ attribute_map = {}
+ for t in model_class._composed_schemas.get("oneOf", ()):
+ if not isinstance(t, list) and issubclass(t, OpenApiModel):
+ attribute_map.update(t.attribute_map)
+ elif not getattr(model_class, "attribute_map", None):
+ return input_dict
+ else:
+ attribute_map = model_class.attribute_map
+ output_dict = {}
+ reversed_attr_map = {value: key for key, value in attribute_map.items()}
+ for javascript_key, value in input_dict.items():
+ python_key = reversed_attr_map.get(javascript_key)
+ if python_key is None:
+ # if the key is unknown, it is in error or it is an
+ # additionalProperties variable
+ python_key = javascript_key
+ output_dict[python_key] = value
+ return output_dict
+
+
+def get_type_error(var_value, path_to_item, valid_classes, key_type=False):
+ error_msg = type_error_message(
+ var_name=path_to_item[-1], var_value=var_value, valid_classes=valid_classes, key_type=key_type
+ )
+ return ApiTypeError(error_msg, path_to_item=path_to_item, valid_classes=valid_classes, key_type=key_type)
+
+
+def deserialize_primitive(data, klass, path_to_item):
+ """Deserializes string to primitive type.
+
+ :type data: str/int/float
+ :param klass: The class to convert to.
+ :type klass: str/class
+
+ :rtype: int, float, str, bool, date, datetime, UUID
+ """
+ additional_message = ""
+ try:
+ if klass in {datetime, date}:
+ additional_message = (
+ "If you need your parameter to have a fallback "
+ "string value, please set its type as `type: {}` in your "
+ "spec. That allows the value to be any type. "
+ )
+ if klass == datetime:
+ if len(data) < 8:
+ raise ValueError("This is not a datetime")
+ # The string should be in iso8601 datetime format.
+ parsed_datetime = parse(data)
+ date_only = (
+ parsed_datetime.hour == parsed_datetime.minute == parsed_datetime.second == 0
+ and parsed_datetime.tzinfo is None
+ and 8 <= len(data) <= 10
+ )
+ if date_only:
+ raise ValueError("This is a date, not a datetime")
+ return parsed_datetime
+ elif klass == date:
+ if len(data) < 8:
+ raise ValueError("This is not a date")
+ return parse(data).date()
+ else:
+ if isinstance(data, str) and klass == UUID:
+ try:
+ converted_value = UUID(data)
+ except ValueError:
+ raise ValueError("This is not an UUID")
+ if isinstance(data, str) and klass == float:
+ converted_value = float(data)
+ if str(converted_value) != data:
+ # '7' -> 7.0 -> '7.0' != '7'
+ raise ValueError("This is not a float")
+ else:
+ converted_value = klass(data)
+ return converted_value
+ except (OverflowError, ValueError) as ex:
+ # parse can raise OverflowError
+ raise ApiValueError(
+ "{0}Failed to parse {1} as {2}".format(additional_message, repr(data), klass.__name__),
+ path_to_item=path_to_item,
+ ) from ex
+
+
+def deserialize_model(model_data, model_class, path_to_item, check_type, configuration, spec_property_naming):
+ """Deserializes model_data to model instance.
+
+ :param model_data: Data to instantiate the model.
+ :type model_data: int/str/float/bool/none_type/list/dict
+ :param model_class: The model class.
+ :type model_class: OpenApiModel
+ :param path_to_item: Path to the model in the received data.
+ :type path_to_item: list
+ :param check_type: Whether to check the data tupe for the values in
+ the model.
+ :type check_type: bool
+ :param configuration: The instance to use to convert files.
+ :type configuration: Configuration
+ :param spec_property_naming: True if the variable names in the input
+ data are serialized names as specified in the OpenAPI document.
+ False if the variables names in the input data are python
+ variable names in PEP-8 snake case.
+ :type spec_property_naming: bool
+
+ :return: The model instance.
+ """
+
+ kw_args = dict(
+ _check_type=check_type,
+ _path_to_item=path_to_item,
+ _configuration=configuration,
+ _spec_property_naming=spec_property_naming,
+ )
+
+ if issubclass(model_class, ModelSimple):
+ return model_class(model_data, **kw_args)
+ elif isinstance(model_data, list):
+ if issubclass(model_class, ModelComposed) and allows_single_value_input(model_class):
+ return model_class(model_data, **kw_args)
+ else:
+ return model_class(*model_data, **kw_args)
+ elif isinstance(model_data, dict):
+ kw_args.update(change_keys_js_to_python(model_data, model_class))
+ return model_class(**kw_args)
+ elif isinstance(model_data, PRIMITIVE_TYPES):
+ return model_class(model_data, **kw_args)
+
+
+def deserialize_file(response_data, temp_folder_path, content_disposition=None):
+ """Deserializes body to file.
+
+ Saves response body into a file in a temporary folder, using the filename
+ from the `Content-Disposition` header if provided.
+
+ :param response_data: The file data to write.
+ :type response_data: str
+ :param temp_folder_path: The directory in which the client creates temporary files.
+ :type temp_folder_path: str
+ :param content_disposition: The value of the Content-Disposition
+ header.
+ :type content_disposition: str
+
+ :return: The deserialized file which is open. The user is responsible for
+ closing and reading the file.
+ :rtype: file_type
+ """
+ fd, path = tempfile.mkstemp(dir=temp_folder_path)
+ os.close(fd)
+ os.remove(path)
+
+ if content_disposition:
+ filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', content_disposition).group(1)
+ path = os.path.join(os.path.dirname(path), filename)
+
+ with open(path, "wb") as f:
+ if isinstance(response_data, str):
+ # change str to bytes so we can write it
+ response_data = response_data.encode("utf-8")
+ f.write(response_data)
+
+ f = open(path, "rb")
+ return f
+
+
+def attempt_convert_item(
+ input_value,
+ valid_classes,
+ path_to_item,
+ configuration,
+ spec_property_naming,
+ key_type=False,
+ must_convert=False,
+ check_type=True,
+):
+ """
+ :param input_value: The data to convert.
+ :param valid_classes: The classes that are valid.
+ :param path_to_item: The path to the item to convert.
+ :type path_to_item: list
+ :param configuration: The instance to use to convert files.
+ :type configuration: Configuration
+ :param spec_property_naming: True if the variable names in the input data
+ are serialized names as specified in the OpenAPI document. False if the
+ variables names in the input data are python variable names in PEP-8 snake
+ case.
+ :type spec_property_naming: bool
+ :param key_type: If True we need to convert a key type (not supported)
+ :type key_type: bool
+ :param must_convert: If True we must convert.
+ :type must_convert: bool
+ :param check_type: If True we check the type or the returned data in
+ ModelComposed/ModelNormal/ModelSimple instances.
+ :type check_type: bool
+ """
+ valid_classes_ordered = order_response_types(valid_classes)
+ valid_classes_coercible = remove_uncoercible(valid_classes_ordered, input_value, spec_property_naming)
+ if not valid_classes_coercible or key_type:
+ # we do not handle keytype errors, json will take care
+ # of this for us
+ if configuration is None or not configuration.discard_unknown_keys:
+ raise get_type_error(input_value, path_to_item, valid_classes, key_type=key_type)
+ for valid_class in valid_classes_coercible:
+ try:
+ if issubclass(valid_class, OpenApiModel):
+ return deserialize_model(
+ input_value, valid_class, path_to_item, check_type, configuration, spec_property_naming
+ )
+ elif valid_class == file_type:
+ return deserialize_file(input_value, configuration.temp_folder_path)
+ return deserialize_primitive(input_value, valid_class, path_to_item)
+ except (ApiTypeError, ApiValueError, ApiKeyError) as conversion_exc:
+ if must_convert:
+ raise conversion_exc
+ # if we have conversion errors when must_convert == False
+ # we ignore the exception and move on to the next class
+ continue
+ if must_convert:
+ raise get_type_error(input_value, path_to_item, valid_classes, key_type=key_type)
+ # we were unable to convert, must_convert == False
+ return input_value
+
+
+def is_type_nullable(input_type):
+ """
+ Returns True if None is an allowed value for the specified input_type.
+
+ A type is nullable if at least one of the following conditions is True:
+
+ 1. The OAS 'nullable' attribute has been specified,
+ 2. The type is the 'null' type,
+ 3. The type is a oneOf composed schema, and a child schema is
+ the 'null' type.
+
+ :param input_type: The class of the input_value that we are checking.
+ :type input_type: type
+
+ :rtype: bool
+ """
+ if input_type is none_type:
+ return True
+ if issubclass(input_type, OpenApiModel) and input_type._nullable:
+ return True
+ if issubclass(input_type, ModelComposed):
+ # If oneOf, check if the 'null' type is one of the allowed types.
+ for t in input_type._composed_schemas.get("oneOf", ()):
+ if is_type_nullable(t):
+ return True
+ return False
+
+
+def is_valid_type(input_class_simple, valid_classes):
+ """
+ :param input_class_simple: The class of the input_value that we are checking.
+ :type input_class_simple: class:
+ :param valid_classes: The valid classes that the current item should be.
+ :type valid_classes: tuple
+
+ :rtype: bool
+ """
+ valid_type = input_class_simple in valid_classes
+ if not valid_type and (issubclass(input_class_simple, OpenApiModel) or input_class_simple is none_type):
+ for valid_class in valid_classes:
+ if input_class_simple is none_type and is_type_nullable(valid_class):
+ # Schema is oneOf and the 'null' type is one of the allowed types.
+ return True
+ if issubclass(valid_class, OpenApiModel):
+ continue
+ return valid_type
+
+
+def validate_and_convert_types(
+ input_value, required_types_mixed, path_to_item, spec_property_naming, check_type, configuration=None
+):
+ """Raises a TypeError is there is a problem, otherwise returns value.
+
+ :param input_value: The data to validate/convert.
+ :param required_types_mixed: A list of valid classes, or a list tuples of
+ valid classes, or a dict where the value is a tuple of value classes.
+ :type required_types_mixed: list/dict/tuple
+ :param path_to_item: The path to the data being validated this stores a
+ list of keys or indices to get to the data being validated.
+ :type path_to_item: list
+ :param spec_property_naming: True if the variable names in the input
+ data are serialized names as specified in the OpenAPI document. False
+ if the variables names in the input data are python variable names in PEP-8
+ snake case.
+ :type spec_property_naming: bool
+ :param check_type: If True, type will be checked and conversion
+ will be attempted.
+ :type check_type: bool
+ :param configuration:: The configuration class to use when converting
+ file_type items.
+ :type configuration: Configuration
+
+ :return: The correctly typed value.
+
+ :raise: ApiTypeError
+ """
+ results = get_required_type_classes(required_types_mixed, spec_property_naming)
+ valid_classes, child_req_types_by_current_type = results
+
+ input_class_simple = get_simple_class(input_value)
+ valid_type = is_valid_type(input_class_simple, valid_classes)
+ if not valid_type:
+ # if input_value is not valid_type try to convert it
+ return attempt_convert_item(
+ input_value,
+ valid_classes,
+ path_to_item,
+ configuration,
+ spec_property_naming,
+ must_convert=True,
+ check_type=check_type,
+ )
+
+ # input_value's type is in valid_classes
+ if len(valid_classes) > 1 and configuration:
+ # there are valid classes which are not the current class
+ valid_classes_coercible = remove_uncoercible(
+ valid_classes, input_value, spec_property_naming, must_convert=False
+ )
+ # Preserve integer precision past 2^53: skip the (int, float) upconversion
+ # when `int` is already a valid target. Without this guard, the loop below
+ # would call `float(big_int)` for additionalProperties (whose default
+ # `additional_properties_type` contains both float and int) and silently
+ # round any integer above 2^53 to the nearest float64 representation.
+ if type(input_value) is int and int in valid_classes and float in valid_classes_coercible:
+ valid_classes_coercible = [c for c in valid_classes_coercible if c is not float]
+ if valid_classes_coercible:
+ return attempt_convert_item(
+ input_value,
+ valid_classes_coercible,
+ path_to_item,
+ configuration,
+ spec_property_naming,
+ check_type=check_type,
+ )
+
+ if child_req_types_by_current_type == {}:
+ # all types are of the required types and there are no more inner
+ # variables left to look at
+ return input_value
+ inner_required_types = child_req_types_by_current_type.get(type(input_value))
+ if inner_required_types is None:
+ # for this type, there are not more inner variables left to look at
+ return input_value
+ if isinstance(input_value, list):
+ if input_value == []:
+ # allow an empty list
+ return input_value
+ result = []
+ for index, inner_value in enumerate(input_value):
+ path_to_item.append(index)
+ try:
+ result.append(
+ validate_and_convert_types(
+ inner_value,
+ inner_required_types,
+ path_to_item,
+ spec_property_naming,
+ check_type,
+ configuration=configuration,
+ )
+ )
+ except TypeError:
+ result.append(UnparsedObject(**inner_value))
+ finally:
+ # Restore path state
+ path_to_item.pop()
+ return result
+ elif isinstance(input_value, dict):
+ if input_value == {}:
+ # allow an empty dict
+ return input_value
+ result = {}
+ for inner_key, inner_val in input_value.items():
+ path_to_item.append(inner_key)
+ try:
+ if get_simple_class(inner_key) != str:
+ raise get_type_error(inner_key, path_to_item, valid_classes, key_type=True)
+ result[inner_key] = validate_and_convert_types(
+ inner_val,
+ inner_required_types,
+ path_to_item,
+ spec_property_naming,
+ check_type,
+ configuration=configuration,
+ )
+ finally:
+ # Restore path state
+ path_to_item.pop()
+ return result
+ return input_value
+
+
+def get_file_data_and_close_file(file_instance: io.IOBase) -> bytes:
+ file_data = file_instance.read()
+ file_instance.close()
+ return file_data
+
+
+def data_to_dict(instance, serialize=True):
+ """Prepares data for transmission before it is sent with the rest client.
+
+ If obj is None, return None.
+ If obj is str, int, long, float, bool, return directly.
+ If obj is datetime.datetime, datetime.date convert to string in iso8601 format.
+ If obj is list, sanitize each element in the list.
+ If obj is dict, return the dict.
+ If obj is OpenAPI model, return the properties dict.
+ If obj is io.IOBase, return the bytes.
+
+ :param obj: The data to serialize.
+ :param serialize: If True, return data safe for wire. Forwarded to model_to_dict.
+ :type serialize: bool
+ :return: The serialized form of data.
+ """
+ if isinstance(instance, (ModelNormal, ModelComposed)):
+ return {key: data_to_dict(val) for key, val in model_to_dict(instance, serialize).items()}
+ elif isinstance(instance, io.IOBase):
+ return get_file_data_and_close_file(instance)
+ elif isinstance(instance, (str, int, float, bool)) or instance is None:
+ return instance
+ elif isinstance(instance, (datetime, date)):
+ if not serialize:
+ return instance
+ if getattr(instance, "tzinfo", None) is not None:
+ return instance.isoformat()
+ return "{}Z".format(instance.strftime("%Y-%m-%dT%H:%M:%S.%f")[:-3])
+ elif isinstance(instance, UUID):
+ if not serialize:
+ return instance
+ return str(instance)
+ elif isinstance(instance, ModelSimple):
+ return data_to_dict(instance.value)
+ elif isinstance(instance, (list, tuple)):
+ return [data_to_dict(item) for item in instance]
+ if isinstance(instance, dict):
+ return {key: data_to_dict(val) for key, val in instance.items()}
+ raise ApiValueError("Unable to handle type {}".format(instance.__class__.__name__))
+
+
+def model_to_dict(model_instance, serialize=True):
+ """Returns the model properties as a dict.
+
+ :param model_instance: The model instance that will be converted to a dict.
+ :param serialize: If True, the keys in the dict will be values from
+ attribute_map.
+ :type serialize: bool
+ """
+ result = {}
+
+ model_instances = [model_instance]
+ model = model_instance
+ while model._composed_schemas:
+ model_instances.extend(model._composed_instances)
+ model = model.get_oneof_instance()
+
+ seen_json_attribute_names = set()
+ used_fallback_python_attribute_names = set()
+ py_to_json_map = {}
+ for model_instance in model_instances:
+ for attr, value in model_instance._data_store.items():
+ if serialize:
+ # we use get here because additional property key names do not
+ # exist in attribute_map
+ try:
+ attr = model_instance.attribute_map[attr]
+ py_to_json_map.update(model_instance.attribute_map)
+ seen_json_attribute_names.add(attr)
+ except KeyError:
+ used_fallback_python_attribute_names.add(attr)
+ result[attr] = data_to_dict(value, serialize)
+ if serialize:
+ for python_key in used_fallback_python_attribute_names:
+ json_key = py_to_json_map.get(python_key)
+ if json_key is None:
+ continue
+ if python_key == json_key:
+ continue
+ json_key_assigned_no_need_for_python_key = json_key in seen_json_attribute_names
+ if json_key_assigned_no_need_for_python_key:
+ del result[python_key]
+
+ return result
+
+
+def type_error_message(var_value=None, var_name=None, valid_classes=None, key_type=None):
+ """
+ :param var_value: The variable which has the type error.
+ :param var_name: The name of the variable which has the type error.
+ :type var_name: str
+ :param valid_classes: The accepted classes for current_item's value.
+ :type valid_classes: tuple
+ :param key_type: False if our value is a value in a dict True if it is a
+ key in a dict False if our item is an item in a list.
+ :type key_type: bool
+ """
+ key_or_value = "value"
+ if key_type:
+ key_or_value = "key"
+ valid_classes_phrase = get_valid_classes_phrase(valid_classes)
+ msg = "Invalid type for variable '{0}'. Required {1} type {2} and " "passed type was {3}".format(
+ var_name,
+ key_or_value,
+ valid_classes_phrase,
+ type(var_value).__name__,
+ )
+ return msg
+
+
+def get_valid_classes_phrase(input_classes):
+ """Returns a string phrase describing what types are allowed."""
+ all_class_names = [cls.__name__ for cls in input_classes]
+ all_class_names.sort()
+ if len(all_class_names) == 1:
+ return "is {0}".format(all_class_names[0])
+ return "is one of [{0}]".format(", ".join(all_class_names))
+
+
+_discriminator_map_cache: dict = {}
+
+
+def _build_discriminator_map(cls):
+ """
+ Build a map from type-discriminator string to oneOf class for a ModelComposed
+ class, using the 'type' field's ModelSimple allowed_values. Returns None if
+ the oneOf list doesn't uniformly use a type discriminator.
+ Result is cached per class.
+ """
+ cached = _discriminator_map_cache.get(cls, unset)
+ if cached is not unset:
+ return cached
+
+ disc_map = {}
+ try:
+ for oneof_class in cls._composed_schemas.get("oneOf", ()):
+ if oneof_class is none_type or isinstance(oneof_class, list):
+ continue
+ ot = getattr(oneof_class, "openapi_types", None)
+ if ot is None:
+ disc_map = None
+ break
+ type_types = ot.get("type")
+ if type_types is None:
+ disc_map = None
+ break
+ matched = False
+ for type_cls in type_types:
+ if (
+ isinstance(type_cls, type)
+ and issubclass(type_cls, ModelSimple)
+ and type_cls.allowed_values
+ ):
+ conflicted = False
+ for val in type_cls.allowed_values:
+ if val in disc_map and disc_map[val] is not oneof_class:
+ disc_map = None
+ conflicted = True
+ break
+ disc_map[val] = oneof_class
+ if conflicted:
+ break
+ matched = True
+ break
+ if not matched:
+ disc_map = None
+ break
+ except Exception:
+ disc_map = None
+
+ result = disc_map if disc_map else None
+ _discriminator_map_cache[cls] = result
+ return result
+
+
+def get_oneof_instance(cls, model_kwargs, constant_kwargs, model_arg=None):
+ """
+ Find the oneOf schema that matches the input data (e.g. payload).
+ If exactly one schema matches the input data, an instance of that schema
+ is returned.
+ If zero or more than one schema match the input data, an exception is raised.
+ In OAS 3.x, the payload MUST, by validation, match exactly one of the
+ schemas described by oneOf.
+
+ :param cls: The class we are handling.
+ :param model_kwargs: var_name to var_value.
+ The input data, e.g. the payload that must match a oneOf schema
+ in the OpenAPI document.
+ :type model_kwargs: dict
+ :param constant_kwargs: var_name to var_value
+ args that every model requires, including configuration, server
+ and path to item.
+ :type constant_kwargs: dict
+ :param model_arg: The value to assign to a primitive class or ModelSimple class.
+ Notes:
+ - this is only passed in when oneOf includes types which are not object
+ - None is used to suppress handling of model_arg, nullable models are handled in __new__
+ :type model_arg: int, float, bool, str, date, datetime, ModelSimple, UUID, None
+ """
+ if len(cls._composed_schemas["oneOf"]) == 0:
+ return None
+
+ # Fast path: use type discriminator when all oneOf classes have a unique 'type' value.
+ # Pure optimisation — on any failure falls through to the full O(N) scan below so
+ # behaviour is identical to the original; never short-circuits to UnparsedObject here.
+ if model_arg is None and model_kwargs:
+ disc_map = _build_discriminator_map(cls)
+ if disc_map is not None:
+ type_val = model_kwargs.get("type")
+ if type_val is not None and type_val in disc_map:
+ oneof_class = disc_map[type_val]
+ with suppress(Exception):
+ if constant_kwargs.get("_spec_property_naming"):
+ oneof_instance = oneof_class(
+ **change_keys_js_to_python(model_kwargs, oneof_class), **constant_kwargs
+ )
+ else:
+ oneof_instance = oneof_class(**model_kwargs, **constant_kwargs)
+ if not oneof_instance._unparsed:
+ return oneof_instance
+
+ oneof_instances = []
+ # Iterate over each oneOf schema and determine if the input data
+ # matches the oneOf schemas.
+ for oneof_class in cls._composed_schemas["oneOf"]:
+ # The composed oneOf schema allows the 'null' type and the input data
+ # is the null value. This is a OAS >= 3.1 feature.
+ if oneof_class is none_type:
+ # skip none_types because we are deserializing dict data.
+ # none_type deserialization is handled in the __new__ method
+ continue
+
+ single_value_input = allows_single_value_input(oneof_class) if not isinstance(oneof_class, list) else True
+
+ with suppress(Exception):
+ if not single_value_input:
+ if model_arg is not None and not isinstance(model_arg, dict):
+ # A non-mapping input (list or scalar) cannot match an object schema.
+ continue
+ if constant_kwargs.get("_spec_property_naming"):
+ oneof_instance = oneof_class(
+ **change_keys_js_to_python(model_kwargs, oneof_class), **constant_kwargs
+ )
+ else:
+ oneof_instance = oneof_class(**model_kwargs, **constant_kwargs)
+ if not oneof_instance._unparsed:
+ oneof_instances.append(oneof_instance)
+ else:
+ if isinstance(oneof_class, list):
+ oneof_class = oneof_class[0]
+ if model_arg is None and not model_kwargs:
+ # Empty data
+ oneof_instances.append([])
+ continue
+ if not isinstance(model_arg, list):
+ # A non-array input cannot match a list schema.
+ continue
+
+ # Check if inner type is primitive - follows same pattern as complex objects:
+ # https://github.com/DataDog/datadog-api-client-python/blob/008536d34760ce096e118edc54df613d82194529/.generator/src/generator/templates/model_utils.j2#L1590-L1599
+ if oneof_class in PRIMITIVE_TYPES:
+ # Handle list of primitives (e.g., [str], [float])
+ list_oneof_instance = []
+ for arg in model_arg:
+ oneof_instance = validate_and_convert_types(
+ arg,
+ (oneof_class,),
+ constant_kwargs.get("_path_to_item", ()),
+ constant_kwargs.get("_spec_property_naming", False),
+ constant_kwargs.get("_check_type", True),
+ configuration=constant_kwargs.get("_configuration"),
+ )
+ list_oneof_instance.append(oneof_instance)
+ oneof_instances.append(list_oneof_instance)
+ elif inspect.isclass(oneof_class) and issubclass(oneof_class, ModelSimple):
+ # Handle list of ModelSimple
+ list_oneof_instance = [oneof_class(arg, **constant_kwargs) for arg in model_arg]
+ if not any(item._unparsed for item in list_oneof_instance):
+ oneof_instances.append(list_oneof_instance)
+ else:
+ # Handle list of complex objects (ModelNormal, ModelComposed).
+ # Mapping items are unpacked as keyword arguments; scalar items
+ # are passed positionally so a composed item schema that accepts
+ # primitives (e.g. AnyValueItem) can resolve them.
+ spec_property_naming = constant_kwargs.get("_spec_property_naming")
+ list_oneof_instance = []
+ for arg in model_arg:
+ if not isinstance(arg, dict):
+ item = oneof_class(arg, **constant_kwargs)
+ elif spec_property_naming:
+ item = oneof_class(**change_keys_js_to_python(arg, oneof_class), **constant_kwargs)
+ else:
+ item = oneof_class(**arg, **constant_kwargs)
+ list_oneof_instance.append(item)
+ if not any(getattr(item, "_unparsed", False) for item in list_oneof_instance):
+ oneof_instances.append(list_oneof_instance)
+ elif issubclass(oneof_class, ModelSimple):
+ if model_arg is not None:
+ oneof_instance = oneof_class(model_arg, **constant_kwargs)
+ if not oneof_instance._unparsed:
+ oneof_instances.append(oneof_instance)
+ elif oneof_class in PRIMITIVE_TYPES:
+ oneof_instance = validate_and_convert_types(
+ model_arg,
+ (oneof_class,),
+ constant_kwargs.get("_path_to_item", ()),
+ constant_kwargs.get("_spec_property_naming", False),
+ constant_kwargs.get("_check_type", True),
+ configuration=constant_kwargs.get("_configuration"),
+ )
+ oneof_instances.append(oneof_instance)
+ if len(oneof_instances) != 1:
+ return UnparsedObject(**model_kwargs)
+ return oneof_instances[0]
+
+
+def get_discarded_args(self, composed_instances, model_args):
+ """
+ Gathers the args that were discarded by configuration.discard_unknown_keys
+ """
+ model_arg_keys = model_args.keys()
+ discarded_args = set()
+ # arguments passed to self were already converted to python names
+ # before __init__ was called
+ for instance in composed_instances:
+ # Collect Python and spec key names without recursing into values.
+ # model_to_dict would serialize the full sub-tree just to get keys.
+ model_instances = [instance]
+ model = instance
+ while model._composed_schemas:
+ model_instances.extend(model._composed_instances)
+ model = model.get_oneof_instance()
+
+ all_keys = set()
+ for model_inst in model_instances:
+ attr_map = getattr(model_inst, "attribute_map", {})
+ for attr in model_inst._data_store:
+ all_keys.add(attr)
+ all_keys.add(attr_map.get(attr, attr))
+
+ discarded_keys = model_arg_keys - all_keys
+ discarded_args.update(discarded_keys)
+ return discarded_args
+
+
+def validate_get_composed_info(constant_args, model_args, self):
+ """
+ For composed schemas, generate schema instances for all schemas in the
+ oneOf definition. If additional properties are allowed, also assign
+ those properties on all matched schemas that contain additionalProperties.
+ Openapi schemas are python classes.
+
+ Exceptions are raised if:
+ - 0 or > 1 oneOf schema matches the model_args input data
+
+ :param constant_args: These are the args that every model requires.
+ :type constant_args: dict
+ :param model_args: These are the required and optional spec args that
+ were passed in to make this model.
+ :type model_args: dict
+ :param self: The class that we are instantiating. This class contains
+ self._composed_schemas.
+ :type self: class
+
+ :return:
+ composed_instances (list): the composed instances which are not
+ self
+ var_name_to_model_instances (dict): a dict going from var_name
+ to the model_instance which holds that var_name
+ the model_instance may be self or an instance of one of the
+ classes in self.composed_instances()
+ additional_properties_model_instances (list): a list of the
+ model instances which have the property
+ additional_properties_type. This list can include self
+ :rtype: list
+ """
+ # Create composed_instances
+ composed_instances = []
+ oneof_instance = get_oneof_instance(self.__class__, model_args, constant_args)
+ if oneof_instance is not None and not isinstance(oneof_instance, list):
+ composed_instances.append(oneof_instance)
+
+ additional_properties_model_instances = []
+ if self.additional_properties_type is not None:
+ additional_properties_model_instances = [self]
+
+ discarded_args = get_discarded_args(self, composed_instances, model_args)
+
+ # Map variable names to composed_instances
+ var_name_to_model_instances = {}
+ for prop_name in model_args:
+ if prop_name not in discarded_args:
+ var_name_to_model_instances[prop_name] = [self] + composed_instances
+
+ return [composed_instances, var_name_to_model_instances, additional_properties_model_instances, discarded_args]
+
+
+class UnparsedObject(ModelNormal):
+ """A model for an oneOf we don't know about."""
+
+ required_properties = set(
+ [
+ "_data_store",
+ "_unparsed",
+ ]
+ )
+
+ def __init__(self, **kwargs):
+
+ self._data_store = {}
+ self._unparsed = True
+
+ for var_name, var_value in kwargs.items():
+ self.__dict__[var_name] = var_value
+ self.__dict__["_data_store"][var_name] = var_value
+
+
+def get_attribute_from_path(obj, path, default=None):
+ """Return an attribute at `path` from the passed object."""
+ if not path:
+ return obj
+ for elt in path.split("."):
+ try:
+ obj = obj[elt]
+ except (KeyError, AttributeError):
+ if default is None:
+ raise
+ return default
+ return obj
+
+
+def set_attribute_from_path(obj, path, value, params_map):
+ """Set an attribute at `path` with the given value."""
+ elts = path.split(".")
+ last = elts.pop(-1)
+ root = None
+ for i, elt in enumerate(elts):
+ if i:
+ root = root.openapi_types[elt][0]
+ else:
+ root = params_map[elt]["openapi_types"][0]
+ try:
+ obj = obj[elt]
+ except (KeyError, AttributeError):
+ obj = root()
+ obj[last] = value
\ No newline at end of file
diff --git a/datadog_api_client/py.typed b/datadog_api_client/py.typed
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/datadog_api_client/rest.py b/datadog_api_client/rest.py
new file mode 100644
index 0000000000..ed4fe46793
--- /dev/null
+++ b/datadog_api_client/rest.py
@@ -0,0 +1,350 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+import json
+import logging
+import re
+import ssl
+from urllib.parse import urlencode
+import zlib
+import urllib3 # type: ignore
+
+from datadog_api_client.exceptions import (
+ ApiException,
+ UnauthorizedException,
+ ForbiddenException,
+ NotFoundException,
+ ServiceException,
+ ApiValueError,
+)
+
+
+logger = logging.getLogger(__name__)
+
+
+RETRY_AFTER_STATUS_CODES = frozenset([408, 429, 500, 501, 502, 503, 504, 505, 506, 507, 509, 510, 511, 512])
+RETRY_ALLOWED_METHODS = frozenset(["GET", "PUT", "DELETE", "POST", "PATCH"])
+
+
+class ClientRetry(urllib3.util.Retry):
+ RETRY_AFTER_STATUS_CODES = RETRY_AFTER_STATUS_CODES
+ DEFAULT_ALLOWED_METHODS = RETRY_ALLOWED_METHODS
+
+ def get_retry_after(self, response):
+ """
+ This method overrides the default "Retry-after" header and uses dd's X-Ratelimit-Reset header
+ and gets the value of X-Ratelimit-Reset in seconds.
+ """
+ retry_after = response.headers.get("X-Ratelimit-Reset")
+
+ if retry_after is None:
+ return None
+ return self.parse_retry_after(retry_after)
+
+ def is_retry(self, method, status_code, has_retry_after=False):
+ if method not in self.DEFAULT_ALLOWED_METHODS:
+ return False
+
+ if self.status_forcelist and status_code in self.status_forcelist:
+ return True
+ return self.total and self.respect_retry_after_header and (status_code in self.RETRY_AFTER_STATUS_CODES)
+
+
+class RESTClientObject:
+ def __init__(self, configuration, pools_size=4, maxsize=4):
+ # urllib3.PoolManager will pass all kw parameters to connectionpool
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680
+ # maxsize is the number of requests to host that are allowed in parallel
+ # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html
+
+ # cert_reqs
+ if configuration.verify_ssl:
+ cert_reqs = ssl.CERT_REQUIRED
+ else:
+ cert_reqs = ssl.CERT_NONE
+
+ addition_pool_args = {}
+ if configuration.assert_hostname is not None:
+ addition_pool_args["assert_hostname"] = configuration.assert_hostname
+
+ if configuration.retry_policy is not None:
+ addition_pool_args["retries"] = configuration.retry_policy
+ elif configuration.enable_retry:
+ retries = ClientRetry(
+ total = configuration.max_retries,
+ backoff_factor = configuration.retry_backoff_factor,
+ )
+ addition_pool_args["retries"] = retries
+
+ if configuration.socket_options is not None:
+ addition_pool_args["socket_options"] = configuration.socket_options
+
+ # https pool manager
+ if configuration.proxy:
+ self.pool_manager = urllib3.ProxyManager(
+ num_pools=pools_size,
+ maxsize=maxsize,
+ cert_reqs=cert_reqs,
+ ca_certs=configuration.ssl_ca_cert,
+ cert_file=configuration.cert_file,
+ key_file=configuration.key_file,
+ proxy_url=configuration.proxy,
+ proxy_headers=configuration.proxy_headers,
+ **addition_pool_args
+ )
+ else:
+ self.pool_manager = urllib3.PoolManager(
+ num_pools=pools_size,
+ maxsize=maxsize,
+ cert_reqs=cert_reqs,
+ ca_certs=configuration.ssl_ca_cert,
+ cert_file=configuration.cert_file,
+ key_file=configuration.key_file,
+ **addition_pool_args
+ )
+
+ def request(
+ self,
+ method,
+ url,
+ query_params=None,
+ headers=None,
+ body=None,
+ post_params=None,
+ preload_content=True,
+ request_timeout=None,
+ ):
+ """Perform requests.
+
+ :param method: http request method
+ :param url: http request url
+ :param query_params: query parameters in the url
+ :param headers: http request headers
+ :param body: request json body, for `application/json`
+ :param post_params: request post parameters,
+ `application/x-www-form-urlencoded`
+ and `multipart/form-data`
+ :param preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :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.
+ """
+ method = method.upper()
+
+ if post_params and body:
+ raise ApiValueError("body parameter cannot be used with post_params parameter.")
+
+ post_params = post_params or {}
+ headers = headers or {}
+
+ timeout = None
+ if request_timeout:
+ if isinstance(request_timeout, (int, float)):
+ timeout = urllib3.Timeout(total=request_timeout)
+ elif isinstance(request_timeout, tuple) and len(request_timeout) == 2:
+ timeout = urllib3.Timeout(connect=request_timeout[0], read=request_timeout[1])
+
+ try:
+ request_kwargs = {}
+ # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
+ if method in ("POST", "PUT", "PATCH", "OPTIONS", "DELETE"):
+ # Only set a default Content-Type for POST, PUT, PATCH and OPTIONS requests
+ if method != "DELETE" and "Content-Type" not in headers and body is not None:
+ headers["Content-Type"] = "application/json"
+ if query_params:
+ url += "?" + urlencode(query_params)
+ if "Content-Type" not in headers or re.search("json", headers["Content-Type"], re.IGNORECASE):
+ request_body = None
+ if body is not None:
+ request_body = json.dumps(body)
+ if headers.get("Content-Encoding") == "gzip":
+ compressor = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
+ request_body = compressor.compress(request_body.encode("utf-8")) + compressor.flush()
+ elif headers.get("Content-Encoding") == "deflate":
+ request_body = zlib.compress(request_body.encode("utf-8"))
+ elif headers.get("Content-Encoding") == "zstd1":
+ import zstandard as zstd
+
+ compressor = zstd.ZstdCompressor()
+ request_body = compressor.compress(request_body.encode("utf-8"))
+ request_kwargs["body"] = request_body
+ elif headers["Content-Type"] == "application/x-www-form-urlencoded":
+ request_kwargs["encode_multipart"] = False
+ request_kwargs["fields"] = post_params
+ elif headers["Content-Type"] == "multipart/form-data":
+ # must del headers['Content-Type'], or the correct
+ # Content-Type which generated by urllib3 will be
+ # overwritten.
+ del headers["Content-Type"]
+ request_kwargs["encode_multipart"] = True
+ request_kwargs["fields"] = post_params
+ # Pass a `string` parameter directly in the body to support
+ # other content types than Json when `body` argument is
+ # provided in serialized form
+ elif isinstance(body, (str, bytes)):
+ request_kwargs["body"] = body
+ else:
+ # Cannot generate the request from given parameters
+ msg = """Cannot prepare a request message for provided
+ arguments. Please check that your arguments match
+ declared content type."""
+ raise ApiException(status=0, reason=msg)
+ # For `GET`, `HEAD`
+ else:
+ request_kwargs["fields"] = query_params
+ r = self.pool_manager.request(
+ method, url, preload_content=preload_content, timeout=timeout, headers=headers, **request_kwargs
+ )
+ except urllib3.exceptions.SSLError as e:
+ msg = "{0}\n{1}".format(type(e).__name__, str(e))
+ raise ApiException(status=0, reason=msg)
+
+ if preload_content:
+ # log response body
+ logger.debug("response body: %s", r.data)
+
+ if not 200 <= r.status <= 299:
+ if r.status == 401:
+ raise UnauthorizedException(http_resp=r)
+
+ if r.status == 403:
+ raise ForbiddenException(http_resp=r)
+
+ if r.status == 404:
+ raise NotFoundException(http_resp=r)
+
+ if 500 <= r.status <= 599:
+ raise ServiceException(http_resp=r)
+
+ raise ApiException(http_resp=r)
+
+ return r
+
+
+class _AioSonicResponseWrapper:
+ def __init__(self, response, data):
+ self.response = response
+ self.status = response.status_code
+ self.reason = response.response_initial.get("reason")
+ self.data = data
+ self.headers = response.headers.copy()
+
+
+class AsyncRESTClientObject:
+ def __init__(self, configuration):
+ import aiosonic # type: ignore
+
+ proxy = None
+ if configuration.proxy:
+ proxy = aiosonic.Proxy(configuration.proxy, configuration.proxy_headers)
+ self._client = aiosonic.HTTPClient(proxy=proxy, verify_ssl=configuration.verify_ssl)
+ self._configuration = configuration
+
+ def close(self):
+ # aiosonic doesn't close its clients
+ pass
+
+ def _retry(self, method, response, counter):
+ if (not self._configuration.enable_retry
+ or counter >= self._configuration.max_retries
+ or method not in RETRY_ALLOWED_METHODS
+ or response.status_code not in RETRY_AFTER_STATUS_CODES):
+ return 0
+ retry_after = response.headers.get("X-Ratelimit-Reset")
+ if retry_after is None:
+ return self._configuration.retry_backoff_factor * (2 ** (counter))
+ return int(retry_after)
+
+ async def request(
+ self,
+ method,
+ url,
+ query_params=None,
+ headers=None,
+ body=None,
+ post_params=None,
+ preload_content=True,
+ request_timeout=None,
+ ):
+ """Perform requests.
+
+ :param method: http request method
+ :param url: http request url
+ :param query_params: query parameters in the url
+ :param headers: http request headers
+ :param body: request json body, for `application/json`
+ :param post_params: request post parameters,
+ `application/x-www-form-urlencoded`
+ and `multipart/form-data`
+ :param preload_content: if False, the raw HTTP response object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :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.
+ """
+ assert not post_params, "not supported for now"
+ if request_timeout is not None:
+ from aiosonic.timeout import Timeouts # type: ignore
+
+ if isinstance(request_timeout, (int, float)):
+ request_timeout = Timeouts(request_timeout=request_timeout)
+ else:
+ request_timeout = Timeouts(sock_connect=request_timeout[0], sock_read=request_timeout[1])
+ request_body = None
+ if (
+ "Content-Type" not in headers
+ or re.search("json", headers["Content-Type"], re.IGNORECASE)
+ and body is not None
+ ):
+ request_body = json.dumps(body)
+ if headers.get("Content-Encoding") == "gzip":
+ compress = zlib.compressobj(wbits=16 + zlib.MAX_WBITS)
+ request_body = compress.compress(request_body.encode("utf-8")) + compress.flush()
+ elif headers.get("Content-Encoding") == "deflate":
+ request_body = zlib.compress(request_body.encode("utf-8"))
+ elif headers.get("Content-Encoding") == "zstd1":
+ import zstandard as zstd
+
+ compressor = zstd.ZstdCompressor()
+ request_body = compressor.compress(request_body.encode("utf-8"))
+ counter = 0
+ while True:
+ response = await self._client.request(
+ url, method, headers, query_params, request_body, timeouts=request_timeout
+ )
+ retry = self._retry(method, response, counter)
+ if not retry:
+ break
+ import asyncio
+
+ await asyncio.sleep(retry)
+ counter += 1
+
+ if not 200 <= response.status_code <= 299:
+ data = b""
+ if preload_content:
+ data = await response.content()
+ r = _AioSonicResponseWrapper(response, data)
+
+ if response.status_code == 401:
+ raise UnauthorizedException(http_resp=r)
+
+ if response.status_code == 403:
+ raise ForbiddenException(http_resp=r)
+
+ if response.status_code == 404:
+ raise NotFoundException(http_resp=r)
+
+ if 500 <= response.status_code <= 599:
+ raise ServiceException(http_resp=r)
+
+ raise ApiException(http_resp=r)
+
+ return response
diff --git a/datadog_api_client/v1/__init__.py b/datadog_api_client/v1/__init__.py
new file mode 100644
index 0000000000..0d508b1a42
--- /dev/null
+++ b/datadog_api_client/v1/__init__.py
@@ -0,0 +1,13 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+from datadog_api_client.api_client import ApiClient, AsyncApiClient
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.exceptions import (
+ OpenApiException, ApiAttributeError, ApiTypeError, ApiValueError, ApiKeyError, ApiException)
+
+
+__all__ = ["ApiClient", "AsyncApiClient", "Configuration", "OpenApiException",
+ "ApiAttributeError", "ApiTypeError", "ApiValueError", "ApiKeyError",
+ "ApiException"]
\ No newline at end of file
diff --git a/datadog_api_client/v1/api/__init__.py b/datadog_api_client/v1/api/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/datadog_api_client/v1/api/authentication_api.py b/datadog_api_client/v1/api/authentication_api.py
new file mode 100644
index 0000000000..cc45d4cadf
--- /dev/null
+++ b/datadog_api_client/v1/api/authentication_api.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.authentication_validation_response import AuthenticationValidationResponse
+
+
+class AuthenticationApi:
+ """
+ All requests to Datadog’s API must be authenticated.
+ Requests that write data require reporting access and require an ``API key``.
+ Requests that read data require full access and also require an ``application key``.
+
+ **Note:** All Datadog API clients are configured by default to consume Datadog US site APIs.
+ If you are on the Datadog EU site, set the environment variable ``DATADOG_HOST`` to
+ ``https://api.datadoghq.eu`` or override this value directly when creating your client.
+
+ `Manage your account’s API and application keys `_ in Datadog, and see the `API and Application Keys page `_ in the documentation.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._validate_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuthenticationValidationResponse,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v1/validate",
+ "operation_id": "validate",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def validate(self, ) -> AuthenticationValidationResponse:
+ """Validate API key.
+
+ Check if the API key (not the APP key) is valid. If invalid, a 403 is returned.
+
+ :rtype: AuthenticationValidationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._validate_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/aws_integration_api.py b/datadog_api_client/v1/api/aws_integration_api.py
new file mode 100644
index 0000000000..29405fbba3
--- /dev/null
+++ b/datadog_api_client/v1/api/aws_integration_api.py
@@ -0,0 +1,539 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.aws_account_delete_request import AWSAccountDeleteRequest
+from datadog_api_client.v1.model.aws_account_list_response import AWSAccountListResponse
+from datadog_api_client.v1.model.aws_account_create_response import AWSAccountCreateResponse
+from datadog_api_client.v1.model.aws_account import AWSAccount
+from datadog_api_client.v1.model.aws_event_bridge_delete_response import AWSEventBridgeDeleteResponse
+from datadog_api_client.v1.model.aws_event_bridge_delete_request import AWSEventBridgeDeleteRequest
+from datadog_api_client.v1.model.aws_event_bridge_list_response import AWSEventBridgeListResponse
+from datadog_api_client.v1.model.aws_event_bridge_create_response import AWSEventBridgeCreateResponse
+from datadog_api_client.v1.model.aws_event_bridge_create_request import AWSEventBridgeCreateRequest
+from datadog_api_client.v1.model.aws_tag_filter_delete_request import AWSTagFilterDeleteRequest
+from datadog_api_client.v1.model.aws_tag_filter_list_response import AWSTagFilterListResponse
+from datadog_api_client.v1.model.aws_tag_filter_create_request import AWSTagFilterCreateRequest
+
+
+class AWSIntegrationApi:
+ """
+ Configure your Datadog-AWS integration directly through the Datadog API.
+ For more information, see the `AWS integration page `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws",
+ "operation_id": "create_aws_account",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_aws_event_bridge_source_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSEventBridgeCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/event_bridge",
+ "operation_id": "create_aws_event_bridge_source",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSEventBridgeCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_aws_tag_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/filtering",
+ "operation_id": "create_aws_tag_filter",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSTagFilterCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_new_aws_external_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/generate_new_external_id",
+ "operation_id": "create_new_aws_external_id",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws",
+ "operation_id": "delete_aws_account",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccountDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_event_bridge_source_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSEventBridgeDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/event_bridge",
+ "operation_id": "delete_aws_event_bridge_source",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSEventBridgeDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_tag_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/filtering",
+ "operation_id": "delete_aws_tag_filter",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSTagFilterDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_available_aws_namespaces_endpoint = _Endpoint(
+ settings={
+ "response_type": ([str],),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/available_namespace_rules",
+ "operation_id": "list_available_aws_namespaces",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws",
+ "operation_id": "list_aws_accounts",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "account_id": {
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "query",
+ },
+ "role_name": {
+ "openapi_types": (str,),
+ "attribute": "role_name",
+ "location": "query",
+ },
+ "access_key_id": {
+ "openapi_types": (str,),
+ "attribute": "access_key_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_event_bridge_sources_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSEventBridgeListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/event_bridge",
+ "operation_id": "list_aws_event_bridge_sources",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_tag_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSTagFilterListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/filtering",
+ "operation_id": "list_aws_tag_filters",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws",
+ "operation_id": "update_aws_account",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "account_id": {
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "query",
+ },
+ "role_name": {
+ "openapi_types": (str,),
+ "attribute": "role_name",
+ "location": "query",
+ },
+ "access_key_id": {
+ "openapi_types": (str,),
+ "attribute": "access_key_id",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_aws_account(self, body: AWSAccount, ) -> AWSAccountCreateResponse:
+ """Create an AWS integration. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Create a Datadog-Amazon Web Services integration.
+ Using the ``POST`` method updates your integration configuration
+ by adding your new configuration to the existing one in your Datadog organization.
+ A unique AWS Account ID for role based authentication.
+
+ :param body: AWS Request Object
+ :type body: AWSAccount
+ :rtype: AWSAccountCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_aws_account is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_aws_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_aws_event_bridge_source(self, body: AWSEventBridgeCreateRequest, ) -> AWSEventBridgeCreateResponse:
+ """Create an Amazon EventBridge source. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Create an Amazon EventBridge source.
+
+ :param body: Create an Amazon EventBridge source for an AWS account with a given name and region.
+ :type body: AWSEventBridgeCreateRequest
+ :rtype: AWSEventBridgeCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_aws_event_bridge_source is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_aws_event_bridge_source_endpoint.call_with_http_info(**kwargs)
+
+ def create_aws_tag_filter(self, body: AWSTagFilterCreateRequest, ) -> dict:
+ """Set an AWS tag filter. **Deprecated**.
+
+ Set an AWS tag filter.
+
+ :param body: Set an AWS tag filter using an ``aws_account_identifier`` , ``namespace`` , and filtering string.
+ Namespace options are ``application_elb`` , ``elb`` , ``lambda`` , ``network_elb`` , ``rds`` , ``sqs`` , and ``custom``.
+ :type body: AWSTagFilterCreateRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_aws_tag_filter is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_aws_tag_filter_endpoint.call_with_http_info(**kwargs)
+
+ def create_new_aws_external_id(self, body: AWSAccount, ) -> AWSAccountCreateResponse:
+ """Generate a new external ID. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Generate a new AWS external ID for a given AWS account ID and role name pair.
+
+ :param body: Your Datadog role delegation name.
+ For more information about your AWS account Role name,
+ see the `Datadog AWS integration configuration info `_.
+ :type body: AWSAccount
+ :rtype: AWSAccountCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_new_aws_external_id is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_new_aws_external_id_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_account(self, body: AWSAccountDeleteRequest, ) -> dict:
+ """Delete an AWS integration. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Delete a Datadog-AWS integration matching the specified ``account_id`` and ``role_name parameters``.
+
+ :param body: AWS request object
+ :type body: AWSAccountDeleteRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("delete_aws_account is deprecated", DeprecationWarning, stacklevel=2)
+ return self._delete_aws_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_event_bridge_source(self, body: AWSEventBridgeDeleteRequest, ) -> AWSEventBridgeDeleteResponse:
+ """Delete an Amazon EventBridge source. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Delete an Amazon EventBridge source.
+
+ :param body: Delete the Amazon EventBridge source with the given name, region, and associated AWS account.
+ :type body: AWSEventBridgeDeleteRequest
+ :rtype: AWSEventBridgeDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("delete_aws_event_bridge_source is deprecated", DeprecationWarning, stacklevel=2)
+ return self._delete_aws_event_bridge_source_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_tag_filter(self, body: AWSTagFilterDeleteRequest, ) -> dict:
+ """Delete a tag filtering entry. **Deprecated**.
+
+ Delete a tag filtering entry.
+
+ :param body: Delete a tag filtering entry for a given AWS account and ``dd-aws`` namespace.
+ :type body: AWSTagFilterDeleteRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("delete_aws_tag_filter is deprecated", DeprecationWarning, stacklevel=2)
+ return self._delete_aws_tag_filter_endpoint.call_with_http_info(**kwargs)
+
+ def list_available_aws_namespaces(self, ) -> List[str]:
+ """List namespace rules. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** List all namespace rules for a given Datadog-AWS integration. This endpoint takes no arguments.
+
+ :rtype: [str]
+ """
+ kwargs: Dict[str, Any] = {}
+ warnings.warn("list_available_aws_namespaces is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_available_aws_namespaces_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_accounts(self, *, account_id: Union[str, UnsetType]=unset, role_name: Union[str, UnsetType]=unset, access_key_id: Union[str, UnsetType]=unset, ) -> AWSAccountListResponse:
+ """List all AWS integrations. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** List all Datadog-AWS integrations available in your Datadog organization.
+
+ :param account_id: Only return AWS accounts that matches this ``account_id``.
+ :type account_id: str, optional
+ :param role_name: Only return AWS accounts that matches this role_name.
+ :type role_name: str, optional
+ :param access_key_id: Only return AWS accounts that matches this ``access_key_id``.
+ :type access_key_id: str, optional
+ :rtype: AWSAccountListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+
+ if role_name is not unset:
+ kwargs["role_name"] = role_name
+
+ if access_key_id is not unset:
+ kwargs["access_key_id"] = access_key_id
+
+ warnings.warn("list_aws_accounts is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_aws_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_event_bridge_sources(self, ) -> AWSEventBridgeListResponse:
+ """Get all Amazon EventBridge sources. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Get all Amazon EventBridge sources.
+
+ :rtype: AWSEventBridgeListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ warnings.warn("list_aws_event_bridge_sources is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_aws_event_bridge_sources_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_tag_filters(self, account_id: str, ) -> AWSTagFilterListResponse:
+ """Get all AWS tag filters. **Deprecated**.
+
+ Get all AWS tag filters.
+
+ :param account_id: Only return AWS filters that matches this ``account_id``.
+ :type account_id: str
+ :rtype: AWSTagFilterListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ warnings.warn("list_aws_tag_filters is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_aws_tag_filters_endpoint.call_with_http_info(**kwargs)
+
+ def update_aws_account(self, body: AWSAccount, *, account_id: Union[str, UnsetType]=unset, role_name: Union[str, UnsetType]=unset, access_key_id: Union[str, UnsetType]=unset, ) -> dict:
+ """Update an AWS integration. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoints instead.** Update a Datadog-Amazon Web Services integration.
+
+ :param body: AWS request object
+ :type body: AWSAccount
+ :param account_id: Only return AWS accounts that matches this ``account_id``.
+ :type account_id: str, optional
+ :param role_name: Only return AWS accounts that match this ``role_name``.
+ Required if ``account_id`` is specified.
+ :type role_name: str, optional
+ :param access_key_id: Only return AWS accounts that matches this ``access_key_id``.
+ Required if none of the other two options are specified.
+ :type access_key_id: str, optional
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+
+ if role_name is not unset:
+ kwargs["role_name"] = role_name
+
+ if access_key_id is not unset:
+ kwargs["access_key_id"] = access_key_id
+
+ kwargs["body"] = body
+
+ warnings.warn("update_aws_account is deprecated", DeprecationWarning, stacklevel=2)
+ return self._update_aws_account_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/aws_logs_integration_api.py b/datadog_api_client/v1/api/aws_logs_integration_api.py
new file mode 100644
index 0000000000..e6561b4411
--- /dev/null
+++ b/datadog_api_client/v1/api/aws_logs_integration_api.py
@@ -0,0 +1,296 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.aws_account_and_lambda_request import AWSAccountAndLambdaRequest
+from datadog_api_client.v1.model.aws_logs_list_response import AWSLogsListResponse
+from datadog_api_client.v1.model.aws_logs_async_response import AWSLogsAsyncResponse
+from datadog_api_client.v1.model.aws_logs_list_services_response import AWSLogsListServicesResponse
+from datadog_api_client.v1.model.aws_logs_services_request import AWSLogsServicesRequest
+
+
+class AWSLogsIntegrationApi:
+ """
+ Configure your Datadog-AWS-Logs integration directly through Datadog API.
+ For more information, see the `AWS integration page `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._check_aws_logs_lambda_async_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSLogsAsyncResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs/check_async",
+ "operation_id": "check_aws_logs_lambda_async",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccountAndLambdaRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._check_aws_logs_services_async_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSLogsAsyncResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs/services_async",
+ "operation_id": "check_aws_logs_services_async",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSLogsServicesRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_aws_lambda_arn_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs",
+ "operation_id": "create_aws_lambda_arn",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccountAndLambdaRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_lambda_arn_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs",
+ "operation_id": "delete_aws_lambda_arn",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccountAndLambdaRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._enable_aws_log_services_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs/services",
+ "operation_id": "enable_aws_log_services",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSLogsServicesRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_logs_integrations_endpoint = _Endpoint(
+ settings={
+ "response_type": ([AWSLogsListResponse],),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs",
+ "operation_id": "list_aws_logs_integrations",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_logs_services_endpoint = _Endpoint(
+ settings={
+ "response_type": ([AWSLogsListServicesResponse],),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/aws/logs/services",
+ "operation_id": "list_aws_logs_services",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def check_aws_logs_lambda_async(self, body: AWSAccountAndLambdaRequest, ) -> AWSLogsAsyncResponse:
+ """Check that an AWS Lambda Function exists.
+
+ Test if permissions are present to add a log-forwarding triggers for the given services and AWS account. The input
+ is the same as for Enable an AWS service log collection. Subsequent requests will always repeat the above, so this
+ endpoint can be polled intermittently instead of blocking.
+
+ * Returns a status of 'created' when it's checking if the Lambda exists in the account.
+ * Returns a status of 'waiting' while checking.
+ * Returns a status of 'checked and ok' if the Lambda exists.
+ * Returns a status of 'error' if the Lambda does not exist.
+
+ :param body: Check AWS Log Lambda Async request body.
+ :type body: AWSAccountAndLambdaRequest
+ :rtype: AWSLogsAsyncResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._check_aws_logs_lambda_async_endpoint.call_with_http_info(**kwargs)
+
+ def check_aws_logs_services_async(self, body: AWSLogsServicesRequest, ) -> AWSLogsAsyncResponse:
+ """Check permissions for log services.
+
+ Test if permissions are present to add log-forwarding triggers for the
+ given services and AWS account. Input is the same as for ``EnableAWSLogServices``.
+ Done async, so can be repeatedly polled in a non-blocking fashion until
+ the async request completes.
+
+ * Returns a status of ``created`` when it's checking if the permissions exists
+ in the AWS account.
+ * Returns a status of ``waiting`` while checking.
+ * Returns a status of ``checked and ok`` if the Lambda exists.
+ * Returns a status of ``error`` if the Lambda does not exist.
+
+ :param body: Check AWS Logs Async Services request body.
+ :type body: AWSLogsServicesRequest
+ :rtype: AWSLogsAsyncResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._check_aws_logs_services_async_endpoint.call_with_http_info(**kwargs)
+
+ def create_aws_lambda_arn(self, body: AWSAccountAndLambdaRequest, ) -> dict:
+ """Add AWS Log Lambda ARN.
+
+ Attach the Lambda ARN of the Lambda created for the Datadog-AWS log collection to your AWS account ID to enable log collection.
+
+ :param body: AWS Log Lambda Async request body.
+ :type body: AWSAccountAndLambdaRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_aws_lambda_arn_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_lambda_arn(self, body: AWSAccountAndLambdaRequest, ) -> dict:
+ """Delete an AWS Logs integration.
+
+ Delete a Datadog-AWS logs configuration by removing the specific Lambda ARN associated with a given AWS account.
+
+ :param body: Delete AWS Lambda ARN request body.
+ :type body: AWSAccountAndLambdaRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_aws_lambda_arn_endpoint.call_with_http_info(**kwargs)
+
+ def enable_aws_log_services(self, body: AWSLogsServicesRequest, ) -> dict:
+ """Enable an AWS Logs integration. **Deprecated**.
+
+ Enable automatic log collection for a list of services. This should be run after running ``CreateAWSLambdaARN`` to save the configuration.
+
+ :param body: Enable AWS Log Services request body.
+ :type body: AWSLogsServicesRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("enable_aws_log_services is deprecated", DeprecationWarning, stacklevel=2)
+ return self._enable_aws_log_services_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_logs_integrations(self, ) -> List[AWSLogsListResponse]:
+ """List all AWS Logs integrations. **Deprecated**.
+
+ List all Datadog-AWS Logs integrations configured in your Datadog account.
+
+ :rtype: [AWSLogsListResponse]
+ """
+ kwargs: Dict[str, Any] = {}
+ warnings.warn("list_aws_logs_integrations is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_aws_logs_integrations_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_logs_services(self, ) -> List[AWSLogsListServicesResponse]:
+ """Get list of AWS log ready services. **Deprecated**.
+
+ **This endpoint is deprecated - use the V2 endpoint instead.** Get the list of current AWS services that Datadog offers automatic log collection. Use returned service IDs with the services parameter for the Enable an AWS service log collection API endpoint.
+
+ :rtype: [AWSLogsListServicesResponse]
+ """
+ kwargs: Dict[str, Any] = {}
+ warnings.warn("list_aws_logs_services is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_aws_logs_services_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/azure_integration_api.py b/datadog_api_client/v1/api/azure_integration_api.py
new file mode 100644
index 0000000000..a23d200c2d
--- /dev/null
+++ b/datadog_api_client/v1/api/azure_integration_api.py
@@ -0,0 +1,218 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.azure_account import AzureAccount
+from datadog_api_client.v1.model.azure_account_list_response import AzureAccountListResponse
+
+
+class AzureIntegrationApi:
+ """
+ Configure your Datadog-Azure integration directly through the Datadog API.
+ For more information, see the `Datadog-Azure integration page `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_azure_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/azure",
+ "operation_id": "create_azure_integration",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AzureAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_azure_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/azure",
+ "operation_id": "delete_azure_integration",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AzureAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_azure_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureAccountListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/azure",
+ "operation_id": "list_azure_integration",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_azure_host_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/azure/host_filters",
+ "operation_id": "update_azure_host_filters",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AzureAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_azure_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/azure",
+ "operation_id": "update_azure_integration",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AzureAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_azure_integration(self, body: AzureAccount, ) -> dict:
+ """Create an Azure integration.
+
+ Create a Datadog-Azure integration.
+
+ Using the ``POST`` method updates your integration configuration by adding your new
+ configuration to the existing one in your Datadog organization.
+
+ Using the ``PUT`` method updates your integration configuration by replacing your
+ current configuration with the new one sent to your Datadog organization.
+
+ :param body: Create a Datadog-Azure integration for your Datadog account request body.
+ :type body: AzureAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_azure_integration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_azure_integration(self, body: AzureAccount, ) -> dict:
+ """Delete an Azure integration.
+
+ Delete a given Datadog-Azure integration from your Datadog account.
+
+ :param body: Delete a given Datadog-Azure integration request body.
+ :type body: AzureAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_azure_integration_endpoint.call_with_http_info(**kwargs)
+
+ def list_azure_integration(self, ) -> AzureAccountListResponse:
+ """List all Azure integrations.
+
+ List all Datadog-Azure integrations configured in your Datadog account.
+
+ :rtype: AzureAccountListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_azure_integration_endpoint.call_with_http_info(**kwargs)
+
+ def update_azure_host_filters(self, body: AzureAccount, ) -> dict:
+ """Update Azure integration host filters.
+
+ Update the defined list of host filters for a given Datadog-Azure integration.
+
+ :param body: Update a Datadog-Azure integration's host filters request body.
+ :type body: AzureAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_azure_host_filters_endpoint.call_with_http_info(**kwargs)
+
+ def update_azure_integration(self, body: AzureAccount, ) -> dict:
+ """Update an Azure integration.
+
+ Update a Datadog-Azure integration. Requires an existing ``tenant_name`` and ``client_id``.
+ Any other fields supplied will overwrite existing values. To overwrite ``tenant_name`` or ``client_id`` ,
+ use ``new_tenant_name`` and ``new_client_id``. To leave a field unchanged, do not supply that field in the payload.
+
+ :param body: Update a Datadog-Azure integration request body.
+ :type body: AzureAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_azure_integration_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/dashboard_lists_api.py b/datadog_api_client/v1/api/dashboard_lists_api.py
new file mode 100644
index 0000000000..f520020484
--- /dev/null
+++ b/datadog_api_client/v1/api/dashboard_lists_api.py
@@ -0,0 +1,222 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.dashboard_list_list_response import DashboardListListResponse
+from datadog_api_client.v1.model.dashboard_list import DashboardList
+from datadog_api_client.v1.model.dashboard_list_delete_response import DashboardListDeleteResponse
+
+
+class DashboardListsApi:
+ """
+ Interact with your dashboard lists through the API to
+ organize, find, and share all of your dashboards with your team and
+ organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_dashboard_list_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardList,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/lists/manual",
+ "operation_id": "create_dashboard_list",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardList,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dashboard_list_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardListDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/lists/manual/{list_id}",
+ "operation_id": "delete_dashboard_list",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "list_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_dashboard_list_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardList,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/lists/manual/{list_id}",
+ "operation_id": "get_dashboard_list",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "list_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_dashboard_lists_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardListListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/lists/manual",
+ "operation_id": "list_dashboard_lists",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_dashboard_list_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardList,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/lists/manual/{list_id}",
+ "operation_id": "update_dashboard_list",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "list_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardList,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_dashboard_list(self, body: DashboardList, ) -> DashboardList:
+ """Create a dashboard list.
+
+ Create an empty dashboard list.
+
+ :param body: Create a dashboard list request body.
+ :type body: DashboardList
+ :rtype: DashboardList
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_dashboard_list_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dashboard_list(self, list_id: int, ) -> DashboardListDeleteResponse:
+ """Delete a dashboard list.
+
+ Delete a dashboard list.
+
+ :param list_id: ID of the dashboard list to delete.
+ :type list_id: int
+ :rtype: DashboardListDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["list_id"] = list_id
+
+ return self._delete_dashboard_list_endpoint.call_with_http_info(**kwargs)
+
+ def get_dashboard_list(self, list_id: int, ) -> DashboardList:
+ """Get a dashboard list.
+
+ Fetch an existing dashboard list's definition.
+
+ :param list_id: ID of the dashboard list to fetch.
+ :type list_id: int
+ :rtype: DashboardList
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["list_id"] = list_id
+
+ return self._get_dashboard_list_endpoint.call_with_http_info(**kwargs)
+
+ def list_dashboard_lists(self, ) -> DashboardListListResponse:
+ """Get all dashboard lists.
+
+ Fetch all of your existing dashboard list definitions.
+
+ :rtype: DashboardListListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_dashboard_lists_endpoint.call_with_http_info(**kwargs)
+
+ def update_dashboard_list(self, list_id: int, body: DashboardList, ) -> DashboardList:
+ """Update a dashboard list.
+
+ Update the name of a dashboard list.
+
+ :param list_id: ID of the dashboard list to update.
+ :type list_id: int
+ :param body: Update a dashboard list request body.
+ :type body: DashboardList
+ :rtype: DashboardList
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["list_id"] = list_id
+
+ kwargs["body"] = body
+
+ return self._update_dashboard_list_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/dashboards_api.py b/datadog_api_client/v1/api/dashboards_api.py
new file mode 100644
index 0000000000..2cb38b3b8d
--- /dev/null
+++ b/datadog_api_client/v1/api/dashboards_api.py
@@ -0,0 +1,700 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.dashboard_bulk_delete_request import DashboardBulkDeleteRequest
+from datadog_api_client.v1.model.dashboard_summary import DashboardSummary
+from datadog_api_client.v1.model.dashboard_summary_definition import DashboardSummaryDefinition
+from datadog_api_client.v1.model.dashboard_restore_request import DashboardRestoreRequest
+from datadog_api_client.v1.model.dashboard import Dashboard
+from datadog_api_client.v1.model.shared_dashboard import SharedDashboard
+from datadog_api_client.v1.model.delete_shared_dashboard_response import DeleteSharedDashboardResponse
+from datadog_api_client.v1.model.shared_dashboard_update_request import SharedDashboardUpdateRequest
+from datadog_api_client.v1.model.shared_dashboard_invites import SharedDashboardInvites
+from datadog_api_client.v1.model.dashboard_delete_response import DashboardDeleteResponse
+
+
+class DashboardsApi:
+ """
+ Manage all your dashboards, as well as access to your shared dashboards, through the API. See the `Dashboards page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (Dashboard,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard",
+ "operation_id": "create_dashboard",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (Dashboard,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_public_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (SharedDashboard,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public",
+ "operation_id": "create_public_dashboard",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SharedDashboard,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/{dashboard_id}",
+ "operation_id": "delete_dashboard",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dashboards_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard",
+ "operation_id": "delete_dashboards",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardBulkDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_public_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteSharedDashboardResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public/{token}",
+ "operation_id": "delete_public_dashboard",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_public_dashboard_invitation_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public/{token}/invitation",
+ "operation_id": "delete_public_dashboard_invitation",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SharedDashboardInvites,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (Dashboard,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/{dashboard_id}",
+ "operation_id": "get_dashboard",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_public_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (SharedDashboard,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public/{token}",
+ "operation_id": "get_public_dashboard",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_public_dashboard_invitations_endpoint = _Endpoint(
+ settings={
+ "response_type": (SharedDashboardInvites,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public/{token}/invitation",
+ "operation_id": "get_public_dashboard_invitations",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page_number",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_dashboards_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardSummary,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard",
+ "operation_id": "list_dashboards",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "filter_shared": {
+ "openapi_types": (bool,),
+ "attribute": "filter[shared]",
+ "location": "query",
+ },
+ "filter_deleted": {
+ "openapi_types": (bool,),
+ "attribute": "filter[deleted]",
+ "location": "query",
+ },
+ "count": {
+ "openapi_types": (int,),
+ "attribute": "count",
+ "location": "query",
+ },
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._restore_dashboards_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard",
+ "operation_id": "restore_dashboards",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardRestoreRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._send_public_dashboard_invitation_endpoint = _Endpoint(
+ settings={
+ "response_type": (SharedDashboardInvites,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public/{token}/invitation",
+ "operation_id": "send_public_dashboard_invitation",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SharedDashboardInvites,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (Dashboard,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/{dashboard_id}",
+ "operation_id": "update_dashboard",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Dashboard,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_public_dashboard_endpoint = _Endpoint(
+ settings={
+ "response_type": (SharedDashboard,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/dashboard/public/{token}",
+ "operation_id": "update_public_dashboard",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SharedDashboardUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_dashboard(self, body: Dashboard, ) -> Dashboard:
+ """Create a new dashboard.
+
+ Create a dashboard using the specified options. When defining queries in your widgets, take note of which queries should have the ``as_count()`` or ``as_rate()`` modifiers appended.
+ Refer to the following `documentation `_ for more information on these modifiers.
+
+ :param body: Create a dashboard request body.
+ :type body: Dashboard
+ :rtype: Dashboard
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def create_public_dashboard(self, body: SharedDashboard, ) -> SharedDashboard:
+ """Create a shared dashboard.
+
+ Share a specified private dashboard, generating a URL at which it can be publicly viewed.
+
+ :param body: Create a shared dashboard request body.
+ :type body: SharedDashboard
+ :rtype: SharedDashboard
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_public_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dashboard(self, dashboard_id: str, ) -> DashboardDeleteResponse:
+ """Delete a dashboard.
+
+ Delete a dashboard using the specified ID.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :rtype: DashboardDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ return self._delete_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dashboards(self, body: DashboardBulkDeleteRequest, ) -> None:
+ """Delete dashboards.
+
+ Delete dashboards using the specified IDs. If there are any failures, no dashboards will be deleted (partial success is not allowed).
+
+ :param body: Delete dashboards request body.
+ :type body: DashboardBulkDeleteRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_dashboards_endpoint.call_with_http_info(**kwargs)
+
+ def delete_public_dashboard(self, token: str, ) -> DeleteSharedDashboardResponse:
+ """Revoke a shared dashboard URL.
+
+ Revoke the public URL for a dashboard (rendering it private) associated with the specified token.
+
+ :param token: The token of the shared dashboard.
+ :type token: str
+ :rtype: DeleteSharedDashboardResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token"] = token
+
+ return self._delete_public_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def delete_public_dashboard_invitation(self, token: str, body: SharedDashboardInvites, ) -> None:
+ """Revoke shared dashboard invitations.
+
+ Revoke previously sent invitation emails and active sessions used to access a given shared dashboard for specific email addresses.
+
+ :param token: The token of the shared dashboard.
+ :type token: str
+ :param body: Shared Dashboard Invitation deletion request body.
+ :type body: SharedDashboardInvites
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token"] = token
+
+ kwargs["body"] = body
+
+ return self._delete_public_dashboard_invitation_endpoint.call_with_http_info(**kwargs)
+
+ def get_dashboard(self, dashboard_id: str, ) -> Dashboard:
+ """Get a dashboard.
+
+ Get a dashboard using the specified ID.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :rtype: Dashboard
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ return self._get_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def get_public_dashboard(self, token: str, ) -> SharedDashboard:
+ """Get a shared dashboard.
+
+ Fetch an existing shared dashboard's sharing metadata associated with the specified token.
+
+ :param token: The token of the shared dashboard. Generated when a dashboard is shared.
+ :type token: str
+ :rtype: SharedDashboard
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token"] = token
+
+ return self._get_public_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def get_public_dashboard_invitations(self, token: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> SharedDashboardInvites:
+ """Get all invitations for a shared dashboard.
+
+ Describe the invitations that exist for the given shared dashboard (paginated).
+
+ :param token: Token of the shared dashboard for which to fetch invitations.
+ :type token: str
+ :param page_size: The number of records to return in a single request.
+ :type page_size: int, optional
+ :param page_number: The page to access (base 0).
+ :type page_number: int, optional
+ :rtype: SharedDashboardInvites
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token"] = token
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._get_public_dashboard_invitations_endpoint.call_with_http_info(**kwargs)
+
+ def list_dashboards(self, *, filter_shared: Union[bool, UnsetType]=unset, filter_deleted: Union[bool, UnsetType]=unset, count: Union[int, UnsetType]=unset, start: Union[int, UnsetType]=unset, ) -> DashboardSummary:
+ """Get all dashboards.
+
+ Get all dashboards.
+
+ **Note** : This query will only return custom created or cloned dashboards.
+ This query will not return preset dashboards.
+
+ :param filter_shared: When ``true`` , this query only returns shared custom created
+ or cloned dashboards.
+ :type filter_shared: bool, optional
+ :param filter_deleted: When ``true`` , this query returns only deleted custom-created
+ or cloned dashboards. This parameter is incompatible with ``filter[shared]``.
+ :type filter_deleted: bool, optional
+ :param count: The maximum number of dashboards returned in the list.
+ :type count: int, optional
+ :param start: The specific offset to use as the beginning of the returned response.
+ :type start: int, optional
+ :rtype: DashboardSummary
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_shared is not unset:
+ kwargs["filter_shared"] = filter_shared
+
+ if filter_deleted is not unset:
+ kwargs["filter_deleted"] = filter_deleted
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ return self._list_dashboards_endpoint.call_with_http_info(**kwargs)
+
+ def list_dashboards_with_pagination(self, *, filter_shared: Union[bool, UnsetType]=unset, filter_deleted: Union[bool, UnsetType]=unset, count: Union[int, UnsetType]=unset, start: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[DashboardSummaryDefinition]:
+ """Get all dashboards.
+
+ Provide a paginated version of :meth:`list_dashboards`, returning all items.
+
+ :param filter_shared: When ``true`` , this query only returns shared custom created
+ or cloned dashboards.
+ :type filter_shared: bool, optional
+ :param filter_deleted: When ``true`` , this query returns only deleted custom-created
+ or cloned dashboards. This parameter is incompatible with ``filter[shared]``.
+ :type filter_deleted: bool, optional
+ :param count: The maximum number of dashboards returned in the list.
+ :type count: int, optional
+ :param start: The specific offset to use as the beginning of the returned response.
+ :type start: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[DashboardSummaryDefinition]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_shared is not unset:
+ kwargs["filter_shared"] = filter_shared
+
+ if filter_deleted is not unset:
+ kwargs["filter_deleted"] = filter_deleted
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ local_page_size = get_attribute_from_path(kwargs, "count", 100)
+ endpoint = self._list_dashboards_endpoint
+ set_attribute_from_path(kwargs, "count", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "dashboards",
+ "page_offset_param": "start",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def restore_dashboards(self, body: DashboardRestoreRequest, ) -> None:
+ """Restore deleted dashboards.
+
+ Restore dashboards using the specified IDs. If there are any failures, no dashboards will be restored (partial success is not allowed).
+
+ :param body: Restore dashboards request body.
+ :type body: DashboardRestoreRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._restore_dashboards_endpoint.call_with_http_info(**kwargs)
+
+ def send_public_dashboard_invitation(self, token: str, body: SharedDashboardInvites, ) -> SharedDashboardInvites:
+ """Send shared dashboard invitation email.
+
+ Send emails to specified email addresses containing links to access a given authenticated shared dashboard. Email addresses must already belong to the authenticated shared dashboard's share_list.
+
+ :param token: The token of the shared dashboard.
+ :type token: str
+ :param body: Shared Dashboard Invitation request body.
+ :type body: SharedDashboardInvites
+ :rtype: SharedDashboardInvites
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token"] = token
+
+ kwargs["body"] = body
+
+ return self._send_public_dashboard_invitation_endpoint.call_with_http_info(**kwargs)
+
+ def update_dashboard(self, dashboard_id: str, body: Dashboard, ) -> Dashboard:
+ """Update a dashboard.
+
+ Update a dashboard using the specified ID.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :param body: Update Dashboard request body.
+ :type body: Dashboard
+ :rtype: Dashboard
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ kwargs["body"] = body
+
+ return self._update_dashboard_endpoint.call_with_http_info(**kwargs)
+
+ def update_public_dashboard(self, token: str, body: SharedDashboardUpdateRequest, ) -> SharedDashboard:
+ """Update a shared dashboard.
+
+ Update a shared dashboard associated with the specified token.
+
+ :param token: The token of the shared dashboard.
+ :type token: str
+ :param body: Update Dashboard request body.
+ :type body: SharedDashboardUpdateRequest
+ :rtype: SharedDashboard
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token"] = token
+
+ kwargs["body"] = body
+
+ return self._update_public_dashboard_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/downtimes_api.py b/datadog_api_client/v1/api/downtimes_api.py
new file mode 100644
index 0000000000..a59e973f67
--- /dev/null
+++ b/datadog_api_client/v1/api/downtimes_api.py
@@ -0,0 +1,326 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.downtime import Downtime
+from datadog_api_client.v1.model.canceled_downtimes_ids import CanceledDowntimesIds
+from datadog_api_client.v1.model.cancel_downtimes_by_scope_request import CancelDowntimesByScopeRequest
+
+
+class DowntimesApi:
+ """
+ `Downtiming `_ gives
+ you greater control over monitor notifications by allowing you to globally exclude
+ scopes from alerting. Downtime settings, which can be scheduled with start and
+ end times, prevent all alerting related to specified Datadog tags.
+
+ **Note:** ``curl`` commands require `url encoding `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._cancel_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/downtime/{downtime_id}",
+ "operation_id": "cancel_downtime",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._cancel_downtimes_by_scope_endpoint = _Endpoint(
+ settings={
+ "response_type": (CanceledDowntimesIds,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/downtime/cancel/by_scope",
+ "operation_id": "cancel_downtimes_by_scope",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CancelDowntimesByScopeRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (Downtime,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/downtime",
+ "operation_id": "create_downtime",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (Downtime,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (Downtime,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/downtime/{downtime_id}",
+ "operation_id": "get_downtime",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_downtimes_endpoint = _Endpoint(
+ settings={
+ "response_type": ([Downtime],),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/downtime",
+ "operation_id": "list_downtimes",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "current_only": {
+ "openapi_types": (bool,),
+ "attribute": "current_only",
+ "location": "query",
+ },
+ "with_creator": {
+ "openapi_types": (bool,),
+ "attribute": "with_creator",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_monitor_downtimes_endpoint = _Endpoint(
+ settings={
+ "response_type": ([Downtime],),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/{monitor_id}/downtimes",
+ "operation_id": "list_monitor_downtimes",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (Downtime,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/downtime/{downtime_id}",
+ "operation_id": "update_downtime",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Downtime,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def cancel_downtime(self, downtime_id: int, ) -> None:
+ """Cancel a downtime. **Deprecated**.
+
+ Cancel a downtime. **Note:** This endpoint has been deprecated. Please use v2 endpoints.
+
+ :param downtime_id: ID of the downtime to cancel.
+ :type downtime_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ warnings.warn("cancel_downtime is deprecated", DeprecationWarning, stacklevel=2)
+ return self._cancel_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def cancel_downtimes_by_scope(self, body: CancelDowntimesByScopeRequest, ) -> CanceledDowntimesIds:
+ """Cancel downtimes by scope. **Deprecated**.
+
+ Delete all downtimes that match the scope of ``X``. **Note:** This only interacts with Downtimes created using v1 endpoints. This endpoint has been deprecated and will not be replaced. Please use v2 endpoints to find and cancel downtimes.
+
+ :param body: Scope to cancel downtimes for.
+ :type body: CancelDowntimesByScopeRequest
+ :rtype: CanceledDowntimesIds
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("cancel_downtimes_by_scope is deprecated", DeprecationWarning, stacklevel=2)
+ return self._cancel_downtimes_by_scope_endpoint.call_with_http_info(**kwargs)
+
+ def create_downtime(self, body: Downtime, ) -> Downtime:
+ """Schedule a downtime. **Deprecated**.
+
+ Schedule a downtime. **Note:** This endpoint has been deprecated. Please use v2 endpoints.
+
+ :param body: Schedule a downtime request body.
+ :type body: Downtime
+ :rtype: Downtime
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_downtime is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def get_downtime(self, downtime_id: int, ) -> Downtime:
+ """Get a downtime. **Deprecated**.
+
+ Get downtime detail by ``downtime_id``. **Note:** This endpoint has been deprecated. Please use v2 endpoints.
+
+ :param downtime_id: ID of the downtime to fetch.
+ :type downtime_id: int
+ :rtype: Downtime
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ warnings.warn("get_downtime is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def list_downtimes(self, *, current_only: Union[bool, UnsetType]=unset, with_creator: Union[bool, UnsetType]=unset, ) -> List[Downtime]:
+ """Get all downtimes. **Deprecated**.
+
+ Get all scheduled downtimes. **Note:** This endpoint has been deprecated. Please use v2 endpoints.
+
+ :param current_only: Only return downtimes that are active when the request is made.
+ :type current_only: bool, optional
+ :param with_creator: Return creator information.
+ :type with_creator: bool, optional
+ :rtype: [Downtime]
+ """
+ kwargs: Dict[str, Any] = {}
+ if current_only is not unset:
+ kwargs["current_only"] = current_only
+
+ if with_creator is not unset:
+ kwargs["with_creator"] = with_creator
+
+ warnings.warn("list_downtimes is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_downtimes_endpoint.call_with_http_info(**kwargs)
+
+ def list_monitor_downtimes(self, monitor_id: int, ) -> List[Downtime]:
+ """Get active downtimes for a monitor. **Deprecated**.
+
+ Get all active v1 downtimes for the specified monitor. **Note:** This endpoint has been deprecated. Please use v2 endpoints.
+
+ :param monitor_id: The id of the monitor
+ :type monitor_id: int
+ :rtype: [Downtime]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ warnings.warn("list_monitor_downtimes is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_monitor_downtimes_endpoint.call_with_http_info(**kwargs)
+
+ def update_downtime(self, downtime_id: int, body: Downtime, ) -> Downtime:
+ """Update a downtime. **Deprecated**.
+
+ Update a single downtime by ``downtime_id``. **Note:** This endpoint has been deprecated. Please use v2 endpoints.
+
+ :param downtime_id: ID of the downtime to update.
+ :type downtime_id: int
+ :param body: Update a downtime request body.
+ :type body: Downtime
+ :rtype: Downtime
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ kwargs["body"] = body
+
+ warnings.warn("update_downtime is deprecated", DeprecationWarning, stacklevel=2)
+ return self._update_downtime_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/events_api.py b/datadog_api_client/v1/api/events_api.py
new file mode 100644
index 0000000000..e69fdc40a7
--- /dev/null
+++ b/datadog_api_client/v1/api/events_api.py
@@ -0,0 +1,242 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.event_list_response import EventListResponse
+from datadog_api_client.v1.model.event_priority import EventPriority
+from datadog_api_client.v1.model.event_create_response import EventCreateResponse
+from datadog_api_client.v1.model.event_create_request import EventCreateRequest
+from datadog_api_client.v1.model.event_response import EventResponse
+
+
+class EventsApi:
+ """
+ The Event Management API allows you to programmatically post events to the Events Explorer and fetch events from the Events Explorer. See the `Event Management page `_ for more information.
+
+ **Update to Datadog monitor events aggregation_key starting March 1, 2025:** The Datadog monitor events ``aggregation_key`` is unique to each Monitor ID. Starting March 1st, this key will also include Monitor Group, making it unique per *Monitor ID and Monitor Group*. If you're using monitor events ``aggregation_key`` in dashboard queries or the Event API, you must migrate to use ``@monitor.id``. Reach out to `support `_ if you have any question.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_event_endpoint = _Endpoint(
+ settings={
+ "response_type": (EventCreateResponse,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v1/events",
+ "operation_id": "create_event",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (EventCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_event_endpoint = _Endpoint(
+ settings={
+ "response_type": (EventResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/events/{event_id}",
+ "operation_id": "get_event",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "event_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "event_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (EventListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/events",
+ "operation_id": "list_events",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "priority": {
+ "openapi_types": (EventPriority,),
+ "attribute": "priority",
+ "location": "query",
+ },
+ "sources": {
+ "openapi_types": (str,),
+ "attribute": "sources",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": (str,),
+ "attribute": "tags",
+ "location": "query",
+ },
+ "unaggregated": {
+ "openapi_types": (bool,),
+ "attribute": "unaggregated",
+ "location": "query",
+ },
+ "exclude_aggregate": {
+ "openapi_types": (bool,),
+ "attribute": "exclude_aggregate",
+ "location": "query",
+ },
+ "page": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_event(self, body: EventCreateRequest, ) -> EventCreateResponse:
+ """Post an event.
+
+ This endpoint allows you to post events to the stream.
+ Tag them, set priority and event aggregate them with other events.
+
+ :param body: Event request object
+ :type body: EventCreateRequest
+ :rtype: EventCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_event_endpoint.call_with_http_info(**kwargs)
+
+ def get_event(self, event_id: int, ) -> EventResponse:
+ """Get an event.
+
+ This endpoint allows you to query for event details.
+
+ **Note** : If the event you’re querying contains markdown formatting of any kind,
+ you may see characters such as ``%`` , ``\\`` , ``n`` in your output.
+
+ :param event_id: The ID of the event.
+ :type event_id: int
+ :rtype: EventResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["event_id"] = event_id
+
+ return self._get_event_endpoint.call_with_http_info(**kwargs)
+
+ def list_events(self, start: int, end: int, *, priority: Union[EventPriority, UnsetType]=unset, sources: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, unaggregated: Union[bool, UnsetType]=unset, exclude_aggregate: Union[bool, UnsetType]=unset, page: Union[int, UnsetType]=unset, ) -> EventListResponse:
+ """Get a list of events.
+
+ The event stream can be queried and filtered by time, priority, sources and tags.
+
+ **Notes** :
+
+ *
+ If the event you’re querying contains markdown formatting of any kind,
+ you may see characters such as ``%`` , ``\\`` , ``n`` in your output.
+
+ *
+ This endpoint returns a maximum of ``1000`` most recent results. To return additional results,
+ identify the last timestamp of the last result and set that as the ``end`` query time to
+ paginate the results. You can also use the page parameter to specify which set of ``1000`` results to return.
+
+ :param start: POSIX timestamp.
+ :type start: int
+ :param end: POSIX timestamp.
+ :type end: int
+ :param priority: Priority of your events, either ``low`` or ``normal``.
+ :type priority: EventPriority, optional
+ :param sources: A comma separated string of sources.
+ :type sources: str, optional
+ :param tags: A comma separated list indicating what tags, if any, should be used to filter the list of events.
+ :type tags: str, optional
+ :param unaggregated: Set unaggregated to ``true`` to return all events within the specified [ ``start`` , ``end`` ] timeframe.
+ Otherwise if an event is aggregated to a parent event with a timestamp outside of the timeframe,
+ it won't be available in the output. Aggregated events with ``is_aggregate=true`` in the response will still be returned unless exclude_aggregate is set to ``true.``
+ :type unaggregated: bool, optional
+ :param exclude_aggregate: Set ``exclude_aggregate`` to ``true`` to only return unaggregated events where ``is_aggregate=false`` in the response. If the ``exclude_aggregate`` parameter is set to ``true`` ,
+ then the unaggregated parameter is ignored and will be ``true`` by default.
+ :type exclude_aggregate: bool, optional
+ :param page: By default 1000 results are returned per request. Set page to the number of the page to return with ``0`` being the first page. The page parameter can only be used
+ when either unaggregated or exclude_aggregate is set to ``true.``
+ :type page: int, optional
+ :rtype: EventListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if priority is not unset:
+ kwargs["priority"] = priority
+
+ if sources is not unset:
+ kwargs["sources"] = sources
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if unaggregated is not unset:
+ kwargs["unaggregated"] = unaggregated
+
+ if exclude_aggregate is not unset:
+ kwargs["exclude_aggregate"] = exclude_aggregate
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ return self._list_events_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/gcp_integration_api.py b/datadog_api_client/v1/api/gcp_integration_api.py
new file mode 100644
index 0000000000..654af2ee04
--- /dev/null
+++ b/datadog_api_client/v1/api/gcp_integration_api.py
@@ -0,0 +1,180 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.gcp_account import GCPAccount
+from datadog_api_client.v1.model.gcp_account_list_response import GCPAccountListResponse
+
+
+class GCPIntegrationApi:
+ """
+ Configure your Datadog-Google Cloud Platform (GCP) integration directly
+ through the Datadog API. Read more about the `Datadog-Google Cloud Platform integration `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_gcp_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/gcp",
+ "operation_id": "create_gcp_integration",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GCPAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_gcp_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/gcp",
+ "operation_id": "delete_gcp_integration",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GCPAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_gcp_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPAccountListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/gcp",
+ "operation_id": "list_gcp_integration",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_gcp_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/gcp",
+ "operation_id": "update_gcp_integration",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GCPAccount,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_gcp_integration(self, body: GCPAccount, ) -> dict:
+ """Create a GCP integration. **Deprecated**.
+
+ This endpoint is deprecated – use the V2 endpoints instead. Create a Datadog-GCP integration.
+
+ :param body: Create a Datadog-GCP integration.
+ :type body: GCPAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_gcp_integration is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_gcp_integration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_gcp_integration(self, body: GCPAccount, ) -> dict:
+ """Delete a GCP integration. **Deprecated**.
+
+ This endpoint is deprecated – use the V2 endpoints instead. Delete a given Datadog-GCP integration.
+
+ :param body: Delete a given Datadog-GCP integration.
+ :type body: GCPAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("delete_gcp_integration is deprecated", DeprecationWarning, stacklevel=2)
+ return self._delete_gcp_integration_endpoint.call_with_http_info(**kwargs)
+
+ def list_gcp_integration(self, ) -> GCPAccountListResponse:
+ """List all GCP integrations. **Deprecated**.
+
+ This endpoint is deprecated – use the V2 endpoints instead. List all Datadog-GCP integrations configured in your Datadog account.
+
+ :rtype: GCPAccountListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ warnings.warn("list_gcp_integration is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_gcp_integration_endpoint.call_with_http_info(**kwargs)
+
+ def update_gcp_integration(self, body: GCPAccount, ) -> dict:
+ """Update a GCP integration. **Deprecated**.
+
+ This endpoint is deprecated – use the V2 endpoints instead. Update a Datadog-GCP integrations host_filters and/or auto-mute.
+ Requires a ``project_id`` and ``client_email`` , however these fields cannot be updated.
+ If you need to update these fields, delete and use the create ( ``POST`` ) endpoint.
+ The unspecified fields will keep their original values.
+
+ :param body: Update a Datadog-GCP integration.
+ :type body: GCPAccount
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("update_gcp_integration is deprecated", DeprecationWarning, stacklevel=2)
+ return self._update_gcp_integration_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/hosts_api.py b/datadog_api_client/v1/api/hosts_api.py
new file mode 100644
index 0000000000..7af496c640
--- /dev/null
+++ b/datadog_api_client/v1/api/hosts_api.py
@@ -0,0 +1,270 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.host_mute_response import HostMuteResponse
+from datadog_api_client.v1.model.host_mute_settings import HostMuteSettings
+from datadog_api_client.v1.model.host_list_response import HostListResponse
+from datadog_api_client.v1.model.host_totals import HostTotals
+
+
+class HostsApi:
+ """
+ Get information about your infrastructure hosts in Datadog, and mute or unmute any notifications from your hosts. See the `Infrastructure page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_host_totals_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostTotals,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/hosts/totals",
+ "operation_id": "get_host_totals",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "_from": {
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_hosts_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/hosts",
+ "operation_id": "list_hosts",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "sort_field": {
+ "openapi_types": (str,),
+ "attribute": "sort_field",
+ "location": "query",
+ },
+ "sort_dir": {
+ "openapi_types": (str,),
+ "attribute": "sort_dir",
+ "location": "query",
+ },
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "count": {
+ "openapi_types": (int,),
+ "attribute": "count",
+ "location": "query",
+ },
+ "_from": {
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "include_muted_hosts_data": {
+ "openapi_types": (bool,),
+ "attribute": "include_muted_hosts_data",
+ "location": "query",
+ },
+ "include_hosts_metadata": {
+ "openapi_types": (bool,),
+ "attribute": "include_hosts_metadata",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._mute_host_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostMuteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/host/{host_name}/mute",
+ "operation_id": "mute_host",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "host_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "host_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (HostMuteSettings,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._unmute_host_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostMuteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/host/{host_name}/unmute",
+ "operation_id": "unmute_host",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "host_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "host_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_host_totals(self, *, _from: Union[int, UnsetType]=unset, ) -> HostTotals:
+ """Get the total number of active hosts.
+
+ This endpoint returns the total number of active and up hosts in your Datadog account.
+ Active means the host has reported in the past hour, and up means it has reported in the past two hours.
+
+ :param _from: Number of seconds from which you want to get total number of active hosts.
+ :type _from: int, optional
+ :rtype: HostTotals
+ """
+ kwargs: Dict[str, Any] = {}
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ return self._get_host_totals_endpoint.call_with_http_info(**kwargs)
+
+ def list_hosts(self, *, filter: Union[str, UnsetType]=unset, sort_field: Union[str, UnsetType]=unset, sort_dir: Union[str, UnsetType]=unset, start: Union[int, UnsetType]=unset, count: Union[int, UnsetType]=unset, _from: Union[int, UnsetType]=unset, include_muted_hosts_data: Union[bool, UnsetType]=unset, include_hosts_metadata: Union[bool, UnsetType]=unset, ) -> HostListResponse:
+ """Get all hosts for your organization.
+
+ This endpoint allows searching for hosts by name, alias, or tag.
+ Hosts live within the past 3 hours are included by default.
+ Retention is 7 days.
+ Results are paginated with a max of 1000 results at a time.
+ **Note:** If the host is an Amazon EC2 instance, ``id`` is replaced with ``aws_id`` in the response.
+ **Note** : To enrich the data returned by this endpoint with security scans, see the new `api/v2/security/scanned-assets-metadata `_ endpoint.
+
+ :param filter: String to filter search results.
+ :type filter: str, optional
+ :param sort_field: Sort hosts by this field.
+ :type sort_field: str, optional
+ :param sort_dir: Direction of sort. Options include ``asc`` and ``desc``.
+ :type sort_dir: str, optional
+ :param start: Specify the starting point for the host search results. For example, if you set ``count`` to 100 and the first 100 results have already been returned, you can set ``start`` to ``101`` to get the next 100 results.
+ :type start: int, optional
+ :param count: Number of hosts to return. Max 1000.
+ :type count: int, optional
+ :param _from: Number of seconds since UNIX epoch from which you want to search your hosts.
+ :type _from: int, optional
+ :param include_muted_hosts_data: Include information on the muted status of hosts and when the mute expires.
+ :type include_muted_hosts_data: bool, optional
+ :param include_hosts_metadata: Include additional metadata about the hosts (agent_version, machine, platform, processor, etc.).
+ :type include_hosts_metadata: bool, optional
+ :rtype: HostListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if sort_field is not unset:
+ kwargs["sort_field"] = sort_field
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if include_muted_hosts_data is not unset:
+ kwargs["include_muted_hosts_data"] = include_muted_hosts_data
+
+ if include_hosts_metadata is not unset:
+ kwargs["include_hosts_metadata"] = include_hosts_metadata
+
+ return self._list_hosts_endpoint.call_with_http_info(**kwargs)
+
+ def mute_host(self, host_name: str, body: HostMuteSettings, ) -> HostMuteResponse:
+ """Mute a host.
+
+ Mute a host. **Note:** This creates a `Downtime V2 `_ for the host.
+
+ :param host_name: Name of the host to mute.
+ :type host_name: str
+ :param body: Mute a host request body.
+ :type body: HostMuteSettings
+ :rtype: HostMuteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["host_name"] = host_name
+
+ kwargs["body"] = body
+
+ return self._mute_host_endpoint.call_with_http_info(**kwargs)
+
+ def unmute_host(self, host_name: str, ) -> HostMuteResponse:
+ """Unmute a host.
+
+ Unmutes a host. This endpoint takes no JSON arguments.
+
+ :param host_name: Name of the host to unmute.
+ :type host_name: str
+ :rtype: HostMuteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["host_name"] = host_name
+
+ return self._unmute_host_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/ip_ranges_api.py b/datadog_api_client/v1/api/ip_ranges_api.py
new file mode 100644
index 0000000000..f1eb72fcf3
--- /dev/null
+++ b/datadog_api_client/v1/api/ip_ranges_api.py
@@ -0,0 +1,108 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.ip_ranges import IPRanges
+
+
+class IPRangesApi:
+ """
+ Get a list of IP prefixes belonging to Datadog.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_ip_ranges_endpoint = _Endpoint(
+ settings={
+ "response_type": (IPRanges,),
+ "auth": [],
+ "endpoint_path": "/",
+ "operation_id": "get_ip_ranges",
+ "http_method": "GET",
+ "version": "v1",
+ "servers": [
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The regional site for Datadog customers.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "us3.datadoghq.com",
+ "us5.datadoghq.com",
+ "ap1.datadoghq.com",
+ "ap2.datadoghq.com",
+ "uk1.datadoghq.com",
+ "datadoghq.eu",
+ "ddog-gov.com",
+ "us2.ddog-gov.com",
+ ],
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "ip-ranges",
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "Full site DNS name.",
+ "default_value": "ip-ranges.datadoghq.com",
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.datadoghq.com",
+ "variables": {
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "ip-ranges",
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_ip_ranges(self, ) -> IPRanges:
+ """List IP Ranges.
+
+ Get information about Datadog IP ranges.
+
+ :rtype: IPRanges
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_ip_ranges_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/key_management_api.py b/datadog_api_client/v1/api/key_management_api.py
new file mode 100644
index 0000000000..2ff2085897
--- /dev/null
+++ b/datadog_api_client/v1/api/key_management_api.py
@@ -0,0 +1,435 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.api_key_list_response import ApiKeyListResponse
+from datadog_api_client.v1.model.api_key_response import ApiKeyResponse
+from datadog_api_client.v1.model.api_key import ApiKey
+from datadog_api_client.v1.model.application_key_list_response import ApplicationKeyListResponse
+from datadog_api_client.v1.model.application_key_response import ApplicationKeyResponse
+from datadog_api_client.v1.model.application_key import ApplicationKey
+
+
+class KeyManagementApi:
+ """
+ Manage your Datadog API and application keys. You need an API key and an
+ application key for a user with the required permissions to interact with these endpoints.
+
+ Consult the following pages to view and manage your keys:
+
+ * `API Keys `_
+ * `Application Keys `_
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApiKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/api_key",
+ "operation_id": "create_api_key",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ApiKey,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/application_key",
+ "operation_id": "create_application_key",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKey,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApiKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/api_key/{key}",
+ "operation_id": "delete_api_key",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/application_key/{key}",
+ "operation_id": "delete_application_key",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApiKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/api_key/{key}",
+ "operation_id": "get_api_key",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/application_key/{key}",
+ "operation_id": "get_application_key",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_api_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApiKeyListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/api_key",
+ "operation_id": "list_api_keys",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_application_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/application_key",
+ "operation_id": "list_application_keys",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApiKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/api_key/{key}",
+ "operation_id": "update_api_key",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApiKey,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/application_key/{key}",
+ "operation_id": "update_application_key",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKey,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_api_key(self, body: ApiKey, ) -> ApiKeyResponse:
+ """Create an API key.
+
+ Creates an API key with a given name.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :type body: ApiKey
+ :rtype: ApiKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def create_application_key(self, body: ApplicationKey, ) -> ApplicationKeyResponse:
+ """Create an application key.
+
+ Create an application key with a given name.
+ This endpoint is disabled for organizations in `One-Time Read mode `_.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :type body: ApplicationKey
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def delete_api_key(self, key: str, ) -> ApiKeyResponse:
+ """Delete an API key.
+
+ Delete a given API key.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :param key: The specific API key you are working with.
+ :type key: str
+ :rtype: ApiKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["key"] = key
+
+ return self._delete_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def delete_application_key(self, key: str, ) -> ApplicationKeyResponse:
+ """Delete an application key.
+
+ Delete a given application key.
+ This endpoint is disabled for organizations in `One-Time Read mode `_.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :param key: The specific APP key you are working with.
+ :type key: str
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["key"] = key
+
+ return self._delete_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_key(self, key: str, ) -> ApiKeyResponse:
+ """Get API key.
+
+ Get a given API key.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :param key: The specific API key you are working with.
+ :type key: str
+ :rtype: ApiKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["key"] = key
+
+ return self._get_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_application_key(self, key: str, ) -> ApplicationKeyResponse:
+ """Get an application key.
+
+ Get a given application key.
+ This endpoint is disabled for organizations in `One-Time Read mode `_.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :param key: The specific APP key you are working with.
+ :type key: str
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["key"] = key
+
+ return self._get_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def list_api_keys(self, ) -> ApiKeyListResponse:
+ """Get all API keys.
+
+ Get all API keys available for your account.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :rtype: ApiKeyListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_api_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_application_keys(self, ) -> ApplicationKeyListResponse:
+ """Get all application keys.
+
+ Get all application keys available for your Datadog account.
+ This endpoint is disabled for organizations in `One-Time Read mode `_.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :rtype: ApplicationKeyListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_application_keys_endpoint.call_with_http_info(**kwargs)
+
+ def update_api_key(self, key: str, body: ApiKey, ) -> ApiKeyResponse:
+ """Edit an API key.
+
+ Edit an API key name.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :param key: The specific API key you are working with.
+ :type key: str
+ :type body: ApiKey
+ :rtype: ApiKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["key"] = key
+
+ kwargs["body"] = body
+
+ return self._update_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def update_application_key(self, key: str, body: ApplicationKey, ) -> ApplicationKeyResponse:
+ """Edit an application key.
+
+ Edit an application key name.
+ This endpoint is disabled for organizations in `One-Time Read mode `_.
+
+ **Note** : This endpoint is disabled for the Government sites (US1-FED and US2-FED). Use the `V2 Key Management `_ endpoints instead.
+
+ :param key: The specific APP key you are working with.
+ :type key: str
+ :type body: ApplicationKey
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["key"] = key
+
+ kwargs["body"] = body
+
+ return self._update_application_key_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/logs_api.py b/datadog_api_client/v1/api/logs_api.py
new file mode 100644
index 0000000000..508b2aff4f
--- /dev/null
+++ b/datadog_api_client/v1/api/logs_api.py
@@ -0,0 +1,212 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.logs_list_response import LogsListResponse
+from datadog_api_client.v1.model.logs_list_request import LogsListRequest
+from datadog_api_client.v1.model.content_encoding import ContentEncoding
+from datadog_api_client.v1.model.http_log import HTTPLog
+from datadog_api_client.v1.model.http_log_item import HTTPLogItem
+
+
+class LogsApi:
+ """
+ Search your logs and send them to your Datadog platform over HTTP. See the `Log Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/logs-queries/list",
+ "operation_id": "list_logs",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsListRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._submit_log_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/v1/input",
+ "operation_id": "submit_log",
+ "http_method": "POST",
+ "version": "v1",
+ "servers": [
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The regional site for Datadog customers.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "us3.datadoghq.com",
+ "us5.datadoghq.com",
+ "ap1.datadoghq.com",
+ "ap2.datadoghq.com",
+ "uk1.datadoghq.com",
+ "datadoghq.eu",
+ "ddog-gov.com",
+ "us2.ddog-gov.com",
+ ],
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "http-intake.logs",
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "Full site DNS name.",
+ "default_value": "http-intake.logs.datadoghq.com",
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "Any Datadog deployment.",
+ "default_value": "datadoghq.com",
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "http-intake.logs",
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "content_encoding": {
+ "openapi_types": (ContentEncoding,),
+ "attribute": "Content-Encoding",
+ "location": "header",
+ },
+ "ddtags": {
+ "openapi_types": (str,),
+ "attribute": "ddtags",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (HTTPLog,),
+ "location": "body",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json", "application/json;simple", "application/logplex-1", "text/plain"]
+ },
+ api_client=api_client,
+ )
+
+ def list_logs(self, body: LogsListRequest, ) -> LogsListResponse:
+ """Search logs.
+
+ List endpoint returns logs that match a log search query.
+ `Results are paginated `_.
+
+ If you are considering archiving logs for your organization,
+ consider use of the Datadog archive capabilities instead of the log list API.
+ See `Datadog Logs Archive documentation `_.
+
+ **Note** : This endpoint is enabled by default for logs customers. To disable it, contact `Datadog support `_.
+
+ :param body: Logs filter
+ :type body: LogsListRequest
+ :rtype: LogsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._list_logs_endpoint.call_with_http_info(**kwargs)
+
+ def submit_log(self, body: HTTPLog, *, content_encoding: Union[ContentEncoding, UnsetType]=unset, ddtags: Union[str, UnsetType]=unset, ) -> dict:
+ """Send logs. **Deprecated**.
+
+ Send your logs to your Datadog platform over HTTP. Limits per HTTP request are:
+
+ * Maximum content size per payload (uncompressed): 5MB
+ * Maximum size for a single log: 1MB
+ * Maximum array size if sending multiple logs in an array: 1000 entries
+
+ Any log exceeding 1MB is accepted and truncated by Datadog:
+
+ * For a single log request, the API truncates the log at 1MB and returns a 2xx.
+ * For a multi-logs request, the API processes all logs, truncates only logs larger than 1MB, and returns a 2xx.
+
+ Datadog recommends sending your logs compressed.
+ Add the ``Content-Encoding: gzip`` header to the request when sending compressed logs.
+
+ The status codes answered by the HTTP API are:
+
+ * 200: OK
+ * 400: Bad request (likely an issue in the payload formatting)
+ * 403: Permission issue (likely using an invalid API Key)
+ * 413: Payload too large (batch is above 5MB uncompressed)
+ * 5xx: Internal error, request should be retried after some time
+
+ :param body: Log to send (JSON format).
+ :type body: HTTPLog
+ :param content_encoding: HTTP header used to compress the media-type.
+ :type content_encoding: ContentEncoding, optional
+ :param ddtags: Log tags can be passed as query parameters with ``text/plain`` content type.
+ :type ddtags: str, optional
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ if content_encoding is not unset:
+ kwargs["content_encoding"] = content_encoding
+
+ if ddtags is not unset:
+ kwargs["ddtags"] = ddtags
+
+ kwargs["body"] = body
+
+ warnings.warn("submit_log is deprecated", DeprecationWarning, stacklevel=2)
+ return self._submit_log_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/logs_indexes_api.py b/datadog_api_client/v1/api/logs_indexes_api.py
new file mode 100644
index 0000000000..1ab3ca98cd
--- /dev/null
+++ b/datadog_api_client/v1/api/logs_indexes_api.py
@@ -0,0 +1,292 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.logs_indexes_order import LogsIndexesOrder
+from datadog_api_client.v1.model.logs_index_list_response import LogsIndexListResponse
+from datadog_api_client.v1.model.logs_index import LogsIndex
+from datadog_api_client.v1.model.logs_index_update_request import LogsIndexUpdateRequest
+
+
+class LogsIndexesApi:
+ """
+ Manage configuration of `log indexes `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_logs_index_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsIndex,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/indexes",
+ "operation_id": "create_logs_index",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsIndex,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_logs_index_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/indexes/{name}",
+ "operation_id": "delete_logs_index",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_index_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsIndex,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/indexes/{name}",
+ "operation_id": "get_logs_index",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_index_order_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsIndexesOrder,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/index-order",
+ "operation_id": "get_logs_index_order",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_log_indexes_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsIndexListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/indexes",
+ "operation_id": "list_log_indexes",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_index_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsIndex,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/indexes/{name}",
+ "operation_id": "update_logs_index",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LogsIndexUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_index_order_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsIndexesOrder,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/index-order",
+ "operation_id": "update_logs_index_order",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsIndexesOrder,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_logs_index(self, body: LogsIndex, ) -> LogsIndex:
+ """Create an index.
+
+ Creates a new index. Returns the Index object passed in the request body when the request is successful.
+
+ :param body: Object containing the new index.
+ :type body: LogsIndex
+ :rtype: LogsIndex
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_logs_index_endpoint.call_with_http_info(**kwargs)
+
+ def delete_logs_index(self, name: str, ) -> None:
+ """Delete an index.
+
+ Delete an existing index from your organization. Index deletions are permanent and cannot be reverted.
+ You cannot recreate an index with the same name as deleted ones.
+
+ :param name: Name of the log index.
+ :type name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["name"] = name
+
+ return self._delete_logs_index_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_index(self, name: str, ) -> LogsIndex:
+ """Get an index.
+
+ Get one log index from your organization. This endpoint takes no JSON arguments.
+
+ :param name: Name of the log index.
+ :type name: str
+ :rtype: LogsIndex
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["name"] = name
+
+ return self._get_logs_index_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_index_order(self, ) -> LogsIndexesOrder:
+ """Get indexes order.
+
+ Get the current order of your log indexes. This endpoint takes no JSON arguments.
+
+ :rtype: LogsIndexesOrder
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_logs_index_order_endpoint.call_with_http_info(**kwargs)
+
+ def list_log_indexes(self, ) -> LogsIndexListResponse:
+ """Get all indexes.
+
+ The Index object describes the configuration of a log index.
+ This endpoint returns an array of the ``LogIndex`` objects of your organization.
+
+ :rtype: LogsIndexListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_log_indexes_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_index(self, name: str, body: LogsIndexUpdateRequest, ) -> LogsIndex:
+ """Update an index.
+
+ Update an index as identified by its name.
+ Returns the Index object passed in the request body when the request is successful.
+
+ Using the ``PUT`` method updates your index's configuration by **replacing**
+ your current configuration with the new one sent to your Datadog organization.
+
+ :param name: Name of the log index.
+ :type name: str
+ :param body: Object containing the new ``LogsIndexUpdateRequest``.
+ :type body: LogsIndexUpdateRequest
+ :rtype: LogsIndex
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["name"] = name
+
+ kwargs["body"] = body
+
+ return self._update_logs_index_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_index_order(self, body: LogsIndexesOrder, ) -> LogsIndexesOrder:
+ """Update indexes order.
+
+ This endpoint updates the index order of your organization.
+ It returns the index order object passed in the request body when the request is successful.
+
+ :param body: Object containing the new ordered list of index names
+ :type body: LogsIndexesOrder
+ :rtype: LogsIndexesOrder
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_logs_index_order_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/logs_pipelines_api.py b/datadog_api_client/v1/api/logs_pipelines_api.py
new file mode 100644
index 0000000000..d2336807b2
--- /dev/null
+++ b/datadog_api_client/v1/api/logs_pipelines_api.py
@@ -0,0 +1,318 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.logs_pipelines_order import LogsPipelinesOrder
+from datadog_api_client.v1.model.logs_pipeline_list import LogsPipelineList
+from datadog_api_client.v1.model.logs_pipeline import LogsPipeline
+
+
+class LogsPipelinesApi:
+ """
+ Pipelines and processors operate on incoming logs, parsing
+ and transforming them into structured attributes for easier querying.
+
+ *
+ See the `pipelines configuration page `_
+ for a list of the pipelines and processors currently configured in web UI.
+
+ *
+ Additional API-related information about processors can be found in the
+ `processors documentation `_.
+
+ *
+ For more information about Pipelines, see the
+ `pipeline documentation `_.
+
+ **Notes:**
+
+ **Grok parsing rules may effect JSON output and require
+ returned data to be configured before using in a request.**
+ For example, if you are using the data returned from a
+ request for another request body, and have a parsing rule
+ that uses a regex pattern like ``\s`` for spaces, you will
+ need to configure all escaped spaces as ``%{space}`` to use
+ in the body data.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_logs_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsPipeline,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipelines",
+ "operation_id": "create_logs_pipeline",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsPipeline,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_logs_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipelines/{pipeline_id}",
+ "operation_id": "delete_logs_pipeline",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "pipeline_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "pipeline_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsPipeline,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipelines/{pipeline_id}",
+ "operation_id": "get_logs_pipeline",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "pipeline_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "pipeline_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_pipeline_order_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsPipelinesOrder,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipeline-order",
+ "operation_id": "get_logs_pipeline_order",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_logs_pipelines_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsPipelineList,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipelines",
+ "operation_id": "list_logs_pipelines",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsPipeline,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipelines/{pipeline_id}",
+ "operation_id": "update_logs_pipeline",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "pipeline_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "pipeline_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LogsPipeline,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_pipeline_order_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsPipelinesOrder,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/logs/config/pipeline-order",
+ "operation_id": "update_logs_pipeline_order",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsPipelinesOrder,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_logs_pipeline(self, body: LogsPipeline, ) -> LogsPipeline:
+ """Create a pipeline.
+
+ Create a pipeline in your organization.
+
+ :param body: Definition of the new pipeline.
+ :type body: LogsPipeline
+ :rtype: LogsPipeline
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_logs_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def delete_logs_pipeline(self, pipeline_id: str, ) -> None:
+ """Delete a pipeline.
+
+ Delete a given pipeline from your organization.
+ This endpoint takes no JSON arguments.
+
+ :param pipeline_id: ID of the pipeline to delete.
+ :type pipeline_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["pipeline_id"] = pipeline_id
+
+ return self._delete_logs_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_pipeline(self, pipeline_id: str, ) -> LogsPipeline:
+ """Get a pipeline.
+
+ Get a specific pipeline from your organization.
+ This endpoint takes no JSON arguments.
+
+ :param pipeline_id: ID of the pipeline to get.
+ :type pipeline_id: str
+ :rtype: LogsPipeline
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["pipeline_id"] = pipeline_id
+
+ return self._get_logs_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_pipeline_order(self, ) -> LogsPipelinesOrder:
+ """Get pipeline order.
+
+ Get the current order of your pipelines.
+ This endpoint takes no JSON arguments.
+
+ :rtype: LogsPipelinesOrder
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_logs_pipeline_order_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs_pipelines(self, ) -> LogsPipelineList:
+ """Get all pipelines.
+
+ Get all pipelines from your organization.
+ This endpoint takes no JSON arguments.
+
+ :rtype: LogsPipelineList
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_logs_pipelines_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_pipeline(self, pipeline_id: str, body: LogsPipeline, ) -> LogsPipeline:
+ """Update a pipeline.
+
+ Update a given pipeline configuration to change it’s processors or their order.
+
+ **Note** : Using this method updates your pipeline configuration by **replacing**
+ your current configuration with the new one sent to your Datadog organization.
+
+ :param pipeline_id: ID of the pipeline to delete.
+ :type pipeline_id: str
+ :param body: New definition of the pipeline.
+ :type body: LogsPipeline
+ :rtype: LogsPipeline
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["pipeline_id"] = pipeline_id
+
+ kwargs["body"] = body
+
+ return self._update_logs_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_pipeline_order(self, body: LogsPipelinesOrder, ) -> LogsPipelinesOrder:
+ """Update pipeline order.
+
+ Update the order of your pipelines. Since logs are processed sequentially, reordering a pipeline may change
+ the structure and content of the data processed by other pipelines and their processors.
+
+ **Note** : Using the ``PUT`` method updates your pipeline order by replacing your current order
+ with the new one sent to your Datadog organization.
+
+ :param body: Object containing the new ordered list of pipeline IDs.
+ :type body: LogsPipelinesOrder
+ :rtype: LogsPipelinesOrder
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_logs_pipeline_order_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/metrics_api.py b/datadog_api_client/v1/api/metrics_api.py
new file mode 100644
index 0000000000..fe3863a981
--- /dev/null
+++ b/datadog_api_client/v1/api/metrics_api.py
@@ -0,0 +1,397 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.intake_payload_accepted import IntakePayloadAccepted
+from datadog_api_client.v1.model.distribution_points_content_encoding import DistributionPointsContentEncoding
+from datadog_api_client.v1.model.distribution_points_payload import DistributionPointsPayload
+from datadog_api_client.v1.model.metrics_list_response import MetricsListResponse
+from datadog_api_client.v1.model.metric_metadata import MetricMetadata
+from datadog_api_client.v1.model.metrics_query_response import MetricsQueryResponse
+from datadog_api_client.v1.model.metric_search_response import MetricSearchResponse
+from datadog_api_client.v1.model.metric_content_encoding import MetricContentEncoding
+from datadog_api_client.v1.model.metrics_payload import MetricsPayload
+
+
+class MetricsApi:
+ """
+ The metrics endpoint allows you to:
+
+ * Post metrics data so it can be graphed on Datadog’s dashboards
+ * Query metrics from any time period
+ * Modify tag configurations for metrics
+ * View tags and volumes for metrics
+
+ **Note** : A graph can only contain a set number of points
+ and as the timeframe over which a metric is viewed increases,
+ aggregation between points occurs to stay below that set number.
+
+ The Post, Patch, and Delete ``manage_tags`` API methods can only be performed by
+ a user who has the ``Manage Tags for Metrics`` permission.
+
+ See the `Metrics page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_metric_metadata_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricMetadata,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/metrics/{metric_name}",
+ "operation_id": "get_metric_metadata",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_active_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/metrics",
+ "operation_id": "list_active_metrics",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "_from": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "host": {
+ "openapi_types": (str,),
+ "attribute": "host",
+ "location": "query",
+ },
+ "tag_filter": {
+ "openapi_types": (str,),
+ "attribute": "tag_filter",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/search",
+ "operation_id": "list_metrics",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "q": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "q",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._query_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricsQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/query",
+ "operation_id": "query_metrics",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "_from": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "query": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._submit_distribution_points_endpoint = _Endpoint(
+ settings={
+ "response_type": (IntakePayloadAccepted,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v1/distribution_points",
+ "operation_id": "submit_distribution_points",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "content_encoding": {
+ "openapi_types": (DistributionPointsContentEncoding,),
+ "attribute": "Content-Encoding",
+ "location": "header",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DistributionPointsPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["text/json", "application/json"],
+ "content_type": ["text/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._submit_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (IntakePayloadAccepted,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v1/series",
+ "operation_id": "submit_metrics",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "content_encoding": {
+ "openapi_types": (MetricContentEncoding,),
+ "attribute": "Content-Encoding",
+ "location": "header",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MetricsPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["text/json", "application/json"],
+ "content_type": ["text/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_metric_metadata_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricMetadata,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/metrics/{metric_name}",
+ "operation_id": "update_metric_metadata",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MetricMetadata,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_metric_metadata(self, metric_name: str, ) -> MetricMetadata:
+ """Get metric metadata.
+
+ Get metadata about a specific metric.
+
+ :param metric_name: Name of the metric for which to get metadata.
+ :type metric_name: str
+ :rtype: MetricMetadata
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._get_metric_metadata_endpoint.call_with_http_info(**kwargs)
+
+ def list_active_metrics(self, _from: int, *, host: Union[str, UnsetType]=unset, tag_filter: Union[str, UnsetType]=unset, ) -> MetricsListResponse:
+ """Get active metrics list.
+
+ Get the list of actively reporting metrics from a given time until now.
+
+ :param _from: Seconds since the Unix epoch.
+ :type _from: int
+ :param host: Hostname for filtering the list of metrics returned.
+ If set, metrics retrieved are those with the corresponding hostname tag.
+ :type host: str, optional
+ :param tag_filter: Filter metrics that have been submitted with the given tags. Supports boolean and wildcard expressions.
+ Cannot be combined with other filters.
+ :type tag_filter: str, optional
+ :rtype: MetricsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["_from"] = _from
+
+ if host is not unset:
+ kwargs["host"] = host
+
+ if tag_filter is not unset:
+ kwargs["tag_filter"] = tag_filter
+
+ return self._list_active_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def list_metrics(self, q: str, ) -> MetricSearchResponse:
+ """Search metrics. **Deprecated**.
+
+ **Note** : This endpoint is deprecated. Use ``/api/v2/metrics`` instead.
+
+ Search for metrics from the last 24 hours in Datadog.
+
+ :param q: Query string to search metrics upon. Can optionally be prefixed with ``metrics:``.
+ :type q: str
+ :rtype: MetricSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["q"] = q
+
+ warnings.warn("list_metrics is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def query_metrics(self, _from: int, to: int, query: str, ) -> MetricsQueryResponse:
+ """Query timeseries points.
+
+ Query timeseries points.
+
+ :param _from: Start of the queried time period, seconds since the Unix epoch.
+ :type _from: int
+ :param to: End of the queried time period, seconds since the Unix epoch.
+ :type to: int
+ :param query: Query string.
+ :type query: str
+ :rtype: MetricsQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["_from"] = _from
+
+ kwargs["to"] = to
+
+ kwargs["query"] = query
+
+ return self._query_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def submit_distribution_points(self, body: DistributionPointsPayload, *, content_encoding: Union[DistributionPointsContentEncoding, UnsetType]=unset, ) -> IntakePayloadAccepted:
+ """Submit distribution points.
+
+ The distribution points end-point allows you to post distribution data that can be graphed on Datadog’s dashboards.
+
+ :type body: DistributionPointsPayload
+ :param content_encoding: HTTP header used to compress the media-type.
+ :type content_encoding: DistributionPointsContentEncoding, optional
+ :rtype: IntakePayloadAccepted
+ """
+ kwargs: Dict[str, Any] = {}
+ if content_encoding is not unset:
+ kwargs["content_encoding"] = content_encoding
+
+ kwargs["body"] = body
+
+ return self._submit_distribution_points_endpoint.call_with_http_info(**kwargs)
+
+ def submit_metrics(self, body: MetricsPayload, *, content_encoding: Union[MetricContentEncoding, UnsetType]=unset, ) -> IntakePayloadAccepted:
+ """Submit metrics.
+
+ The metrics end-point allows you to post time-series data that can be graphed on Datadog’s dashboards.
+ The maximum payload size is 3.2 megabytes (3200000 bytes). Compressed payloads must have a decompressed size of less than 62 megabytes (62914560 bytes).
+
+ If you’re submitting metrics directly to the Datadog API without using DogStatsD, expect:
+
+ * 64 bits for the timestamp
+ * 64 bits for the value
+ * 40 bytes for the metric names
+ * 50 bytes for the timeseries
+ * The full payload is approximately 100 bytes. However, with the DogStatsD API,
+ compression is applied, which reduces the payload size.
+
+ :type body: MetricsPayload
+ :param content_encoding: HTTP header used to compress the media-type.
+ :type content_encoding: MetricContentEncoding, optional
+ :rtype: IntakePayloadAccepted
+ """
+ kwargs: Dict[str, Any] = {}
+ if content_encoding is not unset:
+ kwargs["content_encoding"] = content_encoding
+
+ kwargs["body"] = body
+
+ return self._submit_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def update_metric_metadata(self, metric_name: str, body: MetricMetadata, ) -> MetricMetadata:
+ """Edit metric metadata.
+
+ Edit metadata of a specific metric. Find out more about `supported types `_.
+
+ :param metric_name: Name of the metric for which to edit metadata.
+ :type metric_name: str
+ :param body: New metadata.
+ :type body: MetricMetadata
+ :rtype: MetricMetadata
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ kwargs["body"] = body
+
+ return self._update_metric_metadata_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/monitors_api.py b/datadog_api_client/v1/api/monitors_api.py
new file mode 100644
index 0000000000..25b3ea3a0d
--- /dev/null
+++ b/datadog_api_client/v1/api/monitors_api.py
@@ -0,0 +1,939 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.monitor import Monitor
+from datadog_api_client.v1.model.check_can_delete_monitor_response import CheckCanDeleteMonitorResponse
+from datadog_api_client.v1.model.monitor_group_search_response import MonitorGroupSearchResponse
+from datadog_api_client.v1.model.monitor_search_response import MonitorSearchResponse
+from datadog_api_client.v1.model.deleted_monitor import DeletedMonitor
+from datadog_api_client.v1.model.monitor_update_request import MonitorUpdateRequest
+
+
+class MonitorsApi:
+ """
+ `Monitors `_ allow you to watch a metric or check that you care about and
+ notifies your team when a defined threshold has exceeded.
+
+ For more information, see `Creating Monitors `_.
+
+ **Note:** ``curl`` commands require `url encoding `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._check_can_delete_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (CheckCanDeleteMonitorResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/can_delete",
+ "operation_id": "check_can_delete_monitor",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "monitor_ids": {
+ "required": True,
+ "openapi_types": ([int],),
+ "attribute": "monitor_ids",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (Monitor,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor",
+ "operation_id": "create_monitor",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (Monitor,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeletedMonitor,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/{monitor_id}",
+ "operation_id": "delete_monitor",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ "force": {
+ "openapi_types": (str,),
+ "attribute": "force",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (Monitor,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/{monitor_id}",
+ "operation_id": "get_monitor",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ "group_states": {
+ "openapi_types": (str,),
+ "attribute": "group_states",
+ "location": "query",
+ },
+ "with_downtimes": {
+ "openapi_types": (bool,),
+ "attribute": "with_downtimes",
+ "location": "query",
+ },
+ "with_assets": {
+ "openapi_types": (bool,),
+ "attribute": "with_assets",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_monitors_endpoint = _Endpoint(
+ settings={
+ "response_type": ([Monitor],),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor",
+ "operation_id": "list_monitors",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "group_states": {
+ "openapi_types": (str,),
+ "attribute": "group_states",
+ "location": "query",
+ },
+ "name": {
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": (str,),
+ "attribute": "tags",
+ "location": "query",
+ },
+ "monitor_tags": {
+ "openapi_types": (str,),
+ "attribute": "monitor_tags",
+ "location": "query",
+ },
+ "with_downtimes": {
+ "openapi_types": (bool,),
+ "attribute": "with_downtimes",
+ "location": "query",
+ },
+ "id_offset": {
+ "openapi_types": (int,),
+ "attribute": "id_offset",
+ "location": "query",
+ },
+ "page": {
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_monitor_groups_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorGroupSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/groups/search",
+ "operation_id": "search_monitor_groups",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "page": {
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "per_page": {
+ "openapi_types": (int,),
+ "attribute": "per_page",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_monitors_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/search",
+ "operation_id": "search_monitors",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "page": {
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "per_page": {
+ "openapi_types": (int,),
+ "attribute": "per_page",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (Monitor,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/{monitor_id}",
+ "operation_id": "update_monitor",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_existing_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/{monitor_id}/validate",
+ "operation_id": "validate_existing_monitor",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Monitor,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/monitor/validate",
+ "operation_id": "validate_monitor",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (Monitor,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def check_can_delete_monitor(self, monitor_ids: List[int], ) -> CheckCanDeleteMonitorResponse:
+ """Check if a monitor can be deleted.
+
+ Check if the given monitors can be deleted.
+
+ :param monitor_ids: The IDs of the monitor to check.
+ :type monitor_ids: [int]
+ :rtype: CheckCanDeleteMonitorResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_ids"] = monitor_ids
+
+ return self._check_can_delete_monitor_endpoint.call_with_http_info(**kwargs)
+
+ def create_monitor(self, body: Monitor, ) -> Monitor:
+ """Create a monitor.
+
+ Create a monitor using the specified options.
+
+ **Monitor Types**
+
+ The type of monitor chosen from:
+
+ * anomaly: ``query alert``
+ * APM: ``query alert`` or ``trace-analytics alert``
+ * composite: ``composite``
+ * custom: ``service check``
+ * forecast: ``query alert``
+ * host: ``service check``
+ * integration: ``query alert`` or ``service check``
+ * live process: ``process alert``
+ * logs: ``log alert``
+ * metric: ``query alert``
+ * network: ``service check``
+ * outlier: ``query alert``
+ * process: ``service check``
+ * rum: ``rum alert``
+ * SLO: ``slo alert``
+ * watchdog: ``event-v2 alert``
+ * event-v2: ``event-v2 alert``
+ * audit: ``audit alert``
+ * error-tracking: ``error-tracking alert``
+ * database-monitoring: ``database-monitoring alert``
+ * network-performance: ``network-performance alert``
+ * cloud cost: ``cost alert``
+ * network-path: ``network-path alert``
+
+ **Notes** :
+
+ * Synthetic monitors are created through the Synthetics API. See the `Synthetics API `_ documentation for more information.
+ * Log monitors require an unscoped App Key.
+
+ **Query Types**
+
+ **Metric Alert Query**
+
+ Example: ``time_aggr(time_window):space_aggr:metric{tags} [by {key}] operator #``
+
+ * ``time_aggr`` : avg, sum, max, min, change, or pct_change
+ * ``time_window`` : ``last_#m`` (with ``#`` between 1 and 10080 depending on the monitor type) or ``last_#h`` (with ``#`` between 1 and 168 depending on the monitor type) or ``last_1d`` , or ``last_1w``
+ * ``space_aggr`` : avg, sum, min, or max
+ * ``tags`` : one or more tags (comma-separated), or *
+ * `key`: a 'key' in key:value tag syntax; defines a separate alert for each tag in the group (multi-alert)
+ * ``operator`` : <, <=, >, >=, ==, or !=
+ * ``#`` : an integer or decimal number used to set the threshold
+
+ To use a dynamic threshold on a metric monitor with a formula query, replace ``#`` with the ``threshold`` keyword
+ (for example, ``... > threshold`` ) and provide the threshold as a query via ``critical_query`` on ``options.thresholds``.
+ This feature is in preview.
+
+ If you are using the ``_change_`` or ``_pct_change_`` time aggregator, instead use ``change_aggr(time_aggr(time_window),
+ timeshift):space_aggr:metric{tags} [by {key}] operator #`` with:
+
+ * ``change_aggr`` change, pct_change
+ * ``time_aggr`` avg, sum, max, min `Learn more `_
+ * ``time_window`` last_#m (between 1 and 2880 depending on the monitor type), last_#h (between 1 and 48 depending on the monitor type), or last_#d (1 or 2)
+ * ``timeshift`` #m_ago (5, 10, 15, or 30), #h_ago (1, 2, or 4), or 1d_ago
+
+ Use this to create an outlier monitor using the following query:
+ ``avg(last_30m):outliers(avg:system.cpu.user{role:es-events-data} by {host}, 'dbscan', 7) > 0``
+
+ **Service Check Query**
+
+ Example: ``"check".over(tags).last(count).by(group).count_by_status()``
+
+ * ``check`` name of the check, for example ``datadog.agent.up``
+ * ``tags`` one or more quoted tags (comma-separated), or "*". for example: ``.over("env:prod", "role:db")`` ; ``over`` cannot be blank.
+ * ``count`` must be at greater than or equal to your max threshold (defined in the ``options`` ). It is limited to 100.
+ For example, if you've specified to notify on 1 critical, 3 ok, and 2 warn statuses, ``count`` should be at least 3.
+ * ``group`` must be specified for check monitors. Per-check grouping is already explicitly known for some service checks.
+ For example, Postgres integration monitors are tagged by ``db`` , ``host`` , and ``port`` , and Network monitors by ``host`` , ``instance`` , and ``url``. See `Service Checks `_ documentation for more information.
+
+ **Event Alert Query**
+
+ **Note:** The Event Alert Query has been replaced by the Event V2 Alert Query. For more information, see the `Event Migration guide `_.
+
+ **Event V2 Alert Query**
+
+ Example: ``events(query).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Process Alert Query**
+
+ Example: ``processes(search).over(tags).rollup('count').last(timeframe) operator #``
+
+ * ``search`` free text search string for querying processes.
+ Matching processes match results on the `Live Processes `_ page.
+ * ``tags`` one or more tags (comma-separated)
+ * ``timeframe`` the timeframe to roll up the counts. Examples: 10m, 4h. Supported timeframes: s, m, h and d
+ * ``operator`` <, <=, >, >=, ==, or !=
+ * ``#`` an integer or decimal number used to set the threshold
+
+ **Logs Alert Query**
+
+ Example: ``logs(query).index(index_name).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``index_name`` For multi-index organizations, the log index in which the request is performed.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Composite Query**
+
+ Example: ``12345 && 67890`` , where ``12345`` and ``67890`` are the IDs of non-composite monitors
+
+ * ``name`` [ *required* , *default* = **dynamic, based on query** ]: The name of the alert.
+ * ``message`` [ *required* , *default* = **dynamic, based on query** ]: A message to include with notifications for this monitor.
+ Email notifications can be sent to specific users by using the same '@username' notation as events.
+ * ``tags`` [ *optional* , *default* = **empty list** ]: A list of tags to associate with your monitor.
+ When getting all monitor details via the API, use the ``monitor_tags`` argument to filter results by these tags.
+ It is only available via the API and isn't visible or editable in the Datadog UI.
+
+ **SLO Alert Query**
+
+ Example: ``error_budget("slo_id").over("time_window") operator #``
+
+ * ``slo_id`` : The alphanumeric SLO ID of the SLO you are configuring the alert for.
+ * `time_window`: The time window of the SLO target you wish to alert on. Valid options: ``7d`` , ``30d`` , ``90d``.
+ * ``operator`` : ``>=`` or ``>``
+
+ **Audit Alert Query**
+
+ Example: ``audits(query).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **CI Pipelines Alert Query**
+
+ Example: ``ci-pipelines(query).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` , and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **CI Tests Alert Query**
+
+ Example: ``ci-tests(query).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` , and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Error Tracking Alert Query**
+
+ "New issue" example: ``error-tracking(query).source(issue_source).new().rollup(rollup_method[, measure]).by(group_by).last(time_window) operator #``
+ "High impact issue" example: ``error-tracking(query).source(issue_source).impact().rollup(rollup_method[, measure]).by(group_by).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``issue_source`` The issue source - supports ``all`` , ``browser`` , ``mobile`` and ``backend`` and defaults to ``all`` if omitted.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` , and ``cardinality`` and defaults to ``count`` if omitted.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``group by`` Comma-separated list of attributes to group by - should contain at least ``issue.id``.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Database Monitoring Alert Query**
+
+ Example: ``database-monitoring(query).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` , and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Network Performance Alert Query**
+
+ Example: ``network-performance(query).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` , and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Cost Alert Query**
+
+ Example: ``formula(query).timeframe_type(time_window).function(parameter) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``timeframe_type`` The timeframe type to evaluate the cost
+ .. code-block::
+
+ - for `forecast` supports `current`
+ - for `change`, `anomaly`, `threshold` supports `last`
+
+ * ``time_window`` - supports daily roll-up e.g. ``7d``
+ * ``function`` - [optional, defaults to ``threshold`` monitor if omitted] supports ``change`` , ``anomaly`` , ``forecast``
+ * ``parameter`` Specify the parameter of the type
+
+ * for ``change`` :
+
+ * supports ``relative`` , ``absolute``
+ * [optional] supports ``#`` , where ``#`` is an integer or decimal number used to set the threshold
+
+ * for ``anomaly`` :
+
+ * supports ``direction=both`` , ``direction=above`` , ``direction=below``
+ * [optional] supports ``threshold=#`` , where ``#`` is an integer or decimal number used to set the threshold
+
+ * ``operator``
+
+ * for ``threshold`` supports ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``
+ * for ``change`` supports ``>`` , ``<``
+ * for ``anomaly`` supports ``>=``
+ * for ``forecast`` supports ``>``
+
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ **Network Path Alert Query**
+
+ Example: ``network-path(query).index(index_name).rollup(rollup_method[, measure]).last(time_window) operator #``
+
+ * ``query`` The search query - following the `Log search syntax `_.
+ * ``index_name`` The data type to monitor on - supports ``netpath-path`` and ``netpath-hop``.
+ * ``rollup_method`` The stats roll-up method - supports ``count`` , ``avg`` , and ``cardinality``.
+ * ``measure`` For ``avg`` and cardinality ``rollup_method`` - specify the measure or the facet name you want to use.
+ * ``time_window`` #m (between 1 and 2880), #h (between 1 and 48).
+ * ``operator`` ``<`` , ``<=`` , ``>`` , ``>=`` , ``==`` , or ``!=``.
+ * ``#`` an integer or decimal number used to set the threshold.
+
+ :param body: Create a monitor request body.
+ :type body: Monitor
+ :rtype: Monitor
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_monitor_endpoint.call_with_http_info(**kwargs)
+
+ def delete_monitor(self, monitor_id: int, *, force: Union[str, UnsetType]=unset, ) -> DeletedMonitor:
+ """Delete a monitor.
+
+ Delete the specified monitor
+
+ :param monitor_id: The ID of the monitor.
+ :type monitor_id: int
+ :param force: Delete the monitor even if it's referenced by other resources (for example SLO, composite monitor).
+ :type force: str, optional
+ :rtype: DeletedMonitor
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ if force is not unset:
+ kwargs["force"] = force
+
+ return self._delete_monitor_endpoint.call_with_http_info(**kwargs)
+
+ def get_monitor(self, monitor_id: int, *, group_states: Union[str, UnsetType]=unset, with_downtimes: Union[bool, UnsetType]=unset, with_assets: Union[bool, UnsetType]=unset, ) -> Monitor:
+ """Get a monitor's details.
+
+ Get details about the specified monitor from your organization.
+
+ :param monitor_id: The ID of the monitor
+ :type monitor_id: int
+ :param group_states: When specified, shows additional information about the group states. Choose one or more from ``all`` , ``alert`` , ``warn`` , and ``no data``.
+ :type group_states: str, optional
+ :param with_downtimes: If this argument is set to true, then the returned data includes all current active downtimes for the monitor.
+ :type with_downtimes: bool, optional
+ :param with_assets: If this argument is set to ``true`` , the returned data includes all assets tied to this monitor.
+ :type with_assets: bool, optional
+ :rtype: Monitor
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ if group_states is not unset:
+ kwargs["group_states"] = group_states
+
+ if with_downtimes is not unset:
+ kwargs["with_downtimes"] = with_downtimes
+
+ if with_assets is not unset:
+ kwargs["with_assets"] = with_assets
+
+ return self._get_monitor_endpoint.call_with_http_info(**kwargs)
+
+ def list_monitors(self, *, group_states: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, monitor_tags: Union[str, UnsetType]=unset, with_downtimes: Union[bool, UnsetType]=unset, id_offset: Union[int, UnsetType]=unset, page: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> List[Monitor]:
+ """Get all monitors.
+
+ Get all monitors from your organization.
+
+ :param group_states: When specified, shows additional information about the group states.
+ Choose one or more from ``all`` , ``alert`` , ``warn`` , and ``no data``.
+ :type group_states: str, optional
+ :param name: A string to filter monitors by name.
+ :type name: str, optional
+ :param tags: A comma separated list indicating what tags, if any, should be used to filter the list of monitors by scope.
+ For example, ``host:host0``.
+ :type tags: str, optional
+ :param monitor_tags: A comma separated list indicating what service and/or custom tags, if any, should be used to filter the list of monitors.
+ Tags created in the Datadog UI automatically have the service key prepended. For example, ``service:my-app``.
+ :type monitor_tags: str, optional
+ :param with_downtimes: If this argument is set to true, then the returned data includes all current active downtimes for each monitor.
+ :type with_downtimes: bool, optional
+ :param id_offset: Use this parameter for paginating through large sets of monitors. Start with a value of zero, make a request, set the value to the last ID of result set, and then repeat until the response is empty.
+ :type id_offset: int, optional
+ :param page: The page to start paginating from. If this argument is not specified, the request returns all monitors without pagination.
+ :type page: int, optional
+ :param page_size: The number of monitors to return per page. If the page argument is not specified, the default behavior returns all monitors without a ``page_size`` limit. However, if page is specified and ``page_size`` is not, the argument defaults to 100.
+ :type page_size: int, optional
+ :rtype: [Monitor]
+ """
+ kwargs: Dict[str, Any] = {}
+ if group_states is not unset:
+ kwargs["group_states"] = group_states
+
+ if name is not unset:
+ kwargs["name"] = name
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if monitor_tags is not unset:
+ kwargs["monitor_tags"] = monitor_tags
+
+ if with_downtimes is not unset:
+ kwargs["with_downtimes"] = with_downtimes
+
+ if id_offset is not unset:
+ kwargs["id_offset"] = id_offset
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._list_monitors_endpoint.call_with_http_info(**kwargs)
+
+ def list_monitors_with_pagination(self, *, group_states: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, monitor_tags: Union[str, UnsetType]=unset, with_downtimes: Union[bool, UnsetType]=unset, id_offset: Union[int, UnsetType]=unset, page: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[Monitor]:
+ """Get all monitors.
+
+ Provide a paginated version of :meth:`list_monitors`, returning all items.
+
+ :param group_states: When specified, shows additional information about the group states.
+ Choose one or more from ``all`` , ``alert`` , ``warn`` , and ``no data``.
+ :type group_states: str, optional
+ :param name: A string to filter monitors by name.
+ :type name: str, optional
+ :param tags: A comma separated list indicating what tags, if any, should be used to filter the list of monitors by scope.
+ For example, ``host:host0``.
+ :type tags: str, optional
+ :param monitor_tags: A comma separated list indicating what service and/or custom tags, if any, should be used to filter the list of monitors.
+ Tags created in the Datadog UI automatically have the service key prepended. For example, ``service:my-app``.
+ :type monitor_tags: str, optional
+ :param with_downtimes: If this argument is set to true, then the returned data includes all current active downtimes for each monitor.
+ :type with_downtimes: bool, optional
+ :param id_offset: Use this parameter for paginating through large sets of monitors. Start with a value of zero, make a request, set the value to the last ID of result set, and then repeat until the response is empty.
+ :type id_offset: int, optional
+ :param page: The page to start paginating from. If this argument is not specified, the request returns all monitors without pagination.
+ :type page: int, optional
+ :param page_size: The number of monitors to return per page. If the page argument is not specified, the default behavior returns all monitors without a ``page_size`` limit. However, if page is specified and ``page_size`` is not, the argument defaults to 100.
+ :type page_size: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Monitor]
+ """
+ kwargs: Dict[str, Any] = {}
+ if group_states is not unset:
+ kwargs["group_states"] = group_states
+
+ if name is not unset:
+ kwargs["name"] = name
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if monitor_tags is not unset:
+ kwargs["monitor_tags"] = monitor_tags
+
+ if with_downtimes is not unset:
+ kwargs["with_downtimes"] = with_downtimes
+
+ if id_offset is not unset:
+ kwargs["id_offset"] = id_offset
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 100)
+ endpoint = self._list_monitors_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "page_param": "page",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_monitor_groups(self, *, query: Union[str, UnsetType]=unset, page: Union[int, UnsetType]=unset, per_page: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> MonitorGroupSearchResponse:
+ """Monitors group search.
+
+ Search and filter your monitor groups details.
+
+ :param query: After entering a search query on the `Triggered Monitors page `_ , use the query parameter value in the
+ URL of the page as a value for this parameter. For more information, see the `Manage Monitors documentation `_.
+
+ The query can contain any number of space-separated monitor attributes, for instance: ``query="type:metric group_status:alert"``.
+ :type query: str, optional
+ :param page: Page to start paginating from.
+ :type page: int, optional
+ :param per_page: Number of monitors to return per page.
+ :type per_page: int, optional
+ :param sort: String for sort order, composed of field and sort order separate by a comma, for example ``name,asc``. Supported sort directions: ``asc`` , ``desc``. Supported fields:
+
+ * ``name``
+ * ``status``
+ * ``tags``
+ :type sort: str, optional
+ :rtype: MonitorGroupSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ if per_page is not unset:
+ kwargs["per_page"] = per_page
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._search_monitor_groups_endpoint.call_with_http_info(**kwargs)
+
+ def search_monitors(self, *, query: Union[str, UnsetType]=unset, page: Union[int, UnsetType]=unset, per_page: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> MonitorSearchResponse:
+ """Monitors search.
+
+ Search and filter your monitors details.
+
+ :param query: After entering a search query in your `Manage Monitor page `_ use the query parameter value in the
+ URL of the page as value for this parameter. Consult the dedicated `manage monitor documentation `_
+ page to learn more.
+
+ The query can contain any number of space-separated monitor attributes, for instance ``query="type:metric status:alert"``.
+ :type query: str, optional
+ :param page: Page to start paginating from.
+ :type page: int, optional
+ :param per_page: Number of monitors to return per page.
+ :type per_page: int, optional
+ :param sort: String for sort order, composed of field and sort order separate by a comma, for example ``name,asc``. Supported sort directions: ``asc`` , ``desc``. Supported fields:
+
+ * ``name``
+ * ``status``
+ * ``tags``
+ :type sort: str, optional
+ :rtype: MonitorSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ if per_page is not unset:
+ kwargs["per_page"] = per_page
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._search_monitors_endpoint.call_with_http_info(**kwargs)
+
+ def update_monitor(self, monitor_id: int, body: MonitorUpdateRequest, ) -> Monitor:
+ """Edit a monitor.
+
+ Edit the specified monitor.
+
+ :param monitor_id: The ID of the monitor.
+ :type monitor_id: int
+ :param body: Edit a monitor request body.
+ :type body: MonitorUpdateRequest
+ :rtype: Monitor
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ kwargs["body"] = body
+
+ return self._update_monitor_endpoint.call_with_http_info(**kwargs)
+
+ def validate_existing_monitor(self, monitor_id: int, body: Monitor, ) -> dict:
+ """Validate an existing monitor.
+
+ Validate the monitor provided in the request.
+
+ **Note** : Log monitors require an unscoped App Key and ``logs_read_data`` permission.
+
+ :param monitor_id: The ID of the monitor
+ :type monitor_id: int
+ :param body: Monitor request object
+ :type body: Monitor
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ kwargs["body"] = body
+
+ return self._validate_existing_monitor_endpoint.call_with_http_info(**kwargs)
+
+ def validate_monitor(self, body: Monitor, ) -> dict:
+ """Validate a monitor.
+
+ Validate the monitor provided in the request.
+
+ **Note** : Log monitors require an unscoped App Key and ``logs_read_data`` permission.
+
+ :param body: Monitor request object
+ :type body: Monitor
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_monitor_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/notebooks_api.py b/datadog_api_client/v1/api/notebooks_api.py
new file mode 100644
index 0000000000..70477ec81e
--- /dev/null
+++ b/datadog_api_client/v1/api/notebooks_api.py
@@ -0,0 +1,397 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.notebooks_response import NotebooksResponse
+from datadog_api_client.v1.model.notebooks_response_data import NotebooksResponseData
+from datadog_api_client.v1.model.notebook_response import NotebookResponse
+from datadog_api_client.v1.model.notebook_create_request import NotebookCreateRequest
+from datadog_api_client.v1.model.notebook_update_request import NotebookUpdateRequest
+
+
+class NotebooksApi:
+ """
+ Interact with your notebooks through the API to make it easier to organize, find, and
+ share all of your notebooks with your team and organization. For more information, see the
+ `Notebooks documentation `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_notebook_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotebookResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/notebooks",
+ "operation_id": "create_notebook",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (NotebookCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_notebook_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/notebooks/{notebook_id}",
+ "operation_id": "delete_notebook",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "notebook_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "notebook_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_notebook_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotebookResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/notebooks/{notebook_id}",
+ "operation_id": "get_notebook",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "notebook_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "notebook_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_notebooks_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotebooksResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/notebooks",
+ "operation_id": "list_notebooks",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "author_handle": {
+ "openapi_types": (str,),
+ "attribute": "author_handle",
+ "location": "query",
+ },
+ "exclude_author_handle": {
+ "openapi_types": (str,),
+ "attribute": "exclude_author_handle",
+ "location": "query",
+ },
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "count": {
+ "openapi_types": (int,),
+ "attribute": "count",
+ "location": "query",
+ },
+ "sort_field": {
+ "openapi_types": (str,),
+ "attribute": "sort_field",
+ "location": "query",
+ },
+ "sort_dir": {
+ "openapi_types": (str,),
+ "attribute": "sort_dir",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "include_cells": {
+ "openapi_types": (bool,),
+ "attribute": "include_cells",
+ "location": "query",
+ },
+ "is_template": {
+ "openapi_types": (bool,),
+ "attribute": "is_template",
+ "location": "query",
+ },
+ "type": {
+ "openapi_types": (str,),
+ "attribute": "type",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_notebook_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotebookResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/notebooks/{notebook_id}",
+ "operation_id": "update_notebook",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "notebook_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "notebook_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (NotebookUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_notebook(self, body: NotebookCreateRequest, ) -> NotebookResponse:
+ """Create a notebook.
+
+ Create a notebook using the specified options.
+
+ :param body: The JSON description of the notebook you want to create.
+ :type body: NotebookCreateRequest
+ :rtype: NotebookResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_notebook_endpoint.call_with_http_info(**kwargs)
+
+ def delete_notebook(self, notebook_id: int, ) -> None:
+ """Delete a notebook.
+
+ Delete a notebook using the specified ID.
+
+ :param notebook_id: Unique ID, assigned when you create the notebook.
+ :type notebook_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["notebook_id"] = notebook_id
+
+ return self._delete_notebook_endpoint.call_with_http_info(**kwargs)
+
+ def get_notebook(self, notebook_id: int, ) -> NotebookResponse:
+ """Get a notebook.
+
+ Get a notebook using the specified notebook ID.
+
+ :param notebook_id: Unique ID, assigned when you create the notebook.
+ :type notebook_id: int
+ :rtype: NotebookResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["notebook_id"] = notebook_id
+
+ return self._get_notebook_endpoint.call_with_http_info(**kwargs)
+
+ def list_notebooks(self, *, author_handle: Union[str, UnsetType]=unset, exclude_author_handle: Union[str, UnsetType]=unset, start: Union[int, UnsetType]=unset, count: Union[int, UnsetType]=unset, sort_field: Union[str, UnsetType]=unset, sort_dir: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, include_cells: Union[bool, UnsetType]=unset, is_template: Union[bool, UnsetType]=unset, type: Union[str, UnsetType]=unset, ) -> NotebooksResponse:
+ """Get all notebooks.
+
+ Get all notebooks. This can also be used to search for notebooks with a particular ``query`` in the notebook
+ ``name`` or author ``handle``.
+
+ :param author_handle: Return notebooks created by the given ``author_handle``.
+ :type author_handle: str, optional
+ :param exclude_author_handle: Return notebooks not created by the given ``author_handle``.
+ :type exclude_author_handle: str, optional
+ :param start: The index of the first notebook you want returned.
+ :type start: int, optional
+ :param count: The number of notebooks to be returned.
+ :type count: int, optional
+ :param sort_field: Sort by field ``modified`` , ``name`` , or ``created``.
+ :type sort_field: str, optional
+ :param sort_dir: Sort by direction ``asc`` or ``desc``.
+ :type sort_dir: str, optional
+ :param query: Return only notebooks with ``query`` string in notebook name or author handle.
+ :type query: str, optional
+ :param include_cells: Value of ``false`` excludes the ``cells`` and global ``time`` for each notebook.
+ :type include_cells: bool, optional
+ :param is_template: True value returns only template notebooks. Default is false (returns only non-template notebooks).
+ :type is_template: bool, optional
+ :param type: If type is provided, returns only notebooks with that metadata type. Default does not have type filtering.
+ :type type: str, optional
+ :rtype: NotebooksResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if author_handle is not unset:
+ kwargs["author_handle"] = author_handle
+
+ if exclude_author_handle is not unset:
+ kwargs["exclude_author_handle"] = exclude_author_handle
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ if sort_field is not unset:
+ kwargs["sort_field"] = sort_field
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if include_cells is not unset:
+ kwargs["include_cells"] = include_cells
+
+ if is_template is not unset:
+ kwargs["is_template"] = is_template
+
+ if type is not unset:
+ kwargs["type"] = type
+
+ return self._list_notebooks_endpoint.call_with_http_info(**kwargs)
+
+ def list_notebooks_with_pagination(self, *, author_handle: Union[str, UnsetType]=unset, exclude_author_handle: Union[str, UnsetType]=unset, start: Union[int, UnsetType]=unset, count: Union[int, UnsetType]=unset, sort_field: Union[str, UnsetType]=unset, sort_dir: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, include_cells: Union[bool, UnsetType]=unset, is_template: Union[bool, UnsetType]=unset, type: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[NotebooksResponseData]:
+ """Get all notebooks.
+
+ Provide a paginated version of :meth:`list_notebooks`, returning all items.
+
+ :param author_handle: Return notebooks created by the given ``author_handle``.
+ :type author_handle: str, optional
+ :param exclude_author_handle: Return notebooks not created by the given ``author_handle``.
+ :type exclude_author_handle: str, optional
+ :param start: The index of the first notebook you want returned.
+ :type start: int, optional
+ :param count: The number of notebooks to be returned.
+ :type count: int, optional
+ :param sort_field: Sort by field ``modified`` , ``name`` , or ``created``.
+ :type sort_field: str, optional
+ :param sort_dir: Sort by direction ``asc`` or ``desc``.
+ :type sort_dir: str, optional
+ :param query: Return only notebooks with ``query`` string in notebook name or author handle.
+ :type query: str, optional
+ :param include_cells: Value of ``false`` excludes the ``cells`` and global ``time`` for each notebook.
+ :type include_cells: bool, optional
+ :param is_template: True value returns only template notebooks. Default is false (returns only non-template notebooks).
+ :type is_template: bool, optional
+ :param type: If type is provided, returns only notebooks with that metadata type. Default does not have type filtering.
+ :type type: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[NotebooksResponseData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if author_handle is not unset:
+ kwargs["author_handle"] = author_handle
+
+ if exclude_author_handle is not unset:
+ kwargs["exclude_author_handle"] = exclude_author_handle
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ if sort_field is not unset:
+ kwargs["sort_field"] = sort_field
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if include_cells is not unset:
+ kwargs["include_cells"] = include_cells
+
+ if is_template is not unset:
+ kwargs["is_template"] = is_template
+
+ if type is not unset:
+ kwargs["type"] = type
+
+ local_page_size = get_attribute_from_path(kwargs, "count", 100)
+ endpoint = self._list_notebooks_endpoint
+ set_attribute_from_path(kwargs, "count", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "start",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_notebook(self, notebook_id: int, body: NotebookUpdateRequest, ) -> NotebookResponse:
+ """Update a notebook.
+
+ Update a notebook using the specified ID.
+
+ :param notebook_id: Unique ID, assigned when you create the notebook.
+ :type notebook_id: int
+ :param body: Update notebook request body.
+ :type body: NotebookUpdateRequest
+ :rtype: NotebookResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["notebook_id"] = notebook_id
+
+ kwargs["body"] = body
+
+ return self._update_notebook_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/organizations_api.py b/datadog_api_client/v1/api/organizations_api.py
new file mode 100644
index 0000000000..11b4a52dc2
--- /dev/null
+++ b/datadog_api_client/v1/api/organizations_api.py
@@ -0,0 +1,288 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.organization_list_response import OrganizationListResponse
+from datadog_api_client.v1.model.organization_create_response import OrganizationCreateResponse
+from datadog_api_client.v1.model.organization_create_body import OrganizationCreateBody
+from datadog_api_client.v1.model.organization_response import OrganizationResponse
+from datadog_api_client.v1.model.organization import Organization
+from datadog_api_client.v1.model.org_downgraded_response import OrgDowngradedResponse
+from datadog_api_client.v1.model.idp_response import IdpResponse
+from datadog_api_client.v1.model.idp_form_data import IdpFormData
+
+
+class OrganizationsApi:
+ """
+ Create, edit, and manage your organizations. Read more about `multi-org accounts `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_child_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrganizationCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/org",
+ "operation_id": "create_child_org",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrganizationCreateBody,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._downgrade_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgDowngradedResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/org/{public_id}/downgrade",
+ "operation_id": "downgrade_org",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrganizationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/org/{public_id}",
+ "operation_id": "get_org",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_orgs_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrganizationListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/org",
+ "operation_id": "list_orgs",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrganizationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/org/{public_id}",
+ "operation_id": "update_org",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Organization,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upload_idp_for_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (IdpResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/org/{public_id}/idp_metadata",
+ "operation_id": "upload_idp_for_org",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "idp_file": {
+ "required": True,
+ "openapi_types": (file_type,),
+ "attribute": "idp_file",
+ "location": "form",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["multipart/form-data"]
+ },
+ api_client=api_client,
+ )
+
+ def create_child_org(self, body: OrganizationCreateBody, ) -> OrganizationCreateResponse:
+ """Create a child organization.
+
+ Create a child organization.
+
+ This endpoint requires the
+ `multi-organization account `_
+ feature and must be enabled by
+ `contacting support `_.
+
+ Once a new child organization is created, you can interact with it
+ by using the ``org.public_id`` , ``api_key.key`` , and
+ ``application_key.hash`` provided in the response.
+
+ :param body: Organization object that needs to be created
+ :type body: OrganizationCreateBody
+ :rtype: OrganizationCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_child_org_endpoint.call_with_http_info(**kwargs)
+
+ def downgrade_org(self, public_id: str, ) -> OrgDowngradedResponse:
+ """Spin-off Child Organization.
+
+ Only available for MSP customers. Removes a child organization from the hierarchy of the master organization and places the child organization on a 30-day trial.
+
+ :param public_id: The ``public_id`` of the organization you are operating within.
+ :type public_id: str
+ :rtype: OrgDowngradedResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._downgrade_org_endpoint.call_with_http_info(**kwargs)
+
+ def get_org(self, public_id: str, ) -> OrganizationResponse:
+ """Get organization information.
+
+ Get organization information.
+
+ :param public_id: The ``public_id`` of the organization you are operating within.
+ :type public_id: str
+ :rtype: OrganizationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_org_endpoint.call_with_http_info(**kwargs)
+
+ def list_orgs(self, ) -> OrganizationListResponse:
+ """List your managed organizations.
+
+ This endpoint returns data on your top-level organization.
+
+ :rtype: OrganizationListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_orgs_endpoint.call_with_http_info(**kwargs)
+
+ def update_org(self, public_id: str, body: Organization, ) -> OrganizationResponse:
+ """Update your organization.
+
+ Update your organization.
+
+ :param public_id: The ``public_id`` of the organization you are operating within.
+ :type public_id: str
+ :type body: Organization
+ :rtype: OrganizationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._update_org_endpoint.call_with_http_info(**kwargs)
+
+ def upload_idp_for_org(self, public_id: str, idp_file: file_type, ) -> IdpResponse:
+ """Upload IdP metadata.
+
+ There are a couple of options for updating the Identity Provider (IdP)
+ metadata from your SAML IdP.
+
+ *
+ **Multipart Form-Data** : Post the IdP metadata file using a form post.
+
+ *
+ **XML Body:** Post the IdP metadata file as the body of the request.
+
+ :param public_id: The ``public_id`` of the organization you are operating with
+ :type public_id: str
+ :param idp_file: The path to the XML metadata file you wish to upload.
+ :type idp_file: file_type
+ :rtype: IdpResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["idp_file"] = idp_file
+
+ return self._upload_idp_for_org_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/pager_duty_integration_api.py b/datadog_api_client/v1/api/pager_duty_integration_api.py
new file mode 100644
index 0000000000..aecbf4753a
--- /dev/null
+++ b/datadog_api_client/v1/api/pager_duty_integration_api.py
@@ -0,0 +1,194 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.pager_duty_service_name import PagerDutyServiceName
+from datadog_api_client.v1.model.pager_duty_service import PagerDutyService
+from datadog_api_client.v1.model.pager_duty_service_key import PagerDutyServiceKey
+
+
+class PagerDutyIntegrationApi:
+ """
+ Configure your `Datadog-PagerDuty integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_pager_duty_integration_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (PagerDutyServiceName,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/pagerduty/configuration/services",
+ "operation_id": "create_pager_duty_integration_service",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (PagerDutyService,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_pager_duty_integration_service_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/pagerduty/configuration/services/{service_name}",
+ "operation_id": "delete_pager_duty_integration_service",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "service_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_pager_duty_integration_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (PagerDutyServiceName,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/pagerduty/configuration/services/{service_name}",
+ "operation_id": "get_pager_duty_integration_service",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "service_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_pager_duty_integration_service_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/pagerduty/configuration/services/{service_name}",
+ "operation_id": "update_pager_duty_integration_service",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "service_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PagerDutyServiceKey,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_pager_duty_integration_service(self, body: PagerDutyService, ) -> PagerDutyServiceName:
+ """Create a new service object.
+
+ Create a new service object in the PagerDuty integration.
+
+ :param body: Create a new service object request body.
+ :type body: PagerDutyService
+ :rtype: PagerDutyServiceName
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_pager_duty_integration_service_endpoint.call_with_http_info(**kwargs)
+
+ def delete_pager_duty_integration_service(self, service_name: str, ) -> None:
+ """Delete a single service object.
+
+ Delete a single service object in the Datadog-PagerDuty integration.
+
+ :param service_name: The service name
+ :type service_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_name"] = service_name
+
+ return self._delete_pager_duty_integration_service_endpoint.call_with_http_info(**kwargs)
+
+ def get_pager_duty_integration_service(self, service_name: str, ) -> PagerDutyServiceName:
+ """Get a single service object.
+
+ Get service name in the Datadog-PagerDuty integration.
+
+ :param service_name: The service name.
+ :type service_name: str
+ :rtype: PagerDutyServiceName
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_name"] = service_name
+
+ return self._get_pager_duty_integration_service_endpoint.call_with_http_info(**kwargs)
+
+ def update_pager_duty_integration_service(self, service_name: str, body: PagerDutyServiceKey, ) -> None:
+ """Update a single service object.
+
+ Update a single service object in the Datadog-PagerDuty integration.
+
+ :param service_name: The service name
+ :type service_name: str
+ :param body: Update an existing service object request body.
+ :type body: PagerDutyServiceKey
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_name"] = service_name
+
+ kwargs["body"] = body
+
+ return self._update_pager_duty_integration_service_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/security_monitoring_api.py b/datadog_api_client/v1/api/security_monitoring_api.py
new file mode 100644
index 0000000000..91f0ce3254
--- /dev/null
+++ b/datadog_api_client/v1/api/security_monitoring_api.py
@@ -0,0 +1,179 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.successful_signal_update_response import SuccessfulSignalUpdateResponse
+from datadog_api_client.v1.model.add_signal_to_incident_request import AddSignalToIncidentRequest
+from datadog_api_client.v1.model.signal_assignee_update_request import SignalAssigneeUpdateRequest
+from datadog_api_client.v1.model.signal_state_update_request import SignalStateUpdateRequest
+
+
+class SecurityMonitoringApi:
+ """
+ Create and manage your security rules, signals, filters, and more. See the `Datadog Security page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_security_monitoring_signal_to_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (SuccessfulSignalUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/security_analytics/signals/{signal_id}/add_to_incident",
+ "operation_id": "add_security_monitoring_signal_to_incident",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AddSignalToIncidentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_security_monitoring_signal_assignee_endpoint = _Endpoint(
+ settings={
+ "response_type": (SuccessfulSignalUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/security_analytics/signals/{signal_id}/assignee",
+ "operation_id": "edit_security_monitoring_signal_assignee",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SignalAssigneeUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_security_monitoring_signal_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (SuccessfulSignalUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/security_analytics/signals/{signal_id}/state",
+ "operation_id": "edit_security_monitoring_signal_state",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SignalStateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def add_security_monitoring_signal_to_incident(self, signal_id: str, body: AddSignalToIncidentRequest, ) -> SuccessfulSignalUpdateResponse:
+ """Add a security signal to an incident.
+
+ Add a security signal to an incident. This makes it possible to search for signals by incident within the signal explorer and to view the signals on the incident timeline.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal update.
+ :type body: AddSignalToIncidentRequest
+ :rtype: SuccessfulSignalUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ return self._add_security_monitoring_signal_to_incident_endpoint.call_with_http_info(**kwargs)
+
+ def edit_security_monitoring_signal_assignee(self, signal_id: str, body: SignalAssigneeUpdateRequest, ) -> SuccessfulSignalUpdateResponse:
+ """Modify the triage assignee of a security signal. **Deprecated**.
+
+ This endpoint is deprecated - Modify the triage assignee of a security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal update.
+ :type body: SignalAssigneeUpdateRequest
+ :rtype: SuccessfulSignalUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ warnings.warn("edit_security_monitoring_signal_assignee is deprecated", DeprecationWarning, stacklevel=2)
+ return self._edit_security_monitoring_signal_assignee_endpoint.call_with_http_info(**kwargs)
+
+ def edit_security_monitoring_signal_state(self, signal_id: str, body: SignalStateUpdateRequest, ) -> SuccessfulSignalUpdateResponse:
+ """Change the triage state of a security signal. **Deprecated**.
+
+ This endpoint is deprecated - Change the triage state of a security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal update.
+ :type body: SignalStateUpdateRequest
+ :rtype: SuccessfulSignalUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ warnings.warn("edit_security_monitoring_signal_state is deprecated", DeprecationWarning, stacklevel=2)
+ return self._edit_security_monitoring_signal_state_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/service_checks_api.py b/datadog_api_client/v1/api/service_checks_api.py
new file mode 100644
index 0000000000..32ebc79b38
--- /dev/null
+++ b/datadog_api_client/v1/api/service_checks_api.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.intake_payload_accepted import IntakePayloadAccepted
+from datadog_api_client.v1.model.service_checks import ServiceChecks
+from datadog_api_client.v1.model.service_check import ServiceCheck
+
+
+class ServiceChecksApi:
+ """
+ The service check endpoint allows you to post check statuses for use with monitors.
+ Service check messages are limited to 500 characters. If a check is posted with a message
+ containing more than 500 characters, only the first 500 characters are displayed. Messages
+ are limited for checks with a Critical or Warning status, they are dropped for checks with
+ an OK status.
+
+ * `Read more about Service Check monitors `_.
+ * `Read more about Process Check monitors `_.
+ * `Read more about Network monitors `_.
+ * `Read more about Custom Check monitors `_.
+ * `Read more about Service Checks and status codes `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._submit_service_check_endpoint = _Endpoint(
+ settings={
+ "response_type": (IntakePayloadAccepted,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v1/check_run",
+ "operation_id": "submit_service_check",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceChecks,),
+ "location": "body",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["text/json", "application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def submit_service_check(self, body: ServiceChecks, ) -> IntakePayloadAccepted:
+ """Submit a Service Check.
+
+ Submit a list of Service Checks.
+
+ **Notes** :
+
+ * A valid API key is required.
+ * Service checks can be submitted up to 10 minutes in the past.
+
+ :param body: Service Check request body.
+ :type body: ServiceChecks
+ :rtype: IntakePayloadAccepted
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._submit_service_check_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/service_level_objective_corrections_api.py b/datadog_api_client/v1/api/service_level_objective_corrections_api.py
new file mode 100644
index 0000000000..788283e2a8
--- /dev/null
+++ b/datadog_api_client/v1/api/service_level_objective_corrections_api.py
@@ -0,0 +1,278 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.slo_correction_list_response import SLOCorrectionListResponse
+from datadog_api_client.v1.model.slo_correction import SLOCorrection
+from datadog_api_client.v1.model.slo_correction_response import SLOCorrectionResponse
+from datadog_api_client.v1.model.slo_correction_create_request import SLOCorrectionCreateRequest
+from datadog_api_client.v1.model.slo_correction_update_request import SLOCorrectionUpdateRequest
+
+
+class ServiceLevelObjectiveCorrectionsApi:
+ """
+ SLO Status Corrections allow you to prevent specific time periods from negatively impacting
+ your SLO’s status and error budget. You can use Status Corrections for various purposes, such
+ as removing planned maintenance windows, non-business hours, or other time periods that do
+ not correspond to genuine issues. See `SLO status corrections `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_slo_correction_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOCorrectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/correction",
+ "operation_id": "create_slo_correction",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SLOCorrectionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_slo_correction_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/slo/correction/{slo_correction_id}",
+ "operation_id": "delete_slo_correction",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "slo_correction_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_correction_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_correction_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOCorrectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/slo/correction/{slo_correction_id}",
+ "operation_id": "get_slo_correction",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "slo_correction_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_correction_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_slo_correction_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOCorrectionListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/correction",
+ "operation_id": "list_slo_correction",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "offset": {
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_slo_correction_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOCorrectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/slo/correction/{slo_correction_id}",
+ "operation_id": "update_slo_correction",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "slo_correction_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_correction_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SLOCorrectionUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_slo_correction(self, body: SLOCorrectionCreateRequest, ) -> SLOCorrectionResponse:
+ """Create an SLO correction.
+
+ Create an SLO correction. Use ``slo_id`` to apply the correction to a single SLO, or ``slo_query`` to apply the
+ correction to SLOs that match a query. Exactly one of ``slo_id`` or ``slo_query`` is required.
+
+ :param body: Create an SLO Correction
+ :type body: SLOCorrectionCreateRequest
+ :rtype: SLOCorrectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_slo_correction_endpoint.call_with_http_info(**kwargs)
+
+ def delete_slo_correction(self, slo_correction_id: str, ) -> None:
+ """Delete an SLO correction.
+
+ Permanently delete the specified SLO correction object.
+
+ :param slo_correction_id: The ID of the SLO correction object.
+ :type slo_correction_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_correction_id"] = slo_correction_id
+
+ return self._delete_slo_correction_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo_correction(self, slo_correction_id: str, ) -> SLOCorrectionResponse:
+ """Get an SLO correction for an SLO.
+
+ Get an SLO correction.
+
+ :param slo_correction_id: The ID of the SLO correction object.
+ :type slo_correction_id: str
+ :rtype: SLOCorrectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_correction_id"] = slo_correction_id
+
+ return self._get_slo_correction_endpoint.call_with_http_info(**kwargs)
+
+ def list_slo_correction(self, *, offset: Union[int, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> SLOCorrectionListResponse:
+ """Get all SLO corrections.
+
+ Get all Service Level Objective corrections.
+
+ :param offset: The specific offset to use as the beginning of the returned response.
+ :type offset: int, optional
+ :param limit: The number of SLO corrections to return in the response. Default is 25.
+ :type limit: int, optional
+ :rtype: SLOCorrectionListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._list_slo_correction_endpoint.call_with_http_info(**kwargs)
+
+ def list_slo_correction_with_pagination(self, *, offset: Union[int, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[SLOCorrection]:
+ """Get all SLO corrections.
+
+ Provide a paginated version of :meth:`list_slo_correction`, returning all items.
+
+ :param offset: The specific offset to use as the beginning of the returned response.
+ :type offset: int, optional
+ :param limit: The number of SLO corrections to return in the response. Default is 25.
+ :type limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[SLOCorrection]
+ """
+ kwargs: Dict[str, Any] = {}
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ local_page_size = get_attribute_from_path(kwargs, "limit", 25)
+ endpoint = self._list_slo_correction_endpoint
+ set_attribute_from_path(kwargs, "limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_slo_correction(self, slo_correction_id: str, body: SLOCorrectionUpdateRequest, ) -> SLOCorrectionResponse:
+ """Update an SLO correction.
+
+ Update the specified SLO correction object.
+
+ :param slo_correction_id: The ID of the SLO correction object.
+ :type slo_correction_id: str
+ :param body: The edited SLO correction object.
+ :type body: SLOCorrectionUpdateRequest
+ :rtype: SLOCorrectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_correction_id"] = slo_correction_id
+
+ kwargs["body"] = body
+
+ return self._update_slo_correction_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/service_level_objectives_api.py b/datadog_api_client/v1/api/service_level_objectives_api.py
new file mode 100644
index 0000000000..6fb025d6a4
--- /dev/null
+++ b/datadog_api_client/v1/api/service_level_objectives_api.py
@@ -0,0 +1,642 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.slo_list_response import SLOListResponse
+from datadog_api_client.v1.model.service_level_objective import ServiceLevelObjective
+from datadog_api_client.v1.model.service_level_objective_request import ServiceLevelObjectiveRequest
+from datadog_api_client.v1.model.slo_bulk_delete_response import SLOBulkDeleteResponse
+from datadog_api_client.v1.model.slo_bulk_delete import SLOBulkDelete
+from datadog_api_client.v1.model.check_can_delete_slo_response import CheckCanDeleteSLOResponse
+from datadog_api_client.v1.model.search_slo_response import SearchSLOResponse
+from datadog_api_client.v1.model.slo_delete_response import SLODeleteResponse
+from datadog_api_client.v1.model.slo_response import SLOResponse
+from datadog_api_client.v1.model.slo_correction_list_response import SLOCorrectionListResponse
+from datadog_api_client.v1.model.slo_history_response import SLOHistoryResponse
+
+
+class ServiceLevelObjectivesApi:
+ """
+ `Service Level Objectives `_
+ (or SLOs) are a key part of the site reliability engineering toolkit.
+ SLOs provide a framework for defining clear targets around application performance,
+ which ultimately help teams provide a consistent customer experience,
+ balance feature development with platform stability,
+ and improve communication with internal and external users.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._check_can_delete_slo_endpoint = _Endpoint(
+ settings={
+ "response_type": (CheckCanDeleteSLOResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/can_delete",
+ "operation_id": "check_can_delete_slo",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "ids": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ids",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_slo_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo",
+ "operation_id": "create_slo",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceLevelObjectiveRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_slo_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLODeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/{slo_id}",
+ "operation_id": "delete_slo",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "slo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_id",
+ "location": "path",
+ },
+ "force": {
+ "openapi_types": (str,),
+ "attribute": "force",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_slo_timeframe_in_bulk_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOBulkDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/bulk_delete",
+ "operation_id": "delete_slo_timeframe_in_bulk",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SLOBulkDelete,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/{slo_id}",
+ "operation_id": "get_slo",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "slo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_id",
+ "location": "path",
+ },
+ "with_configured_alert_ids": {
+ "openapi_types": (bool,),
+ "attribute": "with_configured_alert_ids",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_corrections_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOCorrectionListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/{slo_id}/corrections",
+ "operation_id": "get_slo_corrections",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "slo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_history_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/{slo_id}/history",
+ "operation_id": "get_slo_history",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "slo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_id",
+ "location": "path",
+ },
+ "from_ts": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "from_ts",
+ "location": "query",
+ },
+ "to_ts": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "to_ts",
+ "location": "query",
+ },
+ "target": {
+ "validation": {
+ "exclusive_maximum": 100,
+ "exclusive_minimum": 0,
+ },
+ "openapi_types": (float,),
+ "attribute": "target",
+ "location": "query",
+ },
+ "apply_correction": {
+ "openapi_types": (bool,),
+ "attribute": "apply_correction",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_slos_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo",
+ "operation_id": "list_slos",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "ids": {
+ "openapi_types": (str,),
+ "attribute": "ids",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "tags_query": {
+ "openapi_types": (str,),
+ "attribute": "tags_query",
+ "location": "query",
+ },
+ "metrics_query": {
+ "openapi_types": (str,),
+ "attribute": "metrics_query",
+ "location": "query",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "offset": {
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_slo_endpoint = _Endpoint(
+ settings={
+ "response_type": (SearchSLOResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/search",
+ "operation_id": "search_slo",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "include_facets": {
+ "openapi_types": (bool,),
+ "attribute": "include_facets",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_slo_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/slo/{slo_id}",
+ "operation_id": "update_slo",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "slo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceLevelObjective,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def check_can_delete_slo(self, ids: str, ) -> CheckCanDeleteSLOResponse:
+ """Check if SLOs can be safely deleted.
+
+ Check if an SLO can be safely deleted. For example,
+ assure an SLO can be deleted without disrupting a dashboard.
+
+ :param ids: A comma separated list of the IDs of the service level objectives objects.
+ :type ids: str
+ :rtype: CheckCanDeleteSLOResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ids"] = ids
+
+ return self._check_can_delete_slo_endpoint.call_with_http_info(**kwargs)
+
+ def create_slo(self, body: ServiceLevelObjectiveRequest, ) -> SLOListResponse:
+ """Create an SLO object.
+
+ Create a service level objective object.
+
+ :param body: Service level objective request object.
+ :type body: ServiceLevelObjectiveRequest
+ :rtype: SLOListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_slo_endpoint.call_with_http_info(**kwargs)
+
+ def delete_slo(self, slo_id: str, *, force: Union[str, UnsetType]=unset, ) -> SLODeleteResponse:
+ """Delete an SLO.
+
+ Permanently delete the specified service level objective object.
+
+ If an SLO is used in a dashboard, the ``DELETE /v1/slo/`` endpoint returns
+ a 409 conflict error because the SLO is referenced in a dashboard.
+
+ :param slo_id: The ID of the service level objective.
+ :type slo_id: str
+ :param force: Delete the monitor even if it's referenced by other resources (for example SLO, composite monitor).
+ :type force: str, optional
+ :rtype: SLODeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_id"] = slo_id
+
+ if force is not unset:
+ kwargs["force"] = force
+
+ return self._delete_slo_endpoint.call_with_http_info(**kwargs)
+
+ def delete_slo_timeframe_in_bulk(self, body: SLOBulkDelete, ) -> SLOBulkDeleteResponse:
+ """Bulk Delete SLO Timeframes.
+
+ Delete (or partially delete) multiple service level objective objects.
+
+ This endpoint facilitates deletion of one or more thresholds for one or more
+ service level objective objects. If all thresholds are deleted, the service level
+ objective object is deleted as well.
+
+ :param body: Delete multiple service level objective objects request body.
+ :type body: SLOBulkDelete
+ :rtype: SLOBulkDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_slo_timeframe_in_bulk_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo(self, slo_id: str, *, with_configured_alert_ids: Union[bool, UnsetType]=unset, ) -> SLOResponse:
+ """Get an SLO's details.
+
+ Get a service level objective object.
+
+ :param slo_id: The ID of the service level objective object.
+ :type slo_id: str
+ :param with_configured_alert_ids: Get the IDs of SLO monitors that reference this SLO.
+ :type with_configured_alert_ids: bool, optional
+ :rtype: SLOResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_id"] = slo_id
+
+ if with_configured_alert_ids is not unset:
+ kwargs["with_configured_alert_ids"] = with_configured_alert_ids
+
+ return self._get_slo_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo_corrections(self, slo_id: str, ) -> SLOCorrectionListResponse:
+ """Get Corrections For an SLO.
+
+ Get corrections applied to an SLO
+
+ :param slo_id: The ID of the service level objective object.
+ :type slo_id: str
+ :rtype: SLOCorrectionListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_id"] = slo_id
+
+ return self._get_slo_corrections_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo_history(self, slo_id: str, from_ts: int, to_ts: int, *, target: Union[float, UnsetType]=unset, apply_correction: Union[bool, UnsetType]=unset, ) -> SLOHistoryResponse:
+ """Get an SLO's history.
+
+ Get a specific SLO’s history, regardless of its SLO type.
+
+ The detailed history data is structured according to the source data type.
+ For example, metric data is included for event SLOs that use
+ the metric source, and monitor SLO types include the monitor transition history.
+
+ **Note:** There are different response formats for event based and time based SLOs.
+ Examples of both are shown.
+
+ :param slo_id: The ID of the service level objective object.
+ :type slo_id: str
+ :param from_ts: The ``from`` timestamp for the query window in epoch seconds.
+ :type from_ts: int
+ :param to_ts: The ``to`` timestamp for the query window in epoch seconds.
+ :type to_ts: int
+ :param target: The SLO target. If ``target`` is passed in, the response will include the remaining error budget and a timeframe value of ``custom``.
+ :type target: float, optional
+ :param apply_correction: Defaults to ``true``. If any SLO corrections are applied and this parameter is set to ``false`` ,
+ then the corrections will not be applied and the SLI values will not be affected.
+ :type apply_correction: bool, optional
+ :rtype: SLOHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_id"] = slo_id
+
+ kwargs["from_ts"] = from_ts
+
+ kwargs["to_ts"] = to_ts
+
+ if target is not unset:
+ kwargs["target"] = target
+
+ if apply_correction is not unset:
+ kwargs["apply_correction"] = apply_correction
+
+ return self._get_slo_history_endpoint.call_with_http_info(**kwargs)
+
+ def list_slos(self, *, ids: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, tags_query: Union[str, UnsetType]=unset, metrics_query: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, ) -> SLOListResponse:
+ """Get all SLOs.
+
+ Get a list of service level objective objects for your organization.
+
+ :param ids: A comma separated list of the IDs of the service level objectives objects.
+ :type ids: str, optional
+ :param query: The query string to filter results based on SLO names.
+ :type query: str, optional
+ :param tags_query: The query string to filter results based on a single SLO tag.
+ :type tags_query: str, optional
+ :param metrics_query: The query string to filter results based on SLO numerator and denominator.
+ :type metrics_query: str, optional
+ :param limit: The number of SLOs to return in the response.
+ :type limit: int, optional
+ :param offset: The specific offset to use as the beginning of the returned response.
+ :type offset: int, optional
+ :rtype: SLOListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if ids is not unset:
+ kwargs["ids"] = ids
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if tags_query is not unset:
+ kwargs["tags_query"] = tags_query
+
+ if metrics_query is not unset:
+ kwargs["metrics_query"] = metrics_query
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ return self._list_slos_endpoint.call_with_http_info(**kwargs)
+
+ def list_slos_with_pagination(self, *, ids: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, tags_query: Union[str, UnsetType]=unset, metrics_query: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[ServiceLevelObjective]:
+ """Get all SLOs.
+
+ Provide a paginated version of :meth:`list_slos`, returning all items.
+
+ :param ids: A comma separated list of the IDs of the service level objectives objects.
+ :type ids: str, optional
+ :param query: The query string to filter results based on SLO names.
+ :type query: str, optional
+ :param tags_query: The query string to filter results based on a single SLO tag.
+ :type tags_query: str, optional
+ :param metrics_query: The query string to filter results based on SLO numerator and denominator.
+ :type metrics_query: str, optional
+ :param limit: The number of SLOs to return in the response.
+ :type limit: int, optional
+ :param offset: The specific offset to use as the beginning of the returned response.
+ :type offset: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ServiceLevelObjective]
+ """
+ kwargs: Dict[str, Any] = {}
+ if ids is not unset:
+ kwargs["ids"] = ids
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if tags_query is not unset:
+ kwargs["tags_query"] = tags_query
+
+ if metrics_query is not unset:
+ kwargs["metrics_query"] = metrics_query
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ local_page_size = get_attribute_from_path(kwargs, "limit", 1000)
+ endpoint = self._list_slos_endpoint
+ set_attribute_from_path(kwargs, "limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_slo(self, *, query: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, include_facets: Union[bool, UnsetType]=unset, ) -> SearchSLOResponse:
+ """Search for SLOs.
+
+ Get a list of service level objective objects for your organization.
+
+ :param query: The query string to filter results based on SLO names.
+ Some examples of queries include ``service:``
+ and ````.
+ :type query: str, optional
+ :param page_size: The number of files to return in the response ``[default=10]``.
+ :type page_size: int, optional
+ :param page_number: The identifier of the first page to return. This parameter is used for the pagination feature ``[default=0]``.
+ :type page_number: int, optional
+ :param include_facets: Whether or not to return facet information in the response ``[default=false]``.
+ :type include_facets: bool, optional
+ :rtype: SearchSLOResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if include_facets is not unset:
+ kwargs["include_facets"] = include_facets
+
+ return self._search_slo_endpoint.call_with_http_info(**kwargs)
+
+ def update_slo(self, slo_id: str, body: ServiceLevelObjective, ) -> SLOListResponse:
+ """Update an SLO.
+
+ Update the specified service level objective object.
+
+ :param slo_id: The ID of the service level objective object.
+ :type slo_id: str
+ :param body: The edited service level objective request object.
+ :type body: ServiceLevelObjective
+ :rtype: SLOListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_id"] = slo_id
+
+ kwargs["body"] = body
+
+ return self._update_slo_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/slack_integration_api.py b/datadog_api_client/v1/api/slack_integration_api.py
new file mode 100644
index 0000000000..933ecc4aba
--- /dev/null
+++ b/datadog_api_client/v1/api/slack_integration_api.py
@@ -0,0 +1,270 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.slack_integration_channels import SlackIntegrationChannels
+from datadog_api_client.v1.model.slack_integration_channel import SlackIntegrationChannel
+
+
+class SlackIntegrationApi:
+ """
+ Configure your `Datadog-Slack integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_slack_integration_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": (SlackIntegrationChannel,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/slack/configuration/accounts/{account_name}/channels",
+ "operation_id": "create_slack_integration_channel",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "account_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SlackIntegrationChannel,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_slack_integration_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": (SlackIntegrationChannel,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/slack/configuration/accounts/{account_name}/channels/{channel_name}",
+ "operation_id": "get_slack_integration_channel",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "account_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_name",
+ "location": "path",
+ },
+ "channel_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "channel_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_slack_integration_channels_endpoint = _Endpoint(
+ settings={
+ "response_type": (SlackIntegrationChannels,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/slack/configuration/accounts/{account_name}/channels",
+ "operation_id": "get_slack_integration_channels",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "account_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_slack_integration_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/slack/configuration/accounts/{account_name}/channels/{channel_name}",
+ "operation_id": "remove_slack_integration_channel",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "account_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_name",
+ "location": "path",
+ },
+ "channel_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "channel_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_slack_integration_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": (SlackIntegrationChannel,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/slack/configuration/accounts/{account_name}/channels/{channel_name}",
+ "operation_id": "update_slack_integration_channel",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "account_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_name",
+ "location": "path",
+ },
+ "channel_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "channel_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SlackIntegrationChannel,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_slack_integration_channel(self, account_name: str, body: SlackIntegrationChannel, ) -> SlackIntegrationChannel:
+ """Create a Slack integration channel.
+
+ Add a channel to your Datadog-Slack integration.
+
+ :param account_name: Your Slack account name.
+ :type account_name: str
+ :param body: Payload describing Slack channel to be created
+ :type body: SlackIntegrationChannel
+ :rtype: SlackIntegrationChannel
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_name"] = account_name
+
+ kwargs["body"] = body
+
+ return self._create_slack_integration_channel_endpoint.call_with_http_info(**kwargs)
+
+ def get_slack_integration_channel(self, account_name: str, channel_name: str, ) -> SlackIntegrationChannel:
+ """Get a Slack integration channel.
+
+ Get a channel configured for your Datadog-Slack integration.
+
+ :param account_name: Your Slack account name.
+ :type account_name: str
+ :param channel_name: The name of the Slack channel being operated on.
+ :type channel_name: str
+ :rtype: SlackIntegrationChannel
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_name"] = account_name
+
+ kwargs["channel_name"] = channel_name
+
+ return self._get_slack_integration_channel_endpoint.call_with_http_info(**kwargs)
+
+ def get_slack_integration_channels(self, account_name: str, ) -> SlackIntegrationChannels:
+ """Get all channels in a Slack integration.
+
+ Get a list of all channels configured for your Datadog-Slack integration.
+
+ :param account_name: Your Slack account name.
+ :type account_name: str
+ :rtype: SlackIntegrationChannels
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_name"] = account_name
+
+ return self._get_slack_integration_channels_endpoint.call_with_http_info(**kwargs)
+
+ def remove_slack_integration_channel(self, account_name: str, channel_name: str, ) -> None:
+ """Remove a Slack integration channel.
+
+ Remove a channel from your Datadog-Slack integration.
+
+ :param account_name: Your Slack account name.
+ :type account_name: str
+ :param channel_name: The name of the Slack channel being operated on.
+ :type channel_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_name"] = account_name
+
+ kwargs["channel_name"] = channel_name
+
+ return self._remove_slack_integration_channel_endpoint.call_with_http_info(**kwargs)
+
+ def update_slack_integration_channel(self, account_name: str, channel_name: str, body: SlackIntegrationChannel, ) -> SlackIntegrationChannel:
+ """Update a Slack integration channel.
+
+ Update a channel used in your Datadog-Slack integration.
+
+ :param account_name: Your Slack account name.
+ :type account_name: str
+ :param channel_name: The name of the Slack channel being operated on.
+ :type channel_name: str
+ :param body: Payload describing fields and values to be updated.
+ :type body: SlackIntegrationChannel
+ :rtype: SlackIntegrationChannel
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_name"] = account_name
+
+ kwargs["channel_name"] = channel_name
+
+ kwargs["body"] = body
+
+ return self._update_slack_integration_channel_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/snapshots_api.py b/datadog_api_client/v1/api/snapshots_api.py
new file mode 100644
index 0000000000..df983d459c
--- /dev/null
+++ b/datadog_api_client/v1/api/snapshots_api.py
@@ -0,0 +1,144 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.graph_snapshot import GraphSnapshot
+
+
+class SnapshotsApi:
+ """
+ Take graph snapshots using the API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_graph_snapshot_endpoint = _Endpoint(
+ settings={
+ "response_type": (GraphSnapshot,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/graph/snapshot",
+ "operation_id": "get_graph_snapshot",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "metric_query": {
+ "openapi_types": (str,),
+ "attribute": "metric_query",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "event_query": {
+ "openapi_types": (str,),
+ "attribute": "event_query",
+ "location": "query",
+ },
+ "graph_def": {
+ "openapi_types": (str,),
+ "attribute": "graph_def",
+ "location": "query",
+ },
+ "title": {
+ "openapi_types": (str,),
+ "attribute": "title",
+ "location": "query",
+ },
+ "height": {
+ "openapi_types": (int,),
+ "attribute": "height",
+ "location": "query",
+ },
+ "width": {
+ "openapi_types": (int,),
+ "attribute": "width",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_graph_snapshot(self, start: int, end: int, *, metric_query: Union[str, UnsetType]=unset, event_query: Union[str, UnsetType]=unset, graph_def: Union[str, UnsetType]=unset, title: Union[str, UnsetType]=unset, height: Union[int, UnsetType]=unset, width: Union[int, UnsetType]=unset, ) -> GraphSnapshot:
+ """Take graph snapshots.
+
+ Take graph snapshots. Snapshots are PNG images generated by rendering a specified widget in a web page and capturing it once the data is available. The image is then uploaded to cloud storage.
+
+ **Note** : When a snapshot is created, there is some delay before it is available.
+
+ :param start: The POSIX timestamp of the start of the query in seconds.
+ :type start: int
+ :param end: The POSIX timestamp of the end of the query in seconds.
+ :type end: int
+ :param metric_query: The metric query.
+ :type metric_query: str, optional
+ :param event_query: A query that adds event bands to the graph.
+ :type event_query: str, optional
+ :param graph_def: A JSON document defining the graph. ``graph_def`` can be used instead of ``metric_query``.
+ The JSON document uses the `grammar defined here `_
+ and should be formatted to a single line then URL encoded.
+ :type graph_def: str, optional
+ :param title: A title for the graph. If no title is specified, the graph does not have a title.
+ :type title: str, optional
+ :param height: The height of the graph. If no height is specified, the graph's original height is used.
+ :type height: int, optional
+ :param width: The width of the graph. If no width is specified, the graph's original width is used.
+ :type width: int, optional
+ :rtype: GraphSnapshot
+ """
+ kwargs: Dict[str, Any] = {}
+ if metric_query is not unset:
+ kwargs["metric_query"] = metric_query
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+
+ if graph_def is not unset:
+ kwargs["graph_def"] = graph_def
+
+ if title is not unset:
+ kwargs["title"] = title
+
+ if height is not unset:
+ kwargs["height"] = height
+
+ if width is not unset:
+ kwargs["width"] = width
+
+ return self._get_graph_snapshot_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/synthetics_api.py b/datadog_api_client/v1/api/synthetics_api.py
new file mode 100644
index 0000000000..c68e308a55
--- /dev/null
+++ b/datadog_api_client/v1/api/synthetics_api.py
@@ -0,0 +1,1547 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.synthetics_batch_details import SyntheticsBatchDetails
+from datadog_api_client.v1.model.synthetics_locations import SyntheticsLocations
+from datadog_api_client.v1.model.synthetics_private_location_creation_response import SyntheticsPrivateLocationCreationResponse
+from datadog_api_client.v1.model.synthetics_private_location import SyntheticsPrivateLocation
+from datadog_api_client.v1.model.synthetics_default_locations import SyntheticsDefaultLocations
+from datadog_api_client.v1.model.synthetics_list_tests_response import SyntheticsListTestsResponse
+from datadog_api_client.v1.model.synthetics_test_details_without_steps import SyntheticsTestDetailsWithoutSteps
+from datadog_api_client.v1.model.synthetics_api_test import SyntheticsAPITest
+from datadog_api_client.v1.model.synthetics_browser_test import SyntheticsBrowserTest
+from datadog_api_client.v1.model.synthetics_get_browser_test_latest_results_response import SyntheticsGetBrowserTestLatestResultsResponse
+from datadog_api_client.v1.model.synthetics_browser_test_result_full import SyntheticsBrowserTestResultFull
+from datadog_api_client.v1.model.synthetics_delete_tests_response import SyntheticsDeleteTestsResponse
+from datadog_api_client.v1.model.synthetics_delete_tests_payload import SyntheticsDeleteTestsPayload
+from datadog_api_client.v1.model.synthetics_mobile_test import SyntheticsMobileTest
+from datadog_api_client.v1.model.synthetics_trigger_ci_tests_response import SyntheticsTriggerCITestsResponse
+from datadog_api_client.v1.model.synthetics_trigger_body import SyntheticsTriggerBody
+from datadog_api_client.v1.model.synthetics_ci_test_body import SyntheticsCITestBody
+from datadog_api_client.v1.model.synthetics_test_uptime import SyntheticsTestUptime
+from datadog_api_client.v1.model.synthetics_fetch_uptimes_payload import SyntheticsFetchUptimesPayload
+from datadog_api_client.v1.model.synthetics_test_details import SyntheticsTestDetails
+from datadog_api_client.v1.model.synthetics_patch_test_body import SyntheticsPatchTestBody
+from datadog_api_client.v1.model.synthetics_get_api_test_latest_results_response import SyntheticsGetAPITestLatestResultsResponse
+from datadog_api_client.v1.model.synthetics_api_test_result_full import SyntheticsAPITestResultFull
+from datadog_api_client.v1.model.synthetics_update_test_pause_status_payload import SyntheticsUpdateTestPauseStatusPayload
+from datadog_api_client.v1.model.synthetics_list_global_variables_response import SyntheticsListGlobalVariablesResponse
+from datadog_api_client.v1.model.synthetics_global_variable import SyntheticsGlobalVariable
+from datadog_api_client.v1.model.synthetics_global_variable_request import SyntheticsGlobalVariableRequest
+
+
+class SyntheticsApi:
+ """
+ Synthetic tests use simulated requests and actions so you can monitor the availability and performance of systems and applications. Datadog supports the following types of synthetic tests:
+
+ * `API tests `_
+ * `Browser tests `_
+ * `Network Path tests `_
+ * `Mobile Application tests `_
+
+ You can use the Datadog API to create, manage, and organize tests and test suites programmatically.
+
+ For more information, see the `Synthetic Monitoring documentation `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_global_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsGlobalVariable,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/variables",
+ "operation_id": "create_global_variable",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsGlobalVariableRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_private_location_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsPrivateLocationCreationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/private-locations",
+ "operation_id": "create_private_location",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsPrivateLocation,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_synthetics_api_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsAPITest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/api",
+ "operation_id": "create_synthetics_api_test",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsAPITest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_synthetics_browser_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsBrowserTest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/browser",
+ "operation_id": "create_synthetics_browser_test",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsBrowserTest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_synthetics_mobile_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsMobileTest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/mobile",
+ "operation_id": "create_synthetics_mobile_test",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsMobileTest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_global_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/variables/{variable_id}",
+ "operation_id": "delete_global_variable",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "variable_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "variable_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_private_location_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/private-locations/{location_id}",
+ "operation_id": "delete_private_location",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "location_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "location_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDeleteTestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/delete",
+ "operation_id": "delete_tests",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsDeleteTestsPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_global_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsGlobalVariable,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/variables/{variable_id}",
+ "operation_id": "edit_global_variable",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "variable_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "variable_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsGlobalVariableRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._fetch_uptimes_endpoint = _Endpoint(
+ settings={
+ "response_type": ([SyntheticsTestUptime],),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/uptimes",
+ "operation_id": "fetch_uptimes",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsFetchUptimesPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsAPITest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/api/{public_id}",
+ "operation_id": "get_api_test",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_test_latest_results_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsGetAPITestLatestResultsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/{public_id}/results",
+ "operation_id": "get_api_test_latest_results",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "from_ts": {
+ "openapi_types": (int,),
+ "attribute": "from_ts",
+ "location": "query",
+ },
+ "to_ts": {
+ "openapi_types": (int,),
+ "attribute": "to_ts",
+ "location": "query",
+ },
+ "probe_dc": {
+ "openapi_types": ([str],),
+ "attribute": "probe_dc",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_test_result_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsAPITestResultFull,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/{public_id}/results/{result_id}",
+ "operation_id": "get_api_test_result",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "result_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "result_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_browser_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsBrowserTest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/browser/{public_id}",
+ "operation_id": "get_browser_test",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_browser_test_latest_results_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsGetBrowserTestLatestResultsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/browser/{public_id}/results",
+ "operation_id": "get_browser_test_latest_results",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "from_ts": {
+ "openapi_types": (int,),
+ "attribute": "from_ts",
+ "location": "query",
+ },
+ "to_ts": {
+ "openapi_types": (int,),
+ "attribute": "to_ts",
+ "location": "query",
+ },
+ "probe_dc": {
+ "openapi_types": ([str],),
+ "attribute": "probe_dc",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_browser_test_result_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsBrowserTestResultFull,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/browser/{public_id}/results/{result_id}",
+ "operation_id": "get_browser_test_result",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "result_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "result_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_global_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsGlobalVariable,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/variables/{variable_id}",
+ "operation_id": "get_global_variable",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "variable_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "variable_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_mobile_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsMobileTest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/mobile/{public_id}",
+ "operation_id": "get_mobile_test",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_private_location_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsPrivateLocation,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/private-locations/{location_id}",
+ "operation_id": "get_private_location",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "location_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "location_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_ci_batch_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsBatchDetails,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/ci/batch/{batch_id}",
+ "operation_id": "get_synthetics_ci_batch",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "batch_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "batch_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_default_locations_endpoint = _Endpoint(
+ settings={
+ "response_type": ([str],),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/synthetics/settings/default_locations",
+ "operation_id": "get_synthetics_default_locations",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestDetailsWithoutSteps,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/{public_id}",
+ "operation_id": "get_test",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_global_variables_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsListGlobalVariablesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/variables",
+ "operation_id": "list_global_variables",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_locations_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsLocations,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/locations",
+ "operation_id": "list_locations",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsListTestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests",
+ "operation_id": "list_tests",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page_number",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._patch_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestDetails,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/{public_id}",
+ "operation_id": "patch_test",
+ "http_method": "PATCH",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsPatchTestBody,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsListTestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/search",
+ "operation_id": "search_tests",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "text": {
+ "openapi_types": (str,),
+ "attribute": "text",
+ "location": "query",
+ },
+ "include_full_config": {
+ "openapi_types": (bool,),
+ "attribute": "include_full_config",
+ "location": "query",
+ },
+ "facets_only": {
+ "openapi_types": (bool,),
+ "attribute": "facets_only",
+ "location": "query",
+ },
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "count": {
+ "openapi_types": (int,),
+ "attribute": "count",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._trigger_ci_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTriggerCITestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/trigger/ci",
+ "operation_id": "trigger_ci_tests",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsCITestBody,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._trigger_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTriggerCITestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/trigger",
+ "operation_id": "trigger_tests",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsTriggerBody,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_api_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsAPITest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/api/{public_id}",
+ "operation_id": "update_api_test",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsAPITest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_browser_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsBrowserTest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/browser/{public_id}",
+ "operation_id": "update_browser_test",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsBrowserTest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_mobile_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsMobileTest,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/mobile/{public_id}",
+ "operation_id": "update_mobile_test",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsMobileTest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_private_location_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsPrivateLocation,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/private-locations/{location_id}",
+ "operation_id": "update_private_location",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "location_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "location_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsPrivateLocation,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_test_pause_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (bool,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/synthetics/tests/{public_id}/status",
+ "operation_id": "update_test_pause_status",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsUpdateTestPauseStatusPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_global_variable(self, body: SyntheticsGlobalVariableRequest, ) -> SyntheticsGlobalVariable:
+ """Create a global variable.
+
+ Create a Synthetic global variable.
+
+ :param body: Details of the global variable to create.
+ :type body: SyntheticsGlobalVariableRequest
+ :rtype: SyntheticsGlobalVariable
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_global_variable_endpoint.call_with_http_info(**kwargs)
+
+ def create_private_location(self, body: SyntheticsPrivateLocation, ) -> SyntheticsPrivateLocationCreationResponse:
+ """Create a private location.
+
+ Create a new Synthetic private location.
+
+ :param body: Details of the private location to create.
+ :type body: SyntheticsPrivateLocation
+ :rtype: SyntheticsPrivateLocationCreationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_private_location_endpoint.call_with_http_info(**kwargs)
+
+ def create_synthetics_api_test(self, body: SyntheticsAPITest, ) -> SyntheticsAPITest:
+ """Create an API test.
+
+ Create a Synthetic API test.
+
+ :param body: Details of the test to create.
+ :type body: SyntheticsAPITest
+ :rtype: SyntheticsAPITest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_synthetics_api_test_endpoint.call_with_http_info(**kwargs)
+
+ def create_synthetics_browser_test(self, body: SyntheticsBrowserTest, ) -> SyntheticsBrowserTest:
+ """Create a browser test.
+
+ Create a Synthetic browser test.
+
+ :param body: Details of the test to create.
+ :type body: SyntheticsBrowserTest
+ :rtype: SyntheticsBrowserTest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_synthetics_browser_test_endpoint.call_with_http_info(**kwargs)
+
+ def create_synthetics_mobile_test(self, body: SyntheticsMobileTest, ) -> SyntheticsMobileTest:
+ """Create a mobile test.
+
+ Create a Synthetic mobile test.
+
+ :param body: Details of the test to create.
+ :type body: SyntheticsMobileTest
+ :rtype: SyntheticsMobileTest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_synthetics_mobile_test_endpoint.call_with_http_info(**kwargs)
+
+ def delete_global_variable(self, variable_id: str, ) -> None:
+ """Delete a global variable.
+
+ Delete a Synthetic global variable.
+
+ :param variable_id: The ID of the global variable.
+ :type variable_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["variable_id"] = variable_id
+
+ return self._delete_global_variable_endpoint.call_with_http_info(**kwargs)
+
+ def delete_private_location(self, location_id: str, ) -> None:
+ """Delete a private location.
+
+ Delete a Synthetic private location.
+
+ :param location_id: The ID of the private location.
+ :type location_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["location_id"] = location_id
+
+ return self._delete_private_location_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tests(self, body: SyntheticsDeleteTestsPayload, ) -> SyntheticsDeleteTestsResponse:
+ """Delete tests.
+
+ Delete multiple Synthetic tests by ID.
+
+ :param body: Public ID list of the Synthetic tests to be deleted.
+ :type body: SyntheticsDeleteTestsPayload
+ :rtype: SyntheticsDeleteTestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_tests_endpoint.call_with_http_info(**kwargs)
+
+ def edit_global_variable(self, variable_id: str, body: SyntheticsGlobalVariableRequest, ) -> SyntheticsGlobalVariable:
+ """Edit a global variable.
+
+ Edit a Synthetic global variable.
+
+ :param variable_id: The ID of the global variable.
+ :type variable_id: str
+ :param body: Details of the global variable to update.
+ :type body: SyntheticsGlobalVariableRequest
+ :rtype: SyntheticsGlobalVariable
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["variable_id"] = variable_id
+
+ kwargs["body"] = body
+
+ return self._edit_global_variable_endpoint.call_with_http_info(**kwargs)
+
+ def fetch_uptimes(self, body: SyntheticsFetchUptimesPayload, ) -> List[SyntheticsTestUptime]:
+ """Fetch uptime for multiple tests.
+
+ Fetch uptime for multiple Synthetic tests by ID.
+
+ :param body: Public ID list of the Synthetic tests and timeframe.
+ :type body: SyntheticsFetchUptimesPayload
+ :rtype: [SyntheticsTestUptime]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._fetch_uptimes_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_test(self, public_id: str, ) -> SyntheticsAPITest:
+ """Get an API test.
+
+ Get the detailed configuration associated with
+ a Synthetic API test.
+
+ :param public_id: The public ID of the test to get details from.
+ :type public_id: str
+ :rtype: SyntheticsAPITest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_api_test_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_test_latest_results(self, public_id: str, *, from_ts: Union[int, UnsetType]=unset, to_ts: Union[int, UnsetType]=unset, probe_dc: Union[List[str], UnsetType]=unset, ) -> SyntheticsGetAPITestLatestResultsResponse:
+ """Get an API test's latest results summaries.
+
+ Get the last 150 test results summaries for a given Synthetic API test.
+
+ :param public_id: The public ID of the test for which to search results for.
+ :type public_id: str
+ :param from_ts: Timestamp in milliseconds from which to start querying results.
+ :type from_ts: int, optional
+ :param to_ts: Timestamp in milliseconds up to which to query results.
+ :type to_ts: int, optional
+ :param probe_dc: Locations for which to query results.
+ :type probe_dc: [str], optional
+ :rtype: SyntheticsGetAPITestLatestResultsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ if from_ts is not unset:
+ kwargs["from_ts"] = from_ts
+
+ if to_ts is not unset:
+ kwargs["to_ts"] = to_ts
+
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+
+ return self._get_api_test_latest_results_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_test_result(self, public_id: str, result_id: str, ) -> SyntheticsAPITestResultFull:
+ """Get an API test result.
+
+ Get a specific full result from a given Synthetic API test.
+
+ :param public_id: The public ID of the API test to which the target result belongs.
+ :type public_id: str
+ :param result_id: The ID of the result to get.
+ :type result_id: str
+ :rtype: SyntheticsAPITestResultFull
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["result_id"] = result_id
+
+ return self._get_api_test_result_endpoint.call_with_http_info(**kwargs)
+
+ def get_browser_test(self, public_id: str, ) -> SyntheticsBrowserTest:
+ """Get a browser test.
+
+ Get the detailed configuration (including steps) associated with
+ a Synthetic browser test.
+
+ :param public_id: The public ID of the test to get details from.
+ :type public_id: str
+ :rtype: SyntheticsBrowserTest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_browser_test_endpoint.call_with_http_info(**kwargs)
+
+ def get_browser_test_latest_results(self, public_id: str, *, from_ts: Union[int, UnsetType]=unset, to_ts: Union[int, UnsetType]=unset, probe_dc: Union[List[str], UnsetType]=unset, ) -> SyntheticsGetBrowserTestLatestResultsResponse:
+ """Get a browser test's latest results summaries.
+
+ Get the last 150 test results summaries for a given Synthetic browser test.
+
+ :param public_id: The public ID of the browser test for which to search results
+ for.
+ :type public_id: str
+ :param from_ts: Timestamp in milliseconds from which to start querying results.
+ :type from_ts: int, optional
+ :param to_ts: Timestamp in milliseconds up to which to query results.
+ :type to_ts: int, optional
+ :param probe_dc: Locations for which to query results.
+ :type probe_dc: [str], optional
+ :rtype: SyntheticsGetBrowserTestLatestResultsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ if from_ts is not unset:
+ kwargs["from_ts"] = from_ts
+
+ if to_ts is not unset:
+ kwargs["to_ts"] = to_ts
+
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+
+ return self._get_browser_test_latest_results_endpoint.call_with_http_info(**kwargs)
+
+ def get_browser_test_result(self, public_id: str, result_id: str, ) -> SyntheticsBrowserTestResultFull:
+ """Get a browser test result.
+
+ Get a specific full result from a given Synthetic browser test.
+
+ :param public_id: The public ID of the browser test to which the target result
+ belongs.
+ :type public_id: str
+ :param result_id: The ID of the result to get.
+ :type result_id: str
+ :rtype: SyntheticsBrowserTestResultFull
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["result_id"] = result_id
+
+ return self._get_browser_test_result_endpoint.call_with_http_info(**kwargs)
+
+ def get_global_variable(self, variable_id: str, ) -> SyntheticsGlobalVariable:
+ """Get a global variable.
+
+ Get the detailed configuration of a global variable.
+
+ :param variable_id: The ID of the global variable.
+ :type variable_id: str
+ :rtype: SyntheticsGlobalVariable
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["variable_id"] = variable_id
+
+ return self._get_global_variable_endpoint.call_with_http_info(**kwargs)
+
+ def get_mobile_test(self, public_id: str, ) -> SyntheticsMobileTest:
+ """Get a mobile test.
+
+ Get the detailed configuration associated with
+ a Synthetic mobile test.
+
+ :param public_id: The public ID of the test to get details from.
+ :type public_id: str
+ :rtype: SyntheticsMobileTest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_mobile_test_endpoint.call_with_http_info(**kwargs)
+
+ def get_private_location(self, location_id: str, ) -> SyntheticsPrivateLocation:
+ """Get a private location.
+
+ Get a Synthetic private location.
+
+ :param location_id: The ID of the private location.
+ :type location_id: str
+ :rtype: SyntheticsPrivateLocation
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["location_id"] = location_id
+
+ return self._get_private_location_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_ci_batch(self, batch_id: str, ) -> SyntheticsBatchDetails:
+ """Get details of batch.
+
+ Get a batch's updated details.
+
+ :param batch_id: The ID of the batch.
+ :type batch_id: str
+ :rtype: SyntheticsBatchDetails
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["batch_id"] = batch_id
+
+ return self._get_synthetics_ci_batch_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_default_locations(self, ) -> List[str]:
+ """Get the default locations.
+
+ Get the default locations settings.
+
+ :rtype: [str]
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_synthetics_default_locations_endpoint.call_with_http_info(**kwargs)
+
+ def get_test(self, public_id: str, ) -> SyntheticsTestDetailsWithoutSteps:
+ """Get a test configuration.
+
+ Get the detailed configuration associated with a Synthetic test.
+
+ :param public_id: The public ID of the test to get details from.
+ :type public_id: str
+ :rtype: SyntheticsTestDetailsWithoutSteps
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_test_endpoint.call_with_http_info(**kwargs)
+
+ def list_global_variables(self, ) -> SyntheticsListGlobalVariablesResponse:
+ """Get all global variables.
+
+ Get the list of all Synthetic global variables.
+
+ :rtype: SyntheticsListGlobalVariablesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_global_variables_endpoint.call_with_http_info(**kwargs)
+
+ def list_locations(self, ) -> SyntheticsLocations:
+ """Get all locations (public and private).
+
+ Get the list of public and private locations available for Synthetic
+ tests. No arguments required.
+
+ :rtype: SyntheticsLocations
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_locations_endpoint.call_with_http_info(**kwargs)
+
+ def list_tests(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> SyntheticsListTestsResponse:
+ """Get the list of all Synthetic tests.
+
+ Get the list of all Synthetic tests.
+
+ :param page_size: Used for pagination. The number of tests returned in the page.
+ :type page_size: int, optional
+ :param page_number: Used for pagination. Which page you want to retrieve. Starts at zero.
+ :type page_number: int, optional
+ :rtype: SyntheticsListTestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_tests_endpoint.call_with_http_info(**kwargs)
+
+ def list_tests_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[SyntheticsTestDetailsWithoutSteps]:
+ """Get the list of all Synthetic tests.
+
+ Provide a paginated version of :meth:`list_tests`, returning all items.
+
+ :param page_size: Used for pagination. The number of tests returned in the page.
+ :type page_size: int, optional
+ :param page_number: Used for pagination. Which page you want to retrieve. Starts at zero.
+ :type page_number: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[SyntheticsTestDetailsWithoutSteps]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 100)
+ endpoint = self._list_tests_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "tests",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def patch_test(self, public_id: str, body: SyntheticsPatchTestBody, ) -> SyntheticsTestDetails:
+ """Patch a Synthetic test.
+
+ Patch the configuration of a Synthetic test with partial data.
+
+ :param public_id: The public ID of the test to patch.
+ :type public_id: str
+ :param body: `JSON Patch `_ compliant list of operations
+ :type body: SyntheticsPatchTestBody
+ :rtype: SyntheticsTestDetails
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._patch_test_endpoint.call_with_http_info(**kwargs)
+
+ def search_tests(self, *, text: Union[str, UnsetType]=unset, include_full_config: Union[bool, UnsetType]=unset, facets_only: Union[bool, UnsetType]=unset, start: Union[int, UnsetType]=unset, count: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> SyntheticsListTestsResponse:
+ """Search Synthetic tests.
+
+ Search for Synthetic tests.
+
+ :param text: The search query.
+ :type text: str, optional
+ :param include_full_config: If true, include the full configuration for each test in the response.
+ :type include_full_config: bool, optional
+ :param facets_only: If true, return only facets instead of full test details.
+ :type facets_only: bool, optional
+ :param start: The offset from which to start returning results.
+ :type start: int, optional
+ :param count: The maximum number of results to return.
+ :type count: int, optional
+ :param sort: The sort order for the results (e.g., ``name,asc`` or ``name,desc`` ).
+ :type sort: str, optional
+ :rtype: SyntheticsListTestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if text is not unset:
+ kwargs["text"] = text
+
+ if include_full_config is not unset:
+ kwargs["include_full_config"] = include_full_config
+
+ if facets_only is not unset:
+ kwargs["facets_only"] = facets_only
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._search_tests_endpoint.call_with_http_info(**kwargs)
+
+ def trigger_ci_tests(self, body: SyntheticsCITestBody, ) -> SyntheticsTriggerCITestsResponse:
+ """Trigger tests from CI/CD pipelines.
+
+ Trigger a set of Synthetic tests for continuous integration.
+
+ :param body: Details of the test to trigger.
+ :type body: SyntheticsCITestBody
+ :rtype: SyntheticsTriggerCITestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._trigger_ci_tests_endpoint.call_with_http_info(**kwargs)
+
+ def trigger_tests(self, body: SyntheticsTriggerBody, ) -> SyntheticsTriggerCITestsResponse:
+ """Trigger Synthetic tests.
+
+ Trigger a set of Synthetic tests.
+
+ :param body: The identifiers of the tests to trigger.
+ :type body: SyntheticsTriggerBody
+ :rtype: SyntheticsTriggerCITestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._trigger_tests_endpoint.call_with_http_info(**kwargs)
+
+ def update_api_test(self, public_id: str, body: SyntheticsAPITest, ) -> SyntheticsAPITest:
+ """Edit an API test.
+
+ Edit the configuration of a Synthetic API test.
+
+ :param public_id: The public ID of the test to get details from.
+ :type public_id: str
+ :param body: New test details to be saved.
+ :type body: SyntheticsAPITest
+ :rtype: SyntheticsAPITest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._update_api_test_endpoint.call_with_http_info(**kwargs)
+
+ def update_browser_test(self, public_id: str, body: SyntheticsBrowserTest, ) -> SyntheticsBrowserTest:
+ """Edit a browser test.
+
+ Edit the configuration of a Synthetic browser test.
+
+ :param public_id: The public ID of the test to edit.
+ :type public_id: str
+ :param body: New test details to be saved.
+ :type body: SyntheticsBrowserTest
+ :rtype: SyntheticsBrowserTest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._update_browser_test_endpoint.call_with_http_info(**kwargs)
+
+ def update_mobile_test(self, public_id: str, body: SyntheticsMobileTest, ) -> SyntheticsMobileTest:
+ """Edit a mobile test.
+
+ Edit the configuration of a Synthetic mobile test.
+
+ :param public_id: The public ID of the test to get details from.
+ :type public_id: str
+ :param body: New test details to be saved.
+ :type body: SyntheticsMobileTest
+ :rtype: SyntheticsMobileTest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._update_mobile_test_endpoint.call_with_http_info(**kwargs)
+
+ def update_private_location(self, location_id: str, body: SyntheticsPrivateLocation, ) -> SyntheticsPrivateLocation:
+ """Edit a private location.
+
+ Edit a Synthetic private location.
+
+ :param location_id: The ID of the private location.
+ :type location_id: str
+ :param body: Details of the private location to be updated.
+ :type body: SyntheticsPrivateLocation
+ :rtype: SyntheticsPrivateLocation
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["location_id"] = location_id
+
+ kwargs["body"] = body
+
+ return self._update_private_location_endpoint.call_with_http_info(**kwargs)
+
+ def update_test_pause_status(self, public_id: str, body: SyntheticsUpdateTestPauseStatusPayload, ) -> bool:
+ """Pause or start a test.
+
+ Pause or start a Synthetic test by changing the status.
+
+ :param public_id: The public ID of the Synthetic test to update.
+ :type public_id: str
+ :param body: Status to set the given Synthetic test to.
+ :type body: SyntheticsUpdateTestPauseStatusPayload
+ :rtype: bool
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._update_test_pause_status_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/tags_api.py b/datadog_api_client/v1/api/tags_api.py
new file mode 100644
index 0000000000..20cee8d716
--- /dev/null
+++ b/datadog_api_client/v1/api/tags_api.py
@@ -0,0 +1,292 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.tag_to_hosts import TagToHosts
+from datadog_api_client.v1.model.host_tags import HostTags
+
+
+class TagsApi:
+ """
+ The tag endpoint allows you to assign tags to hosts,
+ for example: ``role:database``. Those tags are applied to
+ all metrics sent by the host. Refer to hosts by name
+ ( ``yourhost.example.com`` ) when fetching and applying
+ tags to a particular host.
+
+ The component of your infrastructure responsible for a tag is identified
+ by a source. For example, some valid sources include nagios, hudson, jenkins,
+ users, feed, chef, puppet, git, bitbucket, fabric, capistrano, etc. Find a complete list of source type names under `API Source Attributes `_.
+
+ Read more about tags on `Getting Started with Tags `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_host_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostTags,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/tags/hosts/{host_name}",
+ "operation_id": "create_host_tags",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "host_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "host_name",
+ "location": "path",
+ },
+ "source": {
+ "openapi_types": (str,),
+ "attribute": "source",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (HostTags,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_host_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/tags/hosts/{host_name}",
+ "operation_id": "delete_host_tags",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "host_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "host_name",
+ "location": "path",
+ },
+ "source": {
+ "openapi_types": (str,),
+ "attribute": "source",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_host_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostTags,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/tags/hosts/{host_name}",
+ "operation_id": "get_host_tags",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "host_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "host_name",
+ "location": "path",
+ },
+ "source": {
+ "openapi_types": (str,),
+ "attribute": "source",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_host_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagToHosts,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/tags/hosts",
+ "operation_id": "list_host_tags",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "source": {
+ "openapi_types": (str,),
+ "attribute": "source",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_host_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (HostTags,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/tags/hosts/{host_name}",
+ "operation_id": "update_host_tags",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "host_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "host_name",
+ "location": "path",
+ },
+ "source": {
+ "openapi_types": (str,),
+ "attribute": "source",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (HostTags,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_host_tags(self, host_name: str, body: HostTags, *, source: Union[str, UnsetType]=unset, ) -> HostTags:
+ """Add tags to a host.
+
+ This endpoint allows you to add new tags to a host,
+ optionally specifying what source these tags come from. If tags already exist, appends new tags to the tag list. If no source is specified, defaults to "user".
+
+ :param host_name: Specified host name to add new tags
+ :type host_name: str
+ :param body: Update host tags request body.
+ :type body: HostTags
+ :param source: Source to add tags. `Complete list of source attribute values `_. Use "user" source for custom-defined tags. If no source is specified, defaults to "user".
+ :type source: str, optional
+ :rtype: HostTags
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["host_name"] = host_name
+
+ if source is not unset:
+ kwargs["source"] = source
+
+ kwargs["body"] = body
+
+ return self._create_host_tags_endpoint.call_with_http_info(**kwargs)
+
+ def delete_host_tags(self, host_name: str, *, source: Union[str, UnsetType]=unset, ) -> None:
+ """Remove host tags.
+
+ This endpoint allows you to remove all tags
+ for a single host. If no source is specified, only deletes from the source "User".
+
+ :param host_name: Specified host name to delete tags
+ :type host_name: str
+ :param source: Source of the tags to be deleted. `Complete list of source attribute values `_. Use "user" source for custom-defined tags.
+ :type source: str, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["host_name"] = host_name
+
+ if source is not unset:
+ kwargs["source"] = source
+
+ return self._delete_host_tags_endpoint.call_with_http_info(**kwargs)
+
+ def get_host_tags(self, host_name: str, *, source: Union[str, UnsetType]=unset, ) -> HostTags:
+ """Get Host Tags.
+
+ Return the list of tags that apply to a given host.
+
+ :param host_name: Name of the host to retrieve tags for
+ :type host_name: str
+ :param source: Source to filter. `Complete list of source attribute values `_. Use "user" source for custom-defined tags.
+ :type source: str, optional
+ :rtype: HostTags
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["host_name"] = host_name
+
+ if source is not unset:
+ kwargs["source"] = source
+
+ return self._get_host_tags_endpoint.call_with_http_info(**kwargs)
+
+ def list_host_tags(self, *, source: Union[str, UnsetType]=unset, ) -> TagToHosts:
+ """Get All Host Tags.
+
+ Returns a mapping of tags to hosts. For each tag, the response returns a list of host names that contain this tag. There is a restriction of 10k total host names from the org that can be attached to tags and returned.
+
+ :param source: Source to filter. `Complete list of source attribute values `_. Use "user" source for custom-defined tags.
+ :type source: str, optional
+ :rtype: TagToHosts
+ """
+ kwargs: Dict[str, Any] = {}
+ if source is not unset:
+ kwargs["source"] = source
+
+ return self._list_host_tags_endpoint.call_with_http_info(**kwargs)
+
+ def update_host_tags(self, host_name: str, body: HostTags, *, source: Union[str, UnsetType]=unset, ) -> HostTags:
+ """Update host tags.
+
+ This endpoint allows you to update/replace all tags in
+ an integration source with those supplied in the request.
+
+ :param host_name: Specified host name to change tags
+ :type host_name: str
+ :param body: Add tags to host
+ :type body: HostTags
+ :param source: Source to update tags. `Complete list of source attribute values `_. Use "user" source for custom-defined tags. If no source specified, defaults to "user".
+ :type source: str, optional
+ :rtype: HostTags
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["host_name"] = host_name
+
+ if source is not unset:
+ kwargs["source"] = source
+
+ kwargs["body"] = body
+
+ return self._update_host_tags_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/usage_metering_api.py b/datadog_api_client/v1/api/usage_metering_api.py
new file mode 100644
index 0000000000..d4fe32731a
--- /dev/null
+++ b/datadog_api_client/v1/api/usage_metering_api.py
@@ -0,0 +1,2152 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.usage_custom_reports_response import UsageCustomReportsResponse
+from datadog_api_client.v1.model.usage_sort_direction import UsageSortDirection
+from datadog_api_client.v1.model.usage_sort import UsageSort
+from datadog_api_client.v1.model.usage_specified_custom_reports_response import UsageSpecifiedCustomReportsResponse
+from datadog_api_client.v1.model.usage_analyzed_logs_response import UsageAnalyzedLogsResponse
+from datadog_api_client.v1.model.usage_audit_logs_response import UsageAuditLogsResponse
+from datadog_api_client.v1.model.usage_lambda_response import UsageLambdaResponse
+from datadog_api_client.v1.model.usage_billable_summary_response import UsageBillableSummaryResponse
+from datadog_api_client.v1.model.usage_ci_visibility_response import UsageCIVisibilityResponse
+from datadog_api_client.v1.model.usage_cloud_security_posture_management_response import UsageCloudSecurityPostureManagementResponse
+from datadog_api_client.v1.model.usage_cws_response import UsageCWSResponse
+from datadog_api_client.v1.model.usage_dbm_response import UsageDBMResponse
+from datadog_api_client.v1.model.usage_fargate_response import UsageFargateResponse
+from datadog_api_client.v1.model.usage_hosts_response import UsageHostsResponse
+from datadog_api_client.v1.model.hourly_usage_attribution_response import HourlyUsageAttributionResponse
+from datadog_api_client.v1.model.hourly_usage_attribution_usage_type import HourlyUsageAttributionUsageType
+from datadog_api_client.v1.model.usage_incident_management_response import UsageIncidentManagementResponse
+from datadog_api_client.v1.model.usage_indexed_spans_response import UsageIndexedSpansResponse
+from datadog_api_client.v1.model.usage_ingested_spans_response import UsageIngestedSpansResponse
+from datadog_api_client.v1.model.usage_iot_response import UsageIoTResponse
+from datadog_api_client.v1.model.usage_logs_response import UsageLogsResponse
+from datadog_api_client.v1.model.usage_logs_by_retention_response import UsageLogsByRetentionResponse
+from datadog_api_client.v1.model.usage_logs_by_index_response import UsageLogsByIndexResponse
+from datadog_api_client.v1.model.monthly_usage_attribution_response import MonthlyUsageAttributionResponse
+from datadog_api_client.v1.model.monthly_usage_attribution_supported_metrics import MonthlyUsageAttributionSupportedMetrics
+from datadog_api_client.v1.model.usage_network_flows_response import UsageNetworkFlowsResponse
+from datadog_api_client.v1.model.usage_network_hosts_response import UsageNetworkHostsResponse
+from datadog_api_client.v1.model.usage_online_archive_response import UsageOnlineArchiveResponse
+from datadog_api_client.v1.model.usage_profiling_response import UsageProfilingResponse
+from datadog_api_client.v1.model.usage_rum_units_response import UsageRumUnitsResponse
+from datadog_api_client.v1.model.usage_rum_sessions_response import UsageRumSessionsResponse
+from datadog_api_client.v1.model.usage_sds_response import UsageSDSResponse
+from datadog_api_client.v1.model.usage_snmp_response import UsageSNMPResponse
+from datadog_api_client.v1.model.usage_summary_response import UsageSummaryResponse
+from datadog_api_client.v1.model.usage_synthetics_response import UsageSyntheticsResponse
+from datadog_api_client.v1.model.usage_synthetics_api_response import UsageSyntheticsAPIResponse
+from datadog_api_client.v1.model.usage_synthetics_browser_response import UsageSyntheticsBrowserResponse
+from datadog_api_client.v1.model.usage_timeseries_response import UsageTimeseriesResponse
+from datadog_api_client.v1.model.usage_top_avg_metrics_response import UsageTopAvgMetricsResponse
+
+
+class UsageMeteringApi:
+ """
+ The usage metering API allows you to get hourly, daily, and
+ monthly usage across multiple facets of Datadog.
+ This API is available to all Pro and Enterprise customers.
+
+ **Note** : Usage data is delayed by up to 72 hours from when it was incurred.
+ It is retained for 15 months.
+
+ You can retrieve up to 24 hours of hourly usage data for multiple organizations,
+ and up to two months of hourly usage data for a single organization in one request.
+ Learn more on the `usage details documentation `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_daily_custom_reports_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageCustomReportsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/daily_custom_reports",
+ "operation_id": "get_daily_custom_reports",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort_dir": {
+ "openapi_types": (UsageSortDirection,),
+ "attribute": "sort_dir",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (UsageSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_hourly_usage_attribution_endpoint = _Endpoint(
+ settings={
+ "response_type": (HourlyUsageAttributionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/hourly-attribution",
+ "operation_id": "get_hourly_usage_attribution",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ "usage_type": {
+ "required": True,
+ "openapi_types": (HourlyUsageAttributionUsageType,),
+ "attribute": "usage_type",
+ "location": "query",
+ },
+ "next_record_id": {
+ "openapi_types": (str,),
+ "attribute": "next_record_id",
+ "location": "query",
+ },
+ "tag_breakdown_keys": {
+ "openapi_types": (str,),
+ "attribute": "tag_breakdown_keys",
+ "location": "query",
+ },
+ "include_descendants": {
+ "openapi_types": (bool,),
+ "attribute": "include_descendants",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_management_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageIncidentManagementResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/incident-management",
+ "operation_id": "get_incident_management",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ingested_spans_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageIngestedSpansResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/ingested-spans",
+ "operation_id": "get_ingested_spans",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monthly_custom_reports_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageCustomReportsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/monthly_custom_reports",
+ "operation_id": "get_monthly_custom_reports",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort_dir": {
+ "openapi_types": (UsageSortDirection,),
+ "attribute": "sort_dir",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (UsageSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monthly_usage_attribution_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonthlyUsageAttributionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/monthly-attribution",
+ "operation_id": "get_monthly_usage_attribution",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_month": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_month",
+ "location": "query",
+ },
+ "end_month": {
+ "openapi_types": (datetime,),
+ "attribute": "end_month",
+ "location": "query",
+ },
+ "fields": {
+ "required": True,
+ "openapi_types": (MonthlyUsageAttributionSupportedMetrics,),
+ "attribute": "fields",
+ "location": "query",
+ },
+ "sort_direction": {
+ "openapi_types": (UsageSortDirection,),
+ "attribute": "sort_direction",
+ "location": "query",
+ },
+ "sort_name": {
+ "openapi_types": (MonthlyUsageAttributionSupportedMetrics,),
+ "attribute": "sort_name",
+ "location": "query",
+ },
+ "tag_breakdown_keys": {
+ "openapi_types": (str,),
+ "attribute": "tag_breakdown_keys",
+ "location": "query",
+ },
+ "next_record_id": {
+ "openapi_types": (str,),
+ "attribute": "next_record_id",
+ "location": "query",
+ },
+ "include_descendants": {
+ "openapi_types": (bool,),
+ "attribute": "include_descendants",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_specified_daily_custom_reports_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSpecifiedCustomReportsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/daily_custom_reports/{report_id}",
+ "operation_id": "get_specified_daily_custom_reports",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "report_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "report_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_specified_monthly_custom_reports_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSpecifiedCustomReportsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/monthly_custom_reports/{report_id}",
+ "operation_id": "get_specified_monthly_custom_reports",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "report_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "report_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_analyzed_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageAnalyzedLogsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/analyzed_logs",
+ "operation_id": "get_usage_analyzed_logs",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_audit_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageAuditLogsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/audit_logs",
+ "operation_id": "get_usage_audit_logs",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_billable_summary_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageBillableSummaryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/billable-summary",
+ "operation_id": "get_usage_billable_summary",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "month": {
+ "openapi_types": (datetime,),
+ "attribute": "month",
+ "location": "query",
+ },
+ "include_connected_accounts": {
+ "openapi_types": (bool,),
+ "attribute": "include_connected_accounts",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_ci_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageCIVisibilityResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/ci-app",
+ "operation_id": "get_usage_ci_app",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_cloud_security_posture_management_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageCloudSecurityPostureManagementResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/cspm",
+ "operation_id": "get_usage_cloud_security_posture_management",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_cws_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageCWSResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/cws",
+ "operation_id": "get_usage_cws",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_dbm_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageDBMResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/dbm",
+ "operation_id": "get_usage_dbm",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_fargate_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageFargateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/fargate",
+ "operation_id": "get_usage_fargate",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_hosts_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageHostsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/hosts",
+ "operation_id": "get_usage_hosts",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_indexed_spans_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageIndexedSpansResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/indexed-spans",
+ "operation_id": "get_usage_indexed_spans",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_internet_of_things_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageIoTResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/iot",
+ "operation_id": "get_usage_internet_of_things",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_lambda_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageLambdaResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/aws_lambda",
+ "operation_id": "get_usage_lambda",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageLogsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/logs",
+ "operation_id": "get_usage_logs",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_logs_by_index_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageLogsByIndexResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/logs_by_index",
+ "operation_id": "get_usage_logs_by_index",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ "index_name": {
+ "openapi_types": ([str],),
+ "attribute": "index_name",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_logs_by_retention_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageLogsByRetentionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/logs-by-retention",
+ "operation_id": "get_usage_logs_by_retention",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_network_flows_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageNetworkFlowsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/network_flows",
+ "operation_id": "get_usage_network_flows",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_network_hosts_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageNetworkHostsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/network_hosts",
+ "operation_id": "get_usage_network_hosts",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_online_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageOnlineArchiveResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/online-archive",
+ "operation_id": "get_usage_online_archive",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_profiling_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageProfilingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/profiling",
+ "operation_id": "get_usage_profiling",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_rum_sessions_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageRumSessionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/rum_sessions",
+ "operation_id": "get_usage_rum_sessions",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ "type": {
+ "openapi_types": (str,),
+ "attribute": "type",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_rum_units_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageRumUnitsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/rum",
+ "operation_id": "get_usage_rum_units",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_sds_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSDSResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/sds",
+ "operation_id": "get_usage_sds",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_snmp_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSNMPResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/snmp",
+ "operation_id": "get_usage_snmp",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_summary_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSummaryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/summary",
+ "operation_id": "get_usage_summary",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_month": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_month",
+ "location": "query",
+ },
+ "end_month": {
+ "openapi_types": (datetime,),
+ "attribute": "end_month",
+ "location": "query",
+ },
+ "include_org_details": {
+ "openapi_types": (bool,),
+ "attribute": "include_org_details",
+ "location": "query",
+ },
+ "include_connected_accounts": {
+ "openapi_types": (bool,),
+ "attribute": "include_connected_accounts",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_synthetics_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSyntheticsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/synthetics",
+ "operation_id": "get_usage_synthetics",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_synthetics_api_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSyntheticsAPIResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/synthetics_api",
+ "operation_id": "get_usage_synthetics_api",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_synthetics_browser_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSyntheticsBrowserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/synthetics_browser",
+ "operation_id": "get_usage_synthetics_browser",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_timeseries_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageTimeseriesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/timeseries",
+ "operation_id": "get_usage_timeseries",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_top_avg_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageTopAvgMetricsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/usage/top_avg_metrics",
+ "operation_id": "get_usage_top_avg_metrics",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "month": {
+ "openapi_types": (datetime,),
+ "attribute": "month",
+ "location": "query",
+ },
+ "day": {
+ "openapi_types": (datetime,),
+ "attribute": "day",
+ "location": "query",
+ },
+ "names": {
+ "openapi_types": ([str],),
+ "attribute": "names",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 5000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "next_record_id": {
+ "openapi_types": (str,),
+ "attribute": "next_record_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ def get_daily_custom_reports(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort_dir: Union[UsageSortDirection, UnsetType]=unset, sort: Union[UsageSort, UnsetType]=unset, ) -> UsageCustomReportsResponse:
+ """Get the list of available daily custom reports. **Deprecated**.
+
+ Get daily custom reports.
+ **Note:** This endpoint will be fully deprecated on December 1, 2022.
+ Refer to `Migrating from v1 to v2 of the Usage Attribution API `_ for the associated migration guide.
+
+ :param page_size: The number of files to return in the response. ``[default=60]``.
+ :type page_size: int, optional
+ :param page_number: The identifier of the first page to return. This parameter is used for the pagination feature ``[default=0]``.
+ :type page_number: int, optional
+ :param sort_dir: The direction to sort by: ``[desc, asc]``.
+ :type sort_dir: UsageSortDirection, optional
+ :param sort: The field to sort by: ``[computed_on, size, start_date, end_date]``.
+ :type sort: UsageSort, optional
+ :rtype: UsageCustomReportsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ warnings.warn("get_daily_custom_reports is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_daily_custom_reports_endpoint.call_with_http_info(**kwargs)
+
+ def get_hourly_usage_attribution(self, start_hr: datetime, usage_type: HourlyUsageAttributionUsageType, *, end_hr: Union[datetime, UnsetType]=unset, next_record_id: Union[str, UnsetType]=unset, tag_breakdown_keys: Union[str, UnsetType]=unset, include_descendants: Union[bool, UnsetType]=unset, ) -> HourlyUsageAttributionResponse:
+ """Get hourly usage attribution.
+
+ Get hourly usage attribution. Multi-region data is available starting March 1, 2023.
+
+ This API endpoint is paginated. To make sure you receive all records, check if the value of ``next_record_id`` is
+ set in the response. If it is, make another request and pass ``next_record_id`` as a parameter.
+ Pseudo code example:
+
+ .. code-block::
+
+ response := GetHourlyUsageAttribution(start_month)
+ cursor := response.metadata.pagination.next_record_id
+ WHILE cursor != null BEGIN
+ sleep(5 seconds) # Avoid running into rate limit
+ response := GetHourlyUsageAttribution(start_month, next_record_id=cursor)
+ cursor := response.metadata.pagination.next_record_id
+ END
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param usage_type: Usage type to retrieve. Usage types are in the format ``_usage``.
+ Example: ``infra_host_usage``
+ To obtain the complete list of active usage types that can be used to replace
+ ```` in the field names, make a request to the `Get usage attribution types API `_.
+ :type usage_type: HourlyUsageAttributionUsageType
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :param next_record_id: List following results with a next_record_id provided in the previous query.
+ :type next_record_id: str, optional
+ :param tag_breakdown_keys: Comma separated list of tags used to group usage. If no value is provided the usage will not be broken down by tags.
+
+ To see which tags are available, look for the value of ``tag_config_source`` in the API response.
+ :type tag_breakdown_keys: str, optional
+ :param include_descendants: Include child org usage in the response. Defaults to ``true``.
+ :type include_descendants: bool, optional
+ :rtype: HourlyUsageAttributionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ kwargs["usage_type"] = usage_type
+
+ if next_record_id is not unset:
+ kwargs["next_record_id"] = next_record_id
+
+ if tag_breakdown_keys is not unset:
+ kwargs["tag_breakdown_keys"] = tag_breakdown_keys
+
+ if include_descendants is not unset:
+ kwargs["include_descendants"] = include_descendants
+
+ return self._get_hourly_usage_attribution_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_management(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageIncidentManagementResponse:
+ """Get hourly usage for incident management. **Deprecated**.
+
+ Get hourly usage for incident management.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageIncidentManagementResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_incident_management is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_incident_management_endpoint.call_with_http_info(**kwargs)
+
+ def get_ingested_spans(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageIngestedSpansResponse:
+ """Get hourly usage for ingested spans. **Deprecated**.
+
+ Get hourly usage for ingested spans.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageIngestedSpansResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_ingested_spans is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_ingested_spans_endpoint.call_with_http_info(**kwargs)
+
+ def get_monthly_custom_reports(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort_dir: Union[UsageSortDirection, UnsetType]=unset, sort: Union[UsageSort, UnsetType]=unset, ) -> UsageCustomReportsResponse:
+ """Get the list of available monthly custom reports. **Deprecated**.
+
+ Get monthly custom reports.
+ **Note:** This endpoint will be fully deprecated on December 1, 2022.
+ Refer to `Migrating from v1 to v2 of the Usage Attribution API `_ for the associated migration guide.
+
+ :param page_size: The number of files to return in the response ``[default=60].``
+ :type page_size: int, optional
+ :param page_number: The identifier of the first page to return. This parameter is used for the pagination feature ``[default=0]``.
+ :type page_number: int, optional
+ :param sort_dir: The direction to sort by: ``[desc, asc]``.
+ :type sort_dir: UsageSortDirection, optional
+ :param sort: The field to sort by: ``[computed_on, size, start_date, end_date]``.
+ :type sort: UsageSort, optional
+ :rtype: UsageCustomReportsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ warnings.warn("get_monthly_custom_reports is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_monthly_custom_reports_endpoint.call_with_http_info(**kwargs)
+
+ def get_monthly_usage_attribution(self, start_month: datetime, fields: MonthlyUsageAttributionSupportedMetrics, *, end_month: Union[datetime, UnsetType]=unset, sort_direction: Union[UsageSortDirection, UnsetType]=unset, sort_name: Union[MonthlyUsageAttributionSupportedMetrics, UnsetType]=unset, tag_breakdown_keys: Union[str, UnsetType]=unset, next_record_id: Union[str, UnsetType]=unset, include_descendants: Union[bool, UnsetType]=unset, ) -> MonthlyUsageAttributionResponse:
+ """Get monthly usage attribution.
+
+ Get monthly usage attribution. Multi-region data is available starting March 1, 2023.
+
+ This API endpoint is paginated. To make sure you receive all records, check if the value of ``next_record_id`` is
+ set in the response. If it is, make another request and pass ``next_record_id`` as a parameter.
+ Pseudo code example:
+
+ .. code-block::
+
+ response := GetMonthlyUsageAttribution(start_month)
+ cursor := response.metadata.pagination.next_record_id
+ WHILE cursor != null BEGIN
+ sleep(5 seconds) # Avoid running into rate limit
+ response := GetMonthlyUsageAttribution(start_month, next_record_id=cursor)
+ cursor := response.metadata.pagination.next_record_id
+ END
+
+ :param start_month: Datetime in ISO-8601 format, UTC, precise to month: ``[YYYY-MM]`` for usage beginning in this month.
+ Maximum of 15 months ago.
+ :type start_month: datetime
+ :param fields: Comma-separated list of usage types to return, or ``*`` for all usage types.
+ Usage types are in the format ``_usage`` and ``_percentage``.
+ Example: ``infra_host_usage,infra_host_percentage``
+ To obtain the complete list of usage attribution types that can be used to replace
+ ```` in the field names, make a request to the `Get usage attribution types API `_.
+ :type fields: MonthlyUsageAttributionSupportedMetrics
+ :param end_month: Datetime in ISO-8601 format, UTC, precise to month: ``[YYYY-MM]`` for usage ending this month.
+ :type end_month: datetime, optional
+ :param sort_direction: The direction to sort by: ``[desc, asc]``.
+ :type sort_direction: UsageSortDirection, optional
+ :param sort_name: The field to sort by. Sort fields are in the format ``_usage``.
+ Example: ``infra_host_usage``
+ To obtain the complete list of usage attribution types that can be used to replace
+ ```` in the field names, make a request to the `Get usage attribution types API `_.
+ :type sort_name: MonthlyUsageAttributionSupportedMetrics, optional
+ :param tag_breakdown_keys: Comma separated list of tag keys used to group usage. If no value is provided the usage will not be broken down by tags.
+
+ To see which tags are available, look for the value of ``tag_config_source`` in the API response.
+ :type tag_breakdown_keys: str, optional
+ :param next_record_id: List following results with a next_record_id provided in the previous query.
+ :type next_record_id: str, optional
+ :param include_descendants: Include child org usage in the response. Defaults to ``true``.
+ :type include_descendants: bool, optional
+ :rtype: MonthlyUsageAttributionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_month"] = start_month
+
+ if end_month is not unset:
+ kwargs["end_month"] = end_month
+
+ kwargs["fields"] = fields
+
+ if sort_direction is not unset:
+ kwargs["sort_direction"] = sort_direction
+
+ if sort_name is not unset:
+ kwargs["sort_name"] = sort_name
+
+ if tag_breakdown_keys is not unset:
+ kwargs["tag_breakdown_keys"] = tag_breakdown_keys
+
+ if next_record_id is not unset:
+ kwargs["next_record_id"] = next_record_id
+
+ if include_descendants is not unset:
+ kwargs["include_descendants"] = include_descendants
+
+ return self._get_monthly_usage_attribution_endpoint.call_with_http_info(**kwargs)
+
+ def get_specified_daily_custom_reports(self, report_id: str, ) -> UsageSpecifiedCustomReportsResponse:
+ """Get specified daily custom reports. **Deprecated**.
+
+ Get specified daily custom reports.
+ **Note:** This endpoint will be fully deprecated on December 1, 2022.
+ Refer to `Migrating from v1 to v2 of the Usage Attribution API `_ for the associated migration guide.
+
+ :param report_id: Date of the report in the format ``YYYY-MM-DD``.
+ :type report_id: str
+ :rtype: UsageSpecifiedCustomReportsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["report_id"] = report_id
+
+ warnings.warn("get_specified_daily_custom_reports is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_specified_daily_custom_reports_endpoint.call_with_http_info(**kwargs)
+
+ def get_specified_monthly_custom_reports(self, report_id: str, ) -> UsageSpecifiedCustomReportsResponse:
+ """Get specified monthly custom reports. **Deprecated**.
+
+ Get specified monthly custom reports.
+ **Note:** This endpoint will be fully deprecated on December 1, 2022.
+ Refer to `Migrating from v1 to v2 of the Usage Attribution API `_ for the associated migration guide.
+
+ :param report_id: Date of the report in the format ``YYYY-MM-DD``.
+ :type report_id: str
+ :rtype: UsageSpecifiedCustomReportsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["report_id"] = report_id
+
+ warnings.warn("get_specified_monthly_custom_reports is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_specified_monthly_custom_reports_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_analyzed_logs(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageAnalyzedLogsResponse:
+ """Get hourly usage for analyzed logs. **Deprecated**.
+
+ Get hourly usage for analyzed logs (Security Monitoring).
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageAnalyzedLogsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_analyzed_logs is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_analyzed_logs_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_audit_logs(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageAuditLogsResponse:
+ """Get hourly usage for audit logs. **Deprecated**.
+
+ Get hourly usage for audit logs.
+ **Note:** This endpoint has been deprecated.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageAuditLogsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_audit_logs is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_audit_logs_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_billable_summary(self, *, month: Union[datetime, UnsetType]=unset, include_connected_accounts: Union[bool, UnsetType]=unset, ) -> UsageBillableSummaryResponse:
+ """Get billable usage across your account.
+
+ Get billable usage across your account.
+
+ This endpoint is only accessible for `parent-level organizations `_.
+
+ :param month: Datetime in ISO-8601 format, UTC, precise to month: ``[YYYY-MM]`` for usage starting this month.
+ :type month: datetime, optional
+ :param include_connected_accounts: Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to ``false``.
+ :type include_connected_accounts: bool, optional
+ :rtype: UsageBillableSummaryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if month is not unset:
+ kwargs["month"] = month
+
+ if include_connected_accounts is not unset:
+ kwargs["include_connected_accounts"] = include_connected_accounts
+
+ return self._get_usage_billable_summary_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_ci_app(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageCIVisibilityResponse:
+ """Get hourly usage for CI visibility. **Deprecated**.
+
+ Get hourly usage for CI visibility (tests, pipeline, and spans).
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageCIVisibilityResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_ci_app is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_ci_app_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_cloud_security_posture_management(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageCloudSecurityPostureManagementResponse:
+ """Get hourly usage for CSM Pro. **Deprecated**.
+
+ Get hourly usage for cloud security management (CSM) pro.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageCloudSecurityPostureManagementResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_cloud_security_posture_management is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_cloud_security_posture_management_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_cws(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageCWSResponse:
+ """Get hourly usage for cloud workload security. **Deprecated**.
+
+ Get hourly usage for cloud workload security.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageCWSResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_cws is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_cws_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_dbm(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageDBMResponse:
+ """Get hourly usage for database monitoring. **Deprecated**.
+
+ Get hourly usage for database monitoring
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageDBMResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_dbm is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_dbm_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_fargate(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageFargateResponse:
+ """Get hourly usage for Fargate. **Deprecated**.
+
+ Get hourly usage for `Fargate `_.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageFargateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_fargate is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_fargate_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_hosts(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageHostsResponse:
+ """Get hourly usage for hosts and containers. **Deprecated**.
+
+ Get hourly usage for hosts and containers.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageHostsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_hosts is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_hosts_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_indexed_spans(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageIndexedSpansResponse:
+ """Get hourly usage for indexed spans. **Deprecated**.
+
+ Get hourly usage for indexed spans.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageIndexedSpansResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_indexed_spans is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_indexed_spans_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_internet_of_things(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageIoTResponse:
+ """Get hourly usage for IoT. **Deprecated**.
+
+ Get hourly usage for IoT.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageIoTResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_internet_of_things is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_internet_of_things_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_lambda(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageLambdaResponse:
+ """Get hourly usage for Lambda. **Deprecated**.
+
+ Get hourly usage for Lambda.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageLambdaResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_lambda is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_lambda_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_logs(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageLogsResponse:
+ """Get hourly usage for logs. **Deprecated**.
+
+ Get hourly usage for logs.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageLogsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_logs is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_logs_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_logs_by_index(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, index_name: Union[List[str], UnsetType]=unset, ) -> UsageLogsByIndexResponse:
+ """Get hourly usage for logs by index.
+
+ Get hourly usage for logs by index.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :param index_name: Comma-separated list of log index names.
+ :type index_name: [str], optional
+ :rtype: UsageLogsByIndexResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ if index_name is not unset:
+ kwargs["index_name"] = index_name
+
+ return self._get_usage_logs_by_index_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_logs_by_retention(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageLogsByRetentionResponse:
+ """Get hourly logs usage by retention. **Deprecated**.
+
+ Get hourly usage for indexed logs by retention period.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageLogsByRetentionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_logs_by_retention is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_logs_by_retention_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_network_flows(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageNetworkFlowsResponse:
+ """get hourly usage for network flows. **Deprecated**.
+
+ Get hourly usage for network flows.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageNetworkFlowsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_network_flows is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_network_flows_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_network_hosts(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageNetworkHostsResponse:
+ """Get hourly usage for network hosts. **Deprecated**.
+
+ Get hourly usage for network hosts.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageNetworkHostsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_network_hosts is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_network_hosts_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_online_archive(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageOnlineArchiveResponse:
+ """Get hourly usage for online archive. **Deprecated**.
+
+ Get hourly usage for online archive.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageOnlineArchiveResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_online_archive is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_online_archive_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_profiling(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageProfilingResponse:
+ """Get hourly usage for profiled hosts. **Deprecated**.
+
+ Get hourly usage for profiled hosts.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageProfilingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_profiling is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_profiling_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_rum_sessions(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, type: Union[str, UnsetType]=unset, ) -> UsageRumSessionsResponse:
+ """Get hourly usage for RUM sessions. **Deprecated**.
+
+ Get hourly usage for `RUM `_ Sessions.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :param type: RUM type: ``[browser, mobile]``. Defaults to ``browser``.
+ :type type: str, optional
+ :rtype: UsageRumSessionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ if type is not unset:
+ kwargs["type"] = type
+
+ warnings.warn("get_usage_rum_sessions is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_rum_sessions_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_rum_units(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageRumUnitsResponse:
+ """Get hourly usage for RUM units. **Deprecated**.
+
+ Get hourly usage for `RUM `_ Units.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageRumUnitsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_rum_units is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_rum_units_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_sds(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageSDSResponse:
+ """Get hourly usage for sensitive data scanner. **Deprecated**.
+
+ Get hourly usage for sensitive data scanner.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageSDSResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_sds is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_sds_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_snmp(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageSNMPResponse:
+ """Get hourly usage for SNMP devices. **Deprecated**.
+
+ Get hourly usage for SNMP devices.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: ``[YYYY-MM-DDThh]`` for usage ending
+ **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageSNMPResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_snmp is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_snmp_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_summary(self, start_month: datetime, *, end_month: Union[datetime, UnsetType]=unset, include_org_details: Union[bool, UnsetType]=unset, include_connected_accounts: Union[bool, UnsetType]=unset, ) -> UsageSummaryResponse:
+ """Get usage across your account.
+
+ Get all usage across your account.
+
+ For SDK users only: all fields on ``UsageSummaryResponse`` , ``UsageSummaryDate`` , and
+ ``UsageSummaryDateOrg`` are accessible through each object's ``additionalProperties`` map.
+ Existing typed-field getters are unchanged. New billing dimensions will not have
+ typed-field getters. Use
+ `Get available fields for usage summary `_
+ to enumerate every available key at each response level.
+
+ This endpoint is only accessible for `parent-level organizations `_.
+
+ :param start_month: Datetime in ISO-8601 format, UTC, precise to month: ``[YYYY-MM]`` for usage beginning in this month.
+ Maximum of 15 months ago.
+ :type start_month: datetime
+ :param end_month: Datetime in ISO-8601 format, UTC, precise to month: ``[YYYY-MM]`` for usage ending this month.
+ :type end_month: datetime, optional
+ :param include_org_details: Include usage summaries for each sub-org.
+ :type include_org_details: bool, optional
+ :param include_connected_accounts: Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to ``false``.
+ :type include_connected_accounts: bool, optional
+ :rtype: UsageSummaryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_month"] = start_month
+
+ if end_month is not unset:
+ kwargs["end_month"] = end_month
+
+ if include_org_details is not unset:
+ kwargs["include_org_details"] = include_org_details
+
+ if include_connected_accounts is not unset:
+ kwargs["include_connected_accounts"] = include_connected_accounts
+
+ return self._get_usage_summary_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_synthetics(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageSyntheticsResponse:
+ """Get hourly usage for synthetics checks. **Deprecated**.
+
+ Get hourly usage for `synthetics checks `_.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageSyntheticsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_synthetics is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_synthetics_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_synthetics_api(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageSyntheticsAPIResponse:
+ """Get hourly usage for synthetics API checks. **Deprecated**.
+
+ Get hourly usage for `synthetics API checks `_.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageSyntheticsAPIResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_synthetics_api is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_synthetics_api_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_synthetics_browser(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageSyntheticsBrowserResponse:
+ """Get hourly usage for synthetics browser checks. **Deprecated**.
+
+ Get hourly usage for synthetics browser checks.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageSyntheticsBrowserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_synthetics_browser is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_synthetics_browser_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_timeseries(self, start_hr: datetime, *, end_hr: Union[datetime, UnsetType]=unset, ) -> UsageTimeseriesResponse:
+ """Get hourly usage for custom metrics. **Deprecated**.
+
+ Get hourly usage for `custom metrics `_.
+ **Note:** This endpoint has been deprecated. Hourly usage data for all products is now available in the `Get hourly usage by product family API `_. Refer to `Migrating from the V1 Hourly Usage APIs to V2 `_ for the associated migration guide.
+
+ :param start_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
+ :type start_hr: datetime
+ :param end_hr: Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
+ :type end_hr: datetime, optional
+ :rtype: UsageTimeseriesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["start_hr"] = start_hr
+
+ if end_hr is not unset:
+ kwargs["end_hr"] = end_hr
+
+ warnings.warn("get_usage_timeseries is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_usage_timeseries_endpoint.call_with_http_info(**kwargs)
+
+ def get_usage_top_avg_metrics(self, *, month: Union[datetime, UnsetType]=unset, day: Union[datetime, UnsetType]=unset, names: Union[List[str], UnsetType]=unset, limit: Union[int, UnsetType]=unset, next_record_id: Union[str, UnsetType]=unset, ) -> UsageTopAvgMetricsResponse:
+ """Get all custom metrics by hourly average.
+
+ Get all `custom metrics `_ by hourly average. Use the month parameter to get a month-to-date data resolution or use the day parameter to get a daily resolution. One of the two is required, and only one of the two is allowed.
+
+ :param month: Datetime in ISO-8601 format, UTC, precise to month: [YYYY-MM] for usage beginning at this hour. (Either month or day should be specified, but not both)
+ :type month: datetime, optional
+ :param day: Datetime in ISO-8601 format, UTC, precise to day: [YYYY-MM-DD] for usage beginning at this hour. (Either month or day should be specified, but not both)
+ :type day: datetime, optional
+ :param names: Comma-separated list of metric names.
+ :type names: [str], optional
+ :param limit: Maximum number of results to return (between 1 and 5000) - defaults to 500 results if limit not specified.
+ :type limit: int, optional
+ :param next_record_id: List following results with a next_record_id provided in the previous query.
+ :type next_record_id: str, optional
+ :rtype: UsageTopAvgMetricsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if month is not unset:
+ kwargs["month"] = month
+
+ if day is not unset:
+ kwargs["day"] = day
+
+ if names is not unset:
+ kwargs["names"] = names
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if next_record_id is not unset:
+ kwargs["next_record_id"] = next_record_id
+
+ return self._get_usage_top_avg_metrics_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/users_api.py b/datadog_api_client/v1/api/users_api.py
new file mode 100644
index 0000000000..935d56b39a
--- /dev/null
+++ b/datadog_api_client/v1/api/users_api.py
@@ -0,0 +1,229 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.user_list_response import UserListResponse
+from datadog_api_client.v1.model.user_response import UserResponse
+from datadog_api_client.v1.model.user import User
+from datadog_api_client.v1.model.user_disable_response import UserDisableResponse
+
+
+class UsersApi:
+ """
+ Create, edit, and disable users.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/user",
+ "operation_id": "create_user",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (User,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._disable_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserDisableResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/user/{user_handle}",
+ "operation_id": "disable_user",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "user_handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_handle",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/user/{user_handle}",
+ "operation_id": "get_user",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "user_handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_handle",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/user",
+ "operation_id": "list_users",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/user/{user_handle}",
+ "operation_id": "update_user",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "user_handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_handle",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (User,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_user(self, body: User, ) -> UserResponse:
+ """Create a user.
+
+ Create a user for your organization.
+
+ **Note** : Users can only be created with the admin access role
+ if application keys belong to administrators.
+
+ :param body: User object that needs to be created.
+ :type body: User
+ :rtype: UserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_user_endpoint.call_with_http_info(**kwargs)
+
+ def disable_user(self, user_handle: str, ) -> UserDisableResponse:
+ """Disable a user.
+
+ Delete a user from an organization.
+
+ **Note** : This endpoint can only be used with application keys belonging to
+ administrators.
+
+ :param user_handle: The handle of the user.
+ :type user_handle: str
+ :rtype: UserDisableResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_handle"] = user_handle
+
+ return self._disable_user_endpoint.call_with_http_info(**kwargs)
+
+ def get_user(self, user_handle: str, ) -> UserResponse:
+ """Get user details.
+
+ Get a user's details.
+
+ :param user_handle: The ID of the user.
+ :type user_handle: str
+ :rtype: UserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_handle"] = user_handle
+
+ return self._get_user_endpoint.call_with_http_info(**kwargs)
+
+ def list_users(self, ) -> UserListResponse:
+ """List all users.
+
+ List all users for your organization.
+
+ :rtype: UserListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_users_endpoint.call_with_http_info(**kwargs)
+
+ def update_user(self, user_handle: str, body: User, ) -> UserResponse:
+ """Update a user.
+
+ Update a user information.
+
+ **Note** : It can only be used with application keys belonging to administrators.
+
+ :param user_handle: The ID of the user.
+ :type user_handle: str
+ :param body: Description of the update.
+ :type body: User
+ :rtype: UserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_handle"] = user_handle
+
+ kwargs["body"] = body
+
+ return self._update_user_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/api/webhooks_integration_api.py b/datadog_api_client/v1/api/webhooks_integration_api.py
new file mode 100644
index 0000000000..9fdadff1ea
--- /dev/null
+++ b/datadog_api_client/v1/api/webhooks_integration_api.py
@@ -0,0 +1,357 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v1.model.webhooks_integration_custom_variable_response import WebhooksIntegrationCustomVariableResponse
+from datadog_api_client.v1.model.webhooks_integration_custom_variable import WebhooksIntegrationCustomVariable
+from datadog_api_client.v1.model.webhooks_integration_custom_variable_update_request import WebhooksIntegrationCustomVariableUpdateRequest
+from datadog_api_client.v1.model.webhooks_integration import WebhooksIntegration
+from datadog_api_client.v1.model.webhooks_integration_update_request import WebhooksIntegrationUpdateRequest
+
+
+class WebhooksIntegrationApi:
+ """
+ Configure your Datadog-Webhooks integration directly through the Datadog API.
+ See the `Webhooks integration page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_webhooks_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (WebhooksIntegration,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/webhooks",
+ "operation_id": "create_webhooks_integration",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (WebhooksIntegration,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_webhooks_integration_custom_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (WebhooksIntegrationCustomVariableResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/custom-variables",
+ "operation_id": "create_webhooks_integration_custom_variable",
+ "http_method": "POST",
+ "version": "v1",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (WebhooksIntegrationCustomVariable,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_webhooks_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/webhooks/{webhook_name}",
+ "operation_id": "delete_webhooks_integration",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "webhook_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "webhook_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_webhooks_integration_custom_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/custom-variables/{custom_variable_name}",
+ "operation_id": "delete_webhooks_integration_custom_variable",
+ "http_method": "DELETE",
+ "version": "v1",
+ },
+ params_map={
+ "custom_variable_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_variable_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_webhooks_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (WebhooksIntegration,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/webhooks/{webhook_name}",
+ "operation_id": "get_webhooks_integration",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "webhook_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "webhook_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_webhooks_integration_custom_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (WebhooksIntegrationCustomVariableResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/custom-variables/{custom_variable_name}",
+ "operation_id": "get_webhooks_integration_custom_variable",
+ "http_method": "GET",
+ "version": "v1",
+ },
+ params_map={
+ "custom_variable_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_variable_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_webhooks_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (WebhooksIntegration,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/webhooks/{webhook_name}",
+ "operation_id": "update_webhooks_integration",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "webhook_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "webhook_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (WebhooksIntegrationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_webhooks_integration_custom_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (WebhooksIntegrationCustomVariableResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v1/integration/webhooks/configuration/custom-variables/{custom_variable_name}",
+ "operation_id": "update_webhooks_integration_custom_variable",
+ "http_method": "PUT",
+ "version": "v1",
+ },
+ params_map={
+ "custom_variable_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_variable_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (WebhooksIntegrationCustomVariableUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_webhooks_integration(self, body: WebhooksIntegration, ) -> WebhooksIntegration:
+ """Create a webhooks integration.
+
+ Creates an endpoint with the name ````.
+
+ :param body: Create a webhooks integration request body.
+ :type body: WebhooksIntegration
+ :rtype: WebhooksIntegration
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_webhooks_integration_endpoint.call_with_http_info(**kwargs)
+
+ def create_webhooks_integration_custom_variable(self, body: WebhooksIntegrationCustomVariable, ) -> WebhooksIntegrationCustomVariableResponse:
+ """Create a custom variable.
+
+ Creates an endpoint with the name ````.
+
+ :param body: Define a custom variable request body.
+ :type body: WebhooksIntegrationCustomVariable
+ :rtype: WebhooksIntegrationCustomVariableResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_webhooks_integration_custom_variable_endpoint.call_with_http_info(**kwargs)
+
+ def delete_webhooks_integration(self, webhook_name: str, ) -> None:
+ """Delete a webhook.
+
+ Deletes the endpoint with the name ````. This action cannot be undone.
+
+ :param webhook_name: The name of the webhook.
+ :type webhook_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["webhook_name"] = webhook_name
+
+ return self._delete_webhooks_integration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_webhooks_integration_custom_variable(self, custom_variable_name: str, ) -> None:
+ """Delete a custom variable.
+
+ Deletes the endpoint with the name ````.
+
+ :param custom_variable_name: The name of the custom variable.
+ :type custom_variable_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_variable_name"] = custom_variable_name
+
+ return self._delete_webhooks_integration_custom_variable_endpoint.call_with_http_info(**kwargs)
+
+ def get_webhooks_integration(self, webhook_name: str, ) -> WebhooksIntegration:
+ """Get a webhook integration.
+
+ Gets the content of the webhook with the name ````.
+
+ :param webhook_name: The name of the webhook.
+ :type webhook_name: str
+ :rtype: WebhooksIntegration
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["webhook_name"] = webhook_name
+
+ return self._get_webhooks_integration_endpoint.call_with_http_info(**kwargs)
+
+ def get_webhooks_integration_custom_variable(self, custom_variable_name: str, ) -> WebhooksIntegrationCustomVariableResponse:
+ """Get a custom variable.
+
+ Shows the content of the custom variable with the name ````.
+
+ If the custom variable is secret, the value does not return in the
+ response payload.
+
+ :param custom_variable_name: The name of the custom variable.
+ :type custom_variable_name: str
+ :rtype: WebhooksIntegrationCustomVariableResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_variable_name"] = custom_variable_name
+
+ return self._get_webhooks_integration_custom_variable_endpoint.call_with_http_info(**kwargs)
+
+ def update_webhooks_integration(self, webhook_name: str, body: WebhooksIntegrationUpdateRequest, ) -> WebhooksIntegration:
+ """Update a webhook.
+
+ Updates the endpoint with the name ````.
+
+ :param webhook_name: The name of the webhook.
+ :type webhook_name: str
+ :param body: Update an existing Datadog-Webhooks integration.
+ :type body: WebhooksIntegrationUpdateRequest
+ :rtype: WebhooksIntegration
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["webhook_name"] = webhook_name
+
+ kwargs["body"] = body
+
+ return self._update_webhooks_integration_endpoint.call_with_http_info(**kwargs)
+
+ def update_webhooks_integration_custom_variable(self, custom_variable_name: str, body: WebhooksIntegrationCustomVariableUpdateRequest, ) -> WebhooksIntegrationCustomVariableResponse:
+ """Update a custom variable.
+
+ Updates the endpoint with the name ````.
+
+ :param custom_variable_name: The name of the custom variable.
+ :type custom_variable_name: str
+ :param body: Update an existing custom variable request body.
+ :type body: WebhooksIntegrationCustomVariableUpdateRequest
+ :rtype: WebhooksIntegrationCustomVariableResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_variable_name"] = custom_variable_name
+
+ kwargs["body"] = body
+
+ return self._update_webhooks_integration_custom_variable_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v1/apis/__init__.py b/datadog_api_client/v1/apis/__init__.py
new file mode 100644
index 0000000000..2c82808429
--- /dev/null
+++ b/datadog_api_client/v1/apis/__init__.py
@@ -0,0 +1,67 @@
+
+from datadog_api_client.v1.api.aws_integration_api import AWSIntegrationApi
+from datadog_api_client.v1.api.aws_logs_integration_api import AWSLogsIntegrationApi
+from datadog_api_client.v1.api.authentication_api import AuthenticationApi
+from datadog_api_client.v1.api.azure_integration_api import AzureIntegrationApi
+from datadog_api_client.v1.api.dashboard_lists_api import DashboardListsApi
+from datadog_api_client.v1.api.dashboards_api import DashboardsApi
+from datadog_api_client.v1.api.downtimes_api import DowntimesApi
+from datadog_api_client.v1.api.events_api import EventsApi
+from datadog_api_client.v1.api.gcp_integration_api import GCPIntegrationApi
+from datadog_api_client.v1.api.hosts_api import HostsApi
+from datadog_api_client.v1.api.ip_ranges_api import IPRangesApi
+from datadog_api_client.v1.api.key_management_api import KeyManagementApi
+from datadog_api_client.v1.api.logs_api import LogsApi
+from datadog_api_client.v1.api.logs_indexes_api import LogsIndexesApi
+from datadog_api_client.v1.api.logs_pipelines_api import LogsPipelinesApi
+from datadog_api_client.v1.api.metrics_api import MetricsApi
+from datadog_api_client.v1.api.monitors_api import MonitorsApi
+from datadog_api_client.v1.api.notebooks_api import NotebooksApi
+from datadog_api_client.v1.api.organizations_api import OrganizationsApi
+from datadog_api_client.v1.api.pager_duty_integration_api import PagerDutyIntegrationApi
+from datadog_api_client.v1.api.security_monitoring_api import SecurityMonitoringApi
+from datadog_api_client.v1.api.service_checks_api import ServiceChecksApi
+from datadog_api_client.v1.api.service_level_objective_corrections_api import ServiceLevelObjectiveCorrectionsApi
+from datadog_api_client.v1.api.service_level_objectives_api import ServiceLevelObjectivesApi
+from datadog_api_client.v1.api.slack_integration_api import SlackIntegrationApi
+from datadog_api_client.v1.api.snapshots_api import SnapshotsApi
+from datadog_api_client.v1.api.synthetics_api import SyntheticsApi
+from datadog_api_client.v1.api.tags_api import TagsApi
+from datadog_api_client.v1.api.usage_metering_api import UsageMeteringApi
+from datadog_api_client.v1.api.users_api import UsersApi
+from datadog_api_client.v1.api.webhooks_integration_api import WebhooksIntegrationApi
+
+
+__all__ = [
+ "AWSIntegrationApi",
+ "AWSLogsIntegrationApi",
+ "AuthenticationApi",
+ "AzureIntegrationApi",
+ "DashboardListsApi",
+ "DashboardsApi",
+ "DowntimesApi",
+ "EventsApi",
+ "GCPIntegrationApi",
+ "HostsApi",
+ "IPRangesApi",
+ "KeyManagementApi",
+ "LogsApi",
+ "LogsIndexesApi",
+ "LogsPipelinesApi",
+ "MetricsApi",
+ "MonitorsApi",
+ "NotebooksApi",
+ "OrganizationsApi",
+ "PagerDutyIntegrationApi",
+ "SecurityMonitoringApi",
+ "ServiceChecksApi",
+ "ServiceLevelObjectiveCorrectionsApi",
+ "ServiceLevelObjectivesApi",
+ "SlackIntegrationApi",
+ "SnapshotsApi",
+ "SyntheticsApi",
+ "TagsApi",
+ "UsageMeteringApi",
+ "UsersApi",
+ "WebhooksIntegrationApi",
+]
\ No newline at end of file
diff --git a/datadog_api_client/v1/model/__init__.py b/datadog_api_client/v1/model/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/datadog_api_client/v1/model/access_role.py b/datadog_api_client/v1/model/access_role.py
new file mode 100644
index 0000000000..7412a907d8
--- /dev/null
+++ b/datadog_api_client/v1/model/access_role.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class AccessRole(ModelSimple):
+ """
+ The access role of the user. Options are **st** (standard user), **adm** (admin user), or **ro** (read-only user).
+
+ :param value: Must be one of ["st", "adm", "ro", "ERROR"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "st",
+ "adm",
+ "ro",
+ "ERROR",
+ }
+ STANDARD: ClassVar["AccessRole"]
+ ADMIN: ClassVar["AccessRole"]
+ READ_ONLY: ClassVar["AccessRole"]
+ ERROR: ClassVar["AccessRole"]
+
+
+ _nullable = True
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+AccessRole.STANDARD = AccessRole("st")
+AccessRole.ADMIN = AccessRole("adm")
+AccessRole.READ_ONLY = AccessRole("ro")
+AccessRole.ERROR = AccessRole("ERROR")
diff --git a/datadog_api_client/v1/model/add_signal_to_incident_request.py b/datadog_api_client/v1/model/add_signal_to_incident_request.py
new file mode 100644
index 0000000000..b6dd3c9c51
--- /dev/null
+++ b/datadog_api_client/v1/model/add_signal_to_incident_request.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AddSignalToIncidentRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "add_to_signal_timeline": (bool,),
+ "incident_id": (int,),
+ "version": (int,),
+ }
+ attribute_map = {
+ "add_to_signal_timeline": "add_to_signal_timeline",
+ "incident_id": "incident_id",
+ "version": "version",
+ }
+
+ def __init__(self_, incident_id: int, add_to_signal_timeline: Union[bool, UnsetType]=unset, version: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Attributes describing which incident to add the signal to.
+
+ :param add_to_signal_timeline: Whether to post the signal on the incident timeline.
+ :type add_to_signal_timeline: bool, optional
+
+ :param incident_id: Public ID attribute of the incident to which the signal will be added.
+ :type incident_id: int
+
+ :param version: Version of the updated signal. If server side version is higher, update will be rejected.
+ :type version: int, optional
+ """
+ if add_to_signal_timeline is not unset:
+ kwargs["add_to_signal_timeline"] = add_to_signal_timeline
+ if version is not unset:
+ kwargs["version"] = version
+ super().__init__(kwargs)
+
+
+ self_.incident_id = incident_id
diff --git a/datadog_api_client/v1/model/agent_check.py b/datadog_api_client/v1/model/agent_check.py
new file mode 100644
index 0000000000..9e8e54a69d
--- /dev/null
+++ b/datadog_api_client/v1/model/agent_check.py
@@ -0,0 +1,39 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AgentCheck(ModelSimple):
+ """
+ Array of strings.
+
+
+ :type value: [bool, date, datetime, dict, float, int, list, str, UUID, none_type]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": ([bool, date, datetime, dict, float, int, list, str, UUID, none_type],),
+ }
diff --git a/datadog_api_client/v1/model/alert_graph_widget_definition.py b/datadog_api_client/v1/model/alert_graph_widget_definition.py
new file mode 100644
index 0000000000..517788e941
--- /dev/null
+++ b/datadog_api_client/v1/model/alert_graph_widget_definition.py
@@ -0,0 +1,104 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.alert_graph_widget_definition_type import AlertGraphWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_viz_type import WidgetVizType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class AlertGraphWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.alert_graph_widget_definition_type import AlertGraphWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_viz_type import WidgetVizType
+ return {
+ "alert_id": (str,),
+ "description": (str,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (AlertGraphWidgetDefinitionType,),
+ "viz_type": (WidgetVizType,),
+ }
+ attribute_map = {
+ "alert_id": "alert_id",
+ "description": "description",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "viz_type": "viz_type",
+ }
+
+ def __init__(self_, alert_id: str, type: AlertGraphWidgetDefinitionType, viz_type: WidgetVizType, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Alert graphs are timeseries graphs showing the current status of any monitor defined on your system.
+
+ :param alert_id: ID of the alert to use in the widget.
+ :type alert_id: str
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: The title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the alert graph widget.
+ :type type: AlertGraphWidgetDefinitionType
+
+ :param viz_type: Whether to display the Alert Graph as a timeseries or a top list.
+ :type viz_type: WidgetVizType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.alert_id = alert_id
+ self_.type = type
+ self_.viz_type = viz_type
diff --git a/datadog_api_client/v1/model/alert_graph_widget_definition_type.py b/datadog_api_client/v1/model/alert_graph_widget_definition_type.py
new file mode 100644
index 0000000000..7f7fdce222
--- /dev/null
+++ b/datadog_api_client/v1/model/alert_graph_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class AlertGraphWidgetDefinitionType(ModelSimple):
+ """
+ Type of the alert graph widget.
+
+ :param value: If omitted defaults to "alert_graph". Must be one of ["alert_graph"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "alert_graph",
+ }
+ ALERT_GRAPH: ClassVar["AlertGraphWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+AlertGraphWidgetDefinitionType.ALERT_GRAPH = AlertGraphWidgetDefinitionType("alert_graph")
diff --git a/datadog_api_client/v1/model/alert_value_widget_definition.py b/datadog_api_client/v1/model/alert_value_widget_definition.py
new file mode 100644
index 0000000000..8494c0d0bb
--- /dev/null
+++ b/datadog_api_client/v1/model/alert_value_widget_definition.py
@@ -0,0 +1,105 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.alert_value_widget_definition_type import AlertValueWidgetDefinitionType
+
+class AlertValueWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.alert_value_widget_definition_type import AlertValueWidgetDefinitionType
+ return {
+ "alert_id": (str,),
+ "description": (str,),
+ "precision": (int,),
+ "text_align": (WidgetTextAlign,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (AlertValueWidgetDefinitionType,),
+ "unit": (str,),
+ }
+ attribute_map = {
+ "alert_id": "alert_id",
+ "description": "description",
+ "precision": "precision",
+ "text_align": "text_align",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "unit": "unit",
+ }
+
+ def __init__(self_, alert_id: str, type: AlertValueWidgetDefinitionType, description: Union[str, UnsetType]=unset, precision: Union[int, UnsetType]=unset, text_align: Union[WidgetTextAlign, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, unit: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Alert values are query values showing the current value of the metric in any monitor defined on your system.
+
+ :param alert_id: ID of the alert to use in the widget.
+ :type alert_id: str
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param precision: Number of decimal to show. If not defined, will use the raw value.
+ :type precision: int, optional
+
+ :param text_align: How to align the text on the widget.
+ :type text_align: WidgetTextAlign, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of value in the widget.
+ :type title_size: str, optional
+
+ :param type: Type of the alert value widget.
+ :type type: AlertValueWidgetDefinitionType
+
+ :param unit: Unit to display with the value.
+ :type unit: str, optional
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if precision is not unset:
+ kwargs["precision"] = precision
+ if text_align is not unset:
+ kwargs["text_align"] = text_align
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if unit is not unset:
+ kwargs["unit"] = unit
+ super().__init__(kwargs)
+
+
+ self_.alert_id = alert_id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/alert_value_widget_definition_type.py b/datadog_api_client/v1/model/alert_value_widget_definition_type.py
new file mode 100644
index 0000000000..88757f02b6
--- /dev/null
+++ b/datadog_api_client/v1/model/alert_value_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class AlertValueWidgetDefinitionType(ModelSimple):
+ """
+ Type of the alert value widget.
+
+ :param value: If omitted defaults to "alert_value". Must be one of ["alert_value"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "alert_value",
+ }
+ ALERT_VALUE: ClassVar["AlertValueWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+AlertValueWidgetDefinitionType.ALERT_VALUE = AlertValueWidgetDefinitionType("alert_value")
diff --git a/datadog_api_client/v1/model/api_error_response.py b/datadog_api_client/v1/model/api_error_response.py
new file mode 100644
index 0000000000..e97283c486
--- /dev/null
+++ b/datadog_api_client/v1/model/api_error_response.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class APIErrorResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "errors": ([str],),
+ }
+ attribute_map = {
+ "errors": "errors",
+ }
+
+ def __init__(self_, errors: List[str], **kwargs):
+ """
+ Error response object.
+
+ :param errors: Array of errors returned by the API.
+ :type errors: [str]
+ """
+ super().__init__(kwargs)
+
+
+ self_.errors = errors
diff --git a/datadog_api_client/v1/model/api_key.py b/datadog_api_client/v1/model/api_key.py
new file mode 100644
index 0000000000..c65ecc23d9
--- /dev/null
+++ b/datadog_api_client/v1/model/api_key.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ApiKey(ModelNormal):
+ validations = {
+ "key": {
+ "max_length": 32,
+ "min_length": 32,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "created": (str,),
+ "created_by": (str,),
+ "key": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "created": "created",
+ "created_by": "created_by",
+ "key": "key",
+ "name": "name",
+ }
+ read_only_vars = {
+ "created",
+ "created_by",
+ "key",
+ }
+
+ def __init__(self_, created: Union[str, UnsetType]=unset, created_by: Union[str, UnsetType]=unset, key: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Datadog API key.
+
+ :param created: Date of creation of the API key.
+ :type created: str, optional
+
+ :param created_by: Datadog user handle that created the API key.
+ :type created_by: str, optional
+
+ :param key: API key.
+ :type key: str, optional
+
+ :param name: Name of your API key.
+ :type name: str, optional
+ """
+ if created is not unset:
+ kwargs["created"] = created
+ if created_by is not unset:
+ kwargs["created_by"] = created_by
+ if key is not unset:
+ kwargs["key"] = key
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/api_key_list_response.py b/datadog_api_client/v1/model/api_key_list_response.py
new file mode 100644
index 0000000000..6a7b2fde17
--- /dev/null
+++ b/datadog_api_client/v1/model/api_key_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.api_key import ApiKey
+
+class ApiKeyListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.api_key import ApiKey
+ return {
+ "api_keys": ([ApiKey],),
+ }
+ attribute_map = {
+ "api_keys": "api_keys",
+ }
+
+ def __init__(self_, api_keys: Union[List[ApiKey], UnsetType]=unset, **kwargs):
+ """
+ List of API and application keys available for a given organization.
+
+ :param api_keys: Array of API keys.
+ :type api_keys: [ApiKey], optional
+ """
+ if api_keys is not unset:
+ kwargs["api_keys"] = api_keys
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/api_key_response.py b/datadog_api_client/v1/model/api_key_response.py
new file mode 100644
index 0000000000..b15a5738b1
--- /dev/null
+++ b/datadog_api_client/v1/model/api_key_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.api_key import ApiKey
+
+class ApiKeyResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.api_key import ApiKey
+ return {
+ "api_key": (ApiKey,),
+ }
+ attribute_map = {
+ "api_key": "api_key",
+ }
+
+ def __init__(self_, api_key: Union[ApiKey, UnsetType]=unset, **kwargs):
+ """
+ An API key with its associated metadata.
+
+ :param api_key: Datadog API key.
+ :type api_key: ApiKey, optional
+ """
+ if api_key is not unset:
+ kwargs["api_key"] = api_key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/apm_stats_query_column_type.py b/datadog_api_client/v1/model/apm_stats_query_column_type.py
new file mode 100644
index 0000000000..eb82857427
--- /dev/null
+++ b/datadog_api_client/v1/model/apm_stats_query_column_type.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class ApmStatsQueryColumnType(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "alias": (str,),
+ "cell_display_mode": (TableWidgetCellDisplayMode,),
+ "name": (str,),
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "cell_display_mode": "cell_display_mode",
+ "name": "name",
+ "order": "order",
+ }
+
+ def __init__(self_, name: str, alias: Union[str, UnsetType]=unset, cell_display_mode: Union[TableWidgetCellDisplayMode, UnsetType]=unset, order: Union[WidgetSort, UnsetType]=unset, **kwargs):
+ """
+ Column properties.
+
+ :param alias: A user-assigned alias for the column.
+ :type alias: str, optional
+
+ :param cell_display_mode: Define a display mode for the table cell.
+ :type cell_display_mode: TableWidgetCellDisplayMode, optional
+
+ :param name: Column name.
+ :type name: str
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort, optional
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ if cell_display_mode is not unset:
+ kwargs["cell_display_mode"] = cell_display_mode
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/apm_stats_query_definition.py b/datadog_api_client/v1/model/apm_stats_query_definition.py
new file mode 100644
index 0000000000..fa3f4b62d3
--- /dev/null
+++ b/datadog_api_client/v1/model/apm_stats_query_definition.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.apm_stats_query_column_type import ApmStatsQueryColumnType
+ from datadog_api_client.v1.model.apm_stats_query_row_type import ApmStatsQueryRowType
+
+class ApmStatsQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.apm_stats_query_column_type import ApmStatsQueryColumnType
+ from datadog_api_client.v1.model.apm_stats_query_row_type import ApmStatsQueryRowType
+ return {
+ "columns": ([ApmStatsQueryColumnType],),
+ "env": (str,),
+ "name": (str,),
+ "primary_tag": (str,),
+ "resource": (str,),
+ "row_type": (ApmStatsQueryRowType,),
+ "service": (str,),
+ }
+ attribute_map = {
+ "columns": "columns",
+ "env": "env",
+ "name": "name",
+ "primary_tag": "primary_tag",
+ "resource": "resource",
+ "row_type": "row_type",
+ "service": "service",
+ }
+
+ def __init__(self_, env: str, name: str, primary_tag: str, row_type: ApmStatsQueryRowType, service: str, columns: Union[List[ApmStatsQueryColumnType], UnsetType]=unset, resource: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The APM stats query for table and distributions widgets.
+
+ :param columns: Column properties used by the front end for display.
+ :type columns: [ApmStatsQueryColumnType], optional
+
+ :param env: Environment name.
+ :type env: str
+
+ :param name: Operation name associated with service.
+ :type name: str
+
+ :param primary_tag: The organization's host group name and value.
+ :type primary_tag: str
+
+ :param resource: Resource name.
+ :type resource: str, optional
+
+ :param row_type: The level of detail for the request.
+ :type row_type: ApmStatsQueryRowType
+
+ :param service: Service name.
+ :type service: str
+ """
+ if columns is not unset:
+ kwargs["columns"] = columns
+ if resource is not unset:
+ kwargs["resource"] = resource
+ super().__init__(kwargs)
+
+
+ self_.env = env
+ self_.name = name
+ self_.primary_tag = primary_tag
+ self_.row_type = row_type
+ self_.service = service
diff --git a/datadog_api_client/v1/model/apm_stats_query_row_type.py b/datadog_api_client/v1/model/apm_stats_query_row_type.py
new file mode 100644
index 0000000000..e7968b34d9
--- /dev/null
+++ b/datadog_api_client/v1/model/apm_stats_query_row_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ApmStatsQueryRowType(ModelSimple):
+ """
+ The level of detail for the request.
+
+ :param value: Must be one of ["service", "resource", "span"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "service",
+ "resource",
+ "span",
+ }
+ SERVICE: ClassVar["ApmStatsQueryRowType"]
+ RESOURCE: ClassVar["ApmStatsQueryRowType"]
+ SPAN: ClassVar["ApmStatsQueryRowType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ApmStatsQueryRowType.SERVICE = ApmStatsQueryRowType("service")
+ApmStatsQueryRowType.RESOURCE = ApmStatsQueryRowType("resource")
+ApmStatsQueryRowType.SPAN = ApmStatsQueryRowType("span")
diff --git a/datadog_api_client/v1/model/application_key.py b/datadog_api_client/v1/model/application_key.py
new file mode 100644
index 0000000000..f0faa0c048
--- /dev/null
+++ b/datadog_api_client/v1/model/application_key.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ApplicationKey(ModelNormal):
+ validations = {
+ "hash": {
+ "max_length": 40,
+ "min_length": 40,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hash": (str,),
+ "name": (str,),
+ "owner": (str,),
+ }
+ attribute_map = {
+ "hash": "hash",
+ "name": "name",
+ "owner": "owner",
+ }
+ read_only_vars = {
+ "hash",
+ "owner",
+ }
+
+ def __init__(self_, hash: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, owner: Union[str, UnsetType]=unset, **kwargs):
+ """
+ An application key with its associated metadata.
+
+ :param hash: Hash of an application key.
+ :type hash: str, optional
+
+ :param name: Name of an application key.
+ :type name: str, optional
+
+ :param owner: Owner of an application key.
+ :type owner: str, optional
+ """
+ if hash is not unset:
+ kwargs["hash"] = hash
+ if name is not unset:
+ kwargs["name"] = name
+ if owner is not unset:
+ kwargs["owner"] = owner
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/application_key_list_response.py b/datadog_api_client/v1/model/application_key_list_response.py
new file mode 100644
index 0000000000..758431be0a
--- /dev/null
+++ b/datadog_api_client/v1/model/application_key_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.application_key import ApplicationKey
+
+class ApplicationKeyListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.application_key import ApplicationKey
+ return {
+ "application_keys": ([ApplicationKey],),
+ }
+ attribute_map = {
+ "application_keys": "application_keys",
+ }
+
+ def __init__(self_, application_keys: Union[List[ApplicationKey], UnsetType]=unset, **kwargs):
+ """
+ An application key response.
+
+ :param application_keys: Array of application keys.
+ :type application_keys: [ApplicationKey], optional
+ """
+ if application_keys is not unset:
+ kwargs["application_keys"] = application_keys
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/application_key_response.py b/datadog_api_client/v1/model/application_key_response.py
new file mode 100644
index 0000000000..8211959411
--- /dev/null
+++ b/datadog_api_client/v1/model/application_key_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.application_key import ApplicationKey
+
+class ApplicationKeyResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.application_key import ApplicationKey
+ return {
+ "application_key": (ApplicationKey,),
+ }
+ attribute_map = {
+ "application_key": "application_key",
+ }
+
+ def __init__(self_, application_key: Union[ApplicationKey, UnsetType]=unset, **kwargs):
+ """
+ An application key response.
+
+ :param application_key: An application key with its associated metadata.
+ :type application_key: ApplicationKey, optional
+ """
+ if application_key is not unset:
+ kwargs["application_key"] = application_key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/authentication_validation_response.py b/datadog_api_client/v1/model/authentication_validation_response.py
new file mode 100644
index 0000000000..d66238697c
--- /dev/null
+++ b/datadog_api_client/v1/model/authentication_validation_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AuthenticationValidationResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "valid": (bool,),
+ }
+ attribute_map = {
+ "valid": "valid",
+ }
+ read_only_vars = {
+ "valid",
+ }
+
+ def __init__(self_, valid: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Represent validation endpoint responses.
+
+ :param valid: Return ``true`` if the authentication response is valid.
+ :type valid: bool, optional
+ """
+ if valid is not unset:
+ kwargs["valid"] = valid
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_account.py b/datadog_api_client/v1/model/aws_account.py
new file mode 100644
index 0000000000..fdf101647c
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_account.py
@@ -0,0 +1,134 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSAccount(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "access_key_id": (str,),
+ "account_id": (str,),
+ "account_specific_namespace_rules": ({str: (bool,)},),
+ "cspm_resource_collection_enabled": (bool,),
+ "excluded_regions": ([str],),
+ "extended_resource_collection_enabled": (bool,),
+ "filter_tags": ([str],),
+ "host_tags": ([str],),
+ "metrics_collection_enabled": (bool,),
+ "resource_collection_enabled": (bool,),
+ "role_name": (str,),
+ "secret_access_key": (str,),
+ }
+ attribute_map = {
+ "access_key_id": "access_key_id",
+ "account_id": "account_id",
+ "account_specific_namespace_rules": "account_specific_namespace_rules",
+ "cspm_resource_collection_enabled": "cspm_resource_collection_enabled",
+ "excluded_regions": "excluded_regions",
+ "extended_resource_collection_enabled": "extended_resource_collection_enabled",
+ "filter_tags": "filter_tags",
+ "host_tags": "host_tags",
+ "metrics_collection_enabled": "metrics_collection_enabled",
+ "resource_collection_enabled": "resource_collection_enabled",
+ "role_name": "role_name",
+ "secret_access_key": "secret_access_key",
+ }
+
+ def __init__(self_, access_key_id: Union[str, UnsetType]=unset, account_id: Union[str, UnsetType]=unset, account_specific_namespace_rules: Union[Dict[str, bool], UnsetType]=unset, cspm_resource_collection_enabled: Union[bool, UnsetType]=unset, excluded_regions: Union[List[str], UnsetType]=unset, extended_resource_collection_enabled: Union[bool, UnsetType]=unset, filter_tags: Union[List[str], UnsetType]=unset, host_tags: Union[List[str], UnsetType]=unset, metrics_collection_enabled: Union[bool, UnsetType]=unset, resource_collection_enabled: Union[bool, UnsetType]=unset, role_name: Union[str, UnsetType]=unset, secret_access_key: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Returns the AWS account associated with this integration.
+
+ :param access_key_id: Your AWS access key ID. Only required if your AWS account is a GovCloud or China account.
+ :type access_key_id: str, optional
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param account_specific_namespace_rules: An object (in the form ``{"namespace1":true/false, "namespace2":true/false}`` ) containing user-supplied overrides
+ for AWS namespace metric collection. **Important** : This field only contains namespaces explicitly configured through API calls,
+ not the comprehensive enabled or disabled status of all namespaces. If a namespace is absent from this field, it uses Datadog's
+ internal defaults (all namespaces enabled by default, except ``AWS/SQS`` , ``AWS/ElasticMapReduce`` , and ``AWS/Usage`` ).
+ For a complete view of all namespace statuses, use the V2 AWS Integration API instead.
+ :type account_specific_namespace_rules: {str: (bool,)}, optional
+
+ :param cspm_resource_collection_enabled: Whether Datadog collects cloud security posture management resources from your AWS account. This includes additional resources not covered under the general ``resource_collection``.
+ :type cspm_resource_collection_enabled: bool, optional
+
+ :param excluded_regions: An array of `AWS regions `_
+ to exclude from metrics collection.
+ :type excluded_regions: [str], optional
+
+ :param extended_resource_collection_enabled: Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Required for ``cspm_resource_collection``.
+ :type extended_resource_collection_enabled: bool, optional
+
+ :param filter_tags: The array of EC2 tags (in the form ``key:value`` ) defines a filter that Datadog uses when collecting metrics from EC2.
+ Wildcards, such as ``?`` (for single characters) and ``*`` (for multiple characters) can also be used.
+ Only hosts that match one of the defined tags
+ will be imported into Datadog. The rest will be ignored.
+ Host matching a given tag can also be excluded by adding ``!`` before the tag.
+ For example, ``env:production,instance-type:c1.*,!region:us-east-1``
+ :type filter_tags: [str], optional
+
+ :param host_tags: Array of tags (in the form ``key:value`` ) to add to all hosts
+ and metrics reporting through this integration.
+ :type host_tags: [str], optional
+
+ :param metrics_collection_enabled: Whether Datadog collects metrics for this AWS account.
+ :type metrics_collection_enabled: bool, optional
+
+ :param resource_collection_enabled: Deprecated in favor of 'extended_resource_collection_enabled'. Whether Datadog collects a standard set of resources from your AWS account. **Deprecated**.
+ :type resource_collection_enabled: bool, optional
+
+ :param role_name: Your Datadog role delegation name.
+ :type role_name: str, optional
+
+ :param secret_access_key: Your AWS secret access key. Only required if your AWS account is a GovCloud or China account.
+ :type secret_access_key: str, optional
+ """
+ if access_key_id is not unset:
+ kwargs["access_key_id"] = access_key_id
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if account_specific_namespace_rules is not unset:
+ kwargs["account_specific_namespace_rules"] = account_specific_namespace_rules
+ if cspm_resource_collection_enabled is not unset:
+ kwargs["cspm_resource_collection_enabled"] = cspm_resource_collection_enabled
+ if excluded_regions is not unset:
+ kwargs["excluded_regions"] = excluded_regions
+ if extended_resource_collection_enabled is not unset:
+ kwargs["extended_resource_collection_enabled"] = extended_resource_collection_enabled
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+ if host_tags is not unset:
+ kwargs["host_tags"] = host_tags
+ if metrics_collection_enabled is not unset:
+ kwargs["metrics_collection_enabled"] = metrics_collection_enabled
+ if resource_collection_enabled is not unset:
+ kwargs["resource_collection_enabled"] = resource_collection_enabled
+ if role_name is not unset:
+ kwargs["role_name"] = role_name
+ if secret_access_key is not unset:
+ kwargs["secret_access_key"] = secret_access_key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_account_and_lambda_request.py b/datadog_api_client/v1/model/aws_account_and_lambda_request.py
new file mode 100644
index 0000000000..40d7f9f559
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_account_and_lambda_request.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSAccountAndLambdaRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "account_id": (str,),
+ "lambda_arn": (str,),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "lambda_arn": "lambda_arn",
+ }
+
+ def __init__(self_, account_id: str, lambda_arn: str, **kwargs):
+ """
+ AWS account ID and Lambda ARN.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str
+
+ :param lambda_arn: ARN of the Datadog Lambda created during the Datadog-Amazon Web services Log collection setup.
+ :type lambda_arn: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.account_id = account_id
+ self_.lambda_arn = lambda_arn
diff --git a/datadog_api_client/v1/model/aws_account_create_response.py b/datadog_api_client/v1/model/aws_account_create_response.py
new file mode 100644
index 0000000000..98fc9bae05
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_account_create_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSAccountCreateResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "external_id": (str,),
+ }
+ attribute_map = {
+ "external_id": "external_id",
+ }
+
+ def __init__(self_, external_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The Response returned by the AWS Create Account call.
+
+ :param external_id: AWS external_id.
+ :type external_id: str, optional
+ """
+ if external_id is not unset:
+ kwargs["external_id"] = external_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_account_delete_request.py b/datadog_api_client/v1/model/aws_account_delete_request.py
new file mode 100644
index 0000000000..30e2a0a5be
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_account_delete_request.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSAccountDeleteRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "access_key_id": (str,),
+ "account_id": (str,),
+ "role_name": (str,),
+ }
+ attribute_map = {
+ "access_key_id": "access_key_id",
+ "account_id": "account_id",
+ "role_name": "role_name",
+ }
+
+ def __init__(self_, access_key_id: Union[str, UnsetType]=unset, account_id: Union[str, UnsetType]=unset, role_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ List of AWS accounts to delete.
+
+ :param access_key_id: Your AWS access key ID. Only required if your AWS account is a GovCloud or China account.
+ :type access_key_id: str, optional
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param role_name: Your Datadog role delegation name.
+ :type role_name: str, optional
+ """
+ if access_key_id is not unset:
+ kwargs["access_key_id"] = access_key_id
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if role_name is not unset:
+ kwargs["role_name"] = role_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_account_list_response.py b/datadog_api_client/v1/model/aws_account_list_response.py
new file mode 100644
index 0000000000..4843ea400e
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_account_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_account import AWSAccount
+
+class AWSAccountListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_account import AWSAccount
+ return {
+ "accounts": ([AWSAccount],),
+ }
+ attribute_map = {
+ "accounts": "accounts",
+ }
+
+ def __init__(self_, accounts: Union[List[AWSAccount], UnsetType]=unset, **kwargs):
+ """
+ List of enabled AWS accounts.
+
+ :param accounts: List of enabled AWS accounts.
+ :type accounts: [AWSAccount], optional
+ """
+ if accounts is not unset:
+ kwargs["accounts"] = accounts
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_account_configuration.py b/datadog_api_client/v1/model/aws_event_bridge_account_configuration.py
new file mode 100644
index 0000000000..c60ad84e3d
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_account_configuration.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_event_bridge_source import AWSEventBridgeSource
+
+class AWSEventBridgeAccountConfiguration(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_event_bridge_source import AWSEventBridgeSource
+ return {
+ "account_id": (str,),
+ "event_hubs": ([AWSEventBridgeSource],),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "account_id": "accountId",
+ "event_hubs": "eventHubs",
+ "tags": "tags",
+ }
+
+ def __init__(self_, account_id: Union[str, UnsetType]=unset, event_hubs: Union[List[AWSEventBridgeSource], UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ The EventBridge configuration for one AWS account.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param event_hubs: Array of AWS event sources associated with this account.
+ :type event_hubs: [AWSEventBridgeSource], optional
+
+ :param tags: Array of tags (in the form ``key:value`` ) which are added to all hosts
+ and metrics reporting through the main AWS integration.
+ :type tags: [str], optional
+ """
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if event_hubs is not unset:
+ kwargs["event_hubs"] = event_hubs
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_create_request.py b/datadog_api_client/v1/model/aws_event_bridge_create_request.py
new file mode 100644
index 0000000000..fb03a58730
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_create_request.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSEventBridgeCreateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "account_id": (str,),
+ "create_event_bus": (bool,),
+ "event_generator_name": (str,),
+ "region": (str,),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "create_event_bus": "create_event_bus",
+ "event_generator_name": "event_generator_name",
+ "region": "region",
+ }
+
+ def __init__(self_, account_id: Union[str, UnsetType]=unset, create_event_bus: Union[bool, UnsetType]=unset, event_generator_name: Union[str, UnsetType]=unset, region: Union[str, UnsetType]=unset, **kwargs):
+ """
+ An object used to create an EventBridge source.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param create_event_bus: True if Datadog should create the event bus in addition to the event
+ source. Requires the ``events:CreateEventBus`` permission.
+ :type create_event_bus: bool, optional
+
+ :param event_generator_name: The given part of the event source name, which is then combined with an
+ assigned suffix to form the full name.
+ :type event_generator_name: str, optional
+
+ :param region: The event source's `AWS region `_.
+ :type region: str, optional
+ """
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if create_event_bus is not unset:
+ kwargs["create_event_bus"] = create_event_bus
+ if event_generator_name is not unset:
+ kwargs["event_generator_name"] = event_generator_name
+ if region is not unset:
+ kwargs["region"] = region
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_create_response.py b/datadog_api_client/v1/model/aws_event_bridge_create_response.py
new file mode 100644
index 0000000000..a87d5522f2
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_create_response.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_event_bridge_create_status import AWSEventBridgeCreateStatus
+
+class AWSEventBridgeCreateResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_event_bridge_create_status import AWSEventBridgeCreateStatus
+ return {
+ "event_source_name": (str,),
+ "has_bus": (bool,),
+ "region": (str,),
+ "status": (AWSEventBridgeCreateStatus,),
+ }
+ attribute_map = {
+ "event_source_name": "event_source_name",
+ "has_bus": "has_bus",
+ "region": "region",
+ "status": "status",
+ }
+
+ def __init__(self_, event_source_name: Union[str, UnsetType]=unset, has_bus: Union[bool, UnsetType]=unset, region: Union[str, UnsetType]=unset, status: Union[AWSEventBridgeCreateStatus, UnsetType]=unset, **kwargs):
+ """
+ A created EventBridge source.
+
+ :param event_source_name: The event source name.
+ :type event_source_name: str, optional
+
+ :param has_bus: True if the event bus was created in addition to the source.
+ :type has_bus: bool, optional
+
+ :param region: The event source's `AWS region `_.
+ :type region: str, optional
+
+ :param status: The event source status "created".
+ :type status: AWSEventBridgeCreateStatus, optional
+ """
+ if event_source_name is not unset:
+ kwargs["event_source_name"] = event_source_name
+ if has_bus is not unset:
+ kwargs["has_bus"] = has_bus
+ if region is not unset:
+ kwargs["region"] = region
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_create_status.py b/datadog_api_client/v1/model/aws_event_bridge_create_status.py
new file mode 100644
index 0000000000..1fb56a2ccb
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_create_status.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class AWSEventBridgeCreateStatus(ModelSimple):
+ """
+ The event source status "created".
+
+ :param value: If omitted defaults to "created". Must be one of ["created"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "created",
+ }
+ CREATED: ClassVar["AWSEventBridgeCreateStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+AWSEventBridgeCreateStatus.CREATED = AWSEventBridgeCreateStatus("created")
diff --git a/datadog_api_client/v1/model/aws_event_bridge_delete_request.py b/datadog_api_client/v1/model/aws_event_bridge_delete_request.py
new file mode 100644
index 0000000000..0c443dcd5b
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_delete_request.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSEventBridgeDeleteRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "account_id": (str,),
+ "event_generator_name": (str,),
+ "region": (str,),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "event_generator_name": "event_generator_name",
+ "region": "region",
+ }
+
+ def __init__(self_, account_id: Union[str, UnsetType]=unset, event_generator_name: Union[str, UnsetType]=unset, region: Union[str, UnsetType]=unset, **kwargs):
+ """
+ An object used to delete an EventBridge source.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param event_generator_name: The event source name.
+ :type event_generator_name: str, optional
+
+ :param region: The event source's `AWS region `_.
+ :type region: str, optional
+ """
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if event_generator_name is not unset:
+ kwargs["event_generator_name"] = event_generator_name
+ if region is not unset:
+ kwargs["region"] = region
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_delete_response.py b/datadog_api_client/v1/model/aws_event_bridge_delete_response.py
new file mode 100644
index 0000000000..d670febec9
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_delete_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_event_bridge_delete_status import AWSEventBridgeDeleteStatus
+
+class AWSEventBridgeDeleteResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_event_bridge_delete_status import AWSEventBridgeDeleteStatus
+ return {
+ "status": (AWSEventBridgeDeleteStatus,),
+ }
+ attribute_map = {
+ "status": "status",
+ }
+
+ def __init__(self_, status: Union[AWSEventBridgeDeleteStatus, UnsetType]=unset, **kwargs):
+ """
+ An indicator of the successful deletion of an EventBridge source.
+
+ :param status: The event source status "empty".
+ :type status: AWSEventBridgeDeleteStatus, optional
+ """
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_delete_status.py b/datadog_api_client/v1/model/aws_event_bridge_delete_status.py
new file mode 100644
index 0000000000..202838d7cb
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_delete_status.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class AWSEventBridgeDeleteStatus(ModelSimple):
+ """
+ The event source status "empty".
+
+ :param value: If omitted defaults to "empty". Must be one of ["empty"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "empty",
+ }
+ EMPTY: ClassVar["AWSEventBridgeDeleteStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+AWSEventBridgeDeleteStatus.EMPTY = AWSEventBridgeDeleteStatus("empty")
diff --git a/datadog_api_client/v1/model/aws_event_bridge_list_response.py b/datadog_api_client/v1/model/aws_event_bridge_list_response.py
new file mode 100644
index 0000000000..daecc8830c
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_list_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_event_bridge_account_configuration import AWSEventBridgeAccountConfiguration
+
+class AWSEventBridgeListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_event_bridge_account_configuration import AWSEventBridgeAccountConfiguration
+ return {
+ "accounts": ([AWSEventBridgeAccountConfiguration],),
+ "is_installed": (bool,),
+ }
+ attribute_map = {
+ "accounts": "accounts",
+ "is_installed": "isInstalled",
+ }
+
+ def __init__(self_, accounts: Union[List[AWSEventBridgeAccountConfiguration], UnsetType]=unset, is_installed: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ An object describing the EventBridge configuration for multiple accounts.
+
+ :param accounts: List of accounts with their event sources.
+ :type accounts: [AWSEventBridgeAccountConfiguration], optional
+
+ :param is_installed: True if the EventBridge sub-integration is enabled for your organization.
+ :type is_installed: bool, optional
+ """
+ if accounts is not unset:
+ kwargs["accounts"] = accounts
+ if is_installed is not unset:
+ kwargs["is_installed"] = is_installed
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_event_bridge_source.py b/datadog_api_client/v1/model/aws_event_bridge_source.py
new file mode 100644
index 0000000000..0ff7bedd96
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_event_bridge_source.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSEventBridgeSource(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "region": (str,),
+ }
+ attribute_map = {
+ "name": "name",
+ "region": "region",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, region: Union[str, UnsetType]=unset, **kwargs):
+ """
+ An EventBridge source.
+
+ :param name: The event source name.
+ :type name: str, optional
+
+ :param region: The event source's `AWS region `_.
+ :type region: str, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if region is not unset:
+ kwargs["region"] = region
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_logs_async_error.py b/datadog_api_client/v1/model/aws_logs_async_error.py
new file mode 100644
index 0000000000..c3d0798785
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_logs_async_error.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSLogsAsyncError(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "code": (str,),
+ "message": (str,),
+ }
+ attribute_map = {
+ "code": "code",
+ "message": "message",
+ }
+
+ def __init__(self_, code: Union[str, UnsetType]=unset, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Description of errors.
+
+ :param code: Code properties
+ :type code: str, optional
+
+ :param message: Message content.
+ :type message: str, optional
+ """
+ if code is not unset:
+ kwargs["code"] = code
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_logs_async_response.py b/datadog_api_client/v1/model/aws_logs_async_response.py
new file mode 100644
index 0000000000..b524b4385e
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_logs_async_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_logs_async_error import AWSLogsAsyncError
+
+class AWSLogsAsyncResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_logs_async_error import AWSLogsAsyncError
+ return {
+ "errors": ([AWSLogsAsyncError],),
+ "status": (str,),
+ }
+ attribute_map = {
+ "errors": "errors",
+ "status": "status",
+ }
+
+ def __init__(self_, errors: Union[List[AWSLogsAsyncError], UnsetType]=unset, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A list of all Datadog-AWS logs integrations available in your Datadog organization.
+
+ :param errors: List of errors.
+ :type errors: [AWSLogsAsyncError], optional
+
+ :param status: Status of the properties.
+ :type status: str, optional
+ """
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_logs_lambda.py b/datadog_api_client/v1/model/aws_logs_lambda.py
new file mode 100644
index 0000000000..cd46222f80
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_logs_lambda.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSLogsLambda(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "arn": (str,),
+ }
+ attribute_map = {
+ "arn": "arn",
+ }
+
+ def __init__(self_, arn: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Description of the Lambdas.
+
+ :param arn: Available ARN IDs.
+ :type arn: str, optional
+ """
+ if arn is not unset:
+ kwargs["arn"] = arn
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_logs_list_response.py b/datadog_api_client/v1/model/aws_logs_list_response.py
new file mode 100644
index 0000000000..ede7c3ee03
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_logs_list_response.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_logs_lambda import AWSLogsLambda
+
+class AWSLogsListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_logs_lambda import AWSLogsLambda
+ return {
+ "account_id": (str,),
+ "lambdas": ([AWSLogsLambda],),
+ "services": ([str],),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "lambdas": "lambdas",
+ "services": "services",
+ }
+
+ def __init__(self_, account_id: Union[str, UnsetType]=unset, lambdas: Union[List[AWSLogsLambda], UnsetType]=unset, services: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ A list of all Datadog-AWS logs integrations available in your Datadog organization.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param lambdas: List of ARNs configured in your Datadog account.
+ :type lambdas: [AWSLogsLambda], optional
+
+ :param services: Array of services IDs.
+ :type services: [str], optional
+ """
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if lambdas is not unset:
+ kwargs["lambdas"] = lambdas
+ if services is not unset:
+ kwargs["services"] = services
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_logs_list_services_response.py b/datadog_api_client/v1/model/aws_logs_list_services_response.py
new file mode 100644
index 0000000000..2bec0a279e
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_logs_list_services_response.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSLogsListServicesResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (str,),
+ "label": (str,),
+ }
+ attribute_map = {
+ "id": "id",
+ "label": "label",
+ }
+
+ def __init__(self_, id: Union[str, UnsetType]=unset, label: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The list of current AWS services for which Datadog offers automatic log collection.
+
+ :param id: Key value in returned object.
+ :type id: str, optional
+
+ :param label: Name of service available for configuration with Datadog logs.
+ :type label: str, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if label is not unset:
+ kwargs["label"] = label
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_logs_services_request.py b/datadog_api_client/v1/model/aws_logs_services_request.py
new file mode 100644
index 0000000000..3c7bd1c481
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_logs_services_request.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AWSLogsServicesRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "account_id": (str,),
+ "services": ([str],),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "services": "services",
+ }
+
+ def __init__(self_, account_id: str, services: List[str], **kwargs):
+ """
+ A list of current AWS services for which Datadog offers automatic log collection.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str
+
+ :param services: Array of services IDs set to enable automatic log collection. Discover the list of available services with the get list of AWS log ready services API endpoint.
+ :type services: [str]
+ """
+ super().__init__(kwargs)
+
+
+ self_.account_id = account_id
+ self_.services = services
diff --git a/datadog_api_client/v1/model/aws_namespace.py b/datadog_api_client/v1/model/aws_namespace.py
new file mode 100644
index 0000000000..b2e8d27ca4
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_namespace.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class AWSNamespace(ModelSimple):
+ """
+ The namespace associated with the tag filter entry.
+
+ :param value: Must be one of ["elb", "application_elb", "sqs", "rds", "custom", "network_elb", "lambda", "step_functions"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "elb",
+ "application_elb",
+ "sqs",
+ "rds",
+ "custom",
+ "network_elb",
+ "lambda",
+ "step_functions",
+ }
+ ELB: ClassVar["AWSNamespace"]
+ APPLICATION_ELB: ClassVar["AWSNamespace"]
+ SQS: ClassVar["AWSNamespace"]
+ RDS: ClassVar["AWSNamespace"]
+ CUSTOM: ClassVar["AWSNamespace"]
+ NETWORK_ELB: ClassVar["AWSNamespace"]
+ LAMBDA: ClassVar["AWSNamespace"]
+ STEP_FUNCTIONS: ClassVar["AWSNamespace"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+AWSNamespace.ELB = AWSNamespace("elb")
+AWSNamespace.APPLICATION_ELB = AWSNamespace("application_elb")
+AWSNamespace.SQS = AWSNamespace("sqs")
+AWSNamespace.RDS = AWSNamespace("rds")
+AWSNamespace.CUSTOM = AWSNamespace("custom")
+AWSNamespace.NETWORK_ELB = AWSNamespace("network_elb")
+AWSNamespace.LAMBDA = AWSNamespace("lambda")
+AWSNamespace.STEP_FUNCTIONS = AWSNamespace("step_functions")
diff --git a/datadog_api_client/v1/model/aws_tag_filter.py b/datadog_api_client/v1/model/aws_tag_filter.py
new file mode 100644
index 0000000000..64becb2986
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_tag_filter.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+
+class AWSTagFilter(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+ return {
+ "namespace": (AWSNamespace,),
+ "tag_filter_str": (str,),
+ }
+ attribute_map = {
+ "namespace": "namespace",
+ "tag_filter_str": "tag_filter_str",
+ }
+
+ def __init__(self_, namespace: Union[AWSNamespace, UnsetType]=unset, tag_filter_str: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A tag filter.
+
+ :param namespace: The namespace associated with the tag filter entry.
+ :type namespace: AWSNamespace, optional
+
+ :param tag_filter_str: The tag filter string.
+ :type tag_filter_str: str, optional
+ """
+ if namespace is not unset:
+ kwargs["namespace"] = namespace
+ if tag_filter_str is not unset:
+ kwargs["tag_filter_str"] = tag_filter_str
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_tag_filter_create_request.py b/datadog_api_client/v1/model/aws_tag_filter_create_request.py
new file mode 100644
index 0000000000..977ba6a160
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_tag_filter_create_request.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+
+class AWSTagFilterCreateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+ return {
+ "account_id": (str,),
+ "namespace": (AWSNamespace,),
+ "tag_filter_str": (str,),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "namespace": "namespace",
+ "tag_filter_str": "tag_filter_str",
+ }
+
+ def __init__(self_, account_id: Union[str, UnsetType]=unset, namespace: Union[AWSNamespace, UnsetType]=unset, tag_filter_str: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The objects used to set an AWS tag filter.
+
+ :param account_id: Your AWS Account ID without dashes.
+ :type account_id: str, optional
+
+ :param namespace: The namespace associated with the tag filter entry.
+ :type namespace: AWSNamespace, optional
+
+ :param tag_filter_str: The tag filter string.
+ :type tag_filter_str: str, optional
+ """
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if namespace is not unset:
+ kwargs["namespace"] = namespace
+ if tag_filter_str is not unset:
+ kwargs["tag_filter_str"] = tag_filter_str
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_tag_filter_delete_request.py b/datadog_api_client/v1/model/aws_tag_filter_delete_request.py
new file mode 100644
index 0000000000..34f39cc3a2
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_tag_filter_delete_request.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+
+class AWSTagFilterDeleteRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+ return {
+ "account_id": (str,),
+ "namespace": (AWSNamespace,),
+ }
+ attribute_map = {
+ "account_id": "account_id",
+ "namespace": "namespace",
+ }
+
+ def __init__(self_, account_id: Union[str, UnsetType]=unset, namespace: Union[AWSNamespace, UnsetType]=unset, **kwargs):
+ """
+ The objects used to delete an AWS tag filter entry.
+
+ :param account_id: The unique identifier of your AWS account.
+ :type account_id: str, optional
+
+ :param namespace: The namespace associated with the tag filter entry.
+ :type namespace: AWSNamespace, optional
+ """
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+ if namespace is not unset:
+ kwargs["namespace"] = namespace
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/aws_tag_filter_list_response.py b/datadog_api_client/v1/model/aws_tag_filter_list_response.py
new file mode 100644
index 0000000000..4479fd116b
--- /dev/null
+++ b/datadog_api_client/v1/model/aws_tag_filter_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.aws_tag_filter import AWSTagFilter
+
+class AWSTagFilterListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.aws_tag_filter import AWSTagFilter
+ return {
+ "filters": ([AWSTagFilter],),
+ }
+ attribute_map = {
+ "filters": "filters",
+ }
+
+ def __init__(self_, filters: Union[List[AWSTagFilter], UnsetType]=unset, **kwargs):
+ """
+ An array of tag filter rules by ``namespace`` and tag filter string.
+
+ :param filters: An array of tag filters.
+ :type filters: [AWSTagFilter], optional
+ """
+ if filters is not unset:
+ kwargs["filters"] = filters
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/azure_account.py b/datadog_api_client/v1/model/azure_account.py
new file mode 100644
index 0000000000..322cacf618
--- /dev/null
+++ b/datadog_api_client/v1/model/azure_account.py
@@ -0,0 +1,172 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.resource_provider_config import ResourceProviderConfig
+
+class AzureAccount(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.resource_provider_config import ResourceProviderConfig
+ return {
+ "app_service_plan_filters": (str,),
+ "automute": (bool,),
+ "client_id": (str,),
+ "client_secret": (str,),
+ "container_app_filters": (str,),
+ "cspm_enabled": (bool,),
+ "custom_metrics_enabled": (bool,),
+ "errors": ([str],),
+ "host_filters": (str,),
+ "metrics_enabled": (bool,),
+ "metrics_enabled_default": (bool,),
+ "new_client_id": (str,),
+ "new_tenant_name": (str,),
+ "resource_collection_enabled": (bool,),
+ "resource_provider_configs": ([ResourceProviderConfig],),
+ "secretless_auth_enabled": (bool,),
+ "tenant_name": (str,),
+ "usage_metrics_enabled": (bool,),
+ }
+ attribute_map = {
+ "app_service_plan_filters": "app_service_plan_filters",
+ "automute": "automute",
+ "client_id": "client_id",
+ "client_secret": "client_secret",
+ "container_app_filters": "container_app_filters",
+ "cspm_enabled": "cspm_enabled",
+ "custom_metrics_enabled": "custom_metrics_enabled",
+ "errors": "errors",
+ "host_filters": "host_filters",
+ "metrics_enabled": "metrics_enabled",
+ "metrics_enabled_default": "metrics_enabled_default",
+ "new_client_id": "new_client_id",
+ "new_tenant_name": "new_tenant_name",
+ "resource_collection_enabled": "resource_collection_enabled",
+ "resource_provider_configs": "resource_provider_configs",
+ "secretless_auth_enabled": "secretless_auth_enabled",
+ "tenant_name": "tenant_name",
+ "usage_metrics_enabled": "usage_metrics_enabled",
+ }
+
+ def __init__(self_, app_service_plan_filters: Union[str, UnsetType]=unset, automute: Union[bool, UnsetType]=unset, client_id: Union[str, UnsetType]=unset, client_secret: Union[str, UnsetType]=unset, container_app_filters: Union[str, UnsetType]=unset, cspm_enabled: Union[bool, UnsetType]=unset, custom_metrics_enabled: Union[bool, UnsetType]=unset, errors: Union[List[str], UnsetType]=unset, host_filters: Union[str, UnsetType]=unset, metrics_enabled: Union[bool, UnsetType]=unset, metrics_enabled_default: Union[bool, UnsetType]=unset, new_client_id: Union[str, UnsetType]=unset, new_tenant_name: Union[str, UnsetType]=unset, resource_collection_enabled: Union[bool, UnsetType]=unset, resource_provider_configs: Union[List[ResourceProviderConfig], UnsetType]=unset, secretless_auth_enabled: Union[bool, UnsetType]=unset, tenant_name: Union[str, UnsetType]=unset, usage_metrics_enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Datadog-Azure integrations configured for your organization.
+
+ :param app_service_plan_filters: Limit the Azure app service plans that are pulled into Datadog using tags.
+ Only app service plans that match one of the defined tags are imported into Datadog.
+ :type app_service_plan_filters: str, optional
+
+ :param automute: Silence monitors for expected Azure VM shutdowns.
+ :type automute: bool, optional
+
+ :param client_id: Your Azure web application ID.
+ :type client_id: str, optional
+
+ :param client_secret: Your Azure web application secret key.
+ :type client_secret: str, optional
+
+ :param container_app_filters: Limit the Azure container apps that are pulled into Datadog using tags.
+ Only container apps that match one of the defined tags are imported into Datadog.
+ :type container_app_filters: str, optional
+
+ :param cspm_enabled: When enabled, Datadog’s Cloud Security Management product scans resource configurations monitored by this app registration.
+ Note: This requires resource_collection_enabled to be set to true.
+ :type cspm_enabled: bool, optional
+
+ :param custom_metrics_enabled: Enable custom metrics for your organization.
+ :type custom_metrics_enabled: bool, optional
+
+ :param errors: Errors in your configuration.
+ :type errors: [str], optional
+
+ :param host_filters: Limit the Azure instances that are pulled into Datadog by using tags.
+ Only hosts that match one of the defined tags are imported into Datadog.
+ :type host_filters: str, optional
+
+ :param metrics_enabled: Enable Azure metrics for your organization.
+ :type metrics_enabled: bool, optional
+
+ :param metrics_enabled_default: Enable Azure metrics for your organization for resource providers where no resource provider config is specified.
+ :type metrics_enabled_default: bool, optional
+
+ :param new_client_id: Your New Azure web application ID.
+ :type new_client_id: str, optional
+
+ :param new_tenant_name: Your New Azure Active Directory ID.
+ :type new_tenant_name: str, optional
+
+ :param resource_collection_enabled: When enabled, Datadog collects metadata and configuration info from cloud resources (compute instances, databases, load balancers, etc.) monitored by this app registration.
+ :type resource_collection_enabled: bool, optional
+
+ :param resource_provider_configs: Configuration settings applied to resources from the specified Azure resource providers.
+ :type resource_provider_configs: [ResourceProviderConfig], optional
+
+ :param secretless_auth_enabled: (Preview) When enabled, Datadog authenticates with this app registration using federated workload identity credentials instead of a client secret.
+ :type secretless_auth_enabled: bool, optional
+
+ :param tenant_name: Your Azure Active Directory ID.
+ :type tenant_name: str, optional
+
+ :param usage_metrics_enabled: Enable azure.usage metrics for your organization.
+ :type usage_metrics_enabled: bool, optional
+ """
+ if app_service_plan_filters is not unset:
+ kwargs["app_service_plan_filters"] = app_service_plan_filters
+ if automute is not unset:
+ kwargs["automute"] = automute
+ if client_id is not unset:
+ kwargs["client_id"] = client_id
+ if client_secret is not unset:
+ kwargs["client_secret"] = client_secret
+ if container_app_filters is not unset:
+ kwargs["container_app_filters"] = container_app_filters
+ if cspm_enabled is not unset:
+ kwargs["cspm_enabled"] = cspm_enabled
+ if custom_metrics_enabled is not unset:
+ kwargs["custom_metrics_enabled"] = custom_metrics_enabled
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if host_filters is not unset:
+ kwargs["host_filters"] = host_filters
+ if metrics_enabled is not unset:
+ kwargs["metrics_enabled"] = metrics_enabled
+ if metrics_enabled_default is not unset:
+ kwargs["metrics_enabled_default"] = metrics_enabled_default
+ if new_client_id is not unset:
+ kwargs["new_client_id"] = new_client_id
+ if new_tenant_name is not unset:
+ kwargs["new_tenant_name"] = new_tenant_name
+ if resource_collection_enabled is not unset:
+ kwargs["resource_collection_enabled"] = resource_collection_enabled
+ if resource_provider_configs is not unset:
+ kwargs["resource_provider_configs"] = resource_provider_configs
+ if secretless_auth_enabled is not unset:
+ kwargs["secretless_auth_enabled"] = secretless_auth_enabled
+ if tenant_name is not unset:
+ kwargs["tenant_name"] = tenant_name
+ if usage_metrics_enabled is not unset:
+ kwargs["usage_metrics_enabled"] = usage_metrics_enabled
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/azure_account_list_response.py b/datadog_api_client/v1/model/azure_account_list_response.py
new file mode 100644
index 0000000000..36d58cc474
--- /dev/null
+++ b/datadog_api_client/v1/model/azure_account_list_response.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class AzureAccountListResponse(ModelSimple):
+ """
+ Accounts configured for your organization.
+
+
+ :type value: [AzureAccount]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.azure_account import AzureAccount
+ return {
+ "value": ([AzureAccount],),
+ }
diff --git a/datadog_api_client/v1/model/bar_chart_widget_definition.py b/datadog_api_client/v1/model/bar_chart_widget_definition.py
new file mode 100644
index 0000000000..01088ad03e
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_definition.py
@@ -0,0 +1,139 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest
+ from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked
+ from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class BarChartWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest
+ from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": ([BarChartWidgetRequest],),
+ "style": (BarChartWidgetStyle,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (BarChartWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "style": "style",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[BarChartWidgetRequest], type: BarChartWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, style: Union[BarChartWidgetStyle, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The bar chart visualization displays categorical data using vertical bars, allowing you to compare values across different groups.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: List of bar chart widget requests.
+ :type requests: [BarChartWidgetRequest]
+
+ :param style: Style customization for a bar chart widget.
+ :type style: BarChartWidgetStyle, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the bar chart widget.
+ :type type: BarChartWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if style is not unset:
+ kwargs["style"] = style
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/bar_chart_widget_definition_type.py b/datadog_api_client/v1/model/bar_chart_widget_definition_type.py
new file mode 100644
index 0000000000..2ed22db591
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class BarChartWidgetDefinitionType(ModelSimple):
+ """
+ Type of the bar chart widget.
+
+ :param value: If omitted defaults to "bar_chart". Must be one of ["bar_chart"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "bar_chart",
+ }
+ BAR_CHART: ClassVar["BarChartWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+BarChartWidgetDefinitionType.BAR_CHART = BarChartWidgetDefinitionType("bar_chart")
diff --git a/datadog_api_client/v1/model/bar_chart_widget_display.py b/datadog_api_client/v1/model/bar_chart_widget_display.py
new file mode 100644
index 0000000000..00aea54543
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_display.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class BarChartWidgetDisplay(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Bar chart widget display options.
+
+ :param legend: Bar chart widget stacked legend behavior.
+ :type legend: BarChartWidgetLegend, optional
+
+ :param type: Bar chart widget stacked display type.
+ :type type: BarChartWidgetStackedType
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked
+ from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat
+ return {
+ "oneOf": [
+ BarChartWidgetStacked,
+ BarChartWidgetFlat,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/bar_chart_widget_flat.py b/datadog_api_client/v1/model/bar_chart_widget_flat.py
new file mode 100644
index 0000000000..704fe0ce4c
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_flat.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.bar_chart_widget_flat_type import BarChartWidgetFlatType
+
+class BarChartWidgetFlat(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.bar_chart_widget_flat_type import BarChartWidgetFlatType
+ return {
+ "type": (BarChartWidgetFlatType,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: BarChartWidgetFlatType, **kwargs):
+ """
+ Bar chart widget flat display.
+
+ :param type: Bar chart widget flat display type.
+ :type type: BarChartWidgetFlatType
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/bar_chart_widget_flat_type.py b/datadog_api_client/v1/model/bar_chart_widget_flat_type.py
new file mode 100644
index 0000000000..384a2b5a62
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_flat_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class BarChartWidgetFlatType(ModelSimple):
+ """
+ Bar chart widget flat display type.
+
+ :param value: If omitted defaults to "flat". Must be one of ["flat"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "flat",
+ }
+ FLAT: ClassVar["BarChartWidgetFlatType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+BarChartWidgetFlatType.FLAT = BarChartWidgetFlatType("flat")
diff --git a/datadog_api_client/v1/model/bar_chart_widget_legend.py b/datadog_api_client/v1/model/bar_chart_widget_legend.py
new file mode 100644
index 0000000000..ac52a607cf
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_legend.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class BarChartWidgetLegend(ModelSimple):
+ """
+ Bar chart widget stacked legend behavior.
+
+ :param value: Must be one of ["automatic", "inline", "none"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "automatic",
+ "inline",
+ "none",
+ }
+ AUTOMATIC: ClassVar["BarChartWidgetLegend"]
+ INLINE: ClassVar["BarChartWidgetLegend"]
+ NONE: ClassVar["BarChartWidgetLegend"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+BarChartWidgetLegend.AUTOMATIC = BarChartWidgetLegend("automatic")
+BarChartWidgetLegend.INLINE = BarChartWidgetLegend("inline")
+BarChartWidgetLegend.NONE = BarChartWidgetLegend("none")
diff --git a/datadog_api_client/v1/model/bar_chart_widget_request.py b/datadog_api_client/v1/model/bar_chart_widget_request.py
new file mode 100644
index 0000000000..2a5a9b7058
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_request.py
@@ -0,0 +1,183 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+
+class BarChartWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "audit_query": (LogQueryDefinition,),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "sort": (WidgetSortBy,),
+ "style": (WidgetRequestStyle,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "audit_query": "audit_query",
+ "conditional_formats": "conditional_formats",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "sort": "sort",
+ "style": "style",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, audit_query: Union[LogQueryDefinition, UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, sort: Union[WidgetSortBy, UnsetType]=unset, style: Union[WidgetRequestStyle, UnsetType]=unset, **kwargs):
+ """
+ Updated bar chart widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param audit_query: The log query.
+ :type audit_query: LogQueryDefinition, optional
+
+ :param conditional_formats: List of conditional formats.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param style: Define request widget style.
+ :type style: WidgetRequestStyle, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if audit_query is not unset:
+ kwargs["audit_query"] = audit_query
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/bar_chart_widget_scaling.py b/datadog_api_client/v1/model/bar_chart_widget_scaling.py
new file mode 100644
index 0000000000..ce83c921b5
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_scaling.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class BarChartWidgetScaling(ModelSimple):
+ """
+ Bar chart widget scaling definition.
+
+ :param value: Must be one of ["absolute", "relative"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "absolute",
+ "relative",
+ }
+ ABSOLUTE: ClassVar["BarChartWidgetScaling"]
+ RELATIVE: ClassVar["BarChartWidgetScaling"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+BarChartWidgetScaling.ABSOLUTE = BarChartWidgetScaling("absolute")
+BarChartWidgetScaling.RELATIVE = BarChartWidgetScaling("relative")
diff --git a/datadog_api_client/v1/model/bar_chart_widget_stacked.py b/datadog_api_client/v1/model/bar_chart_widget_stacked.py
new file mode 100644
index 0000000000..8460dd8d53
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_stacked.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend
+ from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType
+
+class BarChartWidgetStacked(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend
+ from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType
+ return {
+ "legend": (BarChartWidgetLegend,),
+ "type": (BarChartWidgetStackedType,),
+ }
+ attribute_map = {
+ "legend": "legend",
+ "type": "type",
+ }
+
+ def __init__(self_, type: BarChartWidgetStackedType, legend: Union[BarChartWidgetLegend, UnsetType]=unset, **kwargs):
+ """
+ Bar chart widget stacked display options.
+
+ :param legend: Bar chart widget stacked legend behavior.
+ :type legend: BarChartWidgetLegend, optional
+
+ :param type: Bar chart widget stacked display type.
+ :type type: BarChartWidgetStackedType
+ """
+ if legend is not unset:
+ kwargs["legend"] = legend
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/bar_chart_widget_stacked_type.py b/datadog_api_client/v1/model/bar_chart_widget_stacked_type.py
new file mode 100644
index 0000000000..533829c02e
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_stacked_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class BarChartWidgetStackedType(ModelSimple):
+ """
+ Bar chart widget stacked display type.
+
+ :param value: If omitted defaults to "stacked". Must be one of ["stacked"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "stacked",
+ }
+ STACKED: ClassVar["BarChartWidgetStackedType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+BarChartWidgetStackedType.STACKED = BarChartWidgetStackedType("stacked")
diff --git a/datadog_api_client/v1/model/bar_chart_widget_style.py b/datadog_api_client/v1/model/bar_chart_widget_style.py
new file mode 100644
index 0000000000..648bfcca41
--- /dev/null
+++ b/datadog_api_client/v1/model/bar_chart_widget_style.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.bar_chart_widget_display import BarChartWidgetDisplay
+ from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling
+ from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked
+ from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat
+
+class BarChartWidgetStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.bar_chart_widget_display import BarChartWidgetDisplay
+ from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling
+ return {
+ "display": (BarChartWidgetDisplay,),
+ "palette": (str,),
+ "scaling": (BarChartWidgetScaling,),
+ }
+ attribute_map = {
+ "display": "display",
+ "palette": "palette",
+ "scaling": "scaling",
+ }
+
+ def __init__(self_, display: Union[BarChartWidgetDisplay, BarChartWidgetStacked, BarChartWidgetFlat, UnsetType]=unset, palette: Union[str, UnsetType]=unset, scaling: Union[BarChartWidgetScaling, UnsetType]=unset, **kwargs):
+ """
+ Style customization for a bar chart widget.
+
+ :param display: Bar chart widget display options.
+ :type display: BarChartWidgetDisplay, optional
+
+ :param palette: Color palette to apply to the widget.
+ :type palette: str, optional
+
+ :param scaling: Bar chart widget scaling definition.
+ :type scaling: BarChartWidgetScaling, optional
+ """
+ if display is not unset:
+ kwargs["display"] = display
+ if palette is not unset:
+ kwargs["palette"] = palette
+ if scaling is not unset:
+ kwargs["scaling"] = scaling
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/calendar_interval.py b/datadog_api_client/v1/model/calendar_interval.py
new file mode 100644
index 0000000000..ba819f847a
--- /dev/null
+++ b/datadog_api_client/v1/model/calendar_interval.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.calendar_interval_type import CalendarIntervalType
+
+class CalendarInterval(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.calendar_interval_type import CalendarIntervalType
+ return {
+ "alignment": (str,),
+ "quantity": (int,),
+ "timezone": (str,),
+ "type": (CalendarIntervalType,),
+ }
+ attribute_map = {
+ "alignment": "alignment",
+ "quantity": "quantity",
+ "timezone": "timezone",
+ "type": "type",
+ }
+
+ def __init__(self_, type: CalendarIntervalType, alignment: Union[str, UnsetType]=unset, quantity: Union[int, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Calendar interval definition.
+
+ :param alignment: Alignment of the interval. Valid values depend on the interval type. For ``day`` , use hours (for example, ``1am`` , ``2pm`` , or ``14`` ). For ``week`` , use day names (for example, ``monday`` ). For ``month`` , use day-of-month ordinals (for example, ``1st`` , ``15th`` ). For ``year`` or ``quarter`` , use month names (for example, ``january`` ).
+ :type alignment: str, optional
+
+ :param quantity: Quantity of the interval.
+ :type quantity: int, optional
+
+ :param timezone: Timezone for the interval.
+ :type timezone: str, optional
+
+ :param type: Type of calendar interval.
+ :type type: CalendarIntervalType
+ """
+ if alignment is not unset:
+ kwargs["alignment"] = alignment
+ if quantity is not unset:
+ kwargs["quantity"] = quantity
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/calendar_interval_type.py b/datadog_api_client/v1/model/calendar_interval_type.py
new file mode 100644
index 0000000000..c598fffd2d
--- /dev/null
+++ b/datadog_api_client/v1/model/calendar_interval_type.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class CalendarIntervalType(ModelSimple):
+ """
+ Type of calendar interval.
+
+ :param value: Must be one of ["day", "week", "month", "year", "quarter", "minute", "hour"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "day",
+ "week",
+ "month",
+ "year",
+ "quarter",
+ "minute",
+ "hour",
+ }
+ DAY: ClassVar["CalendarIntervalType"]
+ WEEK: ClassVar["CalendarIntervalType"]
+ MONTH: ClassVar["CalendarIntervalType"]
+ YEAR: ClassVar["CalendarIntervalType"]
+ QUARTER: ClassVar["CalendarIntervalType"]
+ MINUTE: ClassVar["CalendarIntervalType"]
+ HOUR: ClassVar["CalendarIntervalType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+CalendarIntervalType.DAY = CalendarIntervalType("day")
+CalendarIntervalType.WEEK = CalendarIntervalType("week")
+CalendarIntervalType.MONTH = CalendarIntervalType("month")
+CalendarIntervalType.YEAR = CalendarIntervalType("year")
+CalendarIntervalType.QUARTER = CalendarIntervalType("quarter")
+CalendarIntervalType.MINUTE = CalendarIntervalType("minute")
+CalendarIntervalType.HOUR = CalendarIntervalType("hour")
diff --git a/datadog_api_client/v1/model/cancel_downtimes_by_scope_request.py b/datadog_api_client/v1/model/cancel_downtimes_by_scope_request.py
new file mode 100644
index 0000000000..0fafe8b9f9
--- /dev/null
+++ b/datadog_api_client/v1/model/cancel_downtimes_by_scope_request.py
@@ -0,0 +1,47 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class CancelDowntimesByScopeRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "scope": (str,),
+ }
+ attribute_map = {
+ "scope": "scope",
+ }
+
+ def __init__(self_, scope: str, **kwargs):
+ """
+ Cancel downtimes according to scope.
+
+ :param scope: The scope(s) to which the downtime applies and must be in ``key:value`` format. For example, ``host:app2``.
+ Provide multiple scopes as a comma-separated list like ``env:dev,env:prod``.
+ The resulting downtime applies to sources that matches ALL provided scopes ( ``env:dev`` **AND** ``env:prod`` ).
+ :type scope: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.scope = scope
diff --git a/datadog_api_client/v1/model/canceled_downtimes_ids.py b/datadog_api_client/v1/model/canceled_downtimes_ids.py
new file mode 100644
index 0000000000..5f37aef6b5
--- /dev/null
+++ b/datadog_api_client/v1/model/canceled_downtimes_ids.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class CanceledDowntimesIds(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "cancelled_ids": ([int],),
+ }
+ attribute_map = {
+ "cancelled_ids": "cancelled_ids",
+ }
+
+ def __init__(self_, cancelled_ids: Union[List[int], UnsetType]=unset, **kwargs):
+ """
+ Object containing array of IDs of canceled downtimes.
+
+ :param cancelled_ids: ID of downtimes that were canceled.
+ :type cancelled_ids: [int], optional
+ """
+ if cancelled_ids is not unset:
+ kwargs["cancelled_ids"] = cancelled_ids
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/change_widget_definition.py b/datadog_api_client/v1/model/change_widget_definition.py
new file mode 100644
index 0000000000..f116d09694
--- /dev/null
+++ b/datadog_api_client/v1/model/change_widget_definition.py
@@ -0,0 +1,129 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.change_widget_request import ChangeWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.change_widget_definition_type import ChangeWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class ChangeWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.change_widget_request import ChangeWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.change_widget_definition_type import ChangeWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": ([ChangeWidgetRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (ChangeWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[ChangeWidgetRequest], type: ChangeWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The Change graph shows you the change in a value over the time period chosen.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: Array of one request object to display in the widget.
+
+ See the dedicated `Request JSON schema documentation `_
+ to learn how to build the ``REQUEST_SCHEMA``.
+ :type requests: [ChangeWidgetRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the change widget.
+ :type type: ChangeWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/change_widget_definition_type.py b/datadog_api_client/v1/model/change_widget_definition_type.py
new file mode 100644
index 0000000000..ed7f60e2f6
--- /dev/null
+++ b/datadog_api_client/v1/model/change_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ChangeWidgetDefinitionType(ModelSimple):
+ """
+ Type of the change widget.
+
+ :param value: If omitted defaults to "change". Must be one of ["change"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "change",
+ }
+ CHANGE: ClassVar["ChangeWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ChangeWidgetDefinitionType.CHANGE = ChangeWidgetDefinitionType("change")
diff --git a/datadog_api_client/v1/model/change_widget_request.py b/datadog_api_client/v1/model/change_widget_request.py
new file mode 100644
index 0000000000..ec4c0b9afc
--- /dev/null
+++ b/datadog_api_client/v1/model/change_widget_request.py
@@ -0,0 +1,197 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_change_type import WidgetChangeType
+ from datadog_api_client.v1.model.widget_compare_to import WidgetCompareTo
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.widget_order_by import WidgetOrderBy
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class ChangeWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_change_type import WidgetChangeType
+ from datadog_api_client.v1.model.widget_compare_to import WidgetCompareTo
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.widget_order_by import WidgetOrderBy
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "change_type": (WidgetChangeType,),
+ "compare_to": (WidgetCompareTo,),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "increase_good": (bool,),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "order_by": (WidgetOrderBy,),
+ "order_dir": (WidgetSort,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "show_present": (bool,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "change_type": "change_type",
+ "compare_to": "compare_to",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "increase_good": "increase_good",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "order_by": "order_by",
+ "order_dir": "order_dir",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "show_present": "show_present",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, change_type: Union[WidgetChangeType, UnsetType]=unset, compare_to: Union[WidgetCompareTo, UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, increase_good: Union[bool, UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, order_by: Union[WidgetOrderBy, UnsetType]=unset, order_dir: Union[WidgetSort, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, show_present: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Updated change widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param change_type: Show the absolute or the relative change.
+ :type change_type: WidgetChangeType, optional
+
+ :param compare_to: Timeframe used for the change comparison.
+ :type compare_to: WidgetCompareTo, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param increase_good: Whether to show increase as good.
+ :type increase_good: bool, optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param order_by: What to order by.
+ :type order_by: WidgetOrderBy, optional
+
+ :param order_dir: Widget sorting methods.
+ :type order_dir: WidgetSort, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Query definition. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param show_present: Whether to show the present value.
+ :type show_present: bool, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if change_type is not unset:
+ kwargs["change_type"] = change_type
+ if compare_to is not unset:
+ kwargs["compare_to"] = compare_to
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if increase_good is not unset:
+ kwargs["increase_good"] = increase_good
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if order_by is not unset:
+ kwargs["order_by"] = order_by
+ if order_dir is not unset:
+ kwargs["order_dir"] = order_dir
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if show_present is not unset:
+ kwargs["show_present"] = show_present
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/check_can_delete_monitor_response.py b/datadog_api_client/v1/model/check_can_delete_monitor_response.py
new file mode 100644
index 0000000000..97ee06e0b2
--- /dev/null
+++ b/datadog_api_client/v1/model/check_can_delete_monitor_response.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.check_can_delete_monitor_response_data import CheckCanDeleteMonitorResponseData
+
+class CheckCanDeleteMonitorResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.check_can_delete_monitor_response_data import CheckCanDeleteMonitorResponseData
+ return {
+ "data": (CheckCanDeleteMonitorResponseData,),
+ "errors": ({str: ([str],)}, none_type),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ }
+
+ def __init__(self_, data: CheckCanDeleteMonitorResponseData, errors: Union[Dict[str, List[str]], none_type, UnsetType]=unset, **kwargs):
+ """
+ Response of monitor IDs that can or can't be safely deleted.
+
+ :param data: Wrapper object with the list of monitor IDs.
+ :type data: CheckCanDeleteMonitorResponseData
+
+ :param errors: A mapping of Monitor ID to strings denoting where it's used.
+ :type errors: {str: ([str],)}, none_type, optional
+ """
+ if errors is not unset:
+ kwargs["errors"] = errors
+ super().__init__(kwargs)
+
+
+ self_.data = data
diff --git a/datadog_api_client/v1/model/check_can_delete_monitor_response_data.py b/datadog_api_client/v1/model/check_can_delete_monitor_response_data.py
new file mode 100644
index 0000000000..9f05cc918b
--- /dev/null
+++ b/datadog_api_client/v1/model/check_can_delete_monitor_response_data.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class CheckCanDeleteMonitorResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "ok": ([int],),
+ }
+ attribute_map = {
+ "ok": "ok",
+ }
+
+ def __init__(self_, ok: Union[List[int], UnsetType]=unset, **kwargs):
+ """
+ Wrapper object with the list of monitor IDs.
+
+ :param ok: An array of Monitor IDs that can be safely deleted.
+ :type ok: [int], optional
+ """
+ if ok is not unset:
+ kwargs["ok"] = ok
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/check_can_delete_slo_response.py b/datadog_api_client/v1/model/check_can_delete_slo_response.py
new file mode 100644
index 0000000000..7a5ca898a8
--- /dev/null
+++ b/datadog_api_client/v1/model/check_can_delete_slo_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.check_can_delete_slo_response_data import CheckCanDeleteSLOResponseData
+
+class CheckCanDeleteSLOResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.check_can_delete_slo_response_data import CheckCanDeleteSLOResponseData
+ return {
+ "data": (CheckCanDeleteSLOResponseData,),
+ "errors": ({str: (str,)},),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ }
+
+ def __init__(self_, data: Union[CheckCanDeleteSLOResponseData, UnsetType]=unset, errors: Union[Dict[str, str], UnsetType]=unset, **kwargs):
+ """
+ A service level objective response containing the requested object.
+
+ :param data: An array of service level objective objects.
+ :type data: CheckCanDeleteSLOResponseData, optional
+
+ :param errors: A mapping of SLO id to it's current usages.
+ :type errors: {str: (str,)}, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if errors is not unset:
+ kwargs["errors"] = errors
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/check_can_delete_slo_response_data.py b/datadog_api_client/v1/model/check_can_delete_slo_response_data.py
new file mode 100644
index 0000000000..32e16cbc09
--- /dev/null
+++ b/datadog_api_client/v1/model/check_can_delete_slo_response_data.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class CheckCanDeleteSLOResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "ok": ([str],),
+ }
+ attribute_map = {
+ "ok": "ok",
+ }
+
+ def __init__(self_, ok: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ An array of service level objective objects.
+
+ :param ok: An array of SLO IDs that can be safely deleted.
+ :type ok: [str], optional
+ """
+ if ok is not unset:
+ kwargs["ok"] = ok
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/check_status_widget_definition.py b/datadog_api_client/v1/model/check_status_widget_definition.py
new file mode 100644
index 0000000000..91312d0ba2
--- /dev/null
+++ b/datadog_api_client/v1/model/check_status_widget_definition.py
@@ -0,0 +1,125 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_grouping import WidgetGrouping
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.check_status_widget_definition_type import CheckStatusWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class CheckStatusWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_grouping import WidgetGrouping
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.check_status_widget_definition_type import CheckStatusWidgetDefinitionType
+ return {
+ "check": (str,),
+ "description": (str,),
+ "group": (str,),
+ "group_by": ([str],),
+ "grouping": (WidgetGrouping,),
+ "tags": ([str],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (CheckStatusWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "check": "check",
+ "description": "description",
+ "group": "group",
+ "group_by": "group_by",
+ "grouping": "grouping",
+ "tags": "tags",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, check: str, grouping: WidgetGrouping, type: CheckStatusWidgetDefinitionType, description: Union[str, UnsetType]=unset, group: Union[str, UnsetType]=unset, group_by: Union[List[str], UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Check status shows the current status or number of results for any check performed.
+
+ :param check: Name of the check to use in the widget.
+ :type check: str
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param group: Group reporting a single check.
+ :type group: str, optional
+
+ :param group_by: List of tag prefixes to group by in the case of a cluster check.
+ :type group_by: [str], optional
+
+ :param grouping: The kind of grouping to use.
+ :type grouping: WidgetGrouping
+
+ :param tags: List of tags used to filter the groups reporting a cluster check.
+ :type tags: [str], optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the check status widget.
+ :type type: CheckStatusWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if group is not unset:
+ kwargs["group"] = group
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.check = check
+ self_.grouping = grouping
+ self_.type = type
diff --git a/datadog_api_client/v1/model/check_status_widget_definition_type.py b/datadog_api_client/v1/model/check_status_widget_definition_type.py
new file mode 100644
index 0000000000..1029eedd3c
--- /dev/null
+++ b/datadog_api_client/v1/model/check_status_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class CheckStatusWidgetDefinitionType(ModelSimple):
+ """
+ Type of the check status widget.
+
+ :param value: If omitted defaults to "check_status". Must be one of ["check_status"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "check_status",
+ }
+ CHECK_STATUS: ClassVar["CheckStatusWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+CheckStatusWidgetDefinitionType.CHECK_STATUS = CheckStatusWidgetDefinitionType("check_status")
diff --git a/datadog_api_client/v1/model/cohort_widget_definition.py b/datadog_api_client/v1/model/cohort_widget_definition.py
new file mode 100644
index 0000000000..3994bd3f13
--- /dev/null
+++ b/datadog_api_client/v1/model/cohort_widget_definition.py
@@ -0,0 +1,106 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_grid_request import RetentionGridRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.cohort_widget_definition_type import CohortWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class CohortWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_grid_request import RetentionGridRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.cohort_widget_definition_type import CohortWidgetDefinitionType
+ return {
+ "description": (str,),
+ "requests": ([RetentionGridRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (CohortWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[RetentionGridRequest], type: CohortWidgetDefinitionType, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The cohort widget visualizes user retention over time.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: List of Cohort widget requests.
+ :type requests: [RetentionGridRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the Cohort widget.
+ :type type: CohortWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/cohort_widget_definition_type.py b/datadog_api_client/v1/model/cohort_widget_definition_type.py
new file mode 100644
index 0000000000..4e68a1ea63
--- /dev/null
+++ b/datadog_api_client/v1/model/cohort_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class CohortWidgetDefinitionType(ModelSimple):
+ """
+ Type of the Cohort widget.
+
+ :param value: If omitted defaults to "cohort". Must be one of ["cohort"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "cohort",
+ }
+ COHORT: ClassVar["CohortWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+CohortWidgetDefinitionType.COHORT = CohortWidgetDefinitionType("cohort")
diff --git a/datadog_api_client/v1/model/comparison_custom_timeframe.py b/datadog_api_client/v1/model/comparison_custom_timeframe.py
new file mode 100644
index 0000000000..f5e0ca7cc0
--- /dev/null
+++ b/datadog_api_client/v1/model/comparison_custom_timeframe.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ComparisonCustomTimeframe(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "_from": (int,),
+ "to": (int,),
+ }
+ attribute_map = {
+ "_from": "from",
+ "to": "to",
+ }
+
+ def __init__(self_, _from: int, to: int, **kwargs):
+ """
+ Fixed time range for a ``custom_timeframe`` comparison.
+
+ :param _from: Start time in milliseconds since epoch.
+ :type _from: int
+
+ :param to: End time in milliseconds since epoch.
+ :type to: int
+ """
+ super().__init__(kwargs)
+
+
+ self_._from = _from
+ self_.to = to
diff --git a/datadog_api_client/v1/model/comparison_duration.py b/datadog_api_client/v1/model/comparison_duration.py
new file mode 100644
index 0000000000..8017f07b0f
--- /dev/null
+++ b/datadog_api_client/v1/model/comparison_duration.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.comparison_custom_timeframe import ComparisonCustomTimeframe
+ from datadog_api_client.v1.model.comparison_duration_type import ComparisonDurationType
+
+class ComparisonDuration(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.comparison_custom_timeframe import ComparisonCustomTimeframe
+ from datadog_api_client.v1.model.comparison_duration_type import ComparisonDurationType
+ return {
+ "custom_timeframe": (ComparisonCustomTimeframe,),
+ "type": (ComparisonDurationType,),
+ }
+ attribute_map = {
+ "custom_timeframe": "custom_timeframe",
+ "type": "type",
+ }
+
+ def __init__(self_, type: ComparisonDurationType, custom_timeframe: Union[ComparisonCustomTimeframe, UnsetType]=unset, **kwargs):
+ """
+ The comparison period. Use a preset ``type`` value or set ``type`` to ``custom_timeframe`` and provide ``custom_timeframe`` with explicit millisecond epoch bounds.
+
+ :param custom_timeframe: Fixed time range for a ``custom_timeframe`` comparison.
+ :type custom_timeframe: ComparisonCustomTimeframe, optional
+
+ :param type: The comparison window type.
+ :type type: ComparisonDurationType
+ """
+ if custom_timeframe is not unset:
+ kwargs["custom_timeframe"] = custom_timeframe
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/comparison_duration_type.py b/datadog_api_client/v1/model/comparison_duration_type.py
new file mode 100644
index 0000000000..d1f75466bc
--- /dev/null
+++ b/datadog_api_client/v1/model/comparison_duration_type.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ComparisonDurationType(ModelSimple):
+ """
+ The comparison window type.
+
+ :param value: Must be one of ["previous_timeframe", "custom_timeframe", "previous_day", "previous_week", "previous_month"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "previous_timeframe",
+ "custom_timeframe",
+ "previous_day",
+ "previous_week",
+ "previous_month",
+ }
+ PREVIOUS_TIMEFRAME: ClassVar["ComparisonDurationType"]
+ CUSTOM_TIMEFRAME: ClassVar["ComparisonDurationType"]
+ PREVIOUS_DAY: ClassVar["ComparisonDurationType"]
+ PREVIOUS_WEEK: ClassVar["ComparisonDurationType"]
+ PREVIOUS_MONTH: ClassVar["ComparisonDurationType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ComparisonDurationType.PREVIOUS_TIMEFRAME = ComparisonDurationType("previous_timeframe")
+ComparisonDurationType.CUSTOM_TIMEFRAME = ComparisonDurationType("custom_timeframe")
+ComparisonDurationType.PREVIOUS_DAY = ComparisonDurationType("previous_day")
+ComparisonDurationType.PREVIOUS_WEEK = ComparisonDurationType("previous_week")
+ComparisonDurationType.PREVIOUS_MONTH = ComparisonDurationType("previous_month")
diff --git a/datadog_api_client/v1/model/content_encoding.py b/datadog_api_client/v1/model/content_encoding.py
new file mode 100644
index 0000000000..c01b1539e3
--- /dev/null
+++ b/datadog_api_client/v1/model/content_encoding.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ContentEncoding(ModelSimple):
+ """
+ HTTP header used to compress the media-type.
+
+ :param value: Must be one of ["gzip", "deflate"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "gzip",
+ "deflate",
+ }
+ GZIP: ClassVar["ContentEncoding"]
+ DEFLATE: ClassVar["ContentEncoding"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ContentEncoding.GZIP = ContentEncoding("gzip")
+ContentEncoding.DEFLATE = ContentEncoding("deflate")
diff --git a/datadog_api_client/v1/model/creator.py b/datadog_api_client/v1/model/creator.py
new file mode 100644
index 0000000000..d023053e67
--- /dev/null
+++ b/datadog_api_client/v1/model/creator.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class Creator(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "email": (str,),
+ "handle": (str,),
+ "name": (str, none_type),
+ }
+ attribute_map = {
+ "email": "email",
+ "handle": "handle",
+ "name": "name",
+ }
+
+ def __init__(self_, email: Union[str, UnsetType]=unset, handle: Union[str, UnsetType]=unset, name: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ Object describing the creator of the shared element.
+
+ :param email: Email of the creator.
+ :type email: str, optional
+
+ :param handle: Handle of the creator.
+ :type handle: str, optional
+
+ :param name: Name of the creator.
+ :type name: str, none_type, optional
+ """
+ if email is not unset:
+ kwargs["email"] = email
+ if handle is not unset:
+ kwargs["handle"] = handle
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard.py b/datadog_api_client/v1/model/dashboard.py
new file mode 100644
index 0000000000..01a348eff5
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard.py
@@ -0,0 +1,248 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_default_timeframe_setting import DashboardDefaultTimeframeSetting
+ from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
+ from datadog_api_client.v1.model.dashboard_reflow_type import DashboardReflowType
+ from datadog_api_client.v1.model.dashboard_tab import DashboardTab
+ from datadog_api_client.v1.model.dashboard_template_variable_preset import DashboardTemplateVariablePreset
+ from datadog_api_client.v1.model.dashboard_template_variable import DashboardTemplateVariable
+ from datadog_api_client.v1.model.widget import Widget
+ from datadog_api_client.v1.model.dashboard_live_timeframe import DashboardLiveTimeframe
+ from datadog_api_client.v1.model.dashboard_fixed_timeframe import DashboardFixedTimeframe
+ from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition
+ from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition
+ from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+ from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+ from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition
+ from datadog_api_client.v1.model.cohort_widget_definition import CohortWidgetDefinition
+ from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+ from datadog_api_client.v1.model.event_stream_widget_definition import EventStreamWidgetDefinition
+ from datadog_api_client.v1.model.event_timeline_widget_definition import EventTimelineWidgetDefinition
+ from datadog_api_client.v1.model.free_text_widget_definition import FreeTextWidgetDefinition
+ from datadog_api_client.v1.model.funnel_widget_definition import FunnelWidgetDefinition
+ from datadog_api_client.v1.model.product_analytics_funnel_widget_definition import ProductAnalyticsFunnelWidgetDefinition
+ from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+ from datadog_api_client.v1.model.group_widget_definition import GroupWidgetDefinition
+ from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+ from datadog_api_client.v1.model.host_map_widget_definition import HostMapWidgetDefinition
+ from datadog_api_client.v1.model.i_frame_widget_definition import IFrameWidgetDefinition
+ from datadog_api_client.v1.model.image_widget_definition import ImageWidgetDefinition
+ from datadog_api_client.v1.model.list_stream_widget_definition import ListStreamWidgetDefinition
+ from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+ from datadog_api_client.v1.model.monitor_summary_widget_definition import MonitorSummaryWidgetDefinition
+ from datadog_api_client.v1.model.note_widget_definition import NoteWidgetDefinition
+ from datadog_api_client.v1.model.powerpack_widget_definition import PowerpackWidgetDefinition
+ from datadog_api_client.v1.model.point_plot_widget_definition import PointPlotWidgetDefinition
+ from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+ from datadog_api_client.v1.model.retention_curve_widget_definition import RetentionCurveWidgetDefinition
+ from datadog_api_client.v1.model.run_workflow_widget_definition import RunWorkflowWidgetDefinition
+ from datadog_api_client.v1.model.slo_list_widget_definition import SLOListWidgetDefinition
+ from datadog_api_client.v1.model.slo_widget_definition import SLOWidgetDefinition
+ from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+ from datadog_api_client.v1.model.sankey_widget_definition import SankeyWidgetDefinition
+ from datadog_api_client.v1.model.service_map_widget_definition import ServiceMapWidgetDefinition
+ from datadog_api_client.v1.model.service_summary_widget_definition import ServiceSummaryWidgetDefinition
+ from datadog_api_client.v1.model.split_graph_widget_definition import SplitGraphWidgetDefinition
+ from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+ from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.topology_map_widget_definition import TopologyMapWidgetDefinition
+ from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+ from datadog_api_client.v1.model.wildcard_widget_definition import WildcardWidgetDefinition
+
+class Dashboard(ModelNormal):
+ validations = {
+ "tabs": {
+ "max_items": 100,
+ },
+ "tags": {
+ "max_items": 5,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_default_timeframe_setting import DashboardDefaultTimeframeSetting
+ from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
+ from datadog_api_client.v1.model.dashboard_reflow_type import DashboardReflowType
+ from datadog_api_client.v1.model.dashboard_tab import DashboardTab
+ from datadog_api_client.v1.model.dashboard_template_variable_preset import DashboardTemplateVariablePreset
+ from datadog_api_client.v1.model.dashboard_template_variable import DashboardTemplateVariable
+ from datadog_api_client.v1.model.widget import Widget
+ return {
+ "author_handle": (str,),
+ "author_name": (str, none_type),
+ "created_at": (datetime,),
+ "default_timeframe": (DashboardDefaultTimeframeSetting,),
+ "description": (str, none_type),
+ "id": (str,),
+ "is_read_only": (bool,),
+ "layout_type": (DashboardLayoutType,),
+ "modified_at": (datetime,),
+ "notify_list": ([str], none_type),
+ "reflow_type": (DashboardReflowType,),
+ "restricted_roles": ([str],),
+ "tabs": ([DashboardTab], none_type),
+ "tags": ([str], none_type),
+ "template_variable_presets": ([DashboardTemplateVariablePreset], none_type),
+ "template_variables": ([DashboardTemplateVariable], none_type),
+ "title": (str,),
+ "url": (str,),
+ "widgets": ([Widget],),
+ }
+ attribute_map = {
+ "author_handle": "author_handle",
+ "author_name": "author_name",
+ "created_at": "created_at",
+ "default_timeframe": "default_timeframe",
+ "description": "description",
+ "id": "id",
+ "is_read_only": "is_read_only",
+ "layout_type": "layout_type",
+ "modified_at": "modified_at",
+ "notify_list": "notify_list",
+ "reflow_type": "reflow_type",
+ "restricted_roles": "restricted_roles",
+ "tabs": "tabs",
+ "tags": "tags",
+ "template_variable_presets": "template_variable_presets",
+ "template_variables": "template_variables",
+ "title": "title",
+ "url": "url",
+ "widgets": "widgets",
+ }
+ read_only_vars = {
+ "author_handle",
+ "author_name",
+ "created_at",
+ "id",
+ "modified_at",
+ "url",
+ }
+
+ def __init__(self_, layout_type: DashboardLayoutType, title: str, widgets: List[Widget], author_handle: Union[str, UnsetType]=unset, author_name: Union[str, none_type, UnsetType]=unset, created_at: Union[datetime, UnsetType]=unset, default_timeframe: Union[DashboardDefaultTimeframeSetting, DashboardLiveTimeframe, DashboardFixedTimeframe, UnsetType]=unset, description: Union[str, none_type, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_read_only: Union[bool, UnsetType]=unset, modified_at: Union[datetime, UnsetType]=unset, notify_list: Union[List[str], none_type, UnsetType]=unset, reflow_type: Union[DashboardReflowType, UnsetType]=unset, restricted_roles: Union[List[str], UnsetType]=unset, tabs: Union[List[DashboardTab], none_type, UnsetType]=unset, tags: Union[List[str], none_type, UnsetType]=unset, template_variable_presets: Union[List[DashboardTemplateVariablePreset], none_type, UnsetType]=unset, template_variables: Union[List[DashboardTemplateVariable], none_type, UnsetType]=unset, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A dashboard is Datadog’s tool for visually tracking, analyzing, and displaying
+ key performance metrics, which enable you to monitor the health of your infrastructure.
+
+ :param author_handle: Identifier of the dashboard author.
+ :type author_handle: str, optional
+
+ :param author_name: Name of the dashboard author.
+ :type author_name: str, none_type, optional
+
+ :param created_at: Creation date of the dashboard.
+ :type created_at: datetime, optional
+
+ :param default_timeframe: The default timeframe applied when opening the dashboard. Set to ``null`` to clear the dashboard's default timeframe.
+ :type default_timeframe: DashboardDefaultTimeframeSetting, optional
+
+ :param description: Description of the dashboard.
+ :type description: str, none_type, optional
+
+ :param id: ID of the dashboard.
+ :type id: str, optional
+
+ :param is_read_only: Whether this dashboard is read-only. If True, only the author and admins can make changes to it.
+
+ This property is deprecated; please use the `Restriction Policies API `_ instead to manage write authorization for individual dashboards. **Deprecated**.
+ :type is_read_only: bool, optional
+
+ :param layout_type: Layout type of the dashboard.
+ :type layout_type: DashboardLayoutType
+
+ :param modified_at: Modification date of the dashboard.
+ :type modified_at: datetime, optional
+
+ :param notify_list: List of handles of users to notify when changes are made to this dashboard.
+ :type notify_list: [str], none_type, optional
+
+ :param reflow_type: Reflow type for a **new dashboard layout** dashboard. Set this only when layout type is 'ordered'.
+ If set to 'fixed', the dashboard expects all widgets to have a layout, and if it's set to 'auto',
+ widgets should not have layouts.
+ :type reflow_type: DashboardReflowType, optional
+
+ :param restricted_roles: A list of role identifiers. Only the author and users associated with at least one of these roles can edit this dashboard.
+ :type restricted_roles: [str], optional
+
+ :param tabs: List of tabs for organizing dashboard widgets into groups.
+ :type tabs: [DashboardTab], none_type, optional
+
+ :param tags: List of team names representing ownership of a dashboard.
+ :type tags: [str], none_type, optional
+
+ :param template_variable_presets: Array of template variables saved views.
+ :type template_variable_presets: [DashboardTemplateVariablePreset], none_type, optional
+
+ :param template_variables: List of template variables for this dashboard.
+ :type template_variables: [DashboardTemplateVariable], none_type, optional
+
+ :param title: Title of the dashboard.
+ :type title: str
+
+ :param url: The URL of the dashboard.
+ :type url: str, optional
+
+ :param widgets: List of widgets to display on the dashboard.
+ :type widgets: [Widget]
+ """
+ if author_handle is not unset:
+ kwargs["author_handle"] = author_handle
+ if author_name is not unset:
+ kwargs["author_name"] = author_name
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if default_timeframe is not unset:
+ kwargs["default_timeframe"] = default_timeframe
+ if description is not unset:
+ kwargs["description"] = description
+ if id is not unset:
+ kwargs["id"] = id
+ if is_read_only is not unset:
+ kwargs["is_read_only"] = is_read_only
+ if modified_at is not unset:
+ kwargs["modified_at"] = modified_at
+ if notify_list is not unset:
+ kwargs["notify_list"] = notify_list
+ if reflow_type is not unset:
+ kwargs["reflow_type"] = reflow_type
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ if tabs is not unset:
+ kwargs["tabs"] = tabs
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if template_variable_presets is not unset:
+ kwargs["template_variable_presets"] = template_variable_presets
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
+ self_.layout_type = layout_type
+ self_.title = title
+ self_.widgets = widgets
diff --git a/datadog_api_client/v1/model/dashboard_bulk_action_data.py b/datadog_api_client/v1/model/dashboard_bulk_action_data.py
new file mode 100644
index 0000000000..8b4f6909cb
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_bulk_action_data.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_resource_type import DashboardResourceType
+
+class DashboardBulkActionData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_resource_type import DashboardResourceType
+ return {
+ "id": (str,),
+ "type": (DashboardResourceType,),
+ }
+ attribute_map = {
+ "id": "id",
+ "type": "type",
+ }
+
+ def __init__(self_, id: str, type: DashboardResourceType, **kwargs):
+ """
+ Dashboard bulk action request data.
+
+ :param id: Dashboard resource ID.
+ :type id: str
+
+ :param type: Dashboard resource type.
+ :type type: DashboardResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.id = id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/dashboard_bulk_action_data_list.py b/datadog_api_client/v1/model/dashboard_bulk_action_data_list.py
new file mode 100644
index 0000000000..b6c7c5bce4
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_bulk_action_data_list.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardBulkActionDataList(ModelSimple):
+ """
+ List of dashboard bulk action request data objects.
+
+
+ :type value: [DashboardBulkActionData]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_bulk_action_data import DashboardBulkActionData
+ return {
+ "value": ([DashboardBulkActionData],),
+ }
diff --git a/datadog_api_client/v1/model/dashboard_bulk_delete_request.py b/datadog_api_client/v1/model/dashboard_bulk_delete_request.py
new file mode 100644
index 0000000000..a927813dcd
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_bulk_delete_request.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_bulk_action_data_list import DashboardBulkActionDataList
+
+class DashboardBulkDeleteRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_bulk_action_data_list import DashboardBulkActionDataList
+ return {
+ "data": (DashboardBulkActionDataList,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: DashboardBulkActionDataList, **kwargs):
+ """
+ Dashboard bulk delete request body.
+
+ :param data: List of dashboard bulk action request data objects.
+ :type data: DashboardBulkActionDataList
+ """
+ super().__init__(kwargs)
+
+
+ self_.data = data
diff --git a/datadog_api_client/v1/model/dashboard_default_timeframe_setting.py b/datadog_api_client/v1/model/dashboard_default_timeframe_setting.py
new file mode 100644
index 0000000000..59e9a6693e
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_default_timeframe_setting.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardDefaultTimeframeSetting(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The default timeframe applied when opening the dashboard. Set to ``null`` to clear the dashboard's default timeframe.
+
+ :param type: Type of live timeframe.
+ :type type: DashboardLiveTimeframeType
+
+ :param unit: Unit of the time span.
+ :type unit: WidgetLiveSpanUnit
+
+ :param value: Value of the live timeframe span.
+ :type value: int
+
+ :param _from: Start time in milliseconds since epoch.
+ :type _from: int
+
+ :param to: End time in milliseconds since epoch.
+ :type to: int
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.dashboard_live_timeframe import DashboardLiveTimeframe
+ from datadog_api_client.v1.model.dashboard_fixed_timeframe import DashboardFixedTimeframe
+ return {
+ "oneOf": [
+ DashboardLiveTimeframe,
+ DashboardFixedTimeframe,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/dashboard_delete_response.py b/datadog_api_client/v1/model/dashboard_delete_response.py
new file mode 100644
index 0000000000..5298d137b5
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_delete_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardDeleteResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "deleted_dashboard_id": (str,),
+ }
+ attribute_map = {
+ "deleted_dashboard_id": "deleted_dashboard_id",
+ }
+
+ def __init__(self_, deleted_dashboard_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Response from the delete dashboard call.
+
+ :param deleted_dashboard_id: ID of the deleted dashboard.
+ :type deleted_dashboard_id: str, optional
+ """
+ if deleted_dashboard_id is not unset:
+ kwargs["deleted_dashboard_id"] = deleted_dashboard_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_fixed_timeframe.py b/datadog_api_client/v1/model/dashboard_fixed_timeframe.py
new file mode 100644
index 0000000000..21d417a984
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_fixed_timeframe.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_fixed_timeframe_type import DashboardFixedTimeframeType
+
+class DashboardFixedTimeframe(ModelNormal):
+ validations = {
+ "_from": {
+ "inclusive_minimum": 0,
+ },
+ "to": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_fixed_timeframe_type import DashboardFixedTimeframeType
+ return {
+ "_from": (int,),
+ "to": (int,),
+ "type": (DashboardFixedTimeframeType,),
+ }
+ attribute_map = {
+ "_from": "from",
+ "to": "to",
+ "type": "type",
+ }
+
+ def __init__(self_, _from: int, to: int, type: DashboardFixedTimeframeType, **kwargs):
+ """
+ A fixed dashboard timeframe.
+
+ :param _from: Start time in milliseconds since epoch.
+ :type _from: int
+
+ :param to: End time in milliseconds since epoch.
+ :type to: int
+
+ :param type: Type of fixed timeframe.
+ :type type: DashboardFixedTimeframeType
+ """
+ super().__init__(kwargs)
+
+
+ self_._from = _from
+ self_.to = to
+ self_.type = type
diff --git a/datadog_api_client/v1/model/dashboard_fixed_timeframe_type.py b/datadog_api_client/v1/model/dashboard_fixed_timeframe_type.py
new file mode 100644
index 0000000000..eb4d2510d3
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_fixed_timeframe_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardFixedTimeframeType(ModelSimple):
+ """
+ Type of fixed timeframe.
+
+ :param value: If omitted defaults to "fixed". Must be one of ["fixed"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "fixed",
+ }
+ FIXED: ClassVar["DashboardFixedTimeframeType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardFixedTimeframeType.FIXED = DashboardFixedTimeframeType("fixed")
diff --git a/datadog_api_client/v1/model/dashboard_global_time.py b/datadog_api_client/v1/model/dashboard_global_time.py
new file mode 100644
index 0000000000..1ce47a3784
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_global_time.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_global_time_live_span import DashboardGlobalTimeLiveSpan
+
+class DashboardGlobalTime(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_global_time_live_span import DashboardGlobalTimeLiveSpan
+ return {
+ "live_span": (DashboardGlobalTimeLiveSpan,),
+ }
+ attribute_map = {
+ "live_span": "live_span",
+ }
+
+ def __init__(self_, live_span: Union[DashboardGlobalTimeLiveSpan, UnsetType]=unset, **kwargs):
+ """
+ Object containing the live span selection for the dashboard.
+
+ :param live_span: Dashboard global time live_span selection
+ :type live_span: DashboardGlobalTimeLiveSpan, optional
+ """
+ if live_span is not unset:
+ kwargs["live_span"] = live_span
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_global_time_live_span.py b/datadog_api_client/v1/model/dashboard_global_time_live_span.py
new file mode 100644
index 0000000000..297096dde7
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_global_time_live_span.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardGlobalTimeLiveSpan(ModelSimple):
+ """
+ Dashboard global time live_span selection
+
+ :param value: Must be one of ["15m", "1h", "4h", "1d", "2d", "1w", "1mo", "3mo"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "15m",
+ "1h",
+ "4h",
+ "1d",
+ "2d",
+ "1w",
+ "1mo",
+ "3mo",
+ }
+ PAST_FIFTEEN_MINUTES: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_ONE_HOUR: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_FOUR_HOURS: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_ONE_DAY: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_TWO_DAYS: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_ONE_WEEK: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_ONE_MONTH: ClassVar["DashboardGlobalTimeLiveSpan"]
+ PAST_THREE_MONTHS: ClassVar["DashboardGlobalTimeLiveSpan"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardGlobalTimeLiveSpan.PAST_FIFTEEN_MINUTES = DashboardGlobalTimeLiveSpan("15m")
+DashboardGlobalTimeLiveSpan.PAST_ONE_HOUR = DashboardGlobalTimeLiveSpan("1h")
+DashboardGlobalTimeLiveSpan.PAST_FOUR_HOURS = DashboardGlobalTimeLiveSpan("4h")
+DashboardGlobalTimeLiveSpan.PAST_ONE_DAY = DashboardGlobalTimeLiveSpan("1d")
+DashboardGlobalTimeLiveSpan.PAST_TWO_DAYS = DashboardGlobalTimeLiveSpan("2d")
+DashboardGlobalTimeLiveSpan.PAST_ONE_WEEK = DashboardGlobalTimeLiveSpan("1w")
+DashboardGlobalTimeLiveSpan.PAST_ONE_MONTH = DashboardGlobalTimeLiveSpan("1mo")
+DashboardGlobalTimeLiveSpan.PAST_THREE_MONTHS = DashboardGlobalTimeLiveSpan("3mo")
diff --git a/datadog_api_client/v1/model/dashboard_invite_type.py b/datadog_api_client/v1/model/dashboard_invite_type.py
new file mode 100644
index 0000000000..dcd76022e1
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_invite_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardInviteType(ModelSimple):
+ """
+ Type for shared dashboard invitation request body.
+
+ :param value: If omitted defaults to "public_dashboard_invitation". Must be one of ["public_dashboard_invitation"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "public_dashboard_invitation",
+ }
+ PUBLIC_DASHBOARD_INVITATION: ClassVar["DashboardInviteType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardInviteType.PUBLIC_DASHBOARD_INVITATION = DashboardInviteType("public_dashboard_invitation")
diff --git a/datadog_api_client/v1/model/dashboard_layout_type.py b/datadog_api_client/v1/model/dashboard_layout_type.py
new file mode 100644
index 0000000000..037c409e94
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_layout_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardLayoutType(ModelSimple):
+ """
+ Layout type of the dashboard.
+
+ :param value: Must be one of ["ordered", "free"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "ordered",
+ "free",
+ }
+ ORDERED: ClassVar["DashboardLayoutType"]
+ FREE: ClassVar["DashboardLayoutType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardLayoutType.ORDERED = DashboardLayoutType("ordered")
+DashboardLayoutType.FREE = DashboardLayoutType("free")
diff --git a/datadog_api_client/v1/model/dashboard_list.py b/datadog_api_client/v1/model/dashboard_list.py
new file mode 100644
index 0000000000..be129e268f
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_list.py
@@ -0,0 +1,106 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.creator import Creator
+
+class DashboardList(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.creator import Creator
+ return {
+ "author": (Creator,),
+ "created": (datetime,),
+ "dashboard_count": (int,),
+ "id": (int,),
+ "is_favorite": (bool,),
+ "modified": (datetime,),
+ "name": (str,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "author": "author",
+ "created": "created",
+ "dashboard_count": "dashboard_count",
+ "id": "id",
+ "is_favorite": "is_favorite",
+ "modified": "modified",
+ "name": "name",
+ "type": "type",
+ }
+ read_only_vars = {
+ "author",
+ "created",
+ "dashboard_count",
+ "id",
+ "is_favorite",
+ "modified",
+ "type",
+ }
+
+ def __init__(self_, name: str, author: Union[Creator, UnsetType]=unset, created: Union[datetime, UnsetType]=unset, dashboard_count: Union[int, UnsetType]=unset, id: Union[int, UnsetType]=unset, is_favorite: Union[bool, UnsetType]=unset, modified: Union[datetime, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Your Datadog Dashboards.
+
+ :param author: Object describing the creator of the shared element.
+ :type author: Creator, optional
+
+ :param created: Date of creation of the dashboard list.
+ :type created: datetime, optional
+
+ :param dashboard_count: The number of dashboards in the list.
+ :type dashboard_count: int, optional
+
+ :param id: The ID of the dashboard list.
+ :type id: int, optional
+
+ :param is_favorite: Whether or not the list is in the favorites.
+ :type is_favorite: bool, optional
+
+ :param modified: Date of last edition of the dashboard list.
+ :type modified: datetime, optional
+
+ :param name: The name of the dashboard list.
+ :type name: str
+
+ :param type: The type of dashboard list.
+ :type type: str, optional
+ """
+ if author is not unset:
+ kwargs["author"] = author
+ if created is not unset:
+ kwargs["created"] = created
+ if dashboard_count is not unset:
+ kwargs["dashboard_count"] = dashboard_count
+ if id is not unset:
+ kwargs["id"] = id
+ if is_favorite is not unset:
+ kwargs["is_favorite"] = is_favorite
+ if modified is not unset:
+ kwargs["modified"] = modified
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/dashboard_list_delete_response.py b/datadog_api_client/v1/model/dashboard_list_delete_response.py
new file mode 100644
index 0000000000..30db35e4f9
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_list_delete_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardListDeleteResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "deleted_dashboard_list_id": (int,),
+ }
+ attribute_map = {
+ "deleted_dashboard_list_id": "deleted_dashboard_list_id",
+ }
+
+ def __init__(self_, deleted_dashboard_list_id: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Deleted dashboard details.
+
+ :param deleted_dashboard_list_id: ID of the deleted dashboard list.
+ :type deleted_dashboard_list_id: int, optional
+ """
+ if deleted_dashboard_list_id is not unset:
+ kwargs["deleted_dashboard_list_id"] = deleted_dashboard_list_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_list_list_response.py b/datadog_api_client/v1/model/dashboard_list_list_response.py
new file mode 100644
index 0000000000..d7860c472d
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_list_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_list import DashboardList
+
+class DashboardListListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_list import DashboardList
+ return {
+ "dashboard_lists": ([DashboardList],),
+ }
+ attribute_map = {
+ "dashboard_lists": "dashboard_lists",
+ }
+
+ def __init__(self_, dashboard_lists: Union[List[DashboardList], UnsetType]=unset, **kwargs):
+ """
+ Information on your dashboard lists.
+
+ :param dashboard_lists: List of all your dashboard lists.
+ :type dashboard_lists: [DashboardList], optional
+ """
+ if dashboard_lists is not unset:
+ kwargs["dashboard_lists"] = dashboard_lists
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_live_timeframe.py b/datadog_api_client/v1/model/dashboard_live_timeframe.py
new file mode 100644
index 0000000000..e14a238315
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_live_timeframe.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_live_timeframe_type import DashboardLiveTimeframeType
+ from datadog_api_client.v1.model.widget_live_span_unit import WidgetLiveSpanUnit
+
+class DashboardLiveTimeframe(ModelNormal):
+ validations = {
+ "value": {
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_live_timeframe_type import DashboardLiveTimeframeType
+ from datadog_api_client.v1.model.widget_live_span_unit import WidgetLiveSpanUnit
+ return {
+ "type": (DashboardLiveTimeframeType,),
+ "unit": (WidgetLiveSpanUnit,),
+ "value": (int,),
+ }
+ attribute_map = {
+ "type": "type",
+ "unit": "unit",
+ "value": "value",
+ }
+
+ def __init__(self_, type: DashboardLiveTimeframeType, unit: WidgetLiveSpanUnit, value: int, **kwargs):
+ """
+ A live dashboard timeframe.
+
+ :param type: Type of live timeframe.
+ :type type: DashboardLiveTimeframeType
+
+ :param unit: Unit of the time span.
+ :type unit: WidgetLiveSpanUnit
+
+ :param value: Value of the live timeframe span.
+ :type value: int
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.unit = unit
+ self_.value = value
diff --git a/datadog_api_client/v1/model/dashboard_live_timeframe_type.py b/datadog_api_client/v1/model/dashboard_live_timeframe_type.py
new file mode 100644
index 0000000000..42d4ce60b6
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_live_timeframe_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardLiveTimeframeType(ModelSimple):
+ """
+ Type of live timeframe.
+
+ :param value: If omitted defaults to "live". Must be one of ["live"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "live",
+ }
+ LIVE: ClassVar["DashboardLiveTimeframeType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardLiveTimeframeType.LIVE = DashboardLiveTimeframeType("live")
diff --git a/datadog_api_client/v1/model/dashboard_reflow_type.py b/datadog_api_client/v1/model/dashboard_reflow_type.py
new file mode 100644
index 0000000000..57767d48d7
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_reflow_type.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardReflowType(ModelSimple):
+ """
+ Reflow type for a **new dashboard layout** dashboard. Set this only when layout type is 'ordered'.
+ If set to 'fixed', the dashboard expects all widgets to have a layout, and if it's set to 'auto',
+ widgets should not have layouts.
+
+ :param value: Must be one of ["auto", "fixed"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "auto",
+ "fixed",
+ }
+ AUTO: ClassVar["DashboardReflowType"]
+ FIXED: ClassVar["DashboardReflowType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardReflowType.AUTO = DashboardReflowType("auto")
+DashboardReflowType.FIXED = DashboardReflowType("fixed")
diff --git a/datadog_api_client/v1/model/dashboard_resource_type.py b/datadog_api_client/v1/model/dashboard_resource_type.py
new file mode 100644
index 0000000000..6ab355089e
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_resource_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardResourceType(ModelSimple):
+ """
+ Dashboard resource type.
+
+ :param value: If omitted defaults to "dashboard". Must be one of ["dashboard"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "dashboard",
+ }
+ DASHBOARD: ClassVar["DashboardResourceType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardResourceType.DASHBOARD = DashboardResourceType("dashboard")
diff --git a/datadog_api_client/v1/model/dashboard_restore_request.py b/datadog_api_client/v1/model/dashboard_restore_request.py
new file mode 100644
index 0000000000..c59d36330e
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_restore_request.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_bulk_action_data_list import DashboardBulkActionDataList
+
+class DashboardRestoreRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_bulk_action_data_list import DashboardBulkActionDataList
+ return {
+ "data": (DashboardBulkActionDataList,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: DashboardBulkActionDataList, **kwargs):
+ """
+ Dashboard restore request body.
+
+ :param data: List of dashboard bulk action request data objects.
+ :type data: DashboardBulkActionDataList
+ """
+ super().__init__(kwargs)
+
+
+ self_.data = data
diff --git a/datadog_api_client/v1/model/dashboard_share_type.py b/datadog_api_client/v1/model/dashboard_share_type.py
new file mode 100644
index 0000000000..41ba45c0e5
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_share_type.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardShareType(ModelSimple):
+ """
+ Type of sharing access (either open to anyone who has the public URL or invite-only).
+
+ :param value: Must be one of ["open", "invite", "embed"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "open",
+ "invite",
+ "embed",
+ }
+ OPEN: ClassVar["DashboardShareType"]
+ INVITE: ClassVar["DashboardShareType"]
+ EMBED: ClassVar["DashboardShareType"]
+
+
+ _nullable = True
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardShareType.OPEN = DashboardShareType("open")
+DashboardShareType.INVITE = DashboardShareType("invite")
+DashboardShareType.EMBED = DashboardShareType("embed")
diff --git a/datadog_api_client/v1/model/dashboard_summary.py b/datadog_api_client/v1/model/dashboard_summary.py
new file mode 100644
index 0000000000..147a19530c
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_summary.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_summary_definition import DashboardSummaryDefinition
+
+class DashboardSummary(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_summary_definition import DashboardSummaryDefinition
+ return {
+ "dashboards": ([DashboardSummaryDefinition],),
+ }
+ attribute_map = {
+ "dashboards": "dashboards",
+ }
+
+ def __init__(self_, dashboards: Union[List[DashboardSummaryDefinition], UnsetType]=unset, **kwargs):
+ """
+ Dashboard summary response.
+
+ :param dashboards: List of dashboard definitions.
+ :type dashboards: [DashboardSummaryDefinition], optional
+ """
+ if dashboards is not unset:
+ kwargs["dashboards"] = dashboards
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_summary_definition.py b/datadog_api_client/v1/model/dashboard_summary_definition.py
new file mode 100644
index 0000000000..7d7e09ea79
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_summary_definition.py
@@ -0,0 +1,107 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
+
+class DashboardSummaryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
+ return {
+ "author_handle": (str,),
+ "created_at": (datetime,),
+ "description": (str, none_type),
+ "id": (str,),
+ "is_read_only": (bool,),
+ "layout_type": (DashboardLayoutType,),
+ "modified_at": (datetime,),
+ "title": (str,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "author_handle": "author_handle",
+ "created_at": "created_at",
+ "description": "description",
+ "id": "id",
+ "is_read_only": "is_read_only",
+ "layout_type": "layout_type",
+ "modified_at": "modified_at",
+ "title": "title",
+ "url": "url",
+ }
+
+ def __init__(self_, author_handle: Union[str, UnsetType]=unset, created_at: Union[datetime, UnsetType]=unset, description: Union[str, none_type, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_read_only: Union[bool, UnsetType]=unset, layout_type: Union[DashboardLayoutType, UnsetType]=unset, modified_at: Union[datetime, UnsetType]=unset, title: Union[str, UnsetType]=unset, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Dashboard definition.
+
+ :param author_handle: Identifier of the dashboard author.
+ :type author_handle: str, optional
+
+ :param created_at: Creation date of the dashboard.
+ :type created_at: datetime, optional
+
+ :param description: Description of the dashboard.
+ :type description: str, none_type, optional
+
+ :param id: Dashboard identifier.
+ :type id: str, optional
+
+ :param is_read_only: Whether this dashboard is read-only. If True, only the author and admins can make changes to it.
+
+ This property is deprecated; please use the `Restriction Policies API `_ instead to manage write authorization for individual dashboards. **Deprecated**.
+ :type is_read_only: bool, optional
+
+ :param layout_type: Layout type of the dashboard.
+ :type layout_type: DashboardLayoutType, optional
+
+ :param modified_at: Modification date of the dashboard.
+ :type modified_at: datetime, optional
+
+ :param title: Title of the dashboard.
+ :type title: str, optional
+
+ :param url: URL of the dashboard.
+ :type url: str, optional
+ """
+ if author_handle is not unset:
+ kwargs["author_handle"] = author_handle
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if description is not unset:
+ kwargs["description"] = description
+ if id is not unset:
+ kwargs["id"] = id
+ if is_read_only is not unset:
+ kwargs["is_read_only"] = is_read_only
+ if layout_type is not unset:
+ kwargs["layout_type"] = layout_type
+ if modified_at is not unset:
+ kwargs["modified_at"] = modified_at
+ if title is not unset:
+ kwargs["title"] = title
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_tab.py b/datadog_api_client/v1/model/dashboard_tab.py
new file mode 100644
index 0000000000..33971f38c0
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_tab.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardTab(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 100,
+ "min_length": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (UUID,),
+ "name": (str,),
+ "widget_ids": ([int],),
+ }
+ attribute_map = {
+ "id": "id",
+ "name": "name",
+ "widget_ids": "widget_ids",
+ }
+
+ def __init__(self_, id: UUID, name: str, widget_ids: List[int], **kwargs):
+ """
+ Dashboard tab for organizing widgets.
+
+ :param id: UUID of the tab.
+ :type id: UUID
+
+ :param name: Name of the tab.
+ :type name: str
+
+ :param widget_ids: List of widget IDs belonging to this tab. The backend also accepts positional references in @N format (1-indexed) as a convenience for Terraform and other declarative tools.
+ :type widget_ids: [int]
+ """
+ super().__init__(kwargs)
+
+
+ self_.id = id
+ self_.name = name
+ self_.widget_ids = widget_ids
diff --git a/datadog_api_client/v1/model/dashboard_template_variable.py b/datadog_api_client/v1/model/dashboard_template_variable.py
new file mode 100644
index 0000000000..e422d236ce
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_template_variable.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardTemplateVariable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "available_values": ([str], none_type),
+ "default": (str, none_type),
+ "defaults": ([str],),
+ "name": (str,),
+ "prefix": (str, none_type),
+ "type": (str, none_type),
+ }
+ attribute_map = {
+ "available_values": "available_values",
+ "default": "default",
+ "defaults": "defaults",
+ "name": "name",
+ "prefix": "prefix",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, available_values: Union[List[str], none_type, UnsetType]=unset, default: Union[str, none_type, UnsetType]=unset, defaults: Union[List[str], UnsetType]=unset, prefix: Union[str, none_type, UnsetType]=unset, type: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ Template variable.
+
+ :param available_values: The list of values that the template variable drop-down is limited to.
+ :type available_values: [str], none_type, optional
+
+ :param default: (deprecated) The default value for the template variable on dashboard load. Cannot be used in conjunction with ``defaults``. **Deprecated**.
+ :type default: str, none_type, optional
+
+ :param defaults: One or many default values for template variables on load. If more than one default is specified, they will be unioned together with ``OR``. Cannot be used in conjunction with ``default``.
+ :type defaults: [str], optional
+
+ :param name: The name of the variable.
+ :type name: str
+
+ :param prefix: The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down.
+ :type prefix: str, none_type, optional
+
+ :param type: The type of variable. This is to differentiate between filter variables (interpolated in query) and group by variables (interpolated into group by).
+ :type type: str, none_type, optional
+ """
+ if available_values is not unset:
+ kwargs["available_values"] = available_values
+ if default is not unset:
+ kwargs["default"] = default
+ if defaults is not unset:
+ kwargs["defaults"] = defaults
+ if prefix is not unset:
+ kwargs["prefix"] = prefix
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/dashboard_template_variable_preset.py b/datadog_api_client/v1/model/dashboard_template_variable_preset.py
new file mode 100644
index 0000000000..01acbcad3a
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_template_variable_preset.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_template_variable_preset_value import DashboardTemplateVariablePresetValue
+
+class DashboardTemplateVariablePreset(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_template_variable_preset_value import DashboardTemplateVariablePresetValue
+ return {
+ "name": (str,),
+ "template_variables": ([DashboardTemplateVariablePresetValue],),
+ }
+ attribute_map = {
+ "name": "name",
+ "template_variables": "template_variables",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, template_variables: Union[List[DashboardTemplateVariablePresetValue], UnsetType]=unset, **kwargs):
+ """
+ Template variables saved views.
+
+ :param name: The name of the variable.
+ :type name: str, optional
+
+ :param template_variables: List of variables.
+ :type template_variables: [DashboardTemplateVariablePresetValue], optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_template_variable_preset_value.py b/datadog_api_client/v1/model/dashboard_template_variable_preset_value.py
new file mode 100644
index 0000000000..870455e0de
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_template_variable_preset_value.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DashboardTemplateVariablePresetValue(ModelNormal):
+ validations = {
+ "values": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "value": (str,),
+ "values": ([str],),
+ }
+ attribute_map = {
+ "name": "name",
+ "value": "value",
+ "values": "values",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, value: Union[str, UnsetType]=unset, values: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Template variables saved views.
+
+ :param name: The name of the variable.
+ :type name: str, optional
+
+ :param value: (deprecated) The value of the template variable within the saved view. Cannot be used in conjunction with ``values``. **Deprecated**.
+ :type value: str, optional
+
+ :param values: One or many template variable values within the saved view, which will be unioned together using ``OR`` if more than one is specified. Cannot be used in conjunction with ``value``.
+ :type values: [str], optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if value is not unset:
+ kwargs["value"] = value
+ if values is not unset:
+ kwargs["values"] = values
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/dashboard_type.py b/datadog_api_client/v1/model/dashboard_type.py
new file mode 100644
index 0000000000..ef65ca1254
--- /dev/null
+++ b/datadog_api_client/v1/model/dashboard_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DashboardType(ModelSimple):
+ """
+ The type of the associated private dashboard.
+
+ :param value: Must be one of ["custom_timeboard", "custom_screenboard"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "custom_timeboard",
+ "custom_screenboard",
+ }
+ CUSTOM_TIMEBOARD: ClassVar["DashboardType"]
+ CUSTOM_SCREENBOARD: ClassVar["DashboardType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DashboardType.CUSTOM_TIMEBOARD = DashboardType("custom_timeboard")
+DashboardType.CUSTOM_SCREENBOARD = DashboardType("custom_screenboard")
diff --git a/datadog_api_client/v1/model/data_projection_query.py b/datadog_api_client/v1/model/data_projection_query.py
new file mode 100644
index 0000000000..1a57b95703
--- /dev/null
+++ b/datadog_api_client/v1/model/data_projection_query.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DataProjectionQuery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "data_source": (str,),
+ "indexes": ([str],),
+ "query_string": (str,),
+ "storage": (str,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "indexes": "indexes",
+ "query_string": "query_string",
+ "storage": "storage",
+ }
+
+ def __init__(self_, data_source: str, query_string: str, indexes: Union[List[str], UnsetType]=unset, storage: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Query configuration for a data projection request.
+
+ :param data_source: Data source for the query.
+ :type data_source: str
+
+ :param indexes: List of indexes to query.
+ :type indexes: [str], optional
+
+ :param query_string: The query string to filter events.
+ :type query_string: str
+
+ :param storage: Storage location for the query.
+ :type storage: str, optional
+ """
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ if storage is not unset:
+ kwargs["storage"] = storage
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.query_string = query_string
diff --git a/datadog_api_client/v1/model/data_projection_request_type.py b/datadog_api_client/v1/model/data_projection_request_type.py
new file mode 100644
index 0000000000..ad7a267bb4
--- /dev/null
+++ b/datadog_api_client/v1/model/data_projection_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DataProjectionRequestType(ModelSimple):
+ """
+ Type of a data projection request.
+
+ :param value: If omitted defaults to "data_projection". Must be one of ["data_projection"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "data_projection",
+ }
+ DATA_PROJECTION: ClassVar["DataProjectionRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DataProjectionRequestType.DATA_PROJECTION = DataProjectionRequestType("data_projection")
diff --git a/datadog_api_client/v1/model/dataset_list_query.py b/datadog_api_client/v1/model/dataset_list_query.py
new file mode 100644
index 0000000000..3af586e02d
--- /dev/null
+++ b/datadog_api_client/v1/model/dataset_list_query.py
@@ -0,0 +1,85 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dataset_list_query_data_source_type import DatasetListQueryDataSourceType
+ from datadog_api_client.v1.model.published_dataset_provider import PublishedDatasetProvider
+ from datadog_api_client.v1.model.dataset_list_query_sort import DatasetListQuerySort
+
+class DatasetListQuery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dataset_list_query_data_source_type import DatasetListQueryDataSourceType
+ from datadog_api_client.v1.model.published_dataset_provider import PublishedDatasetProvider
+ from datadog_api_client.v1.model.dataset_list_query_sort import DatasetListQuerySort
+ return {
+ "data_source": (DatasetListQueryDataSourceType,),
+ "dataset_id": (str,),
+ "dataset_provider": (PublishedDatasetProvider,),
+ "filter": (str,),
+ "limit": (int,),
+ "sort": (DatasetListQuerySort,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "dataset_id": "dataset_id",
+ "dataset_provider": "dataset_provider",
+ "filter": "filter",
+ "limit": "limit",
+ "sort": "sort",
+ }
+
+ def __init__(self_, data_source: DatasetListQueryDataSourceType, dataset_id: str, dataset_provider: PublishedDatasetProvider, filter: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, sort: Union[DatasetListQuerySort, UnsetType]=unset, **kwargs):
+ """
+ Query that lists the rows of a published dataset (a DDSQL query) without aggregation.
+
+ :param data_source: Identifies this as a published-dataset list query.
+ :type data_source: DatasetListQueryDataSourceType
+
+ :param dataset_id: ID of the published dataset to query.
+ :type dataset_id: str
+
+ :param dataset_provider: Product page that published the dataset queried by a ``DatasetListQuery``. ``ddsql_query`` is the only provider currently supported for host map widgets.
+ :type dataset_provider: PublishedDatasetProvider
+
+ :param filter: Filter applied to the dataset's rows, using events-style search syntax.
+ :type filter: str, optional
+
+ :param limit: Maximum number of rows to return from the dataset query.
+ :type limit: int, optional
+
+ :param sort: Sort configuration for a ``DatasetListQuery``.
+ :type sort: DatasetListQuerySort, optional
+ """
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.dataset_id = dataset_id
+ self_.dataset_provider = dataset_provider
diff --git a/datadog_api_client/v1/model/dataset_list_query_data_source_type.py b/datadog_api_client/v1/model/dataset_list_query_data_source_type.py
new file mode 100644
index 0000000000..1af20f4a5c
--- /dev/null
+++ b/datadog_api_client/v1/model/dataset_list_query_data_source_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DatasetListQueryDataSourceType(ModelSimple):
+ """
+ Identifies this as a published-dataset list query.
+
+ :param value: If omitted defaults to "dataset". Must be one of ["dataset"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "dataset",
+ }
+ DATASET: ClassVar["DatasetListQueryDataSourceType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DatasetListQueryDataSourceType.DATASET = DatasetListQueryDataSourceType("dataset")
diff --git a/datadog_api_client/v1/model/dataset_list_query_sort.py b/datadog_api_client/v1/model/dataset_list_query_sort.py
new file mode 100644
index 0000000000..5e7351e030
--- /dev/null
+++ b/datadog_api_client/v1/model/dataset_list_query_sort.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dataset_list_query_sort_field import DatasetListQuerySortField
+
+class DatasetListQuerySort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dataset_list_query_sort_field import DatasetListQuerySortField
+ return {
+ "fields": ([DatasetListQuerySortField],),
+ }
+ attribute_map = {
+ "fields": "fields",
+ }
+
+ def __init__(self_, fields: List[DatasetListQuerySortField], **kwargs):
+ """
+ Sort configuration for a ``DatasetListQuery``.
+
+ :param fields: List of fields to sort the rows by, applied in order.
+ :type fields: [DatasetListQuerySortField]
+ """
+ super().__init__(kwargs)
+
+
+ self_.fields = fields
diff --git a/datadog_api_client/v1/model/dataset_list_query_sort_field.py b/datadog_api_client/v1/model/dataset_list_query_sort_field.py
new file mode 100644
index 0000000000..d648b87fce
--- /dev/null
+++ b/datadog_api_client/v1/model/dataset_list_query_sort_field.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+
+class DatasetListQuerySortField(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+ return {
+ "name": (str,),
+ "order": (QuerySortOrder,),
+ }
+ attribute_map = {
+ "name": "name",
+ "order": "order",
+ }
+
+ def __init__(self_, name: str, order: QuerySortOrder, **kwargs):
+ """
+ A single sort directive for a ``DatasetListQuery``.
+
+ :param name: Name of the field to sort on.
+ :type name: str
+
+ :param order: Direction of sort.
+ :type order: QuerySortOrder
+ """
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.order = order
diff --git a/datadog_api_client/v1/model/delete_shared_dashboard_response.py b/datadog_api_client/v1/model/delete_shared_dashboard_response.py
new file mode 100644
index 0000000000..c32847f412
--- /dev/null
+++ b/datadog_api_client/v1/model/delete_shared_dashboard_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DeleteSharedDashboardResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "deleted_public_dashboard_token": (str,),
+ }
+ attribute_map = {
+ "deleted_public_dashboard_token": "deleted_public_dashboard_token",
+ }
+
+ def __init__(self_, deleted_public_dashboard_token: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Response containing token of deleted shared dashboard.
+
+ :param deleted_public_dashboard_token: Token associated with the shared dashboard that was revoked.
+ :type deleted_public_dashboard_token: str, optional
+ """
+ if deleted_public_dashboard_token is not unset:
+ kwargs["deleted_public_dashboard_token"] = deleted_public_dashboard_token
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/deleted_monitor.py b/datadog_api_client/v1/model/deleted_monitor.py
new file mode 100644
index 0000000000..a77e61f354
--- /dev/null
+++ b/datadog_api_client/v1/model/deleted_monitor.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DeletedMonitor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "deleted_monitor_id": (int,),
+ }
+ attribute_map = {
+ "deleted_monitor_id": "deleted_monitor_id",
+ }
+
+ def __init__(self_, deleted_monitor_id: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Response from the delete monitor call.
+
+ :param deleted_monitor_id: ID of the deleted monitor.
+ :type deleted_monitor_id: int, optional
+ """
+ if deleted_monitor_id is not unset:
+ kwargs["deleted_monitor_id"] = deleted_monitor_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/distribution_point.py b/datadog_api_client/v1/model/distribution_point.py
new file mode 100644
index 0000000000..64420095d2
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_point.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DistributionPoint(ModelSimple):
+ """
+ Array of distribution points.
+
+
+ :type value: [float, [float]]
+ """
+
+
+ validations = {
+ "value": {
+ "max_items": 2,
+ "min_items": 2,
+ },
+ }
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": ([float, [float]],),
+ }
diff --git a/datadog_api_client/v1/model/distribution_points_content_encoding.py b/datadog_api_client/v1/model/distribution_points_content_encoding.py
new file mode 100644
index 0000000000..aee6fa4908
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_points_content_encoding.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DistributionPointsContentEncoding(ModelSimple):
+ """
+ HTTP header used to compress the media-type.
+
+ :param value: If omitted defaults to "deflate". Must be one of ["deflate"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "deflate",
+ }
+ DEFLATE: ClassVar["DistributionPointsContentEncoding"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DistributionPointsContentEncoding.DEFLATE = DistributionPointsContentEncoding("deflate")
diff --git a/datadog_api_client/v1/model/distribution_points_payload.py b/datadog_api_client/v1/model/distribution_points_payload.py
new file mode 100644
index 0000000000..5a3ddf94c5
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_points_payload.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.distribution_points_series import DistributionPointsSeries
+
+class DistributionPointsPayload(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.distribution_points_series import DistributionPointsSeries
+ return {
+ "series": ([DistributionPointsSeries],),
+ }
+ attribute_map = {
+ "series": "series",
+ }
+
+ def __init__(self_, series: List[DistributionPointsSeries], **kwargs):
+ """
+ The distribution points payload.
+
+ :param series: A list of distribution points series to submit to Datadog.
+ :type series: [DistributionPointsSeries]
+ """
+ super().__init__(kwargs)
+
+
+ self_.series = series
diff --git a/datadog_api_client/v1/model/distribution_points_series.py b/datadog_api_client/v1/model/distribution_points_series.py
new file mode 100644
index 0000000000..ca45c34eeb
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_points_series.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.distribution_point import DistributionPoint
+ from datadog_api_client.v1.model.distribution_points_type import DistributionPointsType
+
+class DistributionPointsSeries(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.distribution_point import DistributionPoint
+ from datadog_api_client.v1.model.distribution_points_type import DistributionPointsType
+ return {
+ "host": (str,),
+ "metric": (str,),
+ "points": ([DistributionPoint],),
+ "tags": ([str],),
+ "type": (DistributionPointsType,),
+ }
+ attribute_map = {
+ "host": "host",
+ "metric": "metric",
+ "points": "points",
+ "tags": "tags",
+ "type": "type",
+ }
+
+ def __init__(self_, metric: str, points: List[DistributionPoint], host: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[DistributionPointsType, UnsetType]=unset, **kwargs):
+ """
+ A distribution points metric to submit to Datadog.
+
+ :param host: The name of the host that produced the distribution point metric.
+ :type host: str, optional
+
+ :param metric: The name of the distribution points metric.
+ :type metric: str
+
+ :param points: Points relating to the distribution point metric. All points must be tuples with timestamp and a list of values (cannot be a string). Timestamps should be in POSIX time in seconds.
+ :type points: [DistributionPoint]
+
+ :param tags: A list of tags associated with the distribution point metric.
+ :type tags: [str], optional
+
+ :param type: The type of the distribution point.
+ :type type: DistributionPointsType, optional
+ """
+ if host is not unset:
+ kwargs["host"] = host
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.metric = metric
+ self_.points = points
diff --git a/datadog_api_client/v1/model/distribution_points_type.py b/datadog_api_client/v1/model/distribution_points_type.py
new file mode 100644
index 0000000000..42e760007a
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_points_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DistributionPointsType(ModelSimple):
+ """
+ The type of the distribution point.
+
+ :param value: If omitted defaults to "distribution". Must be one of ["distribution"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "distribution",
+ }
+ DISTRIBUTION: ClassVar["DistributionPointsType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DistributionPointsType.DISTRIBUTION = DistributionPointsType("distribution")
diff --git a/datadog_api_client/v1/model/distribution_widget_definition.py b/datadog_api_client/v1/model/distribution_widget_definition.py
new file mode 100644
index 0000000000..8da3598270
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_widget_definition.py
@@ -0,0 +1,172 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.distribution_widget_request import DistributionWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.distribution_widget_definition_type import DistributionWidgetDefinitionType
+ from datadog_api_client.v1.model.distribution_widget_x_axis import DistributionWidgetXAxis
+ from datadog_api_client.v1.model.distribution_widget_y_axis import DistributionWidgetYAxis
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class DistributionWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.distribution_widget_request import DistributionWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.distribution_widget_definition_type import DistributionWidgetDefinitionType
+ from datadog_api_client.v1.model.distribution_widget_x_axis import DistributionWidgetXAxis
+ from datadog_api_client.v1.model.distribution_widget_y_axis import DistributionWidgetYAxis
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "legend_size": (str,),
+ "markers": ([WidgetMarker],),
+ "requests": ([DistributionWidgetRequest],),
+ "show_legend": (bool,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (DistributionWidgetDefinitionType,),
+ "xaxis": (DistributionWidgetXAxis,),
+ "yaxis": (DistributionWidgetYAxis,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "legend_size": "legend_size",
+ "markers": "markers",
+ "requests": "requests",
+ "show_legend": "show_legend",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "xaxis": "xaxis",
+ "yaxis": "yaxis",
+ }
+
+ def __init__(self_, requests: List[DistributionWidgetRequest], type: DistributionWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, legend_size: Union[str, UnsetType]=unset, markers: Union[List[WidgetMarker], UnsetType]=unset, show_legend: Union[bool, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, xaxis: Union[DistributionWidgetXAxis, UnsetType]=unset, yaxis: Union[DistributionWidgetYAxis, UnsetType]=unset, **kwargs):
+ """
+ The Distribution visualization is another way of showing metrics
+ aggregated across one or several tags, such as hosts.
+ Unlike the heat map, a distribution graph’s x-axis is quantity rather than time.
+
+ :param custom_links: A list of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param legend_size: (Deprecated) The widget legend was replaced by a tooltip and sidebar. **Deprecated**.
+ :type legend_size: str, optional
+
+ :param markers: List of markers.
+ :type markers: [WidgetMarker], optional
+
+ :param requests: Array of one request object to display in the widget.
+
+ See the dedicated `Request JSON schema documentation `_
+ to learn how to build the ``REQUEST_SCHEMA``.
+ :type requests: [DistributionWidgetRequest]
+
+ :param show_legend: (Deprecated) The widget legend was replaced by a tooltip and sidebar. **Deprecated**.
+ :type show_legend: bool, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the distribution widget.
+ :type type: DistributionWidgetDefinitionType
+
+ :param xaxis: X Axis controls for the distribution widget.
+ :type xaxis: DistributionWidgetXAxis, optional
+
+ :param yaxis: Y Axis controls for the distribution widget.
+ :type yaxis: DistributionWidgetYAxis, optional
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if legend_size is not unset:
+ kwargs["legend_size"] = legend_size
+ if markers is not unset:
+ kwargs["markers"] = markers
+ if show_legend is not unset:
+ kwargs["show_legend"] = show_legend
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if xaxis is not unset:
+ kwargs["xaxis"] = xaxis
+ if yaxis is not unset:
+ kwargs["yaxis"] = yaxis
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/distribution_widget_definition_type.py b/datadog_api_client/v1/model/distribution_widget_definition_type.py
new file mode 100644
index 0000000000..49c58493ee
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class DistributionWidgetDefinitionType(ModelSimple):
+ """
+ Type of the distribution widget.
+
+ :param value: If omitted defaults to "distribution". Must be one of ["distribution"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "distribution",
+ }
+ DISTRIBUTION: ClassVar["DistributionWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+DistributionWidgetDefinitionType.DISTRIBUTION = DistributionWidgetDefinitionType("distribution")
diff --git a/datadog_api_client/v1/model/distribution_widget_histogram_request_query.py b/datadog_api_client/v1/model/distribution_widget_histogram_request_query.py
new file mode 100644
index 0000000000..98581bae2a
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_widget_histogram_request_query.py
@@ -0,0 +1,124 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DistributionWidgetHistogramRequestQuery(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Query definition for Distribution Widget Histogram Request
+
+ :param aggregator: The aggregation methods available for metrics queries.
+ :type aggregator: FormulaAndFunctionMetricAggregation, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for metrics queries.
+ :type data_source: FormulaAndFunctionMetricDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: Metrics query definition.
+ :type query: str
+
+ :param semantic_mode: Semantic mode for metrics queries. This determines how metrics from different sources are combined or displayed.
+ :type semantic_mode: FormulaAndFunctionMetricSemanticMode, optional
+
+ :param compute: Compute options.
+ :type compute: FormulaAndFunctionEventQueryDefinitionCompute
+
+ :param group_by: Group by configuration for a formula and functions events query. Accepts either a list of facet objects or a flat object that specifies a list of facet fields.
+ :type group_by: FormulaAndFunctionEventQueryGroupByConfig, optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param search: Search options.
+ :type search: FormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param storage: Option for storage location. Feature in Private Beta.
+ :type storage: str, optional
+
+ :param env: APM environment.
+ :type env: str
+
+ :param operation_name: Name of operation on service.
+ :type operation_name: str, optional
+
+ :param primary_tag_name: Name of the second primary tag used within APM. Required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog
+ :type primary_tag_name: str, optional
+
+ :param primary_tag_value: Value of the second primary tag by which to filter APM data. `primary_tag_name` must also be specified.
+ :type primary_tag_value: str, optional
+
+ :param resource_name: APM resource name.
+ :type resource_name: str, optional
+
+ :param service: APM service name.
+ :type service: str
+
+ :param stat: APM resource stat name.
+ :type stat: FormulaAndFunctionApmResourceStatName
+
+ :param operation_mode: Optional operation mode to aggregate across operation names.
+ :type operation_mode: str, optional
+
+ :param peer_tags: Tags to query for a specific downstream entity (peer.service, peer.db_instance, peer.s3, peer.s3.bucket, etc.).
+ :type peer_tags: [str], optional
+
+ :param query_filter: Additional filters for the query using metrics query syntax (e.g., env, primary_tag).
+ :type query_filter: str, optional
+
+ :param resource_hash: The hash of a specific resource to filter by.
+ :type resource_hash: str, optional
+
+ :param span_kind: Describes the relationship between the span, its parents, and its children in a trace.
+ :type span_kind: FormulaAndFunctionApmMetricsSpanKind, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ return {
+ "oneOf": [
+ FormulaAndFunctionMetricQueryDefinition,
+ FormulaAndFunctionEventQueryDefinition,
+ FormulaAndFunctionApmResourceStatsQueryDefinition,
+ FormulaAndFunctionApmMetricsQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/distribution_widget_request.py b/datadog_api_client/v1/model/distribution_widget_request.py
new file mode 100644
index 0000000000..b8ed27eb21
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_widget_request.py
@@ -0,0 +1,183 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.apm_stats_query_definition import ApmStatsQueryDefinition
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.distribution_widget_histogram_request_query import DistributionWidgetHistogramRequestQuery
+ from datadog_api_client.v1.model.widget_histogram_request_type import WidgetHistogramRequestType
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_style import WidgetStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class DistributionWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.apm_stats_query_definition import ApmStatsQueryDefinition
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.distribution_widget_histogram_request_query import DistributionWidgetHistogramRequestQuery
+ from datadog_api_client.v1.model.widget_histogram_request_type import WidgetHistogramRequestType
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_style import WidgetStyle
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "apm_stats_query": (ApmStatsQueryDefinition,),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "query": (DistributionWidgetHistogramRequestQuery,),
+ "request_type": (WidgetHistogramRequestType,),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "style": (WidgetStyle,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "apm_stats_query": "apm_stats_query",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "query": "query",
+ "request_type": "request_type",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "style": "style",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, apm_stats_query: Union[ApmStatsQueryDefinition, UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, query: Union[DistributionWidgetHistogramRequestQuery, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, UnsetType]=unset, request_type: Union[WidgetHistogramRequestType, UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, style: Union[WidgetStyle, UnsetType]=unset, **kwargs):
+ """
+ Updated distribution widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param apm_stats_query: The APM stats query for table and distributions widgets.
+ :type apm_stats_query: ApmStatsQueryDefinition, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param query: Query definition for Distribution Widget Histogram Request
+ :type query: DistributionWidgetHistogramRequestQuery, optional
+
+ :param request_type: Request type for distribution of point values for distribution metrics. Query space aggregator must be ``histogram:`` for points distributions.
+ :type request_type: WidgetHistogramRequestType, optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param style: Widget style definition.
+ :type style: WidgetStyle, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if apm_stats_query is not unset:
+ kwargs["apm_stats_query"] = apm_stats_query
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if query is not unset:
+ kwargs["query"] = query
+ if request_type is not unset:
+ kwargs["request_type"] = request_type
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/distribution_widget_x_axis.py b/datadog_api_client/v1/model/distribution_widget_x_axis.py
new file mode 100644
index 0000000000..1b1ef3573a
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_widget_x_axis.py
@@ -0,0 +1,79 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DistributionWidgetXAxis(ModelNormal):
+ validations = {
+ "num_buckets": {
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "include_zero": (bool,),
+ "max": (str,),
+ "min": (str,),
+ "num_buckets": (int,),
+ "scale": (str,),
+ }
+ attribute_map = {
+ "include_zero": "include_zero",
+ "max": "max",
+ "min": "min",
+ "num_buckets": "num_buckets",
+ "scale": "scale",
+ }
+
+ def __init__(self_, include_zero: Union[bool, UnsetType]=unset, max: Union[str, UnsetType]=unset, min: Union[str, UnsetType]=unset, num_buckets: Union[int, UnsetType]=unset, scale: Union[str, UnsetType]=unset, **kwargs):
+ """
+ X Axis controls for the distribution widget.
+
+ :param include_zero: True includes zero.
+ :type include_zero: bool, optional
+
+ :param max: Specifies maximum value to show on the x-axis. It takes a number, percentile (p90 === 90th percentile), or auto for default behavior.
+ :type max: str, optional
+
+ :param min: Specifies minimum value to show on the x-axis. It takes a number, percentile (p90 === 90th percentile), or auto for default behavior.
+ :type min: str, optional
+
+ :param num_buckets: Number of value buckets to target, also known as the resolution of the value bins.
+ :type num_buckets: int, optional
+
+ :param scale: Specifies the scale type. Possible values are ``linear``.
+ :type scale: str, optional
+ """
+ if include_zero is not unset:
+ kwargs["include_zero"] = include_zero
+ if max is not unset:
+ kwargs["max"] = max
+ if min is not unset:
+ kwargs["min"] = min
+ if num_buckets is not unset:
+ kwargs["num_buckets"] = num_buckets
+ if scale is not unset:
+ kwargs["scale"] = scale
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/distribution_widget_y_axis.py b/datadog_api_client/v1/model/distribution_widget_y_axis.py
new file mode 100644
index 0000000000..7a2834e0d4
--- /dev/null
+++ b/datadog_api_client/v1/model/distribution_widget_y_axis.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DistributionWidgetYAxis(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "include_zero": (bool,),
+ "label": (str,),
+ "max": (str,),
+ "min": (str,),
+ "scale": (str,),
+ }
+ attribute_map = {
+ "include_zero": "include_zero",
+ "label": "label",
+ "max": "max",
+ "min": "min",
+ "scale": "scale",
+ }
+
+ def __init__(self_, include_zero: Union[bool, UnsetType]=unset, label: Union[str, UnsetType]=unset, max: Union[str, UnsetType]=unset, min: Union[str, UnsetType]=unset, scale: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Y Axis controls for the distribution widget.
+
+ :param include_zero: True includes zero.
+ :type include_zero: bool, optional
+
+ :param label: The label of the axis to display on the graph.
+ :type label: str, optional
+
+ :param max: Specifies the maximum value to show on the y-axis. It takes a number, or auto for default behavior.
+ :type max: str, optional
+
+ :param min: Specifies minimum value to show on the y-axis. It takes a number, or auto for default behavior.
+ :type min: str, optional
+
+ :param scale: Specifies the scale type. Possible values are ``linear`` or ``log``.
+ :type scale: str, optional
+ """
+ if include_zero is not unset:
+ kwargs["include_zero"] = include_zero
+ if label is not unset:
+ kwargs["label"] = label
+ if max is not unset:
+ kwargs["max"] = max
+ if min is not unset:
+ kwargs["min"] = min
+ if scale is not unset:
+ kwargs["scale"] = scale
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/downtime.py b/datadog_api_client/v1/model/downtime.py
new file mode 100644
index 0000000000..813125e564
--- /dev/null
+++ b/datadog_api_client/v1/model/downtime.py
@@ -0,0 +1,226 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.downtime_child import DowntimeChild
+ from datadog_api_client.v1.model.notify_end_state import NotifyEndState
+ from datadog_api_client.v1.model.notify_end_type import NotifyEndType
+ from datadog_api_client.v1.model.downtime_recurrence import DowntimeRecurrence
+
+class Downtime(ModelNormal):
+ validations = {
+ "creator_id": {
+ "inclusive_maximum": 2147483647,
+ },
+ "downtime_type": {
+ "inclusive_maximum": 2147483647,
+ },
+ "updater_id": {
+ "inclusive_maximum": 2147483647,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.downtime_child import DowntimeChild
+ from datadog_api_client.v1.model.notify_end_state import NotifyEndState
+ from datadog_api_client.v1.model.notify_end_type import NotifyEndType
+ from datadog_api_client.v1.model.downtime_recurrence import DowntimeRecurrence
+ return {
+ "active": (bool,),
+ "active_child": (DowntimeChild,),
+ "canceled": (int, none_type),
+ "creator_id": (int,),
+ "disabled": (bool,),
+ "downtime_type": (int,),
+ "end": (int, none_type),
+ "id": (int,),
+ "message": (str, none_type),
+ "monitor_id": (int, none_type),
+ "monitor_tags": ([str],),
+ "mute_first_recovery_notification": (bool,),
+ "notify_end_states": ([NotifyEndState],),
+ "notify_end_types": ([NotifyEndType],),
+ "parent_id": (int, none_type),
+ "recurrence": (DowntimeRecurrence,),
+ "scope": ([str],),
+ "start": (int,),
+ "timezone": (str,),
+ "updater_id": (int, none_type),
+ }
+ attribute_map = {
+ "active": "active",
+ "active_child": "active_child",
+ "canceled": "canceled",
+ "creator_id": "creator_id",
+ "disabled": "disabled",
+ "downtime_type": "downtime_type",
+ "end": "end",
+ "id": "id",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "monitor_tags": "monitor_tags",
+ "mute_first_recovery_notification": "mute_first_recovery_notification",
+ "notify_end_states": "notify_end_states",
+ "notify_end_types": "notify_end_types",
+ "parent_id": "parent_id",
+ "recurrence": "recurrence",
+ "scope": "scope",
+ "start": "start",
+ "timezone": "timezone",
+ "updater_id": "updater_id",
+ }
+ read_only_vars = {
+ "active",
+ "active_child",
+ "canceled",
+ "creator_id",
+ "downtime_type",
+ "id",
+ "updater_id",
+ }
+
+ def __init__(self_, active: Union[bool, UnsetType]=unset, active_child: Union[DowntimeChild, none_type, UnsetType]=unset, canceled: Union[int, none_type, UnsetType]=unset, creator_id: Union[int, UnsetType]=unset, disabled: Union[bool, UnsetType]=unset, downtime_type: Union[int, UnsetType]=unset, end: Union[int, none_type, UnsetType]=unset, id: Union[int, UnsetType]=unset, message: Union[str, none_type, UnsetType]=unset, monitor_id: Union[int, none_type, UnsetType]=unset, monitor_tags: Union[List[str], UnsetType]=unset, mute_first_recovery_notification: Union[bool, UnsetType]=unset, notify_end_states: Union[List[NotifyEndState], UnsetType]=unset, notify_end_types: Union[List[NotifyEndType], UnsetType]=unset, parent_id: Union[int, none_type, UnsetType]=unset, recurrence: Union[DowntimeRecurrence, none_type, UnsetType]=unset, scope: Union[List[str], UnsetType]=unset, start: Union[int, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, updater_id: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ Downtiming gives you greater control over monitor notifications by
+ allowing you to globally exclude scopes from alerting.
+ Downtime settings, which can be scheduled with start and end times,
+ prevent all alerting related to specified Datadog tags.
+
+ :param active: If a scheduled downtime currently exists.
+ :type active: bool, optional
+
+ :param active_child: The downtime object definition of the active child for the original parent recurring downtime. This
+ field will only exist on recurring downtimes.
+ :type active_child: DowntimeChild, none_type, optional
+
+ :param canceled: If a scheduled downtime is canceled.
+ :type canceled: int, none_type, optional
+
+ :param creator_id: User ID of the downtime creator.
+ :type creator_id: int, optional
+
+ :param disabled: If a downtime has been disabled.
+ :type disabled: bool, optional
+
+ :param downtime_type: ``0`` for a downtime applied on ``*`` or all,
+ ``1`` when the downtime is only scoped to hosts,
+ or ``2`` when the downtime is scoped to anything but hosts.
+ :type downtime_type: int, optional
+
+ :param end: POSIX timestamp to end the downtime. If not provided,
+ the downtime is in effect indefinitely until you cancel it.
+ :type end: int, none_type, optional
+
+ :param id: The downtime ID.
+ :type id: int, optional
+
+ :param message: A message to include with notifications for this downtime.
+ Email notifications can be sent to specific users by using the same ``@username`` notation as events.
+ :type message: str, none_type, optional
+
+ :param monitor_id: A single monitor to which the downtime applies.
+ If not provided, the downtime applies to all monitors.
+ :type monitor_id: int, none_type, optional
+
+ :param monitor_tags: A comma-separated list of monitor tags. For example, tags that are applied directly to monitors,
+ not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies.
+ The resulting downtime applies to monitors that match ALL provided monitor tags.
+ For example, ``service:postgres`` **AND** ``team:frontend``.
+ :type monitor_tags: [str], optional
+
+ :param mute_first_recovery_notification: If the first recovery notification during a downtime should be muted.
+ :type mute_first_recovery_notification: bool, optional
+
+ :param notify_end_states: States for which ``notify_end_types`` sends out notifications for.
+ :type notify_end_states: [NotifyEndState], optional
+
+ :param notify_end_types: If set, notifies if a monitor is in an alert-worthy state ( ``ALERT`` , ``WARNING`` , or ``NO DATA`` )
+ when this downtime expires or is canceled. Applied to monitors that change states during
+ the downtime (such as from ``OK`` to ``ALERT`` , ``WARNING`` , or ``NO DATA`` ), and to monitors that
+ already have an alert-worthy state when downtime begins.
+ :type notify_end_types: [NotifyEndType], optional
+
+ :param parent_id: ID of the parent Downtime.
+ :type parent_id: int, none_type, optional
+
+ :param recurrence: An object defining the recurrence of the downtime.
+ :type recurrence: DowntimeRecurrence, none_type, optional
+
+ :param scope: The scope(s) to which the downtime applies and must be in ``key:value`` format. For example, ``host:app2``.
+ Provide multiple scopes as a comma-separated list like ``env:dev,env:prod``.
+ The resulting downtime applies to sources that matches ALL provided scopes ( ``env:dev`` **AND** ``env:prod`` ).
+ :type scope: [str], optional
+
+ :param start: POSIX timestamp to start the downtime.
+ If not provided, the downtime starts the moment it is created.
+ :type start: int, optional
+
+ :param timezone: The timezone in which to display the downtime's start and end times in Datadog applications.
+ :type timezone: str, optional
+
+ :param updater_id: ID of the last user that updated the downtime.
+ :type updater_id: int, none_type, optional
+ """
+ if active is not unset:
+ kwargs["active"] = active
+ if active_child is not unset:
+ kwargs["active_child"] = active_child
+ if canceled is not unset:
+ kwargs["canceled"] = canceled
+ if creator_id is not unset:
+ kwargs["creator_id"] = creator_id
+ if disabled is not unset:
+ kwargs["disabled"] = disabled
+ if downtime_type is not unset:
+ kwargs["downtime_type"] = downtime_type
+ if end is not unset:
+ kwargs["end"] = end
+ if id is not unset:
+ kwargs["id"] = id
+ if message is not unset:
+ kwargs["message"] = message
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if monitor_tags is not unset:
+ kwargs["monitor_tags"] = monitor_tags
+ if mute_first_recovery_notification is not unset:
+ kwargs["mute_first_recovery_notification"] = mute_first_recovery_notification
+ if notify_end_states is not unset:
+ kwargs["notify_end_states"] = notify_end_states
+ if notify_end_types is not unset:
+ kwargs["notify_end_types"] = notify_end_types
+ if parent_id is not unset:
+ kwargs["parent_id"] = parent_id
+ if recurrence is not unset:
+ kwargs["recurrence"] = recurrence
+ if scope is not unset:
+ kwargs["scope"] = scope
+ if start is not unset:
+ kwargs["start"] = start
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ if updater_id is not unset:
+ kwargs["updater_id"] = updater_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/downtime_child.py b/datadog_api_client/v1/model/downtime_child.py
new file mode 100644
index 0000000000..ff67b6d6bc
--- /dev/null
+++ b/datadog_api_client/v1/model/downtime_child.py
@@ -0,0 +1,214 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notify_end_state import NotifyEndState
+ from datadog_api_client.v1.model.notify_end_type import NotifyEndType
+ from datadog_api_client.v1.model.downtime_recurrence import DowntimeRecurrence
+
+class DowntimeChild(ModelNormal):
+ validations = {
+ "creator_id": {
+ "inclusive_maximum": 2147483647,
+ },
+ "downtime_type": {
+ "inclusive_maximum": 2147483647,
+ },
+ "updater_id": {
+ "inclusive_maximum": 2147483647,
+ },
+ }
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notify_end_state import NotifyEndState
+ from datadog_api_client.v1.model.notify_end_type import NotifyEndType
+ from datadog_api_client.v1.model.downtime_recurrence import DowntimeRecurrence
+ return {
+ "active": (bool,),
+ "canceled": (int, none_type),
+ "creator_id": (int,),
+ "disabled": (bool,),
+ "downtime_type": (int,),
+ "end": (int, none_type),
+ "id": (int,),
+ "message": (str, none_type),
+ "monitor_id": (int, none_type),
+ "monitor_tags": ([str],),
+ "mute_first_recovery_notification": (bool,),
+ "notify_end_states": ([NotifyEndState],),
+ "notify_end_types": ([NotifyEndType],),
+ "parent_id": (int, none_type),
+ "recurrence": (DowntimeRecurrence,),
+ "scope": ([str],),
+ "start": (int,),
+ "timezone": (str,),
+ "updater_id": (int, none_type),
+ }
+ attribute_map = {
+ "active": "active",
+ "canceled": "canceled",
+ "creator_id": "creator_id",
+ "disabled": "disabled",
+ "downtime_type": "downtime_type",
+ "end": "end",
+ "id": "id",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "monitor_tags": "monitor_tags",
+ "mute_first_recovery_notification": "mute_first_recovery_notification",
+ "notify_end_states": "notify_end_states",
+ "notify_end_types": "notify_end_types",
+ "parent_id": "parent_id",
+ "recurrence": "recurrence",
+ "scope": "scope",
+ "start": "start",
+ "timezone": "timezone",
+ "updater_id": "updater_id",
+ }
+ read_only_vars = {
+ "active",
+ "canceled",
+ "creator_id",
+ "downtime_type",
+ "id",
+ "updater_id",
+ }
+
+ def __init__(self_, active: Union[bool, UnsetType]=unset, canceled: Union[int, none_type, UnsetType]=unset, creator_id: Union[int, UnsetType]=unset, disabled: Union[bool, UnsetType]=unset, downtime_type: Union[int, UnsetType]=unset, end: Union[int, none_type, UnsetType]=unset, id: Union[int, UnsetType]=unset, message: Union[str, none_type, UnsetType]=unset, monitor_id: Union[int, none_type, UnsetType]=unset, monitor_tags: Union[List[str], UnsetType]=unset, mute_first_recovery_notification: Union[bool, UnsetType]=unset, notify_end_states: Union[List[NotifyEndState], UnsetType]=unset, notify_end_types: Union[List[NotifyEndType], UnsetType]=unset, parent_id: Union[int, none_type, UnsetType]=unset, recurrence: Union[DowntimeRecurrence, none_type, UnsetType]=unset, scope: Union[List[str], UnsetType]=unset, start: Union[int, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, updater_id: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ The downtime object definition of the active child for the original parent recurring downtime. This
+ field will only exist on recurring downtimes.
+
+ :param active: If a scheduled downtime currently exists.
+ :type active: bool, optional
+
+ :param canceled: If a scheduled downtime is canceled.
+ :type canceled: int, none_type, optional
+
+ :param creator_id: User ID of the downtime creator.
+ :type creator_id: int, optional
+
+ :param disabled: If a downtime has been disabled.
+ :type disabled: bool, optional
+
+ :param downtime_type: ``0`` for a downtime applied on ``*`` or all,
+ ``1`` when the downtime is only scoped to hosts,
+ or ``2`` when the downtime is scoped to anything but hosts.
+ :type downtime_type: int, optional
+
+ :param end: POSIX timestamp to end the downtime. If not provided,
+ the downtime is in effect indefinitely until you cancel it.
+ :type end: int, none_type, optional
+
+ :param id: The downtime ID.
+ :type id: int, optional
+
+ :param message: A message to include with notifications for this downtime.
+ Email notifications can be sent to specific users by using the same ``@username`` notation as events.
+ :type message: str, none_type, optional
+
+ :param monitor_id: A single monitor to which the downtime applies.
+ If not provided, the downtime applies to all monitors.
+ :type monitor_id: int, none_type, optional
+
+ :param monitor_tags: A comma-separated list of monitor tags. For example, tags that are applied directly to monitors,
+ not tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies.
+ The resulting downtime applies to monitors that match ALL provided monitor tags.
+ For example, ``service:postgres`` **AND** ``team:frontend``.
+ :type monitor_tags: [str], optional
+
+ :param mute_first_recovery_notification: If the first recovery notification during a downtime should be muted.
+ :type mute_first_recovery_notification: bool, optional
+
+ :param notify_end_states: States for which ``notify_end_types`` sends out notifications for.
+ :type notify_end_states: [NotifyEndState], optional
+
+ :param notify_end_types: If set, notifies if a monitor is in an alert-worthy state ( ``ALERT`` , ``WARNING`` , or ``NO DATA`` )
+ when this downtime expires or is canceled. Applied to monitors that change states during
+ the downtime (such as from ``OK`` to ``ALERT`` , ``WARNING`` , or ``NO DATA`` ), and to monitors that
+ already have an alert-worthy state when downtime begins.
+ :type notify_end_types: [NotifyEndType], optional
+
+ :param parent_id: ID of the parent Downtime.
+ :type parent_id: int, none_type, optional
+
+ :param recurrence: An object defining the recurrence of the downtime.
+ :type recurrence: DowntimeRecurrence, none_type, optional
+
+ :param scope: The scope(s) to which the downtime applies and must be in ``key:value`` format. For example, ``host:app2``.
+ Provide multiple scopes as a comma-separated list like ``env:dev,env:prod``.
+ The resulting downtime applies to sources that matches ALL provided scopes ( ``env:dev`` **AND** ``env:prod`` ).
+ :type scope: [str], optional
+
+ :param start: POSIX timestamp to start the downtime.
+ If not provided, the downtime starts the moment it is created.
+ :type start: int, optional
+
+ :param timezone: The timezone in which to display the downtime's start and end times in Datadog applications.
+ :type timezone: str, optional
+
+ :param updater_id: ID of the last user that updated the downtime.
+ :type updater_id: int, none_type, optional
+ """
+ if active is not unset:
+ kwargs["active"] = active
+ if canceled is not unset:
+ kwargs["canceled"] = canceled
+ if creator_id is not unset:
+ kwargs["creator_id"] = creator_id
+ if disabled is not unset:
+ kwargs["disabled"] = disabled
+ if downtime_type is not unset:
+ kwargs["downtime_type"] = downtime_type
+ if end is not unset:
+ kwargs["end"] = end
+ if id is not unset:
+ kwargs["id"] = id
+ if message is not unset:
+ kwargs["message"] = message
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if monitor_tags is not unset:
+ kwargs["monitor_tags"] = monitor_tags
+ if mute_first_recovery_notification is not unset:
+ kwargs["mute_first_recovery_notification"] = mute_first_recovery_notification
+ if notify_end_states is not unset:
+ kwargs["notify_end_states"] = notify_end_states
+ if notify_end_types is not unset:
+ kwargs["notify_end_types"] = notify_end_types
+ if parent_id is not unset:
+ kwargs["parent_id"] = parent_id
+ if recurrence is not unset:
+ kwargs["recurrence"] = recurrence
+ if scope is not unset:
+ kwargs["scope"] = scope
+ if start is not unset:
+ kwargs["start"] = start
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ if updater_id is not unset:
+ kwargs["updater_id"] = updater_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/downtime_recurrence.py b/datadog_api_client/v1/model/downtime_recurrence.py
new file mode 100644
index 0000000000..6674732b2b
--- /dev/null
+++ b/datadog_api_client/v1/model/downtime_recurrence.py
@@ -0,0 +1,99 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class DowntimeRecurrence(ModelNormal):
+ validations = {
+ "period": {
+ "inclusive_maximum": 2147483647,
+ },
+ "until_occurrences": {
+ "inclusive_maximum": 2147483647,
+ },
+ }
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "period": (int,),
+ "rrule": (str,),
+ "type": (str,),
+ "until_date": (int, none_type),
+ "until_occurrences": (int, none_type),
+ "week_days": ([str], none_type),
+ }
+ attribute_map = {
+ "period": "period",
+ "rrule": "rrule",
+ "type": "type",
+ "until_date": "until_date",
+ "until_occurrences": "until_occurrences",
+ "week_days": "week_days",
+ }
+
+ def __init__(self_, period: Union[int, UnsetType]=unset, rrule: Union[str, UnsetType]=unset, type: Union[str, UnsetType]=unset, until_date: Union[int, none_type, UnsetType]=unset, until_occurrences: Union[int, none_type, UnsetType]=unset, week_days: Union[List[str], none_type, UnsetType]=unset, **kwargs):
+ """
+ An object defining the recurrence of the downtime.
+
+ :param period: How often to repeat as an integer.
+ For example, to repeat every 3 days, select a type of ``days`` and a period of ``3``.
+ :type period: int, optional
+
+ :param rrule: The ``RRULE`` standard for defining recurring events ( **requires to set "type" to rrule** )
+ For example, to have a recurring event on the first day of each month, set the type to ``rrule`` and set the ``FREQ`` to ``MONTHLY`` and ``BYMONTHDAY`` to ``1``.
+ Most common ``rrule`` options from the `iCalendar Spec `_ are supported.
+
+ **Note** : Attributes specifying the duration in ``RRULE`` are not supported (for example, ``DTSTART`` , ``DTEND`` , ``DURATION`` ).
+ More examples available in this `downtime guide `_
+ :type rrule: str, optional
+
+ :param type: The type of recurrence. Choose from ``days`` , ``weeks`` , ``months`` , ``years`` , ``rrule``.
+ :type type: str, optional
+
+ :param until_date: The date at which the recurrence should end as a POSIX timestamp.
+ ``until_occurences`` and ``until_date`` are mutually exclusive.
+ :type until_date: int, none_type, optional
+
+ :param until_occurrences: How many times the downtime is rescheduled.
+ ``until_occurences`` and ``until_date`` are mutually exclusive.
+ :type until_occurrences: int, none_type, optional
+
+ :param week_days: A list of week days to repeat on. Choose from ``Mon`` , ``Tue`` , ``Wed`` , ``Thu`` , ``Fri`` , ``Sat`` or ``Sun``.
+ Only applicable when type is weeks. First letter must be capitalized.
+ :type week_days: [str], none_type, optional
+ """
+ if period is not unset:
+ kwargs["period"] = period
+ if rrule is not unset:
+ kwargs["rrule"] = rrule
+ if type is not unset:
+ kwargs["type"] = type
+ if until_date is not unset:
+ kwargs["until_date"] = until_date
+ if until_occurrences is not unset:
+ kwargs["until_occurrences"] = until_occurrences
+ if week_days is not unset:
+ kwargs["week_days"] = week_days
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/event.py b/datadog_api_client/v1/model/event.py
new file mode 100644
index 0000000000..5918fcec0c
--- /dev/null
+++ b/datadog_api_client/v1/model/event.py
@@ -0,0 +1,154 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.event_alert_type import EventAlertType
+ from datadog_api_client.v1.model.event_priority import EventPriority
+
+class Event(ModelNormal):
+ validations = {
+ "text": {
+ "max_length": 4000,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.event_alert_type import EventAlertType
+ from datadog_api_client.v1.model.event_priority import EventPriority
+ return {
+ "alert_type": (EventAlertType,),
+ "date_happened": (int,),
+ "device_name": (str,),
+ "host": (str,),
+ "id": (int,),
+ "id_str": (str,),
+ "payload": (str,),
+ "priority": (EventPriority,),
+ "source_type_name": (str,),
+ "tags": ([str],),
+ "text": (str,),
+ "title": (str,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "alert_type": "alert_type",
+ "date_happened": "date_happened",
+ "device_name": "device_name",
+ "host": "host",
+ "id": "id",
+ "id_str": "id_str",
+ "payload": "payload",
+ "priority": "priority",
+ "source_type_name": "source_type_name",
+ "tags": "tags",
+ "text": "text",
+ "title": "title",
+ "url": "url",
+ }
+ read_only_vars = {
+ "id",
+ "id_str",
+ "payload",
+ "url",
+ }
+
+ def __init__(self_, alert_type: Union[EventAlertType, UnsetType]=unset, date_happened: Union[int, UnsetType]=unset, device_name: Union[str, UnsetType]=unset, host: Union[str, UnsetType]=unset, id: Union[int, UnsetType]=unset, id_str: Union[str, UnsetType]=unset, payload: Union[str, UnsetType]=unset, priority: Union[EventPriority, none_type, UnsetType]=unset, source_type_name: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, text: Union[str, UnsetType]=unset, title: Union[str, UnsetType]=unset, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object representing an event.
+
+ :param alert_type: If an alert event is enabled, set its type.
+ For example, ``error`` , ``warning`` , ``info`` , ``success`` , ``user_update`` ,
+ ``recommendation`` , and ``snapshot``.
+ :type alert_type: EventAlertType, optional
+
+ :param date_happened: POSIX timestamp of the event. Must be sent as an integer (that is no quotes).
+ Limited to events up to 18 hours in the past and two hours in the future.
+ :type date_happened: int, optional
+
+ :param device_name: A device name.
+ :type device_name: str, optional
+
+ :param host: Host name to associate with the event.
+ Any tags associated with the host are also applied to this event.
+ :type host: str, optional
+
+ :param id: Integer ID of the event.
+ :type id: int, optional
+
+ :param id_str: Handling IDs as large 64-bit numbers can cause loss of accuracy issues with some programming languages.
+ Instead, use the string representation of the Event ID to avoid losing accuracy.
+ :type id_str: str, optional
+
+ :param payload: Payload of the event.
+ :type payload: str, optional
+
+ :param priority: The priority of the event. For example, ``normal`` or ``low``.
+ :type priority: EventPriority, none_type, optional
+
+ :param source_type_name: The type of event being posted. Option examples include nagios, hudson, jenkins, my_apps, chef, puppet, git, bitbucket, etc.
+ The list of standard source attribute values `available here `_.
+ :type source_type_name: str, optional
+
+ :param tags: A list of tags to apply to the event.
+ :type tags: [str], optional
+
+ :param text: The body of the event. Limited to 4000 characters. The text supports markdown.
+ To use markdown in the event text, start the text block with ``%%% \\n`` and end the text block with ``\\n %%%``.
+ Use ``msg_text`` with the Datadog Ruby library.
+ :type text: str, optional
+
+ :param title: The event title.
+ :type title: str, optional
+
+ :param url: URL of the event.
+ :type url: str, optional
+ """
+ if alert_type is not unset:
+ kwargs["alert_type"] = alert_type
+ if date_happened is not unset:
+ kwargs["date_happened"] = date_happened
+ if device_name is not unset:
+ kwargs["device_name"] = device_name
+ if host is not unset:
+ kwargs["host"] = host
+ if id is not unset:
+ kwargs["id"] = id
+ if id_str is not unset:
+ kwargs["id_str"] = id_str
+ if payload is not unset:
+ kwargs["payload"] = payload
+ if priority is not unset:
+ kwargs["priority"] = priority
+ if source_type_name is not unset:
+ kwargs["source_type_name"] = source_type_name
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if text is not unset:
+ kwargs["text"] = text
+ if title is not unset:
+ kwargs["title"] = title
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/event_alert_type.py b/datadog_api_client/v1/model/event_alert_type.py
new file mode 100644
index 0000000000..2926a6ab47
--- /dev/null
+++ b/datadog_api_client/v1/model/event_alert_type.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class EventAlertType(ModelSimple):
+ """
+ If an alert event is enabled, set its type.
+ For example, `error`, `warning`, `info`, `success`, `user_update`,
+ `recommendation`, and `snapshot`.
+
+ :param value: Must be one of ["error", "warning", "info", "success", "user_update", "recommendation", "snapshot"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "error",
+ "warning",
+ "info",
+ "success",
+ "user_update",
+ "recommendation",
+ "snapshot",
+ }
+ ERROR: ClassVar["EventAlertType"]
+ WARNING: ClassVar["EventAlertType"]
+ INFO: ClassVar["EventAlertType"]
+ SUCCESS: ClassVar["EventAlertType"]
+ USER_UPDATE: ClassVar["EventAlertType"]
+ RECOMMENDATION: ClassVar["EventAlertType"]
+ SNAPSHOT: ClassVar["EventAlertType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+EventAlertType.ERROR = EventAlertType("error")
+EventAlertType.WARNING = EventAlertType("warning")
+EventAlertType.INFO = EventAlertType("info")
+EventAlertType.SUCCESS = EventAlertType("success")
+EventAlertType.USER_UPDATE = EventAlertType("user_update")
+EventAlertType.RECOMMENDATION = EventAlertType("recommendation")
+EventAlertType.SNAPSHOT = EventAlertType("snapshot")
diff --git a/datadog_api_client/v1/model/event_create_request.py b/datadog_api_client/v1/model/event_create_request.py
new file mode 100644
index 0000000000..aeb874e8eb
--- /dev/null
+++ b/datadog_api_client/v1/model/event_create_request.py
@@ -0,0 +1,135 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.event_alert_type import EventAlertType
+ from datadog_api_client.v1.model.event_priority import EventPriority
+
+class EventCreateRequest(ModelNormal):
+ validations = {
+ "aggregation_key": {
+ "max_length": 100,
+ },
+ "text": {
+ "max_length": 4000,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.event_alert_type import EventAlertType
+ from datadog_api_client.v1.model.event_priority import EventPriority
+ return {
+ "aggregation_key": (str,),
+ "alert_type": (EventAlertType,),
+ "date_happened": (int,),
+ "device_name": (str,),
+ "host": (str,),
+ "priority": (EventPriority,),
+ "related_event_id": (int,),
+ "source_type_name": (str,),
+ "tags": ([str],),
+ "text": (str,),
+ "title": (str,),
+ }
+ attribute_map = {
+ "aggregation_key": "aggregation_key",
+ "alert_type": "alert_type",
+ "date_happened": "date_happened",
+ "device_name": "device_name",
+ "host": "host",
+ "priority": "priority",
+ "related_event_id": "related_event_id",
+ "source_type_name": "source_type_name",
+ "tags": "tags",
+ "text": "text",
+ "title": "title",
+ }
+
+ def __init__(self_, text: str, title: str, aggregation_key: Union[str, UnsetType]=unset, alert_type: Union[EventAlertType, UnsetType]=unset, date_happened: Union[int, UnsetType]=unset, device_name: Union[str, UnsetType]=unset, host: Union[str, UnsetType]=unset, priority: Union[EventPriority, none_type, UnsetType]=unset, related_event_id: Union[int, UnsetType]=unset, source_type_name: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object representing an event.
+
+ :param aggregation_key: An arbitrary string to use for aggregation. Limited to 100 characters.
+ If you specify a key, all events using that key are grouped together in the Event Stream.
+ :type aggregation_key: str, optional
+
+ :param alert_type: If an alert event is enabled, set its type.
+ For example, ``error`` , ``warning`` , ``info`` , ``success`` , ``user_update`` ,
+ ``recommendation`` , and ``snapshot``.
+ :type alert_type: EventAlertType, optional
+
+ :param date_happened: POSIX timestamp of the event. Must be sent as an integer (that is no quotes).
+ Limited to events no older than 18 hours
+ :type date_happened: int, optional
+
+ :param device_name: A device name.
+ :type device_name: str, optional
+
+ :param host: Host name to associate with the event.
+ Any tags associated with the host are also applied to this event.
+ :type host: str, optional
+
+ :param priority: The priority of the event. For example, ``normal`` or ``low``.
+ :type priority: EventPriority, none_type, optional
+
+ :param related_event_id: ID of the parent event. Must be sent as an integer (that is no quotes).
+ :type related_event_id: int, optional
+
+ :param source_type_name: The type of event being posted. Option examples include nagios, hudson, jenkins, my_apps, chef, puppet, git, bitbucket, etc.
+ A complete list of source attribute values `available here `_.
+ :type source_type_name: str, optional
+
+ :param tags: A list of tags to apply to the event.
+ :type tags: [str], optional
+
+ :param text: The body of the event. Limited to 4000 characters. The text supports markdown.
+ To use markdown in the event text, start the text block with ``%%% \\n`` and end the text block with ``\\n %%%``.
+ Use ``msg_text`` with the Datadog Ruby library.
+ :type text: str
+
+ :param title: The event title.
+ :type title: str
+ """
+ if aggregation_key is not unset:
+ kwargs["aggregation_key"] = aggregation_key
+ if alert_type is not unset:
+ kwargs["alert_type"] = alert_type
+ if date_happened is not unset:
+ kwargs["date_happened"] = date_happened
+ if device_name is not unset:
+ kwargs["device_name"] = device_name
+ if host is not unset:
+ kwargs["host"] = host
+ if priority is not unset:
+ kwargs["priority"] = priority
+ if related_event_id is not unset:
+ kwargs["related_event_id"] = related_event_id
+ if source_type_name is not unset:
+ kwargs["source_type_name"] = source_type_name
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.text = text
+ self_.title = title
diff --git a/datadog_api_client/v1/model/event_create_response.py b/datadog_api_client/v1/model/event_create_response.py
new file mode 100644
index 0000000000..6041257a0e
--- /dev/null
+++ b/datadog_api_client/v1/model/event_create_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.event import Event
+
+class EventCreateResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.event import Event
+ return {
+ "event": (Event,),
+ "status": (str,),
+ }
+ attribute_map = {
+ "event": "event",
+ "status": "status",
+ }
+
+ def __init__(self_, event: Union[Event, UnsetType]=unset, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing an event response.
+
+ :param event: Object representing an event.
+ :type event: Event, optional
+
+ :param status: A status.
+ :type status: str, optional
+ """
+ if event is not unset:
+ kwargs["event"] = event
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/event_list_response.py b/datadog_api_client/v1/model/event_list_response.py
new file mode 100644
index 0000000000..2e5b1616e1
--- /dev/null
+++ b/datadog_api_client/v1/model/event_list_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.event import Event
+
+class EventListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.event import Event
+ return {
+ "events": ([Event],),
+ "status": (str,),
+ }
+ attribute_map = {
+ "events": "events",
+ "status": "status",
+ }
+
+ def __init__(self_, events: Union[List[Event], UnsetType]=unset, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ An event list response.
+
+ :param events: An array of events.
+ :type events: [Event], optional
+
+ :param status: A status.
+ :type status: str, optional
+ """
+ if events is not unset:
+ kwargs["events"] = events
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/event_priority.py b/datadog_api_client/v1/model/event_priority.py
new file mode 100644
index 0000000000..08d18384d5
--- /dev/null
+++ b/datadog_api_client/v1/model/event_priority.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class EventPriority(ModelSimple):
+ """
+ The priority of the event. For example, `normal` or `low`.
+
+ :param value: Must be one of ["normal", "low"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "normal",
+ "low",
+ }
+ NORMAL: ClassVar["EventPriority"]
+ LOW: ClassVar["EventPriority"]
+
+
+ _nullable = True
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+EventPriority.NORMAL = EventPriority("normal")
+EventPriority.LOW = EventPriority("low")
diff --git a/datadog_api_client/v1/model/event_query_definition.py b/datadog_api_client/v1/model/event_query_definition.py
new file mode 100644
index 0000000000..7aa18009ee
--- /dev/null
+++ b/datadog_api_client/v1/model/event_query_definition.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class EventQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "search": (str,),
+ "tags_execution": (str,),
+ }
+ attribute_map = {
+ "search": "search",
+ "tags_execution": "tags_execution",
+ }
+
+ def __init__(self_, search: str, tags_execution: str, **kwargs):
+ """
+ The event query.
+
+ :param search: The query being made on the event.
+ :type search: str
+
+ :param tags_execution: The execution method for multi-value filters. Can be either and or or.
+ :type tags_execution: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.search = search
+ self_.tags_execution = tags_execution
diff --git a/datadog_api_client/v1/model/event_response.py b/datadog_api_client/v1/model/event_response.py
new file mode 100644
index 0000000000..4a910b9dee
--- /dev/null
+++ b/datadog_api_client/v1/model/event_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.event import Event
+
+class EventResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.event import Event
+ return {
+ "event": (Event,),
+ "status": (str,),
+ }
+ attribute_map = {
+ "event": "event",
+ "status": "status",
+ }
+
+ def __init__(self_, event: Union[Event, UnsetType]=unset, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing an event response.
+
+ :param event: Object representing an event.
+ :type event: Event, optional
+
+ :param status: A status.
+ :type status: str, optional
+ """
+ if event is not unset:
+ kwargs["event"] = event
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/event_stream_widget_definition.py b/datadog_api_client/v1/model/event_stream_widget_definition.py
new file mode 100644
index 0000000000..ba3a8d8cd1
--- /dev/null
+++ b/datadog_api_client/v1/model/event_stream_widget_definition.py
@@ -0,0 +1,113 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_event_size import WidgetEventSize
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.event_stream_widget_definition_type import EventStreamWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class EventStreamWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_event_size import WidgetEventSize
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.event_stream_widget_definition_type import EventStreamWidgetDefinitionType
+ return {
+ "description": (str,),
+ "event_size": (WidgetEventSize,),
+ "query": (str,),
+ "tags_execution": (str,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (EventStreamWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "event_size": "event_size",
+ "query": "query",
+ "tags_execution": "tags_execution",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, query: str, type: EventStreamWidgetDefinitionType, description: Union[str, UnsetType]=unset, event_size: Union[WidgetEventSize, UnsetType]=unset, tags_execution: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The event stream is a widget version of the stream of events
+ on the Event Stream view. Only available on FREE layout dashboards.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param event_size: Size to use to display an event.
+ :type event_size: WidgetEventSize, optional
+
+ :param query: Query to filter the event stream with.
+ :type query: str
+
+ :param tags_execution: The execution method for multi-value filters. Can be either and or or.
+ :type tags_execution: str, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the event stream widget.
+ :type type: EventStreamWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if event_size is not unset:
+ kwargs["event_size"] = event_size
+ if tags_execution is not unset:
+ kwargs["tags_execution"] = tags_execution
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.type = type
diff --git a/datadog_api_client/v1/model/event_stream_widget_definition_type.py b/datadog_api_client/v1/model/event_stream_widget_definition_type.py
new file mode 100644
index 0000000000..cf7bc27d50
--- /dev/null
+++ b/datadog_api_client/v1/model/event_stream_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class EventStreamWidgetDefinitionType(ModelSimple):
+ """
+ Type of the event stream widget.
+
+ :param value: If omitted defaults to "event_stream". Must be one of ["event_stream"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "event_stream",
+ }
+ EVENT_STREAM: ClassVar["EventStreamWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+EventStreamWidgetDefinitionType.EVENT_STREAM = EventStreamWidgetDefinitionType("event_stream")
diff --git a/datadog_api_client/v1/model/event_timeline_widget_definition.py b/datadog_api_client/v1/model/event_timeline_widget_definition.py
new file mode 100644
index 0000000000..3b40f75409
--- /dev/null
+++ b/datadog_api_client/v1/model/event_timeline_widget_definition.py
@@ -0,0 +1,103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.event_timeline_widget_definition_type import EventTimelineWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class EventTimelineWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.event_timeline_widget_definition_type import EventTimelineWidgetDefinitionType
+ return {
+ "description": (str,),
+ "query": (str,),
+ "tags_execution": (str,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (EventTimelineWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "query": "query",
+ "tags_execution": "tags_execution",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, query: str, type: EventTimelineWidgetDefinitionType, description: Union[str, UnsetType]=unset, tags_execution: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The event timeline is a widget version of the timeline that appears at the top of the Event Stream view. Only available on FREE layout dashboards.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param query: Query to filter the event timeline with.
+ :type query: str
+
+ :param tags_execution: The execution method for multi-value filters. Can be either and or or.
+ :type tags_execution: str, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the event timeline widget.
+ :type type: EventTimelineWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if tags_execution is not unset:
+ kwargs["tags_execution"] = tags_execution
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.type = type
diff --git a/datadog_api_client/v1/model/event_timeline_widget_definition_type.py b/datadog_api_client/v1/model/event_timeline_widget_definition_type.py
new file mode 100644
index 0000000000..4a717c4e39
--- /dev/null
+++ b/datadog_api_client/v1/model/event_timeline_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class EventTimelineWidgetDefinitionType(ModelSimple):
+ """
+ Type of the event timeline widget.
+
+ :param value: If omitted defaults to "event_timeline". Must be one of ["event_timeline"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "event_timeline",
+ }
+ EVENT_TIMELINE: ClassVar["EventTimelineWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+EventTimelineWidgetDefinitionType.EVENT_TIMELINE = EventTimelineWidgetDefinitionType("event_timeline")
diff --git a/datadog_api_client/v1/model/events_aggregation.py b/datadog_api_client/v1/model/events_aggregation.py
new file mode 100644
index 0000000000..9007f84a54
--- /dev/null
+++ b/datadog_api_client/v1/model/events_aggregation.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class EventsAggregation(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The type of aggregation that can be performed on events-based queries.
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ return {
+ "oneOf": [
+ str,
+ str,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/events_aggregation_value.py b/datadog_api_client/v1/model/events_aggregation_value.py
new file mode 100644
index 0000000000..a2631c4748
--- /dev/null
+++ b/datadog_api_client/v1/model/events_aggregation_value.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class EventsAggregationValue(ModelSimple):
+ """
+ Standard aggregation types for events-based queries.
+
+ :param value: Must be one of ["avg", "cardinality", "count", "delta", "earliest", "latest", "max", "median", "min", "most_frequent", "sum"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg",
+ "cardinality",
+ "count",
+ "delta",
+ "earliest",
+ "latest",
+ "max",
+ "median",
+ "min",
+ "most_frequent",
+ "sum",
+ }
+ AVG: ClassVar["EventsAggregationValue"]
+ CARDINALITY: ClassVar["EventsAggregationValue"]
+ COUNT: ClassVar["EventsAggregationValue"]
+ DELTA: ClassVar["EventsAggregationValue"]
+ EARLIEST: ClassVar["EventsAggregationValue"]
+ LATEST: ClassVar["EventsAggregationValue"]
+ MAX: ClassVar["EventsAggregationValue"]
+ MEDIAN: ClassVar["EventsAggregationValue"]
+ MIN: ClassVar["EventsAggregationValue"]
+ MOST_FREQUENT: ClassVar["EventsAggregationValue"]
+ SUM: ClassVar["EventsAggregationValue"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+EventsAggregationValue.AVG = EventsAggregationValue("avg")
+EventsAggregationValue.CARDINALITY = EventsAggregationValue("cardinality")
+EventsAggregationValue.COUNT = EventsAggregationValue("count")
+EventsAggregationValue.DELTA = EventsAggregationValue("delta")
+EventsAggregationValue.EARLIEST = EventsAggregationValue("earliest")
+EventsAggregationValue.LATEST = EventsAggregationValue("latest")
+EventsAggregationValue.MAX = EventsAggregationValue("max")
+EventsAggregationValue.MEDIAN = EventsAggregationValue("median")
+EventsAggregationValue.MIN = EventsAggregationValue("min")
+EventsAggregationValue.MOST_FREQUENT = EventsAggregationValue("most_frequent")
+EventsAggregationValue.SUM = EventsAggregationValue("sum")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_dependency_stat_name.py b/datadog_api_client/v1/model/formula_and_function_apm_dependency_stat_name.py
new file mode 100644
index 0000000000..64960347a0
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_dependency_stat_name.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmDependencyStatName(ModelSimple):
+ """
+ APM statistic.
+
+ :param value: Must be one of ["avg_duration", "avg_root_duration", "avg_spans_per_trace", "error_rate", "pct_exec_time", "pct_of_traces", "total_traces_count"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg_duration",
+ "avg_root_duration",
+ "avg_spans_per_trace",
+ "error_rate",
+ "pct_exec_time",
+ "pct_of_traces",
+ "total_traces_count",
+ }
+ AVG_DURATION: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+ AVG_ROOT_DURATION: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+ AVG_SPANS_PER_TRACE: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+ ERROR_RATE: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+ PCT_EXEC_TIME: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+ PCT_OF_TRACES: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+ TOTAL_TRACES_COUNT: ClassVar["FormulaAndFunctionApmDependencyStatName"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmDependencyStatName.AVG_DURATION = FormulaAndFunctionApmDependencyStatName("avg_duration")
+FormulaAndFunctionApmDependencyStatName.AVG_ROOT_DURATION = FormulaAndFunctionApmDependencyStatName("avg_root_duration")
+FormulaAndFunctionApmDependencyStatName.AVG_SPANS_PER_TRACE = FormulaAndFunctionApmDependencyStatName("avg_spans_per_trace")
+FormulaAndFunctionApmDependencyStatName.ERROR_RATE = FormulaAndFunctionApmDependencyStatName("error_rate")
+FormulaAndFunctionApmDependencyStatName.PCT_EXEC_TIME = FormulaAndFunctionApmDependencyStatName("pct_exec_time")
+FormulaAndFunctionApmDependencyStatName.PCT_OF_TRACES = FormulaAndFunctionApmDependencyStatName("pct_of_traces")
+FormulaAndFunctionApmDependencyStatName.TOTAL_TRACES_COUNT = FormulaAndFunctionApmDependencyStatName("total_traces_count")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_dependency_stats_data_source.py b/datadog_api_client/v1/model/formula_and_function_apm_dependency_stats_data_source.py
new file mode 100644
index 0000000000..ef7141c4fc
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_dependency_stats_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmDependencyStatsDataSource(ModelSimple):
+ """
+ Data source for APM dependency stats queries.
+
+ :param value: If omitted defaults to "apm_dependency_stats". Must be one of ["apm_dependency_stats"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "apm_dependency_stats",
+ }
+ APM_DEPENDENCY_STATS: ClassVar["FormulaAndFunctionApmDependencyStatsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmDependencyStatsDataSource.APM_DEPENDENCY_STATS = FormulaAndFunctionApmDependencyStatsDataSource("apm_dependency_stats")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_dependency_stats_query_definition.py b/datadog_api_client/v1/model/formula_and_function_apm_dependency_stats_query_definition.py
new file mode 100644
index 0000000000..2117100d90
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_dependency_stats_query_definition.py
@@ -0,0 +1,119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_data_source import FormulaAndFunctionApmDependencyStatsDataSource
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stat_name import FormulaAndFunctionApmDependencyStatName
+
+class FormulaAndFunctionApmDependencyStatsQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_data_source import FormulaAndFunctionApmDependencyStatsDataSource
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stat_name import FormulaAndFunctionApmDependencyStatName
+ return {
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionApmDependencyStatsDataSource,),
+ "env": (str,),
+ "is_upstream": (bool,),
+ "name": (str,),
+ "operation_name": (str,),
+ "primary_tag_name": (str,),
+ "primary_tag_value": (str,),
+ "resource_name": (str,),
+ "service": (str,),
+ "stat": (FormulaAndFunctionApmDependencyStatName,),
+ }
+ attribute_map = {
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "env": "env",
+ "is_upstream": "is_upstream",
+ "name": "name",
+ "operation_name": "operation_name",
+ "primary_tag_name": "primary_tag_name",
+ "primary_tag_value": "primary_tag_value",
+ "resource_name": "resource_name",
+ "service": "service",
+ "stat": "stat",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionApmDependencyStatsDataSource, env: str, name: str, operation_name: str, resource_name: str, service: str, stat: FormulaAndFunctionApmDependencyStatName, cross_org_uuids: Union[List[str], UnsetType]=unset, is_upstream: Union[bool, UnsetType]=unset, primary_tag_name: Union[str, UnsetType]=unset, primary_tag_value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions APM dependency stats query.
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for APM dependency stats queries.
+ :type data_source: FormulaAndFunctionApmDependencyStatsDataSource
+
+ :param env: APM environment.
+ :type env: str
+
+ :param is_upstream: Determines whether stats for upstream or downstream dependencies should be queried.
+ :type is_upstream: bool, optional
+
+ :param name: Name of query to use in formulas.
+ :type name: str
+
+ :param operation_name: Name of operation on service.
+ :type operation_name: str
+
+ :param primary_tag_name: The name of the second primary tag used within APM; required when ``primary_tag_value`` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.
+ :type primary_tag_name: str, optional
+
+ :param primary_tag_value: Filter APM data by the second primary tag. ``primary_tag_name`` must also be specified.
+ :type primary_tag_value: str, optional
+
+ :param resource_name: APM resource.
+ :type resource_name: str
+
+ :param service: APM service.
+ :type service: str
+
+ :param stat: APM statistic.
+ :type stat: FormulaAndFunctionApmDependencyStatName
+ """
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ if is_upstream is not unset:
+ kwargs["is_upstream"] = is_upstream
+ if primary_tag_name is not unset:
+ kwargs["primary_tag_name"] = primary_tag_name
+ if primary_tag_value is not unset:
+ kwargs["primary_tag_value"] = primary_tag_value
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.env = env
+ self_.name = name
+ self_.operation_name = operation_name
+ self_.resource_name = resource_name
+ self_.service = service
+ self_.stat = stat
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_metric_stat_name.py b/datadog_api_client/v1/model/formula_and_function_apm_metric_stat_name.py
new file mode 100644
index 0000000000..7647c1479c
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_metric_stat_name.py
@@ -0,0 +1,90 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmMetricStatName(ModelSimple):
+ """
+ APM metric stat name.
+
+ :param value: Must be one of ["errors", "error_rate", "errors_per_second", "latency_avg", "latency_max", "latency_p50", "latency_p75", "latency_p90", "latency_p95", "latency_p99", "latency_p999", "latency_distribution", "hits", "hits_per_second", "total_time", "apdex"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "errors",
+ "error_rate",
+ "errors_per_second",
+ "latency_avg",
+ "latency_max",
+ "latency_p50",
+ "latency_p75",
+ "latency_p90",
+ "latency_p95",
+ "latency_p99",
+ "latency_p999",
+ "latency_distribution",
+ "hits",
+ "hits_per_second",
+ "total_time",
+ "apdex",
+ }
+ ERRORS: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ ERROR_RATE: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ ERRORS_PER_SECOND: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_AVG: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_MAX: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_P50: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_P75: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_P90: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_P95: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_P99: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_P999: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ LATENCY_DISTRIBUTION: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ HITS: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ HITS_PER_SECOND: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ TOTAL_TIME: ClassVar["FormulaAndFunctionApmMetricStatName"]
+ APDEX: ClassVar["FormulaAndFunctionApmMetricStatName"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmMetricStatName.ERRORS = FormulaAndFunctionApmMetricStatName("errors")
+FormulaAndFunctionApmMetricStatName.ERROR_RATE = FormulaAndFunctionApmMetricStatName("error_rate")
+FormulaAndFunctionApmMetricStatName.ERRORS_PER_SECOND = FormulaAndFunctionApmMetricStatName("errors_per_second")
+FormulaAndFunctionApmMetricStatName.LATENCY_AVG = FormulaAndFunctionApmMetricStatName("latency_avg")
+FormulaAndFunctionApmMetricStatName.LATENCY_MAX = FormulaAndFunctionApmMetricStatName("latency_max")
+FormulaAndFunctionApmMetricStatName.LATENCY_P50 = FormulaAndFunctionApmMetricStatName("latency_p50")
+FormulaAndFunctionApmMetricStatName.LATENCY_P75 = FormulaAndFunctionApmMetricStatName("latency_p75")
+FormulaAndFunctionApmMetricStatName.LATENCY_P90 = FormulaAndFunctionApmMetricStatName("latency_p90")
+FormulaAndFunctionApmMetricStatName.LATENCY_P95 = FormulaAndFunctionApmMetricStatName("latency_p95")
+FormulaAndFunctionApmMetricStatName.LATENCY_P99 = FormulaAndFunctionApmMetricStatName("latency_p99")
+FormulaAndFunctionApmMetricStatName.LATENCY_P999 = FormulaAndFunctionApmMetricStatName("latency_p999")
+FormulaAndFunctionApmMetricStatName.LATENCY_DISTRIBUTION = FormulaAndFunctionApmMetricStatName("latency_distribution")
+FormulaAndFunctionApmMetricStatName.HITS = FormulaAndFunctionApmMetricStatName("hits")
+FormulaAndFunctionApmMetricStatName.HITS_PER_SECOND = FormulaAndFunctionApmMetricStatName("hits_per_second")
+FormulaAndFunctionApmMetricStatName.TOTAL_TIME = FormulaAndFunctionApmMetricStatName("total_time")
+FormulaAndFunctionApmMetricStatName.APDEX = FormulaAndFunctionApmMetricStatName("apdex")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_metrics_data_source.py b/datadog_api_client/v1/model/formula_and_function_apm_metrics_data_source.py
new file mode 100644
index 0000000000..30da8d41d3
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_metrics_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmMetricsDataSource(ModelSimple):
+ """
+ Data source for APM metrics queries.
+
+ :param value: If omitted defaults to "apm_metrics". Must be one of ["apm_metrics"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "apm_metrics",
+ }
+ APM_METRICS: ClassVar["FormulaAndFunctionApmMetricsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmMetricsDataSource.APM_METRICS = FormulaAndFunctionApmMetricsDataSource("apm_metrics")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_metrics_query_definition.py b/datadog_api_client/v1/model/formula_and_function_apm_metrics_query_definition.py
new file mode 100644
index 0000000000..0a96706119
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_metrics_query_definition.py
@@ -0,0 +1,127 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_data_source import FormulaAndFunctionApmMetricsDataSource
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_span_kind import FormulaAndFunctionApmMetricsSpanKind
+ from datadog_api_client.v1.model.formula_and_function_apm_metric_stat_name import FormulaAndFunctionApmMetricStatName
+
+class FormulaAndFunctionApmMetricsQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_data_source import FormulaAndFunctionApmMetricsDataSource
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_span_kind import FormulaAndFunctionApmMetricsSpanKind
+ from datadog_api_client.v1.model.formula_and_function_apm_metric_stat_name import FormulaAndFunctionApmMetricStatName
+ return {
+ "data_source": (FormulaAndFunctionApmMetricsDataSource,),
+ "group_by": ([str],),
+ "name": (str,),
+ "operation_mode": (str,),
+ "operation_name": (str,),
+ "peer_tags": ([str],),
+ "query_filter": (str,),
+ "resource_hash": (str,),
+ "resource_name": (str,),
+ "service": (str,),
+ "span_kind": (FormulaAndFunctionApmMetricsSpanKind,),
+ "stat": (FormulaAndFunctionApmMetricStatName,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "name": "name",
+ "operation_mode": "operation_mode",
+ "operation_name": "operation_name",
+ "peer_tags": "peer_tags",
+ "query_filter": "query_filter",
+ "resource_hash": "resource_hash",
+ "resource_name": "resource_name",
+ "service": "service",
+ "span_kind": "span_kind",
+ "stat": "stat",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionApmMetricsDataSource, name: str, stat: FormulaAndFunctionApmMetricStatName, group_by: Union[List[str], UnsetType]=unset, operation_mode: Union[str, UnsetType]=unset, operation_name: Union[str, UnsetType]=unset, peer_tags: Union[List[str], UnsetType]=unset, query_filter: Union[str, UnsetType]=unset, resource_hash: Union[str, UnsetType]=unset, resource_name: Union[str, UnsetType]=unset, service: Union[str, UnsetType]=unset, span_kind: Union[FormulaAndFunctionApmMetricsSpanKind, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions APM metrics query.
+
+ :param data_source: Data source for APM metrics queries.
+ :type data_source: FormulaAndFunctionApmMetricsDataSource
+
+ :param group_by: Optional fields to group the query results by.
+ :type group_by: [str], optional
+
+ :param name: Name of this query to use in formulas.
+ :type name: str
+
+ :param operation_mode: Optional operation mode to aggregate across operation names.
+ :type operation_mode: str, optional
+
+ :param operation_name: Name of operation on service. If not provided, the primary operation name is used.
+ :type operation_name: str, optional
+
+ :param peer_tags: Tags to query for a specific downstream entity (peer.service, peer.db_instance, peer.s3, peer.s3.bucket, etc.).
+ :type peer_tags: [str], optional
+
+ :param query_filter: Additional filters for the query using metrics query syntax (e.g., env, primary_tag).
+ :type query_filter: str, optional
+
+ :param resource_hash: The hash of a specific resource to filter by.
+ :type resource_hash: str, optional
+
+ :param resource_name: The full name of a specific resource to filter by.
+ :type resource_name: str, optional
+
+ :param service: APM service name.
+ :type service: str, optional
+
+ :param span_kind: Describes the relationship between the span, its parents, and its children in a trace.
+ :type span_kind: FormulaAndFunctionApmMetricsSpanKind, optional
+
+ :param stat: APM metric stat name.
+ :type stat: FormulaAndFunctionApmMetricStatName
+ """
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if operation_mode is not unset:
+ kwargs["operation_mode"] = operation_mode
+ if operation_name is not unset:
+ kwargs["operation_name"] = operation_name
+ if peer_tags is not unset:
+ kwargs["peer_tags"] = peer_tags
+ if query_filter is not unset:
+ kwargs["query_filter"] = query_filter
+ if resource_hash is not unset:
+ kwargs["resource_hash"] = resource_hash
+ if resource_name is not unset:
+ kwargs["resource_name"] = resource_name
+ if service is not unset:
+ kwargs["service"] = service
+ if span_kind is not unset:
+ kwargs["span_kind"] = span_kind
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.name = name
+ self_.stat = stat
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_metrics_span_kind.py b/datadog_api_client/v1/model/formula_and_function_apm_metrics_span_kind.py
new file mode 100644
index 0000000000..c1c88ba7ce
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_metrics_span_kind.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmMetricsSpanKind(ModelSimple):
+ """
+ Describes the relationship between the span, its parents, and its children in a trace.
+
+ :param value: Must be one of ["consumer", "server", "client", "producer", "internal"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "consumer",
+ "server",
+ "client",
+ "producer",
+ "internal",
+ }
+ CONSUMER: ClassVar["FormulaAndFunctionApmMetricsSpanKind"]
+ SERVER: ClassVar["FormulaAndFunctionApmMetricsSpanKind"]
+ CLIENT: ClassVar["FormulaAndFunctionApmMetricsSpanKind"]
+ PRODUCER: ClassVar["FormulaAndFunctionApmMetricsSpanKind"]
+ INTERNAL: ClassVar["FormulaAndFunctionApmMetricsSpanKind"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmMetricsSpanKind.CONSUMER = FormulaAndFunctionApmMetricsSpanKind("consumer")
+FormulaAndFunctionApmMetricsSpanKind.SERVER = FormulaAndFunctionApmMetricsSpanKind("server")
+FormulaAndFunctionApmMetricsSpanKind.CLIENT = FormulaAndFunctionApmMetricsSpanKind("client")
+FormulaAndFunctionApmMetricsSpanKind.PRODUCER = FormulaAndFunctionApmMetricsSpanKind("producer")
+FormulaAndFunctionApmMetricsSpanKind.INTERNAL = FormulaAndFunctionApmMetricsSpanKind("internal")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_resource_stat_name.py b/datadog_api_client/v1/model/formula_and_function_apm_resource_stat_name.py
new file mode 100644
index 0000000000..0e63ebacac
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_resource_stat_name.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmResourceStatName(ModelSimple):
+ """
+ APM resource stat name.
+
+ :param value: Must be one of ["errors", "error_rate", "hits", "latency_avg", "latency_distribution", "latency_max", "latency_p50", "latency_p75", "latency_p90", "latency_p95", "latency_p99"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "errors",
+ "error_rate",
+ "hits",
+ "latency_avg",
+ "latency_distribution",
+ "latency_max",
+ "latency_p50",
+ "latency_p75",
+ "latency_p90",
+ "latency_p95",
+ "latency_p99",
+ }
+ ERRORS: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ ERROR_RATE: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ HITS: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_AVG: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_DISTRIBUTION: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_MAX: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_P50: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_P75: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_P90: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_P95: ClassVar["FormulaAndFunctionApmResourceStatName"]
+ LATENCY_P99: ClassVar["FormulaAndFunctionApmResourceStatName"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmResourceStatName.ERRORS = FormulaAndFunctionApmResourceStatName("errors")
+FormulaAndFunctionApmResourceStatName.ERROR_RATE = FormulaAndFunctionApmResourceStatName("error_rate")
+FormulaAndFunctionApmResourceStatName.HITS = FormulaAndFunctionApmResourceStatName("hits")
+FormulaAndFunctionApmResourceStatName.LATENCY_AVG = FormulaAndFunctionApmResourceStatName("latency_avg")
+FormulaAndFunctionApmResourceStatName.LATENCY_DISTRIBUTION = FormulaAndFunctionApmResourceStatName("latency_distribution")
+FormulaAndFunctionApmResourceStatName.LATENCY_MAX = FormulaAndFunctionApmResourceStatName("latency_max")
+FormulaAndFunctionApmResourceStatName.LATENCY_P50 = FormulaAndFunctionApmResourceStatName("latency_p50")
+FormulaAndFunctionApmResourceStatName.LATENCY_P75 = FormulaAndFunctionApmResourceStatName("latency_p75")
+FormulaAndFunctionApmResourceStatName.LATENCY_P90 = FormulaAndFunctionApmResourceStatName("latency_p90")
+FormulaAndFunctionApmResourceStatName.LATENCY_P95 = FormulaAndFunctionApmResourceStatName("latency_p95")
+FormulaAndFunctionApmResourceStatName.LATENCY_P99 = FormulaAndFunctionApmResourceStatName("latency_p99")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_resource_stats_data_source.py b/datadog_api_client/v1/model/formula_and_function_apm_resource_stats_data_source.py
new file mode 100644
index 0000000000..dbe8a3a79e
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_resource_stats_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionApmResourceStatsDataSource(ModelSimple):
+ """
+ Data source for APM resource stats queries.
+
+ :param value: If omitted defaults to "apm_resource_stats". Must be one of ["apm_resource_stats"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "apm_resource_stats",
+ }
+ APM_RESOURCE_STATS: ClassVar["FormulaAndFunctionApmResourceStatsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionApmResourceStatsDataSource.APM_RESOURCE_STATS = FormulaAndFunctionApmResourceStatsDataSource("apm_resource_stats")
diff --git a/datadog_api_client/v1/model/formula_and_function_apm_resource_stats_query_definition.py b/datadog_api_client/v1/model/formula_and_function_apm_resource_stats_query_definition.py
new file mode 100644
index 0000000000..9546a305a7
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_apm_resource_stats_query_definition.py
@@ -0,0 +1,121 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_data_source import FormulaAndFunctionApmResourceStatsDataSource
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stat_name import FormulaAndFunctionApmResourceStatName
+
+class FormulaAndFunctionApmResourceStatsQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_data_source import FormulaAndFunctionApmResourceStatsDataSource
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stat_name import FormulaAndFunctionApmResourceStatName
+ return {
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionApmResourceStatsDataSource,),
+ "env": (str,),
+ "group_by": ([str],),
+ "name": (str,),
+ "operation_name": (str,),
+ "primary_tag_name": (str,),
+ "primary_tag_value": (str,),
+ "resource_name": (str,),
+ "service": (str,),
+ "stat": (FormulaAndFunctionApmResourceStatName,),
+ }
+ attribute_map = {
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "env": "env",
+ "group_by": "group_by",
+ "name": "name",
+ "operation_name": "operation_name",
+ "primary_tag_name": "primary_tag_name",
+ "primary_tag_value": "primary_tag_value",
+ "resource_name": "resource_name",
+ "service": "service",
+ "stat": "stat",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionApmResourceStatsDataSource, env: str, name: str, service: str, stat: FormulaAndFunctionApmResourceStatName, cross_org_uuids: Union[List[str], UnsetType]=unset, group_by: Union[List[str], UnsetType]=unset, operation_name: Union[str, UnsetType]=unset, primary_tag_name: Union[str, UnsetType]=unset, primary_tag_value: Union[str, UnsetType]=unset, resource_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ APM resource stats query using formulas and functions. Deprecated - Use ``apm_metrics`` query type instead.
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for APM resource stats queries.
+ :type data_source: FormulaAndFunctionApmResourceStatsDataSource
+
+ :param env: APM environment.
+ :type env: str
+
+ :param group_by: Array of fields to group results by.
+ :type group_by: [str], optional
+
+ :param name: Name of this query to use in formulas.
+ :type name: str
+
+ :param operation_name: Name of operation on service.
+ :type operation_name: str, optional
+
+ :param primary_tag_name: Name of the second primary tag used within APM. Required when ``primary_tag_value`` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog
+ :type primary_tag_name: str, optional
+
+ :param primary_tag_value: Value of the second primary tag by which to filter APM data. ``primary_tag_name`` must also be specified.
+ :type primary_tag_value: str, optional
+
+ :param resource_name: APM resource name.
+ :type resource_name: str, optional
+
+ :param service: APM service name.
+ :type service: str
+
+ :param stat: APM resource stat name.
+ :type stat: FormulaAndFunctionApmResourceStatName
+ """
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if operation_name is not unset:
+ kwargs["operation_name"] = operation_name
+ if primary_tag_name is not unset:
+ kwargs["primary_tag_name"] = primary_tag_name
+ if primary_tag_value is not unset:
+ kwargs["primary_tag_value"] = primary_tag_value
+ if resource_name is not unset:
+ kwargs["resource_name"] = resource_name
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.env = env
+ self_.name = name
+ self_.service = service
+ self_.stat = stat
diff --git a/datadog_api_client/v1/model/formula_and_function_cloud_cost_data_source.py b/datadog_api_client/v1/model/formula_and_function_cloud_cost_data_source.py
new file mode 100644
index 0000000000..5bd28468e1
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_cloud_cost_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionCloudCostDataSource(ModelSimple):
+ """
+ Data source for Cloud Cost queries.
+
+ :param value: If omitted defaults to "cloud_cost". Must be one of ["cloud_cost"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "cloud_cost",
+ }
+ CLOUD_COST: ClassVar["FormulaAndFunctionCloudCostDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionCloudCostDataSource.CLOUD_COST = FormulaAndFunctionCloudCostDataSource("cloud_cost")
diff --git a/datadog_api_client/v1/model/formula_and_function_cloud_cost_query_definition.py b/datadog_api_client/v1/model/formula_and_function_cloud_cost_query_definition.py
new file mode 100644
index 0000000000..f843985293
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_cloud_cost_query_definition.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_data_source import FormulaAndFunctionCloudCostDataSource
+
+class FormulaAndFunctionCloudCostQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_data_source import FormulaAndFunctionCloudCostDataSource
+ return {
+ "aggregator": (WidgetAggregator,),
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionCloudCostDataSource,),
+ "name": (str,),
+ "query": (str,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "name": "name",
+ "query": "query",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionCloudCostDataSource, name: str, query: str, aggregator: Union[WidgetAggregator, UnsetType]=unset, cross_org_uuids: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ A formula and functions Cloud Cost query.
+
+ :param aggregator: Aggregator used for the request.
+ :type aggregator: WidgetAggregator, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for Cloud Cost queries.
+ :type data_source: FormulaAndFunctionCloudCostDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: Query for Cloud Cost data.
+ :type query: str
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.name = name
+ self_.query = query
diff --git a/datadog_api_client/v1/model/formula_and_function_event_aggregation.py b/datadog_api_client/v1/model/formula_and_function_event_aggregation.py
new file mode 100644
index 0000000000..5e4c2be604
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_aggregation.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionEventAggregation(ModelSimple):
+ """
+ Aggregation methods for event platform queries.
+
+ :param value: Must be one of ["count", "cardinality", "median", "pc75", "pc90", "pc95", "pc98", "pc99", "sum", "min", "max", "avg"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "count",
+ "cardinality",
+ "median",
+ "pc75",
+ "pc90",
+ "pc95",
+ "pc98",
+ "pc99",
+ "sum",
+ "min",
+ "max",
+ "avg",
+ }
+ COUNT: ClassVar["FormulaAndFunctionEventAggregation"]
+ CARDINALITY: ClassVar["FormulaAndFunctionEventAggregation"]
+ MEDIAN: ClassVar["FormulaAndFunctionEventAggregation"]
+ PC75: ClassVar["FormulaAndFunctionEventAggregation"]
+ PC90: ClassVar["FormulaAndFunctionEventAggregation"]
+ PC95: ClassVar["FormulaAndFunctionEventAggregation"]
+ PC98: ClassVar["FormulaAndFunctionEventAggregation"]
+ PC99: ClassVar["FormulaAndFunctionEventAggregation"]
+ SUM: ClassVar["FormulaAndFunctionEventAggregation"]
+ MIN: ClassVar["FormulaAndFunctionEventAggregation"]
+ MAX: ClassVar["FormulaAndFunctionEventAggregation"]
+ AVG: ClassVar["FormulaAndFunctionEventAggregation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionEventAggregation.COUNT = FormulaAndFunctionEventAggregation("count")
+FormulaAndFunctionEventAggregation.CARDINALITY = FormulaAndFunctionEventAggregation("cardinality")
+FormulaAndFunctionEventAggregation.MEDIAN = FormulaAndFunctionEventAggregation("median")
+FormulaAndFunctionEventAggregation.PC75 = FormulaAndFunctionEventAggregation("pc75")
+FormulaAndFunctionEventAggregation.PC90 = FormulaAndFunctionEventAggregation("pc90")
+FormulaAndFunctionEventAggregation.PC95 = FormulaAndFunctionEventAggregation("pc95")
+FormulaAndFunctionEventAggregation.PC98 = FormulaAndFunctionEventAggregation("pc98")
+FormulaAndFunctionEventAggregation.PC99 = FormulaAndFunctionEventAggregation("pc99")
+FormulaAndFunctionEventAggregation.SUM = FormulaAndFunctionEventAggregation("sum")
+FormulaAndFunctionEventAggregation.MIN = FormulaAndFunctionEventAggregation("min")
+FormulaAndFunctionEventAggregation.MAX = FormulaAndFunctionEventAggregation("max")
+FormulaAndFunctionEventAggregation.AVG = FormulaAndFunctionEventAggregation("avg")
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_definition.py b/datadog_api_client/v1/model/formula_and_function_event_query_definition.py
new file mode 100644
index 0000000000..f86a2969e2
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_definition.py
@@ -0,0 +1,108 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition_compute import FormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.formula_and_function_events_data_source import FormulaAndFunctionEventsDataSource
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_config import FormulaAndFunctionEventQueryGroupByConfig
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition_search import FormulaAndFunctionEventQueryDefinitionSearch
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by import FormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_fields import FormulaAndFunctionEventQueryGroupByFields
+
+class FormulaAndFunctionEventQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition_compute import FormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.formula_and_function_events_data_source import FormulaAndFunctionEventsDataSource
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_config import FormulaAndFunctionEventQueryGroupByConfig
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition_search import FormulaAndFunctionEventQueryDefinitionSearch
+ return {
+ "compute": (FormulaAndFunctionEventQueryDefinitionCompute,),
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionEventsDataSource,),
+ "group_by": (FormulaAndFunctionEventQueryGroupByConfig,),
+ "indexes": ([str],),
+ "name": (str,),
+ "search": (FormulaAndFunctionEventQueryDefinitionSearch,),
+ "storage": (str,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "indexes": "indexes",
+ "name": "name",
+ "search": "search",
+ "storage": "storage",
+ }
+
+ def __init__(self_, compute: FormulaAndFunctionEventQueryDefinitionCompute, data_source: FormulaAndFunctionEventsDataSource, name: str, cross_org_uuids: Union[List[str], UnsetType]=unset, group_by: Union[FormulaAndFunctionEventQueryGroupByConfig, List[FormulaAndFunctionEventQueryGroupBy], FormulaAndFunctionEventQueryGroupByFields, UnsetType]=unset, indexes: Union[List[str], UnsetType]=unset, search: Union[FormulaAndFunctionEventQueryDefinitionSearch, UnsetType]=unset, storage: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions events query.
+
+ :param compute: Compute options.
+ :type compute: FormulaAndFunctionEventQueryDefinitionCompute
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for event platform-based queries.
+ :type data_source: FormulaAndFunctionEventsDataSource
+
+ :param group_by: Group by configuration for a formula and functions events query. Accepts either a list of facet objects or a flat object that specifies a list of facet fields.
+ :type group_by: FormulaAndFunctionEventQueryGroupByConfig, optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use ``[]`` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search options.
+ :type search: FormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param storage: Option for storage location. Feature in Private Beta.
+ :type storage: str, optional
+ """
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ if search is not unset:
+ kwargs["search"] = search
+ if storage is not unset:
+ kwargs["storage"] = storage
+ super().__init__(kwargs)
+
+
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.name = name
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_definition_compute.py b/datadog_api_client/v1/model/formula_and_function_event_query_definition_compute.py
new file mode 100644
index 0000000000..bc3d8d5678
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_definition_compute.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+
+class FormulaAndFunctionEventQueryDefinitionCompute(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ return {
+ "aggregation": (FormulaAndFunctionEventAggregation,),
+ "interval": (int,),
+ "metric": (str,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "interval": "interval",
+ "metric": "metric",
+ }
+
+ def __init__(self_, aggregation: FormulaAndFunctionEventAggregation, interval: Union[int, UnsetType]=unset, metric: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Compute options.
+
+ :param aggregation: Aggregation methods for event platform queries.
+ :type aggregation: FormulaAndFunctionEventAggregation
+
+ :param interval: A time interval in milliseconds.
+ :type interval: int, optional
+
+ :param metric: Measurable attribute to compute.
+ :type metric: str, optional
+ """
+ if interval is not unset:
+ kwargs["interval"] = interval
+ if metric is not unset:
+ kwargs["metric"] = metric
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_definition_search.py b/datadog_api_client/v1/model/formula_and_function_event_query_definition_search.py
new file mode 100644
index 0000000000..e40c15e4a4
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_definition_search.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class FormulaAndFunctionEventQueryDefinitionSearch(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ }
+ attribute_map = {
+ "query": "query",
+ }
+
+ def __init__(self_, query: str, **kwargs):
+ """
+ Search options.
+
+ :param query: Events search string.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_group_by.py b/datadog_api_client/v1/model/formula_and_function_event_query_group_by.py
new file mode 100644
index 0000000000..cf8d2d10ed
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_group_by.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+
+class FormulaAndFunctionEventQueryGroupBy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "sort": (FormulaAndFunctionEventQueryGroupBySort,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "sort": "sort",
+ }
+
+ def __init__(self_, facet: str, limit: Union[int, UnsetType]=unset, sort: Union[FormulaAndFunctionEventQueryGroupBySort, UnsetType]=unset, **kwargs):
+ """
+ List of objects used to group by.
+
+ :param facet: Event facet.
+ :type facet: str
+
+ :param limit: Number of groups to return.
+ :type limit: int, optional
+
+ :param sort: Options for sorting group by results.
+ :type sort: FormulaAndFunctionEventQueryGroupBySort, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_group_by_config.py b/datadog_api_client/v1/model/formula_and_function_event_query_group_by_config.py
new file mode 100644
index 0000000000..245a22e515
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_group_by_config.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class FormulaAndFunctionEventQueryGroupByConfig(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Group by configuration for a formula and functions events query. Accepts either a list of facet objects or a flat object that specifies a list of facet fields.
+
+ :param fields: List of event facets to group by.
+ :type fields: [str]
+
+ :param limit: Number of groups to return.
+ :type limit: int, optional
+
+ :param sort: Options for sorting group by results.
+ :type sort: FormulaAndFunctionEventQueryGroupBySort, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by import FormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_fields import FormulaAndFunctionEventQueryGroupByFields
+ return {
+ "oneOf": [
+ [FormulaAndFunctionEventQueryGroupBy],
+ FormulaAndFunctionEventQueryGroupByFields,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_group_by_fields.py b/datadog_api_client/v1/model/formula_and_function_event_query_group_by_fields.py
new file mode 100644
index 0000000000..44cce6018d
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_group_by_fields.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+
+class FormulaAndFunctionEventQueryGroupByFields(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+ return {
+ "fields": ([str],),
+ "limit": (int,),
+ "sort": (FormulaAndFunctionEventQueryGroupBySort,),
+ }
+ attribute_map = {
+ "fields": "fields",
+ "limit": "limit",
+ "sort": "sort",
+ }
+
+ def __init__(self_, fields: List[str], limit: Union[int, UnsetType]=unset, sort: Union[FormulaAndFunctionEventQueryGroupBySort, UnsetType]=unset, **kwargs):
+ """
+ Flat group by configuration using multiple event facet fields.
+
+ :param fields: List of event facets to group by.
+ :type fields: [str]
+
+ :param limit: Number of groups to return.
+ :type limit: int, optional
+
+ :param sort: Options for sorting group by results.
+ :type sort: FormulaAndFunctionEventQueryGroupBySort, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.fields = fields
diff --git a/datadog_api_client/v1/model/formula_and_function_event_query_group_by_sort.py b/datadog_api_client/v1/model/formula_and_function_event_query_group_by_sort.py
new file mode 100644
index 0000000000..76630ee818
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_event_query_group_by_sort.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+
+class FormulaAndFunctionEventQueryGroupBySort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+ return {
+ "aggregation": (FormulaAndFunctionEventAggregation,),
+ "metric": (str,),
+ "order": (QuerySortOrder,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ "order": "order",
+ }
+
+ def __init__(self_, aggregation: FormulaAndFunctionEventAggregation, metric: Union[str, UnsetType]=unset, order: Union[QuerySortOrder, UnsetType]=unset, **kwargs):
+ """
+ Options for sorting group by results.
+
+ :param aggregation: Aggregation methods for event platform queries.
+ :type aggregation: FormulaAndFunctionEventAggregation
+
+ :param metric: Metric used for sorting group by results.
+ :type metric: str, optional
+
+ :param order: Direction of sort.
+ :type order: QuerySortOrder, optional
+ """
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/formula_and_function_events_data_source.py b/datadog_api_client/v1/model/formula_and_function_events_data_source.py
new file mode 100644
index 0000000000..f6ca187a5b
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_events_data_source.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionEventsDataSource(ModelSimple):
+ """
+ Data source for event platform-based queries.
+
+ :param value: Must be one of ["logs", "spans", "network", "rum", "security_signals", "profiles", "audit", "events", "ci_tests", "ci_pipelines", "incident_analytics", "product_analytics", "on_call_events", "errors", "llm_observability"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "logs",
+ "spans",
+ "network",
+ "rum",
+ "security_signals",
+ "profiles",
+ "audit",
+ "events",
+ "ci_tests",
+ "ci_pipelines",
+ "incident_analytics",
+ "product_analytics",
+ "on_call_events",
+ "errors",
+ "llm_observability",
+ }
+ LOGS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ SPANS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ NETWORK: ClassVar["FormulaAndFunctionEventsDataSource"]
+ RUM: ClassVar["FormulaAndFunctionEventsDataSource"]
+ SECURITY_SIGNALS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ PROFILES: ClassVar["FormulaAndFunctionEventsDataSource"]
+ AUDIT: ClassVar["FormulaAndFunctionEventsDataSource"]
+ EVENTS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ CI_TESTS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ CI_PIPELINES: ClassVar["FormulaAndFunctionEventsDataSource"]
+ INCIDENT_ANALYTICS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ PRODUCT_ANALYTICS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ ON_CALL_EVENTS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ ERRORS: ClassVar["FormulaAndFunctionEventsDataSource"]
+ LLM_OBSERVABILITY: ClassVar["FormulaAndFunctionEventsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionEventsDataSource.LOGS = FormulaAndFunctionEventsDataSource("logs")
+FormulaAndFunctionEventsDataSource.SPANS = FormulaAndFunctionEventsDataSource("spans")
+FormulaAndFunctionEventsDataSource.NETWORK = FormulaAndFunctionEventsDataSource("network")
+FormulaAndFunctionEventsDataSource.RUM = FormulaAndFunctionEventsDataSource("rum")
+FormulaAndFunctionEventsDataSource.SECURITY_SIGNALS = FormulaAndFunctionEventsDataSource("security_signals")
+FormulaAndFunctionEventsDataSource.PROFILES = FormulaAndFunctionEventsDataSource("profiles")
+FormulaAndFunctionEventsDataSource.AUDIT = FormulaAndFunctionEventsDataSource("audit")
+FormulaAndFunctionEventsDataSource.EVENTS = FormulaAndFunctionEventsDataSource("events")
+FormulaAndFunctionEventsDataSource.CI_TESTS = FormulaAndFunctionEventsDataSource("ci_tests")
+FormulaAndFunctionEventsDataSource.CI_PIPELINES = FormulaAndFunctionEventsDataSource("ci_pipelines")
+FormulaAndFunctionEventsDataSource.INCIDENT_ANALYTICS = FormulaAndFunctionEventsDataSource("incident_analytics")
+FormulaAndFunctionEventsDataSource.PRODUCT_ANALYTICS = FormulaAndFunctionEventsDataSource("product_analytics")
+FormulaAndFunctionEventsDataSource.ON_CALL_EVENTS = FormulaAndFunctionEventsDataSource("on_call_events")
+FormulaAndFunctionEventsDataSource.ERRORS = FormulaAndFunctionEventsDataSource("errors")
+FormulaAndFunctionEventsDataSource.LLM_OBSERVABILITY = FormulaAndFunctionEventsDataSource("llm_observability")
diff --git a/datadog_api_client/v1/model/formula_and_function_metric_aggregation.py b/datadog_api_client/v1/model/formula_and_function_metric_aggregation.py
new file mode 100644
index 0000000000..9fd3ee72bc
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_metric_aggregation.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionMetricAggregation(ModelSimple):
+ """
+ The aggregation methods available for metrics queries.
+
+ :param value: Must be one of ["avg", "min", "max", "sum", "last", "area", "l2norm", "percentile"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg",
+ "min",
+ "max",
+ "sum",
+ "last",
+ "area",
+ "l2norm",
+ "percentile",
+ }
+ AVG: ClassVar["FormulaAndFunctionMetricAggregation"]
+ MIN: ClassVar["FormulaAndFunctionMetricAggregation"]
+ MAX: ClassVar["FormulaAndFunctionMetricAggregation"]
+ SUM: ClassVar["FormulaAndFunctionMetricAggregation"]
+ LAST: ClassVar["FormulaAndFunctionMetricAggregation"]
+ AREA: ClassVar["FormulaAndFunctionMetricAggregation"]
+ L2NORM: ClassVar["FormulaAndFunctionMetricAggregation"]
+ PERCENTILE: ClassVar["FormulaAndFunctionMetricAggregation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionMetricAggregation.AVG = FormulaAndFunctionMetricAggregation("avg")
+FormulaAndFunctionMetricAggregation.MIN = FormulaAndFunctionMetricAggregation("min")
+FormulaAndFunctionMetricAggregation.MAX = FormulaAndFunctionMetricAggregation("max")
+FormulaAndFunctionMetricAggregation.SUM = FormulaAndFunctionMetricAggregation("sum")
+FormulaAndFunctionMetricAggregation.LAST = FormulaAndFunctionMetricAggregation("last")
+FormulaAndFunctionMetricAggregation.AREA = FormulaAndFunctionMetricAggregation("area")
+FormulaAndFunctionMetricAggregation.L2NORM = FormulaAndFunctionMetricAggregation("l2norm")
+FormulaAndFunctionMetricAggregation.PERCENTILE = FormulaAndFunctionMetricAggregation("percentile")
diff --git a/datadog_api_client/v1/model/formula_and_function_metric_data_source.py b/datadog_api_client/v1/model/formula_and_function_metric_data_source.py
new file mode 100644
index 0000000000..95330033dc
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_metric_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionMetricDataSource(ModelSimple):
+ """
+ Data source for metrics queries.
+
+ :param value: If omitted defaults to "metrics". Must be one of ["metrics"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "metrics",
+ }
+ METRICS: ClassVar["FormulaAndFunctionMetricDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionMetricDataSource.METRICS = FormulaAndFunctionMetricDataSource("metrics")
diff --git a/datadog_api_client/v1/model/formula_and_function_metric_query_definition.py b/datadog_api_client/v1/model/formula_and_function_metric_query_definition.py
new file mode 100644
index 0000000000..8d69eb2585
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_metric_query_definition.py
@@ -0,0 +1,90 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation
+ from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource
+ from datadog_api_client.v1.model.formula_and_function_metric_semantic_mode import FormulaAndFunctionMetricSemanticMode
+
+class FormulaAndFunctionMetricQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation
+ from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource
+ from datadog_api_client.v1.model.formula_and_function_metric_semantic_mode import FormulaAndFunctionMetricSemanticMode
+ return {
+ "aggregator": (FormulaAndFunctionMetricAggregation,),
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionMetricDataSource,),
+ "name": (str,),
+ "query": (str,),
+ "semantic_mode": (FormulaAndFunctionMetricSemanticMode,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "name": "name",
+ "query": "query",
+ "semantic_mode": "semantic_mode",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionMetricDataSource, name: str, query: str, aggregator: Union[FormulaAndFunctionMetricAggregation, UnsetType]=unset, cross_org_uuids: Union[List[str], UnsetType]=unset, semantic_mode: Union[FormulaAndFunctionMetricSemanticMode, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions metrics query.
+
+ :param aggregator: The aggregation methods available for metrics queries.
+ :type aggregator: FormulaAndFunctionMetricAggregation, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for metrics queries.
+ :type data_source: FormulaAndFunctionMetricDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: Metrics query definition.
+ :type query: str
+
+ :param semantic_mode: Semantic mode for metrics queries. This determines how metrics from different sources are combined or displayed.
+ :type semantic_mode: FormulaAndFunctionMetricSemanticMode, optional
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ if semantic_mode is not unset:
+ kwargs["semantic_mode"] = semantic_mode
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.name = name
+ self_.query = query
diff --git a/datadog_api_client/v1/model/formula_and_function_metric_semantic_mode.py b/datadog_api_client/v1/model/formula_and_function_metric_semantic_mode.py
new file mode 100644
index 0000000000..e724b404ee
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_metric_semantic_mode.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionMetricSemanticMode(ModelSimple):
+ """
+ Semantic mode for metrics queries. This determines how metrics from different sources are combined or displayed.
+
+ :param value: Must be one of ["combined", "native"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "combined",
+ "native",
+ }
+ COMBINED: ClassVar["FormulaAndFunctionMetricSemanticMode"]
+ NATIVE: ClassVar["FormulaAndFunctionMetricSemanticMode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionMetricSemanticMode.COMBINED = FormulaAndFunctionMetricSemanticMode("combined")
+FormulaAndFunctionMetricSemanticMode.NATIVE = FormulaAndFunctionMetricSemanticMode("native")
diff --git a/datadog_api_client/v1/model/formula_and_function_process_query_data_source.py b/datadog_api_client/v1/model/formula_and_function_process_query_data_source.py
new file mode 100644
index 0000000000..b48258d96c
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_process_query_data_source.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionProcessQueryDataSource(ModelSimple):
+ """
+ Data sources that rely on the process backend.
+
+ :param value: Must be one of ["process", "container"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "process",
+ "container",
+ }
+ PROCESS: ClassVar["FormulaAndFunctionProcessQueryDataSource"]
+ CONTAINER: ClassVar["FormulaAndFunctionProcessQueryDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionProcessQueryDataSource.PROCESS = FormulaAndFunctionProcessQueryDataSource("process")
+FormulaAndFunctionProcessQueryDataSource.CONTAINER = FormulaAndFunctionProcessQueryDataSource("container")
diff --git a/datadog_api_client/v1/model/formula_and_function_process_query_definition.py b/datadog_api_client/v1/model/formula_and_function_process_query_definition.py
new file mode 100644
index 0000000000..31bc0a8c52
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_process_query_definition.py
@@ -0,0 +1,118 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation
+ from datadog_api_client.v1.model.formula_and_function_process_query_data_source import FormulaAndFunctionProcessQueryDataSource
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+
+class FormulaAndFunctionProcessQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation
+ from datadog_api_client.v1.model.formula_and_function_process_query_data_source import FormulaAndFunctionProcessQueryDataSource
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+ return {
+ "aggregator": (FormulaAndFunctionMetricAggregation,),
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionProcessQueryDataSource,),
+ "is_normalized_cpu": (bool,),
+ "limit": (int,),
+ "metric": (str,),
+ "name": (str,),
+ "sort": (QuerySortOrder,),
+ "tag_filters": ([str],),
+ "text_filter": (str,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "is_normalized_cpu": "is_normalized_cpu",
+ "limit": "limit",
+ "metric": "metric",
+ "name": "name",
+ "sort": "sort",
+ "tag_filters": "tag_filters",
+ "text_filter": "text_filter",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionProcessQueryDataSource, metric: str, name: str, aggregator: Union[FormulaAndFunctionMetricAggregation, UnsetType]=unset, cross_org_uuids: Union[List[str], UnsetType]=unset, is_normalized_cpu: Union[bool, UnsetType]=unset, limit: Union[int, UnsetType]=unset, sort: Union[QuerySortOrder, UnsetType]=unset, tag_filters: Union[List[str], UnsetType]=unset, text_filter: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Process query using formulas and functions.
+
+ :param aggregator: The aggregation methods available for metrics queries.
+ :type aggregator: FormulaAndFunctionMetricAggregation, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data sources that rely on the process backend.
+ :type data_source: FormulaAndFunctionProcessQueryDataSource
+
+ :param is_normalized_cpu: Whether to normalize the CPU percentages.
+ :type is_normalized_cpu: bool, optional
+
+ :param limit: Number of hits to return.
+ :type limit: int, optional
+
+ :param metric: Process metric name.
+ :type metric: str
+
+ :param name: Name of query for use in formulas.
+ :type name: str
+
+ :param sort: Direction of sort.
+ :type sort: QuerySortOrder, optional
+
+ :param tag_filters: An array of tags to filter by.
+ :type tag_filters: [str], optional
+
+ :param text_filter: Text to use as filter.
+ :type text_filter: str, optional
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ if is_normalized_cpu is not unset:
+ kwargs["is_normalized_cpu"] = is_normalized_cpu
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if tag_filters is not unset:
+ kwargs["tag_filters"] = tag_filters
+ if text_filter is not unset:
+ kwargs["text_filter"] = text_filter
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.metric = metric
+ self_.name = name
diff --git a/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_data_source.py b/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_data_source.py
new file mode 100644
index 0000000000..d5e7fc1b1e
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionProductAnalyticsExtendedDataSource(ModelSimple):
+ """
+ Data source for Product Analytics Extended queries.
+
+ :param value: If omitted defaults to "product_analytics_extended". Must be one of ["product_analytics_extended"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "product_analytics_extended",
+ }
+ PRODUCT_ANALYTICS_EXTENDED: ClassVar["FormulaAndFunctionProductAnalyticsExtendedDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionProductAnalyticsExtendedDataSource.PRODUCT_ANALYTICS_EXTENDED = FormulaAndFunctionProductAnalyticsExtendedDataSource("product_analytics_extended")
diff --git a/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_query_definition.py b/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_query_definition.py
new file mode 100644
index 0000000000..3a1ae19c45
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_query_definition.py
@@ -0,0 +1,97 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ from datadog_api_client.v1.model.product_analytics_extended_compute import ProductAnalyticsExtendedCompute
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_data_source import FormulaAndFunctionProductAnalyticsExtendedDataSource
+ from datadog_api_client.v1.model.product_analytics_extended_group_by import ProductAnalyticsExtendedGroupBy
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition_indexes_items import FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+
+class FormulaAndFunctionProductAnalyticsExtendedQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ from datadog_api_client.v1.model.product_analytics_extended_compute import ProductAnalyticsExtendedCompute
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_data_source import FormulaAndFunctionProductAnalyticsExtendedDataSource
+ from datadog_api_client.v1.model.product_analytics_extended_group_by import ProductAnalyticsExtendedGroupBy
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition_indexes_items import FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+ return {
+ "audience_filters": (ProductAnalyticsAudienceFilters,),
+ "compute": (ProductAnalyticsExtendedCompute,),
+ "data_source": (FormulaAndFunctionProductAnalyticsExtendedDataSource,),
+ "group_by": ([ProductAnalyticsExtendedGroupBy],),
+ "indexes": ([FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems],),
+ "name": (str,),
+ "query": (ProductAnalyticsBaseQuery,),
+ }
+ attribute_map = {
+ "audience_filters": "audience_filters",
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "indexes": "indexes",
+ "name": "name",
+ "query": "query",
+ }
+
+ def __init__(self_, compute: ProductAnalyticsExtendedCompute, data_source: FormulaAndFunctionProductAnalyticsExtendedDataSource, name: str, query: ProductAnalyticsBaseQuery, audience_filters: Union[ProductAnalyticsAudienceFilters, UnsetType]=unset, group_by: Union[List[ProductAnalyticsExtendedGroupBy], UnsetType]=unset, indexes: Union[List[FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems], UnsetType]=unset, **kwargs):
+ """
+ A formula and functions Product Analytics Extended query for advanced analytics features.
+
+ :param audience_filters: Product Analytics/RUM audience filters.
+ :type audience_filters: ProductAnalyticsAudienceFilters, optional
+
+ :param compute: Compute configuration for Product Analytics Extended queries.
+ :type compute: ProductAnalyticsExtendedCompute
+
+ :param data_source: Data source for Product Analytics Extended queries.
+ :type data_source: FormulaAndFunctionProductAnalyticsExtendedDataSource
+
+ :param group_by: Group by configuration.
+ :type group_by: [ProductAnalyticsExtendedGroupBy], optional
+
+ :param indexes: Event indexes to query.
+ :type indexes: [FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: Product Analytics event query.
+ :type query: ProductAnalyticsBaseQuery
+ """
+ if audience_filters is not unset:
+ kwargs["audience_filters"] = audience_filters
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ super().__init__(kwargs)
+
+
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.name = name
+ self_.query = query
diff --git a/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_query_definition_indexes_items.py b/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_query_definition_indexes_items.py
new file mode 100644
index 0000000000..f93a3d7800
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_product_analytics_extended_query_definition_indexes_items.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems(ModelSimple):
+ """
+ Use `"*"` to query all indexes.
+
+ :param value: If omitted defaults to "*". Must be one of ["*"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "*",
+ }
+ ALL: ClassVar["FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems.ALL = FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems("*")
diff --git a/datadog_api_client/v1/model/formula_and_function_query_definition.py b/datadog_api_client/v1/model/formula_and_function_query_definition.py
new file mode 100644
index 0000000000..4cae81381d
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_query_definition.py
@@ -0,0 +1,177 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class FormulaAndFunctionQueryDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ A formula and function query.
+
+ :param aggregator: The aggregation methods available for metrics queries.
+ :type aggregator: FormulaAndFunctionMetricAggregation, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for metrics queries.
+ :type data_source: FormulaAndFunctionMetricDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: Metrics query definition.
+ :type query: str
+
+ :param semantic_mode: Semantic mode for metrics queries. This determines how metrics from different sources are combined or displayed.
+ :type semantic_mode: FormulaAndFunctionMetricSemanticMode, optional
+
+ :param compute: Compute options.
+ :type compute: FormulaAndFunctionEventQueryDefinitionCompute
+
+ :param group_by: Group by configuration for a formula and functions events query. Accepts either a list of facet objects or a flat object that specifies a list of facet fields.
+ :type group_by: FormulaAndFunctionEventQueryGroupByConfig, optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param search: Search options.
+ :type search: FormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param storage: Option for storage location. Feature in Private Beta.
+ :type storage: str, optional
+
+ :param is_normalized_cpu: Whether to normalize the CPU percentages.
+ :type is_normalized_cpu: bool, optional
+
+ :param limit: Number of hits to return.
+ :type limit: int, optional
+
+ :param metric: Process metric name.
+ :type metric: str
+
+ :param sort: Direction of sort.
+ :type sort: QuerySortOrder, optional
+
+ :param tag_filters: An array of tags to filter by.
+ :type tag_filters: [str], optional
+
+ :param text_filter: Text to use as filter.
+ :type text_filter: str, optional
+
+ :param env: APM environment.
+ :type env: str
+
+ :param is_upstream: Determines whether stats for upstream or downstream dependencies should be queried.
+ :type is_upstream: bool, optional
+
+ :param operation_name: Name of operation on service.
+ :type operation_name: str
+
+ :param primary_tag_name: The name of the second primary tag used within APM; required when `primary_tag_value` is specified. See https://docs.datadoghq.com/tracing/guide/setting_primary_tags_to_scope/#add-a-second-primary-tag-in-datadog.
+ :type primary_tag_name: str, optional
+
+ :param primary_tag_value: Filter APM data by the second primary tag. `primary_tag_name` must also be specified.
+ :type primary_tag_value: str, optional
+
+ :param resource_name: APM resource.
+ :type resource_name: str
+
+ :param service: APM service.
+ :type service: str
+
+ :param stat: APM statistic.
+ :type stat: FormulaAndFunctionApmDependencyStatName
+
+ :param operation_mode: Optional operation mode to aggregate across operation names.
+ :type operation_mode: str, optional
+
+ :param peer_tags: Tags to query for a specific downstream entity (peer.service, peer.db_instance, peer.s3, peer.s3.bucket, etc.).
+ :type peer_tags: [str], optional
+
+ :param query_filter: Additional filters for the query using metrics query syntax (e.g., env, primary_tag).
+ :type query_filter: str, optional
+
+ :param resource_hash: The hash of a specific resource to filter by.
+ :type resource_hash: str, optional
+
+ :param span_kind: Describes the relationship between the span, its parents, and its children in a trace.
+ :type span_kind: FormulaAndFunctionApmMetricsSpanKind, optional
+
+ :param additional_query_filters: Additional filters applied to the SLO query.
+ :type additional_query_filters: str, optional
+
+ :param group_mode: Group mode to query measures.
+ :type group_mode: FormulaAndFunctionSLOGroupMode, optional
+
+ :param measure: SLO measures queries.
+ :type measure: FormulaAndFunctionSLOMeasure
+
+ :param slo_id: ID of an SLO to query measures.
+ :type slo_id: str
+
+ :param slo_query_type: Name of the query for use in formulas.
+ :type slo_query_type: FormulaAndFunctionSLOQueryType, optional
+
+ :param audience_filters: Product Analytics/RUM audience filters.
+ :type audience_filters: ProductAnalyticsAudienceFilters, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ return {
+ "oneOf": [
+ FormulaAndFunctionMetricQueryDefinition,
+ FormulaAndFunctionEventQueryDefinition,
+ FormulaAndFunctionProcessQueryDefinition,
+ FormulaAndFunctionApmDependencyStatsQueryDefinition,
+ FormulaAndFunctionApmResourceStatsQueryDefinition,
+ FormulaAndFunctionApmMetricsQueryDefinition,
+ FormulaAndFunctionSLOQueryDefinition,
+ FormulaAndFunctionCloudCostQueryDefinition,
+ FormulaAndFunctionProductAnalyticsExtendedQueryDefinition,
+ FormulaAndFunctionUserJourneyQueryDefinition,
+ FormulaAndFunctionRetentionQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/formula_and_function_response_format.py b/datadog_api_client/v1/model/formula_and_function_response_format.py
new file mode 100644
index 0000000000..357741aa56
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_response_format.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionResponseFormat(ModelSimple):
+ """
+ Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+
+ :param value: Must be one of ["timeseries", "scalar", "event_list"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "timeseries",
+ "scalar",
+ "event_list",
+ }
+ TIMESERIES: ClassVar["FormulaAndFunctionResponseFormat"]
+ SCALAR: ClassVar["FormulaAndFunctionResponseFormat"]
+ EVENT_LIST: ClassVar["FormulaAndFunctionResponseFormat"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionResponseFormat.TIMESERIES = FormulaAndFunctionResponseFormat("timeseries")
+FormulaAndFunctionResponseFormat.SCALAR = FormulaAndFunctionResponseFormat("scalar")
+FormulaAndFunctionResponseFormat.EVENT_LIST = FormulaAndFunctionResponseFormat("event_list")
diff --git a/datadog_api_client/v1/model/formula_and_function_retention_query_definition.py b/datadog_api_client/v1/model/formula_and_function_retention_query_definition.py
new file mode 100644
index 0000000000..d59586cdd5
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_retention_query_definition.py
@@ -0,0 +1,79 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_compute import RetentionCompute
+ from datadog_api_client.v1.model.retention_data_source import RetentionDataSource
+ from datadog_api_client.v1.model.retention_group_by import RetentionGroupBy
+ from datadog_api_client.v1.model.retention_search import RetentionSearch
+
+class FormulaAndFunctionRetentionQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_compute import RetentionCompute
+ from datadog_api_client.v1.model.retention_data_source import RetentionDataSource
+ from datadog_api_client.v1.model.retention_group_by import RetentionGroupBy
+ from datadog_api_client.v1.model.retention_search import RetentionSearch
+ return {
+ "compute": (RetentionCompute,),
+ "data_source": (RetentionDataSource,),
+ "group_by": ([RetentionGroupBy],),
+ "name": (str,),
+ "search": (RetentionSearch,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "name": "name",
+ "search": "search",
+ }
+
+ def __init__(self_, compute: RetentionCompute, data_source: RetentionDataSource, name: str, search: RetentionSearch, group_by: Union[List[RetentionGroupBy], UnsetType]=unset, **kwargs):
+ """
+ A formula and functions Retention query for defining timeseries and scalar visualizations.
+
+ :param compute: Compute configuration for retention queries.
+ :type compute: RetentionCompute
+
+ :param data_source: Data source for retention queries.
+ :type data_source: RetentionDataSource
+
+ :param group_by: Group by configuration.
+ :type group_by: [RetentionGroupBy], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search configuration for retention queries.
+ :type search: RetentionSearch
+ """
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ super().__init__(kwargs)
+
+
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.name = name
+ self_.search = search
diff --git a/datadog_api_client/v1/model/formula_and_function_slo_data_source.py b/datadog_api_client/v1/model/formula_and_function_slo_data_source.py
new file mode 100644
index 0000000000..c278cca3b6
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_slo_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionSLODataSource(ModelSimple):
+ """
+ Data source for SLO measures queries.
+
+ :param value: If omitted defaults to "slo". Must be one of ["slo"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "slo",
+ }
+ SLO: ClassVar["FormulaAndFunctionSLODataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionSLODataSource.SLO = FormulaAndFunctionSLODataSource("slo")
diff --git a/datadog_api_client/v1/model/formula_and_function_slo_group_mode.py b/datadog_api_client/v1/model/formula_and_function_slo_group_mode.py
new file mode 100644
index 0000000000..1a62dd149c
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_slo_group_mode.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionSLOGroupMode(ModelSimple):
+ """
+ Group mode to query measures.
+
+ :param value: Must be one of ["overall", "components"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "overall",
+ "components",
+ }
+ OVERALL: ClassVar["FormulaAndFunctionSLOGroupMode"]
+ COMPONENTS: ClassVar["FormulaAndFunctionSLOGroupMode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionSLOGroupMode.OVERALL = FormulaAndFunctionSLOGroupMode("overall")
+FormulaAndFunctionSLOGroupMode.COMPONENTS = FormulaAndFunctionSLOGroupMode("components")
diff --git a/datadog_api_client/v1/model/formula_and_function_slo_measure.py b/datadog_api_client/v1/model/formula_and_function_slo_measure.py
new file mode 100644
index 0000000000..55c0d33cdb
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_slo_measure.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionSLOMeasure(ModelSimple):
+ """
+ SLO measures queries.
+
+ :param value: Must be one of ["good_events", "bad_events", "good_minutes", "bad_minutes", "slo_status", "error_budget_remaining", "burn_rate", "error_budget_burndown"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "good_events",
+ "bad_events",
+ "good_minutes",
+ "bad_minutes",
+ "slo_status",
+ "error_budget_remaining",
+ "burn_rate",
+ "error_budget_burndown",
+ }
+ GOOD_EVENTS: ClassVar["FormulaAndFunctionSLOMeasure"]
+ BAD_EVENTS: ClassVar["FormulaAndFunctionSLOMeasure"]
+ GOOD_MINUTES: ClassVar["FormulaAndFunctionSLOMeasure"]
+ BAD_MINUTES: ClassVar["FormulaAndFunctionSLOMeasure"]
+ SLO_STATUS: ClassVar["FormulaAndFunctionSLOMeasure"]
+ ERROR_BUDGET_REMAINING: ClassVar["FormulaAndFunctionSLOMeasure"]
+ BURN_RATE: ClassVar["FormulaAndFunctionSLOMeasure"]
+ ERROR_BUDGET_BURNDOWN: ClassVar["FormulaAndFunctionSLOMeasure"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionSLOMeasure.GOOD_EVENTS = FormulaAndFunctionSLOMeasure("good_events")
+FormulaAndFunctionSLOMeasure.BAD_EVENTS = FormulaAndFunctionSLOMeasure("bad_events")
+FormulaAndFunctionSLOMeasure.GOOD_MINUTES = FormulaAndFunctionSLOMeasure("good_minutes")
+FormulaAndFunctionSLOMeasure.BAD_MINUTES = FormulaAndFunctionSLOMeasure("bad_minutes")
+FormulaAndFunctionSLOMeasure.SLO_STATUS = FormulaAndFunctionSLOMeasure("slo_status")
+FormulaAndFunctionSLOMeasure.ERROR_BUDGET_REMAINING = FormulaAndFunctionSLOMeasure("error_budget_remaining")
+FormulaAndFunctionSLOMeasure.BURN_RATE = FormulaAndFunctionSLOMeasure("burn_rate")
+FormulaAndFunctionSLOMeasure.ERROR_BUDGET_BURNDOWN = FormulaAndFunctionSLOMeasure("error_budget_burndown")
diff --git a/datadog_api_client/v1/model/formula_and_function_slo_query_definition.py b/datadog_api_client/v1/model/formula_and_function_slo_query_definition.py
new file mode 100644
index 0000000000..5dd0c5f001
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_slo_query_definition.py
@@ -0,0 +1,106 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_slo_data_source import FormulaAndFunctionSLODataSource
+ from datadog_api_client.v1.model.formula_and_function_slo_group_mode import FormulaAndFunctionSLOGroupMode
+ from datadog_api_client.v1.model.formula_and_function_slo_measure import FormulaAndFunctionSLOMeasure
+ from datadog_api_client.v1.model.formula_and_function_slo_query_type import FormulaAndFunctionSLOQueryType
+
+class FormulaAndFunctionSLOQueryDefinition(ModelNormal):
+ validations = {
+ "cross_org_uuids": {
+ "max_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_slo_data_source import FormulaAndFunctionSLODataSource
+ from datadog_api_client.v1.model.formula_and_function_slo_group_mode import FormulaAndFunctionSLOGroupMode
+ from datadog_api_client.v1.model.formula_and_function_slo_measure import FormulaAndFunctionSLOMeasure
+ from datadog_api_client.v1.model.formula_and_function_slo_query_type import FormulaAndFunctionSLOQueryType
+ return {
+ "additional_query_filters": (str,),
+ "cross_org_uuids": ([str],),
+ "data_source": (FormulaAndFunctionSLODataSource,),
+ "group_mode": (FormulaAndFunctionSLOGroupMode,),
+ "measure": (FormulaAndFunctionSLOMeasure,),
+ "name": (str,),
+ "slo_id": (str,),
+ "slo_query_type": (FormulaAndFunctionSLOQueryType,),
+ }
+ attribute_map = {
+ "additional_query_filters": "additional_query_filters",
+ "cross_org_uuids": "cross_org_uuids",
+ "data_source": "data_source",
+ "group_mode": "group_mode",
+ "measure": "measure",
+ "name": "name",
+ "slo_id": "slo_id",
+ "slo_query_type": "slo_query_type",
+ }
+
+ def __init__(self_, data_source: FormulaAndFunctionSLODataSource, measure: FormulaAndFunctionSLOMeasure, slo_id: str, additional_query_filters: Union[str, UnsetType]=unset, cross_org_uuids: Union[List[str], UnsetType]=unset, group_mode: Union[FormulaAndFunctionSLOGroupMode, UnsetType]=unset, name: Union[str, UnsetType]=unset, slo_query_type: Union[FormulaAndFunctionSLOQueryType, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions metrics query.
+
+ :param additional_query_filters: Additional filters applied to the SLO query.
+ :type additional_query_filters: str, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for SLO measures queries.
+ :type data_source: FormulaAndFunctionSLODataSource
+
+ :param group_mode: Group mode to query measures.
+ :type group_mode: FormulaAndFunctionSLOGroupMode, optional
+
+ :param measure: SLO measures queries.
+ :type measure: FormulaAndFunctionSLOMeasure
+
+ :param name: Name of the query for use in formulas.
+ :type name: str, optional
+
+ :param slo_id: ID of an SLO to query measures.
+ :type slo_id: str
+
+ :param slo_query_type: Name of the query for use in formulas.
+ :type slo_query_type: FormulaAndFunctionSLOQueryType, optional
+ """
+ if additional_query_filters is not unset:
+ kwargs["additional_query_filters"] = additional_query_filters
+ if cross_org_uuids is not unset:
+ kwargs["cross_org_uuids"] = cross_org_uuids
+ if group_mode is not unset:
+ kwargs["group_mode"] = group_mode
+ if name is not unset:
+ kwargs["name"] = name
+ if slo_query_type is not unset:
+ kwargs["slo_query_type"] = slo_query_type
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.measure = measure
+ self_.slo_id = slo_id
diff --git a/datadog_api_client/v1/model/formula_and_function_slo_query_type.py b/datadog_api_client/v1/model/formula_and_function_slo_query_type.py
new file mode 100644
index 0000000000..e1c1969758
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_slo_query_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaAndFunctionSLOQueryType(ModelSimple):
+ """
+ Name of the query for use in formulas.
+
+ :param value: Must be one of ["metric", "monitor", "time_slice"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "metric",
+ "monitor",
+ "time_slice",
+ }
+ METRIC: ClassVar["FormulaAndFunctionSLOQueryType"]
+ MONITOR: ClassVar["FormulaAndFunctionSLOQueryType"]
+ TIME_SLICE: ClassVar["FormulaAndFunctionSLOQueryType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaAndFunctionSLOQueryType.METRIC = FormulaAndFunctionSLOQueryType("metric")
+FormulaAndFunctionSLOQueryType.MONITOR = FormulaAndFunctionSLOQueryType("monitor")
+FormulaAndFunctionSLOQueryType.TIME_SLICE = FormulaAndFunctionSLOQueryType("time_slice")
diff --git a/datadog_api_client/v1/model/formula_and_function_user_journey_query_definition.py b/datadog_api_client/v1/model/formula_and_function_user_journey_query_definition.py
new file mode 100644
index 0000000000..e0c9835689
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_and_function_user_journey_query_definition.py
@@ -0,0 +1,79 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.user_journey_formula_compute import UserJourneyFormulaCompute
+ from datadog_api_client.v1.model.product_analytics_funnel_data_source import ProductAnalyticsFunnelDataSource
+ from datadog_api_client.v1.model.user_journey_formula_group_by import UserJourneyFormulaGroupBy
+ from datadog_api_client.v1.model.user_journey_search import UserJourneySearch
+
+class FormulaAndFunctionUserJourneyQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.user_journey_formula_compute import UserJourneyFormulaCompute
+ from datadog_api_client.v1.model.product_analytics_funnel_data_source import ProductAnalyticsFunnelDataSource
+ from datadog_api_client.v1.model.user_journey_formula_group_by import UserJourneyFormulaGroupBy
+ from datadog_api_client.v1.model.user_journey_search import UserJourneySearch
+ return {
+ "compute": (UserJourneyFormulaCompute,),
+ "data_source": (ProductAnalyticsFunnelDataSource,),
+ "group_by": ([UserJourneyFormulaGroupBy],),
+ "name": (str,),
+ "search": (UserJourneySearch,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "name": "name",
+ "search": "search",
+ }
+
+ def __init__(self_, compute: UserJourneyFormulaCompute, data_source: ProductAnalyticsFunnelDataSource, name: str, search: UserJourneySearch, group_by: Union[List[UserJourneyFormulaGroupBy], UnsetType]=unset, **kwargs):
+ """
+ A formula and functions User Journey query for defining funnel, timeseries, and scalar visualizations over journey data.
+
+ :param compute: Compute configuration for User Journey formula queries.
+ :type compute: UserJourneyFormulaCompute
+
+ :param data_source: Data source for user journey funnel queries.
+ :type data_source: ProductAnalyticsFunnelDataSource
+
+ :param group_by: Group by configuration.
+ :type group_by: [UserJourneyFormulaGroupBy], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: User journey search configuration.
+ :type search: UserJourneySearch
+ """
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ super().__init__(kwargs)
+
+
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.name = name
+ self_.search = search
diff --git a/datadog_api_client/v1/model/formula_type.py b/datadog_api_client/v1/model/formula_type.py
new file mode 100644
index 0000000000..1e49c77f46
--- /dev/null
+++ b/datadog_api_client/v1/model/formula_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FormulaType(ModelSimple):
+ """
+ Set the sort type to formula.
+
+ :param value: If omitted defaults to "formula". Must be one of ["formula"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "formula",
+ }
+ FORMULA: ClassVar["FormulaType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FormulaType.FORMULA = FormulaType("formula")
diff --git a/datadog_api_client/v1/model/free_text_widget_definition.py b/datadog_api_client/v1/model/free_text_widget_definition.py
new file mode 100644
index 0000000000..25f2c22904
--- /dev/null
+++ b/datadog_api_client/v1/model/free_text_widget_definition.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.free_text_widget_definition_type import FreeTextWidgetDefinitionType
+
+class FreeTextWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.free_text_widget_definition_type import FreeTextWidgetDefinitionType
+ return {
+ "background_color": (str,),
+ "color": (str,),
+ "font_size": (str,),
+ "text": (str,),
+ "text_align": (WidgetTextAlign,),
+ "type": (FreeTextWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "background_color": "background_color",
+ "color": "color",
+ "font_size": "font_size",
+ "text": "text",
+ "text_align": "text_align",
+ "type": "type",
+ }
+
+ def __init__(self_, text: str, type: FreeTextWidgetDefinitionType, background_color: Union[str, UnsetType]=unset, color: Union[str, UnsetType]=unset, font_size: Union[str, UnsetType]=unset, text_align: Union[WidgetTextAlign, UnsetType]=unset, **kwargs):
+ """
+ Free text is a widget that allows you to add headings to your dashboard. Commonly used to state the overall purpose of the dashboard.
+
+ :param background_color: Background color of the widget. Supported values are ``white`` , ``blue`` , ``purple`` , ``pink`` , ``orange`` , ``yellow`` , ``green`` , ``gray`` , ``vivid_blue`` , ``vivid_purple`` , ``vivid_pink`` , ``vivid_orange`` , ``vivid_yellow`` , ``vivid_green`` , and ``transparent``.
+ :type background_color: str, optional
+
+ :param color: Color of the text.
+ :type color: str, optional
+
+ :param font_size: Size of the text.
+ :type font_size: str, optional
+
+ :param text: Text to display.
+ :type text: str
+
+ :param text_align: How to align the text on the widget.
+ :type text_align: WidgetTextAlign, optional
+
+ :param type: Type of the free text widget.
+ :type type: FreeTextWidgetDefinitionType
+ """
+ if background_color is not unset:
+ kwargs["background_color"] = background_color
+ if color is not unset:
+ kwargs["color"] = color
+ if font_size is not unset:
+ kwargs["font_size"] = font_size
+ if text_align is not unset:
+ kwargs["text_align"] = text_align
+ super().__init__(kwargs)
+
+
+ self_.text = text
+ self_.type = type
diff --git a/datadog_api_client/v1/model/free_text_widget_definition_type.py b/datadog_api_client/v1/model/free_text_widget_definition_type.py
new file mode 100644
index 0000000000..2ab7eb4d75
--- /dev/null
+++ b/datadog_api_client/v1/model/free_text_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FreeTextWidgetDefinitionType(ModelSimple):
+ """
+ Type of the free text widget.
+
+ :param value: If omitted defaults to "free_text". Must be one of ["free_text"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "free_text",
+ }
+ FREE_TEXT: ClassVar["FreeTextWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FreeTextWidgetDefinitionType.FREE_TEXT = FreeTextWidgetDefinitionType("free_text")
diff --git a/datadog_api_client/v1/model/funnel_comparison_custom_timeframe.py b/datadog_api_client/v1/model/funnel_comparison_custom_timeframe.py
new file mode 100644
index 0000000000..b8c654f8fc
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_comparison_custom_timeframe.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class FunnelComparisonCustomTimeframe(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "_from": (float,),
+ "to": (float,),
+ }
+ attribute_map = {
+ "_from": "from",
+ "to": "to",
+ }
+
+ def __init__(self_, _from: float, to: float, **kwargs):
+ """
+ Custom timeframe for funnel comparison.
+
+ :param _from: Start of the custom timeframe.
+ :type _from: float
+
+ :param to: End of the custom timeframe.
+ :type to: float
+ """
+ super().__init__(kwargs)
+
+
+ self_._from = _from
+ self_.to = to
diff --git a/datadog_api_client/v1/model/funnel_comparison_duration.py b/datadog_api_client/v1/model/funnel_comparison_duration.py
new file mode 100644
index 0000000000..1617242156
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_comparison_duration.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.funnel_comparison_custom_timeframe import FunnelComparisonCustomTimeframe
+ from datadog_api_client.v1.model.funnel_comparison_duration_type import FunnelComparisonDurationType
+
+class FunnelComparisonDuration(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.funnel_comparison_custom_timeframe import FunnelComparisonCustomTimeframe
+ from datadog_api_client.v1.model.funnel_comparison_duration_type import FunnelComparisonDurationType
+ return {
+ "custom_timeframe": (FunnelComparisonCustomTimeframe,),
+ "type": (FunnelComparisonDurationType,),
+ }
+ attribute_map = {
+ "custom_timeframe": "custom_timeframe",
+ "type": "type",
+ }
+
+ def __init__(self_, type: FunnelComparisonDurationType, custom_timeframe: Union[FunnelComparisonCustomTimeframe, UnsetType]=unset, **kwargs):
+ """
+ Comparison time configuration for funnel widgets.
+
+ :param custom_timeframe: Custom timeframe for funnel comparison.
+ :type custom_timeframe: FunnelComparisonCustomTimeframe, optional
+
+ :param type: Type of comparison duration.
+ :type type: FunnelComparisonDurationType
+ """
+ if custom_timeframe is not unset:
+ kwargs["custom_timeframe"] = custom_timeframe
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/funnel_comparison_duration_type.py b/datadog_api_client/v1/model/funnel_comparison_duration_type.py
new file mode 100644
index 0000000000..66ba85e06a
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_comparison_duration_type.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FunnelComparisonDurationType(ModelSimple):
+ """
+ Type of comparison duration.
+
+ :param value: Must be one of ["previous_timeframe", "custom_timeframe", "previous_day", "previous_week", "previous_month"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "previous_timeframe",
+ "custom_timeframe",
+ "previous_day",
+ "previous_week",
+ "previous_month",
+ }
+ PREVIOUS_TIMEFRAME: ClassVar["FunnelComparisonDurationType"]
+ CUSTOM_TIMEFRAME: ClassVar["FunnelComparisonDurationType"]
+ PREVIOUS_DAY: ClassVar["FunnelComparisonDurationType"]
+ PREVIOUS_WEEK: ClassVar["FunnelComparisonDurationType"]
+ PREVIOUS_MONTH: ClassVar["FunnelComparisonDurationType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FunnelComparisonDurationType.PREVIOUS_TIMEFRAME = FunnelComparisonDurationType("previous_timeframe")
+FunnelComparisonDurationType.CUSTOM_TIMEFRAME = FunnelComparisonDurationType("custom_timeframe")
+FunnelComparisonDurationType.PREVIOUS_DAY = FunnelComparisonDurationType("previous_day")
+FunnelComparisonDurationType.PREVIOUS_WEEK = FunnelComparisonDurationType("previous_week")
+FunnelComparisonDurationType.PREVIOUS_MONTH = FunnelComparisonDurationType("previous_month")
diff --git a/datadog_api_client/v1/model/funnel_grouped_display.py b/datadog_api_client/v1/model/funnel_grouped_display.py
new file mode 100644
index 0000000000..5cbbe9862d
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_grouped_display.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FunnelGroupedDisplay(ModelSimple):
+ """
+ Display mode for grouped funnel results.
+
+ :param value: Must be one of ["stacked", "side_by_side"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "stacked",
+ "side_by_side",
+ }
+ STACKED: ClassVar["FunnelGroupedDisplay"]
+ SIDE_BY_SIDE: ClassVar["FunnelGroupedDisplay"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FunnelGroupedDisplay.STACKED = FunnelGroupedDisplay("stacked")
+FunnelGroupedDisplay.SIDE_BY_SIDE = FunnelGroupedDisplay("side_by_side")
diff --git a/datadog_api_client/v1/model/funnel_query.py b/datadog_api_client/v1/model/funnel_query.py
new file mode 100644
index 0000000000..9f95a4fda4
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_query.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.funnel_source import FunnelSource
+ from datadog_api_client.v1.model.funnel_step import FunnelStep
+
+class FunnelQuery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.funnel_source import FunnelSource
+ from datadog_api_client.v1.model.funnel_step import FunnelStep
+ return {
+ "data_source": (FunnelSource,),
+ "query_string": (str,),
+ "steps": ([FunnelStep],),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "query_string": "query_string",
+ "steps": "steps",
+ }
+
+ def __init__(self_, data_source: FunnelSource, query_string: str, steps: List[FunnelStep], **kwargs):
+ """
+ Updated funnel widget.
+
+ :param data_source: Source from which to query items to display in the funnel.
+ :type data_source: FunnelSource
+
+ :param query_string: The widget query.
+ :type query_string: str
+
+ :param steps: List of funnel steps.
+ :type steps: [FunnelStep]
+ """
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.query_string = query_string
+ self_.steps = steps
diff --git a/datadog_api_client/v1/model/funnel_request_type.py b/datadog_api_client/v1/model/funnel_request_type.py
new file mode 100644
index 0000000000..735af72713
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FunnelRequestType(ModelSimple):
+ """
+ Widget request type.
+
+ :param value: If omitted defaults to "funnel". Must be one of ["funnel"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "funnel",
+ }
+ FUNNEL: ClassVar["FunnelRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FunnelRequestType.FUNNEL = FunnelRequestType("funnel")
diff --git a/datadog_api_client/v1/model/funnel_source.py b/datadog_api_client/v1/model/funnel_source.py
new file mode 100644
index 0000000000..02a2e80fae
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FunnelSource(ModelSimple):
+ """
+ Source from which to query items to display in the funnel.
+
+ :param value: If omitted defaults to "rum". Must be one of ["rum"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "rum",
+ }
+ RUM: ClassVar["FunnelSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FunnelSource.RUM = FunnelSource("rum")
diff --git a/datadog_api_client/v1/model/funnel_step.py b/datadog_api_client/v1/model/funnel_step.py
new file mode 100644
index 0000000000..b2639d273d
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_step.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class FunnelStep(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "facet": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "value": "value",
+ }
+
+ def __init__(self_, facet: str, value: str, **kwargs):
+ """
+ The funnel step.
+
+ :param facet: The facet of the step.
+ :type facet: str
+
+ :param value: The value of the step.
+ :type value: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
+ self_.value = value
diff --git a/datadog_api_client/v1/model/funnel_widget_definition.py b/datadog_api_client/v1/model/funnel_widget_definition.py
new file mode 100644
index 0000000000..92025a985d
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_widget_definition.py
@@ -0,0 +1,112 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.funnel_grouped_display import FunnelGroupedDisplay
+ from datadog_api_client.v1.model.funnel_widget_request import FunnelWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.funnel_widget_definition_type import FunnelWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class FunnelWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.funnel_grouped_display import FunnelGroupedDisplay
+ from datadog_api_client.v1.model.funnel_widget_request import FunnelWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.funnel_widget_definition_type import FunnelWidgetDefinitionType
+ return {
+ "description": (str,),
+ "grouped_display": (FunnelGroupedDisplay,),
+ "requests": ([FunnelWidgetRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (FunnelWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "grouped_display": "grouped_display",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[FunnelWidgetRequest], type: FunnelWidgetDefinitionType, description: Union[str, UnsetType]=unset, grouped_display: Union[FunnelGroupedDisplay, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The funnel visualization displays a funnel of user sessions that maps a sequence of view navigation and user interaction in your application.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param grouped_display: Display mode for grouped funnel results.
+ :type grouped_display: FunnelGroupedDisplay, optional
+
+ :param requests: Request payload used to query items.
+ :type requests: [FunnelWidgetRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: The title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: The size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of funnel widget.
+ :type type: FunnelWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if grouped_display is not unset:
+ kwargs["grouped_display"] = grouped_display
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/funnel_widget_definition_type.py b/datadog_api_client/v1/model/funnel_widget_definition_type.py
new file mode 100644
index 0000000000..4992d732d8
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class FunnelWidgetDefinitionType(ModelSimple):
+ """
+ Type of funnel widget.
+
+ :param value: If omitted defaults to "funnel". Must be one of ["funnel"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "funnel",
+ }
+ FUNNEL: ClassVar["FunnelWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+FunnelWidgetDefinitionType.FUNNEL = FunnelWidgetDefinitionType("funnel")
diff --git a/datadog_api_client/v1/model/funnel_widget_request.py b/datadog_api_client/v1/model/funnel_widget_request.py
new file mode 100644
index 0000000000..45c5ab29bc
--- /dev/null
+++ b/datadog_api_client/v1/model/funnel_widget_request.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.funnel_query import FunnelQuery
+ from datadog_api_client.v1.model.funnel_request_type import FunnelRequestType
+
+class FunnelWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.funnel_query import FunnelQuery
+ from datadog_api_client.v1.model.funnel_request_type import FunnelRequestType
+ return {
+ "query": (FunnelQuery,),
+ "request_type": (FunnelRequestType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: FunnelQuery, request_type: FunnelRequestType, **kwargs):
+ """
+ Updated funnel widget.
+
+ :param query: Updated funnel widget.
+ :type query: FunnelQuery
+
+ :param request_type: Widget request type.
+ :type request_type: FunnelRequestType
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/gcp_account.py b/datadog_api_client/v1/model/gcp_account.py
new file mode 100644
index 0000000000..44862495ee
--- /dev/null
+++ b/datadog_api_client/v1/model/gcp_account.py
@@ -0,0 +1,180 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.gcp_monitored_resource_config import GCPMonitoredResourceConfig
+
+class GCPAccount(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.gcp_monitored_resource_config import GCPMonitoredResourceConfig
+ return {
+ "auth_provider_x509_cert_url": (str,),
+ "auth_uri": (str,),
+ "automute": (bool,),
+ "client_email": (str,),
+ "client_id": (str,),
+ "client_x509_cert_url": (str,),
+ "cloud_run_revision_filters": ([str],),
+ "errors": ([str],),
+ "host_filters": (str,),
+ "is_cspm_enabled": (bool,),
+ "is_resource_change_collection_enabled": (bool,),
+ "is_security_command_center_enabled": (bool,),
+ "monitored_resource_configs": ([GCPMonitoredResourceConfig],),
+ "private_key": (str,),
+ "private_key_id": (str,),
+ "project_id": (str,),
+ "resource_collection_enabled": (bool,),
+ "token_uri": (str,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "auth_provider_x509_cert_url": "auth_provider_x509_cert_url",
+ "auth_uri": "auth_uri",
+ "automute": "automute",
+ "client_email": "client_email",
+ "client_id": "client_id",
+ "client_x509_cert_url": "client_x509_cert_url",
+ "cloud_run_revision_filters": "cloud_run_revision_filters",
+ "errors": "errors",
+ "host_filters": "host_filters",
+ "is_cspm_enabled": "is_cspm_enabled",
+ "is_resource_change_collection_enabled": "is_resource_change_collection_enabled",
+ "is_security_command_center_enabled": "is_security_command_center_enabled",
+ "monitored_resource_configs": "monitored_resource_configs",
+ "private_key": "private_key",
+ "private_key_id": "private_key_id",
+ "project_id": "project_id",
+ "resource_collection_enabled": "resource_collection_enabled",
+ "token_uri": "token_uri",
+ "type": "type",
+ }
+
+ def __init__(self_, auth_provider_x509_cert_url: Union[str, UnsetType]=unset, auth_uri: Union[str, UnsetType]=unset, automute: Union[bool, UnsetType]=unset, client_email: Union[str, UnsetType]=unset, client_id: Union[str, UnsetType]=unset, client_x509_cert_url: Union[str, UnsetType]=unset, cloud_run_revision_filters: Union[List[str], UnsetType]=unset, errors: Union[List[str], UnsetType]=unset, host_filters: Union[str, UnsetType]=unset, is_cspm_enabled: Union[bool, UnsetType]=unset, is_resource_change_collection_enabled: Union[bool, UnsetType]=unset, is_security_command_center_enabled: Union[bool, UnsetType]=unset, monitored_resource_configs: Union[List[GCPMonitoredResourceConfig], UnsetType]=unset, private_key: Union[str, UnsetType]=unset, private_key_id: Union[str, UnsetType]=unset, project_id: Union[str, UnsetType]=unset, resource_collection_enabled: Union[bool, UnsetType]=unset, token_uri: Union[str, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Your Google Cloud Platform Account.
+
+ :param auth_provider_x509_cert_url: Should be ``https://www.googleapis.com/oauth2/v1/certs``.
+ :type auth_provider_x509_cert_url: str, optional
+
+ :param auth_uri: Should be ``https://accounts.google.com/o/oauth2/auth``.
+ :type auth_uri: str, optional
+
+ :param automute: Silence monitors for expected GCE instance shutdowns.
+ :type automute: bool, optional
+
+ :param client_email: Your email found in your JSON service account key.
+ :type client_email: str, optional
+
+ :param client_id: Your ID found in your JSON service account key.
+ :type client_id: str, optional
+
+ :param client_x509_cert_url: Should be ``https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL``
+ where ``$CLIENT_EMAIL`` is the email found in your JSON service account key.
+ :type client_x509_cert_url: str, optional
+
+ :param cloud_run_revision_filters: List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.
+ Only Cloud Run revision resources that apply to specified filters are imported into Datadog.
+ **Note:** This field is deprecated. Instead, use ``monitored_resource_configs`` with ``type=cloud_run_revision`` **Deprecated**.
+ :type cloud_run_revision_filters: [str], optional
+
+ :param errors: An array of errors.
+ :type errors: [str], optional
+
+ :param host_filters: A comma-separated list of filters to limit the VM instances that are pulled into Datadog by using tags.
+ Only VM instance resources that apply to specified filters are imported into Datadog.
+ **Note:** This field is deprecated. Instead, use ``monitored_resource_configs`` with ``type=gce_instance`` **Deprecated**.
+ :type host_filters: str, optional
+
+ :param is_cspm_enabled: When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true.
+ :type is_cspm_enabled: bool, optional
+
+ :param is_resource_change_collection_enabled: When enabled, Datadog scans for all resource change data in your Google Cloud environment.
+ :type is_resource_change_collection_enabled: bool, optional
+
+ :param is_security_command_center_enabled: When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account.
+ :type is_security_command_center_enabled: bool, optional
+
+ :param monitored_resource_configs: Configurations for GCP monitored resources.
+ :type monitored_resource_configs: [GCPMonitoredResourceConfig], optional
+
+ :param private_key: Your private key name found in your JSON service account key.
+ :type private_key: str, optional
+
+ :param private_key_id: Your private key ID found in your JSON service account key.
+ :type private_key_id: str, optional
+
+ :param project_id: Your Google Cloud project ID found in your JSON service account key.
+ :type project_id: str, optional
+
+ :param resource_collection_enabled: When enabled, Datadog scans for all resources in your GCP environment.
+ :type resource_collection_enabled: bool, optional
+
+ :param token_uri: Should be ``https://accounts.google.com/o/oauth2/token``.
+ :type token_uri: str, optional
+
+ :param type: The value for service_account found in your JSON service account key.
+ :type type: str, optional
+ """
+ if auth_provider_x509_cert_url is not unset:
+ kwargs["auth_provider_x509_cert_url"] = auth_provider_x509_cert_url
+ if auth_uri is not unset:
+ kwargs["auth_uri"] = auth_uri
+ if automute is not unset:
+ kwargs["automute"] = automute
+ if client_email is not unset:
+ kwargs["client_email"] = client_email
+ if client_id is not unset:
+ kwargs["client_id"] = client_id
+ if client_x509_cert_url is not unset:
+ kwargs["client_x509_cert_url"] = client_x509_cert_url
+ if cloud_run_revision_filters is not unset:
+ kwargs["cloud_run_revision_filters"] = cloud_run_revision_filters
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if host_filters is not unset:
+ kwargs["host_filters"] = host_filters
+ if is_cspm_enabled is not unset:
+ kwargs["is_cspm_enabled"] = is_cspm_enabled
+ if is_resource_change_collection_enabled is not unset:
+ kwargs["is_resource_change_collection_enabled"] = is_resource_change_collection_enabled
+ if is_security_command_center_enabled is not unset:
+ kwargs["is_security_command_center_enabled"] = is_security_command_center_enabled
+ if monitored_resource_configs is not unset:
+ kwargs["monitored_resource_configs"] = monitored_resource_configs
+ if private_key is not unset:
+ kwargs["private_key"] = private_key
+ if private_key_id is not unset:
+ kwargs["private_key_id"] = private_key_id
+ if project_id is not unset:
+ kwargs["project_id"] = project_id
+ if resource_collection_enabled is not unset:
+ kwargs["resource_collection_enabled"] = resource_collection_enabled
+ if token_uri is not unset:
+ kwargs["token_uri"] = token_uri
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/gcp_account_list_response.py b/datadog_api_client/v1/model/gcp_account_list_response.py
new file mode 100644
index 0000000000..a0fc48d073
--- /dev/null
+++ b/datadog_api_client/v1/model/gcp_account_list_response.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class GCPAccountListResponse(ModelSimple):
+ """
+ Array of GCP account responses.
+
+
+ :type value: [GCPAccount]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.gcp_account import GCPAccount
+ return {
+ "value": ([GCPAccount],),
+ }
diff --git a/datadog_api_client/v1/model/gcp_monitored_resource_config.py b/datadog_api_client/v1/model/gcp_monitored_resource_config.py
new file mode 100644
index 0000000000..5725b279d8
--- /dev/null
+++ b/datadog_api_client/v1/model/gcp_monitored_resource_config.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.gcp_monitored_resource_config_type import GCPMonitoredResourceConfigType
+
+class GCPMonitoredResourceConfig(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.gcp_monitored_resource_config_type import GCPMonitoredResourceConfigType
+ return {
+ "filters": ([str],),
+ "type": (GCPMonitoredResourceConfigType,),
+ }
+ attribute_map = {
+ "filters": "filters",
+ "type": "type",
+ }
+
+ def __init__(self_, filters: Union[List[str], UnsetType]=unset, type: Union[GCPMonitoredResourceConfigType, UnsetType]=unset, **kwargs):
+ """
+ Configuration for a GCP monitored resource.
+
+ :param filters: List of filters to limit the monitored resources that are pulled into Datadog by using tags.
+ Only monitored resources that apply to specified filters are imported into Datadog.
+ :type filters: [str], optional
+
+ :param type: The GCP monitored resource type. Only a subset of resource types are supported.
+ :type type: GCPMonitoredResourceConfigType, optional
+ """
+ if filters is not unset:
+ kwargs["filters"] = filters
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/gcp_monitored_resource_config_type.py b/datadog_api_client/v1/model/gcp_monitored_resource_config_type.py
new file mode 100644
index 0000000000..7a999c8f8a
--- /dev/null
+++ b/datadog_api_client/v1/model/gcp_monitored_resource_config_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class GCPMonitoredResourceConfigType(ModelSimple):
+ """
+ The GCP monitored resource type. Only a subset of resource types are supported.
+
+ :param value: Must be one of ["cloud_function", "cloud_run_revision", "gce_instance"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "cloud_function",
+ "cloud_run_revision",
+ "gce_instance",
+ }
+ CLOUD_FUNCTION: ClassVar["GCPMonitoredResourceConfigType"]
+ CLOUD_RUN_REVISION: ClassVar["GCPMonitoredResourceConfigType"]
+ GCE_INSTANCE: ClassVar["GCPMonitoredResourceConfigType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+GCPMonitoredResourceConfigType.CLOUD_FUNCTION = GCPMonitoredResourceConfigType("cloud_function")
+GCPMonitoredResourceConfigType.CLOUD_RUN_REVISION = GCPMonitoredResourceConfigType("cloud_run_revision")
+GCPMonitoredResourceConfigType.GCE_INSTANCE = GCPMonitoredResourceConfigType("gce_instance")
diff --git a/datadog_api_client/v1/model/geomap_widget_definition.py b/datadog_api_client/v1/model/geomap_widget_definition.py
new file mode 100644
index 0000000000..664d5470e4
--- /dev/null
+++ b/datadog_api_client/v1/model/geomap_widget_definition.py
@@ -0,0 +1,148 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.geomap_widget_request import GeomapWidgetRequest
+ from datadog_api_client.v1.model.geomap_widget_definition_style import GeomapWidgetDefinitionStyle
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.geomap_widget_definition_type import GeomapWidgetDefinitionType
+ from datadog_api_client.v1.model.geomap_widget_definition_view import GeomapWidgetDefinitionView
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class GeomapWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 2,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.geomap_widget_request import GeomapWidgetRequest
+ from datadog_api_client.v1.model.geomap_widget_definition_style import GeomapWidgetDefinitionStyle
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.geomap_widget_definition_type import GeomapWidgetDefinitionType
+ from datadog_api_client.v1.model.geomap_widget_definition_view import GeomapWidgetDefinitionView
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": ([GeomapWidgetRequest],),
+ "style": (GeomapWidgetDefinitionStyle,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (GeomapWidgetDefinitionType,),
+ "view": (GeomapWidgetDefinitionView,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "style": "style",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "view": "view",
+ }
+
+ def __init__(self_, requests: List[GeomapWidgetRequest], style: GeomapWidgetDefinitionStyle, type: GeomapWidgetDefinitionType, view: GeomapWidgetDefinitionView, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ This visualization displays a series of values by country on a world map.
+
+ :param custom_links: A list of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: Array of request objects to display in the widget. May include an optional request for the region layer and/or an optional request for the points layer. Region layer requests must contain a ``group-by`` tag whose value is a country ISO code.
+ See the `Request JSON schema documentation `_
+ for information about building the ``REQUEST_SCHEMA``.
+ :type requests: [GeomapWidgetRequest]
+
+ :param style: The style to apply to the widget.
+ :type style: GeomapWidgetDefinitionStyle
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: The title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: The size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the geomap widget.
+ :type type: GeomapWidgetDefinitionType
+
+ :param view: The view of the world that the map should render.
+ :type view: GeomapWidgetDefinitionView
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.style = style
+ self_.type = type
+ self_.view = view
diff --git a/datadog_api_client/v1/model/geomap_widget_definition_style.py b/datadog_api_client/v1/model/geomap_widget_definition_style.py
new file mode 100644
index 0000000000..01083a25d6
--- /dev/null
+++ b/datadog_api_client/v1/model/geomap_widget_definition_style.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class GeomapWidgetDefinitionStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "palette": (str,),
+ "palette_flip": (bool,),
+ }
+ attribute_map = {
+ "palette": "palette",
+ "palette_flip": "palette_flip",
+ }
+
+ def __init__(self_, palette: str, palette_flip: bool, **kwargs):
+ """
+ The style to apply to the widget.
+
+ :param palette: The color palette to apply to the widget.
+ :type palette: str
+
+ :param palette_flip: Whether to flip the palette tones.
+ :type palette_flip: bool
+ """
+ super().__init__(kwargs)
+
+
+ self_.palette = palette
+ self_.palette_flip = palette_flip
diff --git a/datadog_api_client/v1/model/geomap_widget_definition_type.py b/datadog_api_client/v1/model/geomap_widget_definition_type.py
new file mode 100644
index 0000000000..17cc220cf0
--- /dev/null
+++ b/datadog_api_client/v1/model/geomap_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class GeomapWidgetDefinitionType(ModelSimple):
+ """
+ Type of the geomap widget.
+
+ :param value: If omitted defaults to "geomap". Must be one of ["geomap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "geomap",
+ }
+ GEOMAP: ClassVar["GeomapWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+GeomapWidgetDefinitionType.GEOMAP = GeomapWidgetDefinitionType("geomap")
diff --git a/datadog_api_client/v1/model/geomap_widget_definition_view.py b/datadog_api_client/v1/model/geomap_widget_definition_view.py
new file mode 100644
index 0000000000..cb9e626c4f
--- /dev/null
+++ b/datadog_api_client/v1/model/geomap_widget_definition_view.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class GeomapWidgetDefinitionView(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "focus": (str,),
+ }
+ attribute_map = {
+ "focus": "focus",
+ }
+
+ def __init__(self_, focus: str, **kwargs):
+ """
+ The view of the world that the map should render.
+
+ :param focus: The 2-letter ISO code of a country to focus the map on, or ``WORLD`` for global view, or a region ( ``EMEA`` , ``APAC`` , ``LATAM`` ), or a continent ( ``NORTH_AMERICA`` , ``SOUTH_AMERICA`` , ``EUROPE`` , ``AFRICA`` , ``ASIA`` , ``OCEANIA`` ).
+ :type focus: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.focus = focus
diff --git a/datadog_api_client/v1/model/geomap_widget_request.py b/datadog_api_client/v1/model/geomap_widget_request.py
new file mode 100644
index 0000000000..4454ff8f7f
--- /dev/null
+++ b/datadog_api_client/v1/model/geomap_widget_request.py
@@ -0,0 +1,168 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.geomap_widget_request_style import GeomapWidgetRequestStyle
+ from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+
+class GeomapWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.geomap_widget_request_style import GeomapWidgetRequestStyle
+ from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
+ return {
+ "columns": ([ListStreamColumn],),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "query": (ListStreamQuery,),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "sort": (WidgetSortBy,),
+ "style": (GeomapWidgetRequestStyle,),
+ "text_formats": ([TableWidgetTextFormatRule],),
+ }
+ attribute_map = {
+ "columns": "columns",
+ "conditional_formats": "conditional_formats",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "q": "q",
+ "queries": "queries",
+ "query": "query",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "sort": "sort",
+ "style": "style",
+ "text_formats": "text_formats",
+ }
+
+ def __init__(self_, columns: Union[List[ListStreamColumn], UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, query: Union[ListStreamQuery, UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, sort: Union[WidgetSortBy, UnsetType]=unset, style: Union[GeomapWidgetRequestStyle, UnsetType]=unset, text_formats: Union[List[TableWidgetTextFormatRule], UnsetType]=unset, **kwargs):
+ """
+ An updated geomap widget.
+
+ :param columns: Widget columns.
+ :type columns: [ListStreamColumn], optional
+
+ :param conditional_formats: Threshold (numeric) conditional formatting rules may be used by a regions layer.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param q: The widget metrics query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param query: Updated list stream widget.
+ :type query: ListStreamQuery, optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param style: The style to apply to the request for points layer.
+ :type style: GeomapWidgetRequestStyle, optional
+
+ :param text_formats: Text formatting rules may be used by a points layer.
+ :type text_formats: [TableWidgetTextFormatRule], optional
+ """
+ if columns is not unset:
+ kwargs["columns"] = columns
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if query is not unset:
+ kwargs["query"] = query
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if style is not unset:
+ kwargs["style"] = style
+ if text_formats is not unset:
+ kwargs["text_formats"] = text_formats
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/geomap_widget_request_style.py b/datadog_api_client/v1/model/geomap_widget_request_style.py
new file mode 100644
index 0000000000..aa45201a47
--- /dev/null
+++ b/datadog_api_client/v1/model/geomap_widget_request_style.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class GeomapWidgetRequestStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "color_by": (str,),
+ }
+ attribute_map = {
+ "color_by": "color_by",
+ }
+
+ def __init__(self_, color_by: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The style to apply to the request for points layer.
+
+ :param color_by: The category to color the points by.
+ :type color_by: str, optional
+ """
+ if color_by is not unset:
+ kwargs["color_by"] = color_by
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/graph_snapshot.py b/datadog_api_client/v1/model/graph_snapshot.py
new file mode 100644
index 0000000000..9b17937c8a
--- /dev/null
+++ b/datadog_api_client/v1/model/graph_snapshot.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class GraphSnapshot(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "graph_def": (str,),
+ "metric_query": (str,),
+ "snapshot_url": (str,),
+ }
+ attribute_map = {
+ "graph_def": "graph_def",
+ "metric_query": "metric_query",
+ "snapshot_url": "snapshot_url",
+ }
+
+ def __init__(self_, graph_def: Union[str, UnsetType]=unset, metric_query: Union[str, UnsetType]=unset, snapshot_url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object representing a graph snapshot.
+
+ :param graph_def: A JSON document defining the graph. ``graph_def`` can be used instead of ``metric_query``.
+ The JSON document uses the `grammar defined here `_
+ and should be formatted to a single line then URL encoded.
+ :type graph_def: str, optional
+
+ :param metric_query: The metric query. One of ``metric_query`` or ``graph_def`` is required.
+ :type metric_query: str, optional
+
+ :param snapshot_url: URL of your `graph snapshot `_.
+ :type snapshot_url: str, optional
+ """
+ if graph_def is not unset:
+ kwargs["graph_def"] = graph_def
+ if metric_query is not unset:
+ kwargs["metric_query"] = metric_query
+ if snapshot_url is not unset:
+ kwargs["snapshot_url"] = snapshot_url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/group_type.py b/datadog_api_client/v1/model/group_type.py
new file mode 100644
index 0000000000..ea2d1879a6
--- /dev/null
+++ b/datadog_api_client/v1/model/group_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class GroupType(ModelSimple):
+ """
+ Set the sort type to group.
+
+ :param value: If omitted defaults to "group". Must be one of ["group"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "group",
+ }
+ GROUP: ClassVar["GroupType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+GroupType.GROUP = GroupType("group")
diff --git a/datadog_api_client/v1/model/group_widget_definition.py b/datadog_api_client/v1/model/group_widget_definition.py
new file mode 100644
index 0000000000..5e8bd11bb2
--- /dev/null
+++ b/datadog_api_client/v1/model/group_widget_definition.py
@@ -0,0 +1,141 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_layout_type import WidgetLayoutType
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.group_widget_definition_type import GroupWidgetDefinitionType
+ from datadog_api_client.v1.model.widget import Widget
+ from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition
+ from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition
+ from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+ from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+ from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition
+ from datadog_api_client.v1.model.cohort_widget_definition import CohortWidgetDefinition
+ from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+ from datadog_api_client.v1.model.event_stream_widget_definition import EventStreamWidgetDefinition
+ from datadog_api_client.v1.model.event_timeline_widget_definition import EventTimelineWidgetDefinition
+ from datadog_api_client.v1.model.free_text_widget_definition import FreeTextWidgetDefinition
+ from datadog_api_client.v1.model.funnel_widget_definition import FunnelWidgetDefinition
+ from datadog_api_client.v1.model.product_analytics_funnel_widget_definition import ProductAnalyticsFunnelWidgetDefinition
+ from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+ from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+ from datadog_api_client.v1.model.host_map_widget_definition import HostMapWidgetDefinition
+ from datadog_api_client.v1.model.i_frame_widget_definition import IFrameWidgetDefinition
+ from datadog_api_client.v1.model.image_widget_definition import ImageWidgetDefinition
+ from datadog_api_client.v1.model.list_stream_widget_definition import ListStreamWidgetDefinition
+ from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+ from datadog_api_client.v1.model.monitor_summary_widget_definition import MonitorSummaryWidgetDefinition
+ from datadog_api_client.v1.model.note_widget_definition import NoteWidgetDefinition
+ from datadog_api_client.v1.model.powerpack_widget_definition import PowerpackWidgetDefinition
+ from datadog_api_client.v1.model.point_plot_widget_definition import PointPlotWidgetDefinition
+ from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+ from datadog_api_client.v1.model.retention_curve_widget_definition import RetentionCurveWidgetDefinition
+ from datadog_api_client.v1.model.run_workflow_widget_definition import RunWorkflowWidgetDefinition
+ from datadog_api_client.v1.model.slo_list_widget_definition import SLOListWidgetDefinition
+ from datadog_api_client.v1.model.slo_widget_definition import SLOWidgetDefinition
+ from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+ from datadog_api_client.v1.model.sankey_widget_definition import SankeyWidgetDefinition
+ from datadog_api_client.v1.model.service_map_widget_definition import ServiceMapWidgetDefinition
+ from datadog_api_client.v1.model.service_summary_widget_definition import ServiceSummaryWidgetDefinition
+ from datadog_api_client.v1.model.split_graph_widget_definition import SplitGraphWidgetDefinition
+ from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+ from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.topology_map_widget_definition import TopologyMapWidgetDefinition
+ from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+ from datadog_api_client.v1.model.wildcard_widget_definition import WildcardWidgetDefinition
+
+class GroupWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_layout_type import WidgetLayoutType
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.group_widget_definition_type import GroupWidgetDefinitionType
+ from datadog_api_client.v1.model.widget import Widget
+ return {
+ "background_color": (str,),
+ "banner_img": (str,),
+ "layout_type": (WidgetLayoutType,),
+ "show_title": (bool,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "type": (GroupWidgetDefinitionType,),
+ "widgets": ([Widget],),
+ }
+ attribute_map = {
+ "background_color": "background_color",
+ "banner_img": "banner_img",
+ "layout_type": "layout_type",
+ "show_title": "show_title",
+ "title": "title",
+ "title_align": "title_align",
+ "type": "type",
+ "widgets": "widgets",
+ }
+
+ def __init__(self_, layout_type: WidgetLayoutType, type: GroupWidgetDefinitionType, widgets: List[Widget], background_color: Union[str, UnsetType]=unset, banner_img: Union[str, UnsetType]=unset, show_title: Union[bool, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, **kwargs):
+ """
+ The group widget allows you to keep similar graphs together on your dashboard. Each group has a custom header, can hold one to many graphs, and is collapsible.
+
+ :param background_color: Background color of the widget. Supported values are ``white`` , ``blue`` , ``purple`` , ``pink`` , ``orange`` , ``yellow`` , ``green`` , ``gray`` , ``vivid_blue`` , ``vivid_purple`` , ``vivid_pink`` , ``vivid_orange`` , ``vivid_yellow`` , ``vivid_green`` , and ``transparent``.
+ :type background_color: str, optional
+
+ :param banner_img: URL of image to display as a banner for the group.
+ :type banner_img: str, optional
+
+ :param layout_type: Layout type of the group.
+ :type layout_type: WidgetLayoutType
+
+ :param show_title: Whether to show the title or not.
+ :type show_title: bool, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param type: Type of the group widget.
+ :type type: GroupWidgetDefinitionType
+
+ :param widgets: List of widget groups.
+ :type widgets: [Widget]
+ """
+ if background_color is not unset:
+ kwargs["background_color"] = background_color
+ if banner_img is not unset:
+ kwargs["banner_img"] = banner_img
+ if show_title is not unset:
+ kwargs["show_title"] = show_title
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ super().__init__(kwargs)
+
+
+ self_.layout_type = layout_type
+ self_.type = type
+ self_.widgets = widgets
diff --git a/datadog_api_client/v1/model/group_widget_definition_type.py b/datadog_api_client/v1/model/group_widget_definition_type.py
new file mode 100644
index 0000000000..b7354e2ac1
--- /dev/null
+++ b/datadog_api_client/v1/model/group_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class GroupWidgetDefinitionType(ModelSimple):
+ """
+ Type of the group widget.
+
+ :param value: If omitted defaults to "group". Must be one of ["group"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "group",
+ }
+ GROUP: ClassVar["GroupWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+GroupWidgetDefinitionType.GROUP = GroupWidgetDefinitionType("group")
diff --git a/datadog_api_client/v1/model/heat_map_widget_definition.py b/datadog_api_client/v1/model/heat_map_widget_definition.py
new file mode 100644
index 0000000000..2401963628
--- /dev/null
+++ b/datadog_api_client/v1/model/heat_map_widget_definition.py
@@ -0,0 +1,176 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_event import WidgetEvent
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.heat_map_widget_request import HeatMapWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.heat_map_widget_definition_type import HeatMapWidgetDefinitionType
+ from datadog_api_client.v1.model.heat_map_widget_x_axis import HeatMapWidgetXAxis
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class HeatMapWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_event import WidgetEvent
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.heat_map_widget_request import HeatMapWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.heat_map_widget_definition_type import HeatMapWidgetDefinitionType
+ from datadog_api_client.v1.model.heat_map_widget_x_axis import HeatMapWidgetXAxis
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "events": ([WidgetEvent],),
+ "legend_size": (str,),
+ "markers": ([WidgetMarker],),
+ "requests": ([HeatMapWidgetRequest],),
+ "show_legend": (bool,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (HeatMapWidgetDefinitionType,),
+ "xaxis": (HeatMapWidgetXAxis,),
+ "yaxis": (WidgetAxis,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "events": "events",
+ "legend_size": "legend_size",
+ "markers": "markers",
+ "requests": "requests",
+ "show_legend": "show_legend",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "xaxis": "xaxis",
+ "yaxis": "yaxis",
+ }
+
+ def __init__(self_, requests: List[HeatMapWidgetRequest], type: HeatMapWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, events: Union[List[WidgetEvent], UnsetType]=unset, legend_size: Union[str, UnsetType]=unset, markers: Union[List[WidgetMarker], UnsetType]=unset, show_legend: Union[bool, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, xaxis: Union[HeatMapWidgetXAxis, UnsetType]=unset, yaxis: Union[WidgetAxis, UnsetType]=unset, **kwargs):
+ """
+ The heat map visualization shows metrics aggregated across many tags, such as hosts. The more hosts that have a particular value, the darker that square is.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param events: List of widget events. Deprecated - Use ``overlay`` request type instead. **Deprecated**.
+ :type events: [WidgetEvent], optional
+
+ :param legend_size: Available legend sizes for a widget. Should be one of "0", "2", "4", "8", "16", or "auto".
+ :type legend_size: str, optional
+
+ :param markers: List of markers.
+ :type markers: [WidgetMarker], optional
+
+ :param requests: List of widget types.
+ :type requests: [HeatMapWidgetRequest]
+
+ :param show_legend: Whether or not to display the legend on this widget.
+ :type show_legend: bool, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the heat map widget.
+ :type type: HeatMapWidgetDefinitionType
+
+ :param xaxis: X Axis controls for the heat map widget.
+ :type xaxis: HeatMapWidgetXAxis, optional
+
+ :param yaxis: Axis controls for the widget.
+ :type yaxis: WidgetAxis, optional
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if events is not unset:
+ kwargs["events"] = events
+ if legend_size is not unset:
+ kwargs["legend_size"] = legend_size
+ if markers is not unset:
+ kwargs["markers"] = markers
+ if show_legend is not unset:
+ kwargs["show_legend"] = show_legend
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if xaxis is not unset:
+ kwargs["xaxis"] = xaxis
+ if yaxis is not unset:
+ kwargs["yaxis"] = yaxis
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/heat_map_widget_definition_type.py b/datadog_api_client/v1/model/heat_map_widget_definition_type.py
new file mode 100644
index 0000000000..d63a6c7ccf
--- /dev/null
+++ b/datadog_api_client/v1/model/heat_map_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HeatMapWidgetDefinitionType(ModelSimple):
+ """
+ Type of the heat map widget.
+
+ :param value: If omitted defaults to "heatmap". Must be one of ["heatmap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "heatmap",
+ }
+ HEATMAP: ClassVar["HeatMapWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HeatMapWidgetDefinitionType.HEATMAP = HeatMapWidgetDefinitionType("heatmap")
diff --git a/datadog_api_client/v1/model/heat_map_widget_request.py b/datadog_api_client/v1/model/heat_map_widget_request.py
new file mode 100644
index 0000000000..dbd56e7368
--- /dev/null
+++ b/datadog_api_client/v1/model/heat_map_widget_request.py
@@ -0,0 +1,176 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.event_query_definition import EventQueryDefinition
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.widget_histogram_request_type import WidgetHistogramRequestType
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_style import WidgetStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class HeatMapWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.event_query_definition import EventQueryDefinition
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.widget_histogram_request_type import WidgetHistogramRequestType
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_style import WidgetStyle
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "event_query": (EventQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "query": (FormulaAndFunctionMetricQueryDefinition,),
+ "request_type": (WidgetHistogramRequestType,),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "style": (WidgetStyle,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "query": "query",
+ "request_type": "request_type",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "style": "style",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, event_query: Union[EventQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, query: Union[FormulaAndFunctionMetricQueryDefinition, UnsetType]=unset, request_type: Union[WidgetHistogramRequestType, UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, style: Union[WidgetStyle, UnsetType]=unset, **kwargs):
+ """
+ Updated heat map widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param event_query: The event query.
+ :type event_query: EventQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param query: A formula and functions metrics query.
+ :type query: FormulaAndFunctionMetricQueryDefinition, optional
+
+ :param request_type: Request type for distribution of point values for distribution metrics. Query space aggregator must be ``histogram:`` for points distributions.
+ :type request_type: WidgetHistogramRequestType, optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param style: Widget style definition.
+ :type style: WidgetStyle, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if query is not unset:
+ kwargs["query"] = query
+ if request_type is not unset:
+ kwargs["request_type"] = request_type
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/heat_map_widget_x_axis.py b/datadog_api_client/v1/model/heat_map_widget_x_axis.py
new file mode 100644
index 0000000000..6d6b6410b3
--- /dev/null
+++ b/datadog_api_client/v1/model/heat_map_widget_x_axis.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HeatMapWidgetXAxis(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "num_buckets": (int,),
+ }
+ attribute_map = {
+ "num_buckets": "num_buckets",
+ }
+
+ def __init__(self_, num_buckets: Union[int, UnsetType]=unset, **kwargs):
+ """
+ X Axis controls for the heat map widget.
+
+ :param num_buckets: Number of time buckets to target, also known as the resolution
+ of the time bins. This is only applicable for distribution of
+ points (group distributions use the roll-up modifier).
+ :type num_buckets: int, optional
+ """
+ if num_buckets is not unset:
+ kwargs["num_buckets"] = num_buckets
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host.py b/datadog_api_client/v1/model/host.py
new file mode 100644
index 0000000000..16febef5b2
--- /dev/null
+++ b/datadog_api_client/v1/model/host.py
@@ -0,0 +1,142 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_meta import HostMeta
+ from datadog_api_client.v1.model.host_metrics import HostMetrics
+
+class Host(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_meta import HostMeta
+ from datadog_api_client.v1.model.host_metrics import HostMetrics
+ return {
+ "aliases": ([str],),
+ "apps": ([str],),
+ "aws_name": (str,),
+ "host_name": (str,),
+ "id": (int,),
+ "is_muted": (bool,),
+ "last_reported_time": (int,),
+ "meta": (HostMeta,),
+ "metrics": (HostMetrics,),
+ "mute_timeout": (int, none_type),
+ "name": (str,),
+ "sources": ([str],),
+ "tags_by_source": ({str: ([str],)},),
+ "up": (bool,),
+ }
+ attribute_map = {
+ "aliases": "aliases",
+ "apps": "apps",
+ "aws_name": "aws_name",
+ "host_name": "host_name",
+ "id": "id",
+ "is_muted": "is_muted",
+ "last_reported_time": "last_reported_time",
+ "meta": "meta",
+ "metrics": "metrics",
+ "mute_timeout": "mute_timeout",
+ "name": "name",
+ "sources": "sources",
+ "tags_by_source": "tags_by_source",
+ "up": "up",
+ }
+
+ def __init__(self_, aliases: Union[List[str], UnsetType]=unset, apps: Union[List[str], UnsetType]=unset, aws_name: Union[str, UnsetType]=unset, host_name: Union[str, UnsetType]=unset, id: Union[int, UnsetType]=unset, is_muted: Union[bool, UnsetType]=unset, last_reported_time: Union[int, UnsetType]=unset, meta: Union[HostMeta, UnsetType]=unset, metrics: Union[HostMetrics, UnsetType]=unset, mute_timeout: Union[int, none_type, UnsetType]=unset, name: Union[str, UnsetType]=unset, sources: Union[List[str], UnsetType]=unset, tags_by_source: Union[Dict[str, List[str]], UnsetType]=unset, up: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Object representing a host.
+
+ :param aliases: Host aliases collected by Datadog.
+ :type aliases: [str], optional
+
+ :param apps: The Datadog integrations reporting metrics for the host.
+ :type apps: [str], optional
+
+ :param aws_name: AWS name of your host.
+ :type aws_name: str, optional
+
+ :param host_name: The host name.
+ :type host_name: str, optional
+
+ :param id: The host ID.
+ :type id: int, optional
+
+ :param is_muted: If a host is muted or unmuted.
+ :type is_muted: bool, optional
+
+ :param last_reported_time: Last time the host reported a metric data point.
+ :type last_reported_time: int, optional
+
+ :param meta: Metadata associated with your host.
+ :type meta: HostMeta, optional
+
+ :param metrics: Host Metrics collected.
+ :type metrics: HostMetrics, optional
+
+ :param mute_timeout: Timeout of the mute applied to your host.
+ :type mute_timeout: int, none_type, optional
+
+ :param name: The host name.
+ :type name: str, optional
+
+ :param sources: Source or cloud provider associated with your host.
+ :type sources: [str], optional
+
+ :param tags_by_source: List of tags for each source (AWS, Datadog Agent, Chef..).
+ :type tags_by_source: {str: ([str],)}, optional
+
+ :param up: Displays UP when the expected metrics are received and displays ``???`` if no metrics are received.
+ :type up: bool, optional
+ """
+ if aliases is not unset:
+ kwargs["aliases"] = aliases
+ if apps is not unset:
+ kwargs["apps"] = apps
+ if aws_name is not unset:
+ kwargs["aws_name"] = aws_name
+ if host_name is not unset:
+ kwargs["host_name"] = host_name
+ if id is not unset:
+ kwargs["id"] = id
+ if is_muted is not unset:
+ kwargs["is_muted"] = is_muted
+ if last_reported_time is not unset:
+ kwargs["last_reported_time"] = last_reported_time
+ if meta is not unset:
+ kwargs["meta"] = meta
+ if metrics is not unset:
+ kwargs["metrics"] = metrics
+ if mute_timeout is not unset:
+ kwargs["mute_timeout"] = mute_timeout
+ if name is not unset:
+ kwargs["name"] = name
+ if sources is not unset:
+ kwargs["sources"] = sources
+ if tags_by_source is not unset:
+ kwargs["tags_by_source"] = tags_by_source
+ if up is not unset:
+ kwargs["up"] = up
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_list_response.py b/datadog_api_client/v1/model/host_list_response.py
new file mode 100644
index 0000000000..ac0a397384
--- /dev/null
+++ b/datadog_api_client/v1/model/host_list_response.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host import Host
+
+class HostListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host import Host
+ return {
+ "host_list": ([Host],),
+ "total_matching": (int,),
+ "total_returned": (int,),
+ }
+ attribute_map = {
+ "host_list": "host_list",
+ "total_matching": "total_matching",
+ "total_returned": "total_returned",
+ }
+
+ def __init__(self_, host_list: Union[List[Host], UnsetType]=unset, total_matching: Union[int, UnsetType]=unset, total_returned: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Response with Host information from Datadog.
+
+ :param host_list: Array of hosts.
+ :type host_list: [Host], optional
+
+ :param total_matching: Number of host matching the query.
+ :type total_matching: int, optional
+
+ :param total_returned: Number of host returned.
+ :type total_returned: int, optional
+ """
+ if host_list is not unset:
+ kwargs["host_list"] = host_list
+ if total_matching is not unset:
+ kwargs["total_matching"] = total_matching
+ if total_returned is not unset:
+ kwargs["total_returned"] = total_returned
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_map_request.py b/datadog_api_client/v1/model/host_map_request.py
new file mode 100644
index 0000000000..6528068b33
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_request.py
@@ -0,0 +1,107 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+
+class HostMapRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "event_query": (LogQueryDefinition,),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "event_query": "event_query",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, **kwargs):
+ """
+ Deprecated - Legacy metric-based host map request. Use the infrastructure-backed ( ``request_type: infrastructure_hostmap`` ) or DDSQL ( ``request_type: data_projection`` ) format instead.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Query definition.
+ :type q: str, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_map_widget_definition.py b/datadog_api_client/v1/model/host_map_widget_definition.py
new file mode 100644
index 0000000000..e35db97edc
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_definition.py
@@ -0,0 +1,161 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_node_type import WidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_definition_requests import HostMapWidgetDefinitionRequests
+ from datadog_api_client.v1.model.host_map_widget_definition_style import HostMapWidgetDefinitionStyle
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.host_map_widget_definition_type import HostMapWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class HostMapWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_node_type import WidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_definition_requests import HostMapWidgetDefinitionRequests
+ from datadog_api_client.v1.model.host_map_widget_definition_style import HostMapWidgetDefinitionStyle
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.host_map_widget_definition_type import HostMapWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "group": ([str],),
+ "no_group_hosts": (bool,),
+ "no_metric_hosts": (bool,),
+ "node_type": (WidgetNodeType,),
+ "notes": (str,),
+ "requests": (HostMapWidgetDefinitionRequests,),
+ "scope": ([str],),
+ "style": (HostMapWidgetDefinitionStyle,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (HostMapWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "group": "group",
+ "no_group_hosts": "no_group_hosts",
+ "no_metric_hosts": "no_metric_hosts",
+ "node_type": "node_type",
+ "notes": "notes",
+ "requests": "requests",
+ "scope": "scope",
+ "style": "style",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: HostMapWidgetDefinitionRequests, type: HostMapWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, group: Union[List[str], UnsetType]=unset, no_group_hosts: Union[bool, UnsetType]=unset, no_metric_hosts: Union[bool, UnsetType]=unset, node_type: Union[WidgetNodeType, UnsetType]=unset, notes: Union[str, UnsetType]=unset, scope: Union[List[str], UnsetType]=unset, style: Union[HostMapWidgetDefinitionStyle, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The host map widget graphs any metric across your hosts using the same visualization available from the main Host Map page.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param group: Deprecated - Only used by the legacy metric-based format. Use ``group_by`` (infrastructure) or a ``group`` dimension (DDSQL) inside ``requests`` instead. **Deprecated**.
+ :type group: [str], optional
+
+ :param no_group_hosts: Deprecated - Only used by the legacy metric-based format. Use ``no_group_hosts`` inside ``requests`` instead. **Deprecated**.
+ :type no_group_hosts: bool, optional
+
+ :param no_metric_hosts: Deprecated - Only used by the legacy metric-based format. Use ``no_metric_hosts`` inside ``requests`` instead. **Deprecated**.
+ :type no_metric_hosts: bool, optional
+
+ :param node_type: Which type of node to use in the map.
+ :type node_type: WidgetNodeType, optional
+
+ :param notes: Notes on the title.
+ :type notes: str, optional
+
+ :param requests: Query definition for the host map widget. Supports three mutually exclusive formats distinguished by `request_type`: the deprecated legacy metric-based format (`fill`/`size`, no `request_type`), the infrastructure-backed format (`request_type: infrastructure_hostmap ``), and the DDSQL published-dataset format (`` request_type: data_projection`).
+ :type requests: HostMapWidgetDefinitionRequests
+
+ :param scope: Deprecated - Only used by the legacy metric-based format. Use ``filter`` inside ``requests`` instead. **Deprecated**.
+ :type scope: [str], optional
+
+ :param style: Deprecated - The style to apply to the legacy metric-based host map widget. Use ``HostMapWidgetInfrastructureStyle`` instead. **Deprecated**.
+ :type style: HostMapWidgetDefinitionStyle, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the host map widget.
+ :type type: HostMapWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if group is not unset:
+ kwargs["group"] = group
+ if no_group_hosts is not unset:
+ kwargs["no_group_hosts"] = no_group_hosts
+ if no_metric_hosts is not unset:
+ kwargs["no_metric_hosts"] = no_metric_hosts
+ if node_type is not unset:
+ kwargs["node_type"] = node_type
+ if notes is not unset:
+ kwargs["notes"] = notes
+ if scope is not unset:
+ kwargs["scope"] = scope
+ if style is not unset:
+ kwargs["style"] = style
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/host_map_widget_definition_request_type.py b/datadog_api_client/v1/model/host_map_widget_definition_request_type.py
new file mode 100644
index 0000000000..b62fd6388f
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_definition_request_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetDefinitionRequestType(ModelSimple):
+ """
+ Identifies which host map request format the sibling fields on `HostMapWidgetDefinitionRequests` describe: an infrastructure-backed request or a DDSQL published-dataset request.
+
+ :param value: Must be one of ["infrastructure_hostmap", "data_projection"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "infrastructure_hostmap",
+ "data_projection",
+ }
+ INFRASTRUCTURE_HOSTMAP: ClassVar["HostMapWidgetDefinitionRequestType"]
+ DATA_PROJECTION: ClassVar["HostMapWidgetDefinitionRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetDefinitionRequestType.INFRASTRUCTURE_HOSTMAP = HostMapWidgetDefinitionRequestType("infrastructure_hostmap")
+HostMapWidgetDefinitionRequestType.DATA_PROJECTION = HostMapWidgetDefinitionRequestType("data_projection")
diff --git a/datadog_api_client/v1/model/host_map_widget_definition_requests.py b/datadog_api_client/v1/model/host_map_widget_definition_requests.py
new file mode 100644
index 0000000000..cdf9bb76ff
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_definition_requests.py
@@ -0,0 +1,181 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request import HostMapWidgetInfrastructureRequest
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+ from datadog_api_client.v1.model.host_map_request import HostMapRequest
+ from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+ from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_projection import HostMapWidgetProjection
+ from datadog_api_client.v1.model.dataset_list_query import DatasetListQuery
+ from datadog_api_client.v1.model.host_map_widget_definition_request_type import HostMapWidgetDefinitionRequestType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class HostMapWidgetDefinitionRequests(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request import HostMapWidgetInfrastructureRequest
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+ from datadog_api_client.v1.model.host_map_request import HostMapRequest
+ from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+ from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_projection import HostMapWidgetProjection
+ from datadog_api_client.v1.model.dataset_list_query import DatasetListQuery
+ from datadog_api_client.v1.model.host_map_widget_definition_request_type import HostMapWidgetDefinitionRequestType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+ return {
+ "child": (HostMapWidgetInfrastructureRequest,),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "enrichments": ([HostMapWidgetScalarRequest],),
+ "fill": (HostMapRequest,),
+ "filter": (str,),
+ "group_by": ([HostMapWidgetGroupBy],),
+ "limit": (int,),
+ "no_group_hosts": (bool,),
+ "no_metric_hosts": (bool,),
+ "node_type": (HostMapWidgetNodeType,),
+ "projection": (HostMapWidgetProjection,),
+ "query": (DatasetListQuery,),
+ "request_type": (HostMapWidgetDefinitionRequestType,),
+ "size": (HostMapRequest,),
+ "style": (HostMapWidgetInfrastructureStyle,),
+ }
+ attribute_map = {
+ "child": "child",
+ "conditional_formats": "conditional_formats",
+ "enrichments": "enrichments",
+ "fill": "fill",
+ "filter": "filter",
+ "group_by": "group_by",
+ "limit": "limit",
+ "no_group_hosts": "no_group_hosts",
+ "no_metric_hosts": "no_metric_hosts",
+ "node_type": "node_type",
+ "projection": "projection",
+ "query": "query",
+ "request_type": "request_type",
+ "size": "size",
+ "style": "style",
+ }
+
+ def __init__(self_, child: Union[HostMapWidgetInfrastructureRequest, UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, enrichments: Union[List[HostMapWidgetScalarRequest], UnsetType]=unset, fill: Union[HostMapRequest, UnsetType]=unset, filter: Union[str, UnsetType]=unset, group_by: Union[List[HostMapWidgetGroupBy], UnsetType]=unset, limit: Union[int, UnsetType]=unset, no_group_hosts: Union[bool, UnsetType]=unset, no_metric_hosts: Union[bool, UnsetType]=unset, node_type: Union[HostMapWidgetNodeType, UnsetType]=unset, projection: Union[HostMapWidgetProjection, UnsetType]=unset, query: Union[DatasetListQuery, UnsetType]=unset, request_type: Union[HostMapWidgetDefinitionRequestType, UnsetType]=unset, size: Union[HostMapRequest, UnsetType]=unset, style: Union[HostMapWidgetInfrastructureStyle, UnsetType]=unset, **kwargs):
+ """
+ Query definition for the host map widget. Supports three mutually exclusive formats distinguished by `request_type`: the deprecated legacy metric-based format (`fill`/`size`, no `request_type`), the infrastructure-backed format (`request_type: infrastructure_hostmap ``), and the DDSQL published-dataset format (`` request_type: data_projection`).
+
+ :param child: Infrastructure-backed request for the host map widget. Supports entity-based
+ visualization with metric query enrichments, tag-based filtering, flexible grouping,
+ and hierarchical views.
+ :type child: HostMapWidgetInfrastructureRequest, optional
+
+ :param conditional_formats: List of conditional formatting rules applied to fill values.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param enrichments: Metric or event queries joined to the entity set. Each formula specifies a visual dimension. Only used by the infrastructure-backed format.
+ :type enrichments: [HostMapWidgetScalarRequest], optional
+
+ :param fill: Deprecated - Legacy metric-based host map request. Use the infrastructure-backed ( ``request_type: infrastructure_hostmap`` ) or DDSQL ( ``request_type: data_projection`` ) format instead. **Deprecated**.
+ :type fill: HostMapRequest, optional
+
+ :param filter: Filter string for the entity set in tag format (for example, ``env:prod`` ). Only used by the infrastructure-backed format.
+ :type filter: str, optional
+
+ :param group_by: Defines how entities are grouped into tiles. The ordering of entries implies
+ the grouping hierarchy. Only used by the infrastructure-backed format.
+ :type group_by: [HostMapWidgetGroupBy], optional
+
+ :param limit: Maximum number of rows to return from the dataset query. Only used by the DDSQL format.
+ :type limit: int, optional
+
+ :param no_group_hosts: Whether to hide entities that have no group assignment.
+ :type no_group_hosts: bool, optional
+
+ :param no_metric_hosts: Whether to hide entities that have no enrichment data.
+ :type no_metric_hosts: bool, optional
+
+ :param node_type: Which type of infrastructure entity to visualize in the host map.
+ :type node_type: HostMapWidgetNodeType, optional
+
+ :param projection: Projection for the DDSQL host map request. Maps dataset columns to map dimensions: ``node`` identifies the entity, repeated ``group`` entries define the grouping hierarchy (outermost first), and ``fill`` / ``size`` drive the tile color and size.
+ :type projection: HostMapWidgetProjection, optional
+
+ :param query: Query that lists the rows of a published dataset (a DDSQL query) without aggregation.
+ :type query: DatasetListQuery, optional
+
+ :param request_type: Identifies which host map request format the sibling fields on ``HostMapWidgetDefinitionRequests`` describe: an infrastructure-backed request or a DDSQL published-dataset request.
+ :type request_type: HostMapWidgetDefinitionRequestType, optional
+
+ :param size: Deprecated - Legacy metric-based host map request. Use the infrastructure-backed ( ``request_type: infrastructure_hostmap`` ) or DDSQL ( ``request_type: data_projection`` ) format instead. **Deprecated**.
+ :type size: HostMapRequest, optional
+
+ :param style: Style configuration for the infrastructure host map.
+ :type style: HostMapWidgetInfrastructureStyle, optional
+ """
+ if child is not unset:
+ kwargs["child"] = child
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if enrichments is not unset:
+ kwargs["enrichments"] = enrichments
+ if fill is not unset:
+ kwargs["fill"] = fill
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if no_group_hosts is not unset:
+ kwargs["no_group_hosts"] = no_group_hosts
+ if no_metric_hosts is not unset:
+ kwargs["no_metric_hosts"] = no_metric_hosts
+ if node_type is not unset:
+ kwargs["node_type"] = node_type
+ if projection is not unset:
+ kwargs["projection"] = projection
+ if query is not unset:
+ kwargs["query"] = query
+ if request_type is not unset:
+ kwargs["request_type"] = request_type
+ if size is not unset:
+ kwargs["size"] = size
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_map_widget_definition_style.py b/datadog_api_client/v1/model/host_map_widget_definition_style.py
new file mode 100644
index 0000000000..0e1ec39f14
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_definition_style.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMapWidgetDefinitionStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "fill_max": (str,),
+ "fill_min": (str,),
+ "palette": (str,),
+ "palette_flip": (bool,),
+ }
+ attribute_map = {
+ "fill_max": "fill_max",
+ "fill_min": "fill_min",
+ "palette": "palette",
+ "palette_flip": "palette_flip",
+ }
+
+ def __init__(self_, fill_max: Union[str, UnsetType]=unset, fill_min: Union[str, UnsetType]=unset, palette: Union[str, UnsetType]=unset, palette_flip: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Deprecated - The style to apply to the legacy metric-based host map widget. Use ``HostMapWidgetInfrastructureStyle`` instead.
+
+ :param fill_max: Max value to use to color the map.
+ :type fill_max: str, optional
+
+ :param fill_min: Min value to use to color the map.
+ :type fill_min: str, optional
+
+ :param palette: Color palette to apply to the widget.
+ :type palette: str, optional
+
+ :param palette_flip: Whether to flip the palette tones.
+ :type palette_flip: bool, optional
+ """
+ if fill_max is not unset:
+ kwargs["fill_max"] = fill_max
+ if fill_min is not unset:
+ kwargs["fill_min"] = fill_min
+ if palette is not unset:
+ kwargs["palette"] = palette
+ if palette_flip is not unset:
+ kwargs["palette_flip"] = palette_flip
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_map_widget_definition_type.py b/datadog_api_client/v1/model/host_map_widget_definition_type.py
new file mode 100644
index 0000000000..5563147245
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetDefinitionType(ModelSimple):
+ """
+ Type of the host map widget.
+
+ :param value: If omitted defaults to "hostmap". Must be one of ["hostmap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "hostmap",
+ }
+ HOSTMAP: ClassVar["HostMapWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetDefinitionType.HOSTMAP = HostMapWidgetDefinitionType("hostmap")
diff --git a/datadog_api_client/v1/model/host_map_widget_dimension.py b/datadog_api_client/v1/model/host_map_widget_dimension.py
new file mode 100644
index 0000000000..6004f81481
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_dimension.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetDimension(ModelSimple):
+ """
+ Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by DDSQL projection columns; `group` is only meaningful for DDSQL projection columns, where repeated entries define the grouping hierarchy.
+
+ :param value: Must be one of ["node", "fill", "size", "group"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "node",
+ "fill",
+ "size",
+ "group",
+ }
+ NODE: ClassVar["HostMapWidgetDimension"]
+ FILL: ClassVar["HostMapWidgetDimension"]
+ SIZE: ClassVar["HostMapWidgetDimension"]
+ GROUP: ClassVar["HostMapWidgetDimension"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetDimension.NODE = HostMapWidgetDimension("node")
+HostMapWidgetDimension.FILL = HostMapWidgetDimension("fill")
+HostMapWidgetDimension.SIZE = HostMapWidgetDimension("size")
+HostMapWidgetDimension.GROUP = HostMapWidgetDimension("group")
diff --git a/datadog_api_client/v1/model/host_map_widget_formula.py b/datadog_api_client/v1/model/host_map_widget_formula.py
new file mode 100644
index 0000000000..bbc063adc3
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_formula.py
@@ -0,0 +1,73 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_map_widget_dimension import HostMapWidgetDimension
+ from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+
+class HostMapWidgetFormula(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_map_widget_dimension import HostMapWidgetDimension
+ from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+ return {
+ "alias": (str,),
+ "dimension": (HostMapWidgetDimension,),
+ "formula": (str,),
+ "number_format": (WidgetNumberFormat,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "dimension": "dimension",
+ "formula": "formula",
+ "number_format": "number_format",
+ }
+
+ def __init__(self_, dimension: HostMapWidgetDimension, formula: str, alias: Union[str, UnsetType]=unset, number_format: Union[WidgetNumberFormat, UnsetType]=unset, **kwargs):
+ """
+ Formula for the infrastructure host map widget that specifies both the expression
+ and the visual dimension it populates.
+
+ :param alias: Expression alias.
+ :type alias: str, optional
+
+ :param dimension: Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by DDSQL projection columns; ``group`` is only meaningful for DDSQL projection columns, where repeated entries define the grouping hierarchy.
+ :type dimension: HostMapWidgetDimension
+
+ :param formula: String expression built from queries, formulas, and functions.
+ :type formula: str
+
+ :param number_format: Number format options for the widget.
+ :type number_format: WidgetNumberFormat, optional
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ if number_format is not unset:
+ kwargs["number_format"] = number_format
+ super().__init__(kwargs)
+
+
+ self_.dimension = dimension
+ self_.formula = formula
diff --git a/datadog_api_client/v1/model/host_map_widget_group_by.py b/datadog_api_client/v1/model/host_map_widget_group_by.py
new file mode 100644
index 0000000000..98a144be34
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_group_by.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMapWidgetGroupBy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "column": (str,),
+ "key": (str,),
+ }
+ attribute_map = {
+ "column": "column",
+ "key": "key",
+ }
+
+ def __init__(self_, column: str, key: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Defines a grouping dimension for the infrastructure host map.
+
+ :param column: Column name from the entity table (for example, ``cloud_provider`` , ``tags`` , ``labels`` ).
+ :type column: str
+
+ :param key: Key within the column for nested attribute types (for example, ``service`` within ``tags`` ).
+ :type key: str, optional
+ """
+ if key is not unset:
+ kwargs["key"] = key
+ super().__init__(kwargs)
+
+
+ self_.column = column
diff --git a/datadog_api_client/v1/model/host_map_widget_infrastructure_request.py b/datadog_api_client/v1/model/host_map_widget_infrastructure_request.py
new file mode 100644
index 0000000000..853f53b5d8
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_infrastructure_request.py
@@ -0,0 +1,137 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request_leaf import HostMapWidgetInfrastructureRequestLeaf
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+ from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+ from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request_request_type import HostMapWidgetInfrastructureRequestRequestType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class HostMapWidgetInfrastructureRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request_leaf import HostMapWidgetInfrastructureRequestLeaf
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+ from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+ from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request_request_type import HostMapWidgetInfrastructureRequestRequestType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+ return {
+ "child": (HostMapWidgetInfrastructureRequestLeaf,),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "enrichments": ([HostMapWidgetScalarRequest],),
+ "filter": (str,),
+ "group_by": ([HostMapWidgetGroupBy],),
+ "no_group_hosts": (bool,),
+ "no_metric_hosts": (bool,),
+ "node_type": (HostMapWidgetNodeType,),
+ "request_type": (HostMapWidgetInfrastructureRequestRequestType,),
+ "style": (HostMapWidgetInfrastructureStyle,),
+ }
+ attribute_map = {
+ "child": "child",
+ "conditional_formats": "conditional_formats",
+ "enrichments": "enrichments",
+ "filter": "filter",
+ "group_by": "group_by",
+ "no_group_hosts": "no_group_hosts",
+ "no_metric_hosts": "no_metric_hosts",
+ "node_type": "node_type",
+ "request_type": "request_type",
+ "style": "style",
+ }
+
+ def __init__(self_, enrichments: List[HostMapWidgetScalarRequest], node_type: HostMapWidgetNodeType, request_type: HostMapWidgetInfrastructureRequestRequestType, child: Union[HostMapWidgetInfrastructureRequestLeaf, UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, filter: Union[str, UnsetType]=unset, group_by: Union[List[HostMapWidgetGroupBy], UnsetType]=unset, no_group_hosts: Union[bool, UnsetType]=unset, no_metric_hosts: Union[bool, UnsetType]=unset, style: Union[HostMapWidgetInfrastructureStyle, UnsetType]=unset, **kwargs):
+ """
+ Infrastructure-backed request for the host map widget. Supports entity-based
+ visualization with metric query enrichments, tag-based filtering, flexible grouping,
+ and hierarchical views.
+
+ :param child: Infrastructure-backed host map child request (leaf node, no further nesting supported).
+ :type child: HostMapWidgetInfrastructureRequestLeaf, optional
+
+ :param conditional_formats: List of conditional formatting rules applied to fill values.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param enrichments: Metric or event queries joined to the entity set. Each formula specifies a visual dimension.
+ :type enrichments: [HostMapWidgetScalarRequest]
+
+ :param filter: Filter string for the entity set in tag format (for example, ``env:prod`` ).
+ :type filter: str, optional
+
+ :param group_by: Defines how entities are grouped into tiles. The ordering of entries implies
+ the grouping hierarchy.
+ :type group_by: [HostMapWidgetGroupBy], optional
+
+ :param no_group_hosts: Whether to hide entities that have no group assignment.
+ :type no_group_hosts: bool, optional
+
+ :param no_metric_hosts: Whether to hide entities that have no enrichment data.
+ :type no_metric_hosts: bool, optional
+
+ :param node_type: Which type of infrastructure entity to visualize in the host map.
+ :type node_type: HostMapWidgetNodeType
+
+ :param request_type: Identifies this as an infrastructure-backed host map request.
+ :type request_type: HostMapWidgetInfrastructureRequestRequestType
+
+ :param style: Style configuration for the infrastructure host map.
+ :type style: HostMapWidgetInfrastructureStyle, optional
+ """
+ if child is not unset:
+ kwargs["child"] = child
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if no_group_hosts is not unset:
+ kwargs["no_group_hosts"] = no_group_hosts
+ if no_metric_hosts is not unset:
+ kwargs["no_metric_hosts"] = no_metric_hosts
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
+ self_.enrichments = enrichments
+ self_.node_type = node_type
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/host_map_widget_infrastructure_request_leaf.py b/datadog_api_client/v1/model/host_map_widget_infrastructure_request_leaf.py
new file mode 100644
index 0000000000..c471fd6e7a
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_infrastructure_request_leaf.py
@@ -0,0 +1,126 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+ from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+ from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request_request_type import HostMapWidgetInfrastructureRequestRequestType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class HostMapWidgetInfrastructureRequestLeaf(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+ from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+ from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_request_request_type import HostMapWidgetInfrastructureRequestRequestType
+ from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+ return {
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "enrichments": ([HostMapWidgetScalarRequest],),
+ "filter": (str,),
+ "group_by": ([HostMapWidgetGroupBy],),
+ "no_group_hosts": (bool,),
+ "no_metric_hosts": (bool,),
+ "node_type": (HostMapWidgetNodeType,),
+ "request_type": (HostMapWidgetInfrastructureRequestRequestType,),
+ "style": (HostMapWidgetInfrastructureStyle,),
+ }
+ attribute_map = {
+ "conditional_formats": "conditional_formats",
+ "enrichments": "enrichments",
+ "filter": "filter",
+ "group_by": "group_by",
+ "no_group_hosts": "no_group_hosts",
+ "no_metric_hosts": "no_metric_hosts",
+ "node_type": "node_type",
+ "request_type": "request_type",
+ "style": "style",
+ }
+
+ def __init__(self_, enrichments: List[HostMapWidgetScalarRequest], node_type: HostMapWidgetNodeType, request_type: HostMapWidgetInfrastructureRequestRequestType, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, filter: Union[str, UnsetType]=unset, group_by: Union[List[HostMapWidgetGroupBy], UnsetType]=unset, no_group_hosts: Union[bool, UnsetType]=unset, no_metric_hosts: Union[bool, UnsetType]=unset, style: Union[HostMapWidgetInfrastructureStyle, UnsetType]=unset, **kwargs):
+ """
+ Infrastructure-backed host map child request (leaf node, no further nesting supported).
+
+ :param conditional_formats: List of conditional formatting rules applied to fill values.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param enrichments: Metric or event queries joined to the entity set. Each formula specifies a visual dimension.
+ :type enrichments: [HostMapWidgetScalarRequest]
+
+ :param filter: Filter string for the entity set in tag format (for example, ``env:prod`` ).
+ :type filter: str, optional
+
+ :param group_by: Defines how entities are grouped into tiles. The ordering of entries implies
+ the grouping hierarchy.
+ :type group_by: [HostMapWidgetGroupBy], optional
+
+ :param no_group_hosts: Whether to hide entities that have no group assignment.
+ :type no_group_hosts: bool, optional
+
+ :param no_metric_hosts: Whether to hide entities that have no enrichment data.
+ :type no_metric_hosts: bool, optional
+
+ :param node_type: Which type of infrastructure entity to visualize in the host map.
+ :type node_type: HostMapWidgetNodeType
+
+ :param request_type: Identifies this as an infrastructure-backed host map request.
+ :type request_type: HostMapWidgetInfrastructureRequestRequestType
+
+ :param style: Style configuration for the infrastructure host map.
+ :type style: HostMapWidgetInfrastructureStyle, optional
+ """
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if no_group_hosts is not unset:
+ kwargs["no_group_hosts"] = no_group_hosts
+ if no_metric_hosts is not unset:
+ kwargs["no_metric_hosts"] = no_metric_hosts
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
+ self_.enrichments = enrichments
+ self_.node_type = node_type
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/host_map_widget_infrastructure_request_request_type.py b/datadog_api_client/v1/model/host_map_widget_infrastructure_request_request_type.py
new file mode 100644
index 0000000000..95a1c0617a
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_infrastructure_request_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetInfrastructureRequestRequestType(ModelSimple):
+ """
+ Identifies this as an infrastructure-backed host map request.
+
+ :param value: If omitted defaults to "infrastructure_hostmap". Must be one of ["infrastructure_hostmap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "infrastructure_hostmap",
+ }
+ INFRASTRUCTURE_HOSTMAP: ClassVar["HostMapWidgetInfrastructureRequestRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetInfrastructureRequestRequestType.INFRASTRUCTURE_HOSTMAP = HostMapWidgetInfrastructureRequestRequestType("infrastructure_hostmap")
diff --git a/datadog_api_client/v1/model/host_map_widget_infrastructure_style.py b/datadog_api_client/v1/model/host_map_widget_infrastructure_style.py
new file mode 100644
index 0000000000..4e9fec16d6
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_infrastructure_style.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMapWidgetInfrastructureStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "fill_max": (float,),
+ "fill_min": (float,),
+ "palette": (str,),
+ "palette_flip": (bool,),
+ }
+ attribute_map = {
+ "fill_max": "fill_max",
+ "fill_min": "fill_min",
+ "palette": "palette",
+ "palette_flip": "palette_flip",
+ }
+
+ def __init__(self_, fill_max: Union[float, UnsetType]=unset, fill_min: Union[float, UnsetType]=unset, palette: Union[str, UnsetType]=unset, palette_flip: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Style configuration for the infrastructure host map.
+
+ :param fill_max: Maximum value for the fill color scale. Omit to use automatic scaling.
+ :type fill_max: float, optional
+
+ :param fill_min: Minimum value for the fill color scale. Omit to use automatic scaling.
+ :type fill_min: float, optional
+
+ :param palette: Color palette name or alias.
+ :type palette: str, optional
+
+ :param palette_flip: Whether to invert the color palette.
+ :type palette_flip: bool, optional
+ """
+ if fill_max is not unset:
+ kwargs["fill_max"] = fill_max
+ if fill_min is not unset:
+ kwargs["fill_min"] = fill_min
+ if palette is not unset:
+ kwargs["palette"] = palette
+ if palette_flip is not unset:
+ kwargs["palette_flip"] = palette_flip
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_map_widget_node_type.py b/datadog_api_client/v1/model/host_map_widget_node_type.py
new file mode 100644
index 0000000000..878859a171
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_node_type.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetNodeType(ModelSimple):
+ """
+ Which type of infrastructure entity to visualize in the host map.
+
+ :param value: Must be one of ["host", "container", "pod", "cluster"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "host",
+ "container",
+ "pod",
+ "cluster",
+ }
+ HOST: ClassVar["HostMapWidgetNodeType"]
+ CONTAINER: ClassVar["HostMapWidgetNodeType"]
+ POD: ClassVar["HostMapWidgetNodeType"]
+ CLUSTER: ClassVar["HostMapWidgetNodeType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetNodeType.HOST = HostMapWidgetNodeType("host")
+HostMapWidgetNodeType.CONTAINER = HostMapWidgetNodeType("container")
+HostMapWidgetNodeType.POD = HostMapWidgetNodeType("pod")
+HostMapWidgetNodeType.CLUSTER = HostMapWidgetNodeType("cluster")
diff --git a/datadog_api_client/v1/model/host_map_widget_projection.py b/datadog_api_client/v1/model/host_map_widget_projection.py
new file mode 100644
index 0000000000..b544c7b142
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_projection.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_map_widget_projection_dimension_mapping import HostMapWidgetProjectionDimensionMapping
+ from datadog_api_client.v1.model.host_map_widget_projection_type import HostMapWidgetProjectionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+
+class HostMapWidgetProjection(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_map_widget_projection_dimension_mapping import HostMapWidgetProjectionDimensionMapping
+ from datadog_api_client.v1.model.host_map_widget_projection_type import HostMapWidgetProjectionType
+ return {
+ "dimensions": ([HostMapWidgetProjectionDimensionMapping],),
+ "type": (HostMapWidgetProjectionType,),
+ }
+ attribute_map = {
+ "dimensions": "dimensions",
+ "type": "type",
+ }
+
+ def __init__(self_, dimensions: List[HostMapWidgetProjectionDimensionMapping], type: HostMapWidgetProjectionType, **kwargs):
+ """
+ Projection for the DDSQL host map request. Maps dataset columns to map dimensions: ``node`` identifies the entity, repeated ``group`` entries define the grouping hierarchy (outermost first), and ``fill`` / ``size`` drive the tile color and size.
+
+ :param dimensions: List of column-to-dimension mappings for the projection.
+ :type dimensions: [HostMapWidgetProjectionDimensionMapping]
+
+ :param type: Type of the host map projection.
+ :type type: HostMapWidgetProjectionType
+ """
+ super().__init__(kwargs)
+
+
+ self_.dimensions = dimensions
+ self_.type = type
diff --git a/datadog_api_client/v1/model/host_map_widget_projection_dimension_mapping.py b/datadog_api_client/v1/model/host_map_widget_projection_dimension_mapping.py
new file mode 100644
index 0000000000..30947153a0
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_projection_dimension_mapping.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_map_widget_dimension import HostMapWidgetDimension
+ from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+
+class HostMapWidgetProjectionDimensionMapping(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_map_widget_dimension import HostMapWidgetDimension
+ from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+ return {
+ "alias": (str,),
+ "column": (str,),
+ "dimension": (HostMapWidgetDimension,),
+ "number_format": (WidgetNumberFormat,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "column": "column",
+ "dimension": "dimension",
+ "number_format": "number_format",
+ }
+
+ def __init__(self_, column: str, dimension: HostMapWidgetDimension, alias: Union[str, UnsetType]=unset, number_format: Union[WidgetNumberFormat, UnsetType]=unset, **kwargs):
+ """
+ Maps a dataset column to a host map visual dimension.
+
+ :param alias: Alias used to label the column instead of its name.
+ :type alias: str, optional
+
+ :param column: Source column name from the dataset.
+ :type column: str
+
+ :param dimension: Visual dimension for the host map widget. Used both by infrastructure-backed formulas and by DDSQL projection columns; ``group`` is only meaningful for DDSQL projection columns, where repeated entries define the grouping hierarchy.
+ :type dimension: HostMapWidgetDimension
+
+ :param number_format: Number format options for the widget.
+ :type number_format: WidgetNumberFormat, optional
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ if number_format is not unset:
+ kwargs["number_format"] = number_format
+ super().__init__(kwargs)
+
+
+ self_.column = column
+ self_.dimension = dimension
diff --git a/datadog_api_client/v1/model/host_map_widget_projection_type.py b/datadog_api_client/v1/model/host_map_widget_projection_type.py
new file mode 100644
index 0000000000..5c94cad951
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_projection_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetProjectionType(ModelSimple):
+ """
+ Type of the host map projection.
+
+ :param value: If omitted defaults to "hostmap". Must be one of ["hostmap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "hostmap",
+ }
+ HOSTMAP: ClassVar["HostMapWidgetProjectionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetProjectionType.HOSTMAP = HostMapWidgetProjectionType("hostmap")
diff --git a/datadog_api_client/v1/model/host_map_widget_scalar_request.py b/datadog_api_client/v1/model/host_map_widget_scalar_request.py
new file mode 100644
index 0000000000..2f7b8eb816
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_scalar_request.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.host_map_widget_formula import HostMapWidgetFormula
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.host_map_widget_scalar_request_response_format import HostMapWidgetScalarRequestResponseFormat
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class HostMapWidgetScalarRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.host_map_widget_formula import HostMapWidgetFormula
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.host_map_widget_scalar_request_response_format import HostMapWidgetScalarRequestResponseFormat
+ return {
+ "formulas": ([HostMapWidgetFormula],),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (HostMapWidgetScalarRequestResponseFormat,),
+ }
+ attribute_map = {
+ "formulas": "formulas",
+ "queries": "queries",
+ "response_format": "response_format",
+ }
+
+ def __init__(self_, formulas: List[HostMapWidgetFormula], queries: List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], response_format: HostMapWidgetScalarRequestResponseFormat, **kwargs):
+ """
+ Scalar formula request for the infrastructure host map widget. Each formula specifies
+ which visual dimension it drives.
+
+ :param formulas: List of formulas that operate on queries, each assigned to a visual dimension.
+ :type formulas: [HostMapWidgetFormula]
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition]
+
+ :param response_format: Response format for the scalar formula request. Only ``scalar`` is supported.
+ :type response_format: HostMapWidgetScalarRequestResponseFormat
+ """
+ super().__init__(kwargs)
+
+
+ self_.formulas = formulas
+ self_.queries = queries
+ self_.response_format = response_format
diff --git a/datadog_api_client/v1/model/host_map_widget_scalar_request_response_format.py b/datadog_api_client/v1/model/host_map_widget_scalar_request_response_format.py
new file mode 100644
index 0000000000..343a09b18d
--- /dev/null
+++ b/datadog_api_client/v1/model/host_map_widget_scalar_request_response_format.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HostMapWidgetScalarRequestResponseFormat(ModelSimple):
+ """
+ Response format for the scalar formula request. Only `scalar` is supported.
+
+ :param value: If omitted defaults to "scalar". Must be one of ["scalar"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "scalar",
+ }
+ SCALAR: ClassVar["HostMapWidgetScalarRequestResponseFormat"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HostMapWidgetScalarRequestResponseFormat.SCALAR = HostMapWidgetScalarRequestResponseFormat("scalar")
diff --git a/datadog_api_client/v1/model/host_meta.py b/datadog_api_client/v1/model/host_meta.py
new file mode 100644
index 0000000000..fb0bb6febf
--- /dev/null
+++ b/datadog_api_client/v1/model/host_meta.py
@@ -0,0 +1,149 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.agent_check import AgentCheck
+ from datadog_api_client.v1.model.host_meta_install_method import HostMetaInstallMethod
+
+class HostMeta(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.agent_check import AgentCheck
+ from datadog_api_client.v1.model.host_meta_install_method import HostMetaInstallMethod
+ return {
+ "agent_checks": ([AgentCheck],),
+ "agent_version": (str,),
+ "cpu_cores": (int,),
+ "fbsd_v": ([bool, date, datetime, dict, float, int, list, str, UUID, none_type],),
+ "gohai": (str,),
+ "install_method": (HostMetaInstallMethod,),
+ "mac_v": ([bool, date, datetime, dict, float, int, list, str, UUID, none_type],),
+ "machine": (str,),
+ "nix_v": ([bool, date, datetime, dict, float, int, list, str, UUID, none_type],),
+ "platform": (str,),
+ "processor": (str,),
+ "python_v": (str,),
+ "socket_fqdn": (str,),
+ "socket_hostname": (str,),
+ "win_v": ([bool, date, datetime, dict, float, int, list, str, UUID, none_type],),
+ }
+ attribute_map = {
+ "agent_checks": "agent_checks",
+ "agent_version": "agent_version",
+ "cpu_cores": "cpuCores",
+ "fbsd_v": "fbsdV",
+ "gohai": "gohai",
+ "install_method": "install_method",
+ "mac_v": "macV",
+ "machine": "machine",
+ "nix_v": "nixV",
+ "platform": "platform",
+ "processor": "processor",
+ "python_v": "pythonV",
+ "socket_fqdn": "socket-fqdn",
+ "socket_hostname": "socket-hostname",
+ "win_v": "winV",
+ }
+
+ def __init__(self_, agent_checks: Union[List[AgentCheck], UnsetType]=unset, agent_version: Union[str, UnsetType]=unset, cpu_cores: Union[int, UnsetType]=unset, fbsd_v: Union[List[Any], UnsetType]=unset, gohai: Union[str, UnsetType]=unset, install_method: Union[HostMetaInstallMethod, UnsetType]=unset, mac_v: Union[List[Any], UnsetType]=unset, machine: Union[str, UnsetType]=unset, nix_v: Union[List[Any], UnsetType]=unset, platform: Union[str, UnsetType]=unset, processor: Union[str, UnsetType]=unset, python_v: Union[str, UnsetType]=unset, socket_fqdn: Union[str, UnsetType]=unset, socket_hostname: Union[str, UnsetType]=unset, win_v: Union[List[Any], UnsetType]=unset, **kwargs):
+ """
+ Metadata associated with your host.
+
+ :param agent_checks: A list of Agent checks running on the host.
+ :type agent_checks: [AgentCheck], optional
+
+ :param agent_version: The Datadog Agent version.
+ :type agent_version: str, optional
+
+ :param cpu_cores: The number of cores.
+ :type cpu_cores: int, optional
+
+ :param fbsd_v: An array of Mac versions.
+ :type fbsd_v: [bool, date, datetime, dict, float, int, list, str, UUID, none_type], optional
+
+ :param gohai: JSON string containing system information.
+ :type gohai: str, optional
+
+ :param install_method: Agent install method.
+ :type install_method: HostMetaInstallMethod, optional
+
+ :param mac_v: An array of Mac versions.
+ :type mac_v: [bool, date, datetime, dict, float, int, list, str, UUID, none_type], optional
+
+ :param machine: The machine architecture.
+ :type machine: str, optional
+
+ :param nix_v: Array of Unix versions.
+ :type nix_v: [bool, date, datetime, dict, float, int, list, str, UUID, none_type], optional
+
+ :param platform: The OS platform.
+ :type platform: str, optional
+
+ :param processor: The processor.
+ :type processor: str, optional
+
+ :param python_v: The Python version.
+ :type python_v: str, optional
+
+ :param socket_fqdn: The socket fqdn.
+ :type socket_fqdn: str, optional
+
+ :param socket_hostname: The socket hostname.
+ :type socket_hostname: str, optional
+
+ :param win_v: An array of Windows versions.
+ :type win_v: [bool, date, datetime, dict, float, int, list, str, UUID, none_type], optional
+ """
+ if agent_checks is not unset:
+ kwargs["agent_checks"] = agent_checks
+ if agent_version is not unset:
+ kwargs["agent_version"] = agent_version
+ if cpu_cores is not unset:
+ kwargs["cpu_cores"] = cpu_cores
+ if fbsd_v is not unset:
+ kwargs["fbsd_v"] = fbsd_v
+ if gohai is not unset:
+ kwargs["gohai"] = gohai
+ if install_method is not unset:
+ kwargs["install_method"] = install_method
+ if mac_v is not unset:
+ kwargs["mac_v"] = mac_v
+ if machine is not unset:
+ kwargs["machine"] = machine
+ if nix_v is not unset:
+ kwargs["nix_v"] = nix_v
+ if platform is not unset:
+ kwargs["platform"] = platform
+ if processor is not unset:
+ kwargs["processor"] = processor
+ if python_v is not unset:
+ kwargs["python_v"] = python_v
+ if socket_fqdn is not unset:
+ kwargs["socket_fqdn"] = socket_fqdn
+ if socket_hostname is not unset:
+ kwargs["socket_hostname"] = socket_hostname
+ if win_v is not unset:
+ kwargs["win_v"] = win_v
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_meta_install_method.py b/datadog_api_client/v1/model/host_meta_install_method.py
new file mode 100644
index 0000000000..758991ac38
--- /dev/null
+++ b/datadog_api_client/v1/model/host_meta_install_method.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMetaInstallMethod(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "installer_version": (str,),
+ "tool": (str,),
+ "tool_version": (str,),
+ }
+ attribute_map = {
+ "installer_version": "installer_version",
+ "tool": "tool",
+ "tool_version": "tool_version",
+ }
+
+ def __init__(self_, installer_version: Union[str, UnsetType]=unset, tool: Union[str, UnsetType]=unset, tool_version: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Agent install method.
+
+ :param installer_version: The installer version.
+ :type installer_version: str, optional
+
+ :param tool: Tool used to install the agent.
+ :type tool: str, optional
+
+ :param tool_version: The tool version.
+ :type tool_version: str, optional
+ """
+ if installer_version is not unset:
+ kwargs["installer_version"] = installer_version
+ if tool is not unset:
+ kwargs["tool"] = tool
+ if tool_version is not unset:
+ kwargs["tool_version"] = tool_version
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_metrics.py b/datadog_api_client/v1/model/host_metrics.py
new file mode 100644
index 0000000000..19561f98e4
--- /dev/null
+++ b/datadog_api_client/v1/model/host_metrics.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMetrics(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "cpu": (float,),
+ "iowait": (float,),
+ "load": (float,),
+ }
+ attribute_map = {
+ "cpu": "cpu",
+ "iowait": "iowait",
+ "load": "load",
+ }
+
+ def __init__(self_, cpu: Union[float, UnsetType]=unset, iowait: Union[float, UnsetType]=unset, load: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Host Metrics collected.
+
+ :param cpu: The percent of CPU used (everything but idle).
+ :type cpu: float, optional
+
+ :param iowait: The percent of CPU spent waiting on the IO (not reported for all platforms).
+ :type iowait: float, optional
+
+ :param load: The system load over the last 15 minutes.
+ :type load: float, optional
+ """
+ if cpu is not unset:
+ kwargs["cpu"] = cpu
+ if iowait is not unset:
+ kwargs["iowait"] = iowait
+ if load is not unset:
+ kwargs["load"] = load
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_mute_response.py b/datadog_api_client/v1/model/host_mute_response.py
new file mode 100644
index 0000000000..c137633f9d
--- /dev/null
+++ b/datadog_api_client/v1/model/host_mute_response.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMuteResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "action": (str,),
+ "end": (int,),
+ "hostname": (str,),
+ "message": (str,),
+ }
+ attribute_map = {
+ "action": "action",
+ "end": "end",
+ "hostname": "hostname",
+ "message": "message",
+ }
+
+ def __init__(self_, action: Union[str, UnsetType]=unset, end: Union[int, UnsetType]=unset, hostname: Union[str, UnsetType]=unset, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Response with the list of muted host for your organization.
+
+ :param action: Action applied to the hosts.
+ :type action: str, optional
+
+ :param end: POSIX timestamp in seconds when the host is unmuted.
+ :type end: int, optional
+
+ :param hostname: The host name.
+ :type hostname: str, optional
+
+ :param message: Message associated with the mute.
+ :type message: str, optional
+ """
+ if action is not unset:
+ kwargs["action"] = action
+ if end is not unset:
+ kwargs["end"] = end
+ if hostname is not unset:
+ kwargs["hostname"] = hostname
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_mute_settings.py b/datadog_api_client/v1/model/host_mute_settings.py
new file mode 100644
index 0000000000..e7e75d784b
--- /dev/null
+++ b/datadog_api_client/v1/model/host_mute_settings.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostMuteSettings(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "end": (int,),
+ "message": (str,),
+ "override": (bool,),
+ }
+ attribute_map = {
+ "end": "end",
+ "message": "message",
+ "override": "override",
+ }
+
+ def __init__(self_, end: Union[int, UnsetType]=unset, message: Union[str, UnsetType]=unset, override: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Combination of settings to mute a host.
+
+ :param end: POSIX timestamp in seconds when the host is unmuted. If omitted, the host remains muted until explicitly unmuted.
+ :type end: int, optional
+
+ :param message: Message to associate with the muting of this host.
+ :type message: str, optional
+
+ :param override: If true and the host is already muted, replaces existing host mute settings.
+ :type override: bool, optional
+ """
+ if end is not unset:
+ kwargs["end"] = end
+ if message is not unset:
+ kwargs["message"] = message
+ if override is not unset:
+ kwargs["override"] = override
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_tags.py b/datadog_api_client/v1/model/host_tags.py
new file mode 100644
index 0000000000..a8c3d15449
--- /dev/null
+++ b/datadog_api_client/v1/model/host_tags.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostTags(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "host": (str,),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "host": "host",
+ "tags": "tags",
+ }
+
+ def __init__(self_, host: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Host name and an array of its tags
+
+ :param host: Your host name.
+ :type host: str, optional
+
+ :param tags: A list of tags associated with a host.
+ :type tags: [str], optional
+ """
+ if host is not unset:
+ kwargs["host"] = host
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/host_totals.py b/datadog_api_client/v1/model/host_totals.py
new file mode 100644
index 0000000000..1166f14076
--- /dev/null
+++ b/datadog_api_client/v1/model/host_totals.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HostTotals(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_active": (int,),
+ "total_up": (int,),
+ }
+ attribute_map = {
+ "total_active": "total_active",
+ "total_up": "total_up",
+ }
+
+ def __init__(self_, total_active: Union[int, UnsetType]=unset, total_up: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Total number of host currently monitored by Datadog.
+
+ :param total_active: Total number of active host (UP and ???) reporting to Datadog.
+ :type total_active: int, optional
+
+ :param total_up: Number of host that are UP and reporting to Datadog.
+ :type total_up: int, optional
+ """
+ if total_active is not unset:
+ kwargs["total_active"] = total_active
+ if total_up is not unset:
+ kwargs["total_up"] = total_up
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/hourly_usage_attribution_body.py b/datadog_api_client/v1/model/hourly_usage_attribution_body.py
new file mode 100644
index 0000000000..b56ed2d216
--- /dev/null
+++ b/datadog_api_client/v1/model/hourly_usage_attribution_body.py
@@ -0,0 +1,112 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_attribution_tag_names import UsageAttributionTagNames
+ from datadog_api_client.v1.model.hourly_usage_attribution_usage_type import HourlyUsageAttributionUsageType
+
+class HourlyUsageAttributionBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_attribution_tag_names import UsageAttributionTagNames
+ from datadog_api_client.v1.model.hourly_usage_attribution_usage_type import HourlyUsageAttributionUsageType
+ return {
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "region": (str,),
+ "tag_config_source": (str,),
+ "tags": (UsageAttributionTagNames,),
+ "total_usage_sum": (float,),
+ "updated_at": (str,),
+ "usage_type": (HourlyUsageAttributionUsageType,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "region": "region",
+ "tag_config_source": "tag_config_source",
+ "tags": "tags",
+ "total_usage_sum": "total_usage_sum",
+ "updated_at": "updated_at",
+ "usage_type": "usage_type",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, region: Union[str, UnsetType]=unset, tag_config_source: Union[str, UnsetType]=unset, tags: Union[UsageAttributionTagNames, none_type, UnsetType]=unset, total_usage_sum: Union[float, UnsetType]=unset, updated_at: Union[str, UnsetType]=unset, usage_type: Union[HourlyUsageAttributionUsageType, UnsetType]=unset, **kwargs):
+ """
+ The usage for one set of tags for one hour.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The name of the organization.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param region: The region of the Datadog instance that the organization belongs to.
+ :type region: str, optional
+
+ :param tag_config_source: The source of the usage attribution tag configuration and the selected tags in the format of ``::://////``.
+ :type tag_config_source: str, optional
+
+ :param tags: Tag keys and values.
+
+ A ``null`` value here means that the requested tag breakdown cannot be applied because it does not match the `tags
+ configured for usage attribution `_.
+ In this scenario the API returns the total usage, not broken down by tags.
+ :type tags: UsageAttributionTagNames, none_type, optional
+
+ :param total_usage_sum: Total product usage for the given tags within the hour.
+ :type total_usage_sum: float, optional
+
+ :param updated_at: Shows the most recent hour in the current month for all organizations where usages are calculated.
+ :type updated_at: str, optional
+
+ :param usage_type: Supported products for hourly usage attribution requests. Usage types are in the format ``_usage``.
+ To obtain the complete list of valid usage types, make a request to the `Get usage attribution types API `_.
+ :type usage_type: HourlyUsageAttributionUsageType, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if region is not unset:
+ kwargs["region"] = region
+ if tag_config_source is not unset:
+ kwargs["tag_config_source"] = tag_config_source
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if total_usage_sum is not unset:
+ kwargs["total_usage_sum"] = total_usage_sum
+ if updated_at is not unset:
+ kwargs["updated_at"] = updated_at
+ if usage_type is not unset:
+ kwargs["usage_type"] = usage_type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/hourly_usage_attribution_metadata.py b/datadog_api_client/v1/model/hourly_usage_attribution_metadata.py
new file mode 100644
index 0000000000..1699b19a87
--- /dev/null
+++ b/datadog_api_client/v1/model/hourly_usage_attribution_metadata.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.hourly_usage_attribution_pagination import HourlyUsageAttributionPagination
+
+class HourlyUsageAttributionMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.hourly_usage_attribution_pagination import HourlyUsageAttributionPagination
+ return {
+ "pagination": (HourlyUsageAttributionPagination,),
+ }
+ attribute_map = {
+ "pagination": "pagination",
+ }
+
+ def __init__(self_, pagination: Union[HourlyUsageAttributionPagination, UnsetType]=unset, **kwargs):
+ """
+ The object containing document metadata.
+
+ :param pagination: The metadata for the current pagination.
+ :type pagination: HourlyUsageAttributionPagination, optional
+ """
+ if pagination is not unset:
+ kwargs["pagination"] = pagination
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/hourly_usage_attribution_pagination.py b/datadog_api_client/v1/model/hourly_usage_attribution_pagination.py
new file mode 100644
index 0000000000..aa7d8901e0
--- /dev/null
+++ b/datadog_api_client/v1/model/hourly_usage_attribution_pagination.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HourlyUsageAttributionPagination(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "next_record_id": (str, none_type),
+ }
+ attribute_map = {
+ "next_record_id": "next_record_id",
+ }
+
+ def __init__(self_, next_record_id: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ The metadata for the current pagination.
+
+ :param next_record_id: The cursor to get the next results (if any). To make the next request, use the same parameters and add ``next_record_id``.
+ :type next_record_id: str, none_type, optional
+ """
+ if next_record_id is not unset:
+ kwargs["next_record_id"] = next_record_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/hourly_usage_attribution_response.py b/datadog_api_client/v1/model/hourly_usage_attribution_response.py
new file mode 100644
index 0000000000..2904b5291b
--- /dev/null
+++ b/datadog_api_client/v1/model/hourly_usage_attribution_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.hourly_usage_attribution_metadata import HourlyUsageAttributionMetadata
+ from datadog_api_client.v1.model.hourly_usage_attribution_body import HourlyUsageAttributionBody
+
+class HourlyUsageAttributionResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.hourly_usage_attribution_metadata import HourlyUsageAttributionMetadata
+ from datadog_api_client.v1.model.hourly_usage_attribution_body import HourlyUsageAttributionBody
+ return {
+ "metadata": (HourlyUsageAttributionMetadata,),
+ "usage": ([HourlyUsageAttributionBody],),
+ }
+ attribute_map = {
+ "metadata": "metadata",
+ "usage": "usage",
+ }
+
+ def __init__(self_, metadata: Union[HourlyUsageAttributionMetadata, UnsetType]=unset, usage: Union[List[HourlyUsageAttributionBody], UnsetType]=unset, **kwargs):
+ """
+ Response containing the hourly usage attribution by tag(s).
+
+ :param metadata: The object containing document metadata.
+ :type metadata: HourlyUsageAttributionMetadata, optional
+
+ :param usage: Get the hourly usage attribution by tag(s).
+ :type usage: [HourlyUsageAttributionBody], optional
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py b/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py
new file mode 100644
index 0000000000..1a3cc56060
--- /dev/null
+++ b/datadog_api_client/v1/model/hourly_usage_attribution_usage_type.py
@@ -0,0 +1,310 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class HourlyUsageAttributionUsageType(ModelSimple):
+ """
+ Supported products for hourly usage attribution requests. Usage types are in the format `_usage`.
+ To obtain the complete list of valid usage types, make a request to the [Get usage attribution types API](https://docs.datadoghq.com/api/latest/usage-metering/#get-usage-attribution-types).
+
+ :param value: Must be one of ["api_usage", "apm_fargate_usage", "apm_host_usage", "apm_usm_usage", "appsec_fargate_usage", "appsec_usage", "asm_serverless_traced_invocations_usage", "asm_serverless_traced_invocations_percentage", "bits_ai_investigations_usage", "browser_usage", "ci_code_coverage_committers_percentage", "ci_code_coverage_committers_usage", "ci_pipeline_indexed_spans_usage", "ci_test_indexed_spans_usage", "ci_visibility_itr_usage", "cloud_siem_usage", "code_security_host_usage", "container_excl_agent_usage", "container_usage", "cspm_containers_usage", "cspm_hosts_usage", "custom_event_usage", "custom_ingested_timeseries_usage", "custom_timeseries_usage", "cws_containers_usage", "cws_fargate_task_usage", "cws_hosts_usage", "data_jobs_monitoring_usage", "data_stream_monitoring_usage", "dbm_hosts_usage", "dbm_queries_usage", "error_tracking_usage", "error_tracking_percentage", "estimated_indexed_spans_usage", "estimated_ingested_spans_usage", "fargate_usage", "flex_logs_starter", "flex_stored_logs", "functions_usage", "incident_management_monthly_active_users_usage", "indexed_spans_usage", "infra_host_usage", "infra_host_basic_usage", "ingested_logs_bytes_usage", "ingested_spans_bytes_usage", "invocations_usage", "lambda_traced_invocations_usage", "llm_observability_usage", "llm_spans_usage", "logs_indexed_15day_usage", "logs_indexed_180day_usage", "logs_indexed_1day_usage", "logs_indexed_30day_usage", "logs_indexed_360day_usage", "logs_indexed_3day_usage", "logs_indexed_45day_usage", "logs_indexed_60day_usage", "logs_indexed_7day_usage", "logs_indexed_90day_usage", "logs_indexed_custom_retention_usage", "mobile_app_testing_usage", "ndm_netflow_usage", "npm_host_usage", "network_device_wireless_usage", "obs_pipeline_bytes_usage", "obs_pipelines_vcpu_usage", "online_archive_usage", "product_analytics_session_usage", "profiled_container_usage", "profiled_fargate_usage", "profiled_host_usage", "published_app", "rum_browser_mobile_sessions_usage", "rum_ingested_usage", "rum_investigate_usage", "rum_replay_sessions_usage", "rum_session_replay_add_on_usage", "sca_fargate_usage", "sds_scanned_bytes_usage", "serverless_apps_usage", "serverless_apps_apm_usage", "siem_12mo_retention_usage", "siem_6mo_retention_usage", "siem_analyzed_logs_add_on_usage", "siem_ingested_bytes_usage", "snmp_usage", "universal_service_monitoring_usage", "vuln_management_hosts_usage", "workflow_executions_usage"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "api_usage",
+ "apm_fargate_usage",
+ "apm_host_usage",
+ "apm_usm_usage",
+ "appsec_fargate_usage",
+ "appsec_usage",
+ "asm_serverless_traced_invocations_usage",
+ "asm_serverless_traced_invocations_percentage",
+ "bits_ai_investigations_usage",
+ "browser_usage",
+ "ci_code_coverage_committers_percentage",
+ "ci_code_coverage_committers_usage",
+ "ci_pipeline_indexed_spans_usage",
+ "ci_test_indexed_spans_usage",
+ "ci_visibility_itr_usage",
+ "cloud_siem_usage",
+ "code_security_host_usage",
+ "container_excl_agent_usage",
+ "container_usage",
+ "cspm_containers_usage",
+ "cspm_hosts_usage",
+ "custom_event_usage",
+ "custom_ingested_timeseries_usage",
+ "custom_timeseries_usage",
+ "cws_containers_usage",
+ "cws_fargate_task_usage",
+ "cws_hosts_usage",
+ "data_jobs_monitoring_usage",
+ "data_stream_monitoring_usage",
+ "dbm_hosts_usage",
+ "dbm_queries_usage",
+ "error_tracking_usage",
+ "error_tracking_percentage",
+ "estimated_indexed_spans_usage",
+ "estimated_ingested_spans_usage",
+ "fargate_usage",
+ "flex_logs_starter",
+ "flex_stored_logs",
+ "functions_usage",
+ "incident_management_monthly_active_users_usage",
+ "indexed_spans_usage",
+ "infra_host_usage",
+ "infra_host_basic_usage",
+ "ingested_logs_bytes_usage",
+ "ingested_spans_bytes_usage",
+ "invocations_usage",
+ "lambda_traced_invocations_usage",
+ "llm_observability_usage",
+ "llm_spans_usage",
+ "logs_indexed_15day_usage",
+ "logs_indexed_180day_usage",
+ "logs_indexed_1day_usage",
+ "logs_indexed_30day_usage",
+ "logs_indexed_360day_usage",
+ "logs_indexed_3day_usage",
+ "logs_indexed_45day_usage",
+ "logs_indexed_60day_usage",
+ "logs_indexed_7day_usage",
+ "logs_indexed_90day_usage",
+ "logs_indexed_custom_retention_usage",
+ "mobile_app_testing_usage",
+ "ndm_netflow_usage",
+ "npm_host_usage",
+ "network_device_wireless_usage",
+ "obs_pipeline_bytes_usage",
+ "obs_pipelines_vcpu_usage",
+ "online_archive_usage",
+ "product_analytics_session_usage",
+ "profiled_container_usage",
+ "profiled_fargate_usage",
+ "profiled_host_usage",
+ "published_app",
+ "rum_browser_mobile_sessions_usage",
+ "rum_ingested_usage",
+ "rum_investigate_usage",
+ "rum_replay_sessions_usage",
+ "rum_session_replay_add_on_usage",
+ "sca_fargate_usage",
+ "sds_scanned_bytes_usage",
+ "serverless_apps_usage",
+ "serverless_apps_apm_usage",
+ "siem_12mo_retention_usage",
+ "siem_6mo_retention_usage",
+ "siem_analyzed_logs_add_on_usage",
+ "siem_ingested_bytes_usage",
+ "snmp_usage",
+ "universal_service_monitoring_usage",
+ "vuln_management_hosts_usage",
+ "workflow_executions_usage",
+ }
+ API_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ APM_FARGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ APM_HOST_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ APM_USM_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ APPSEC_FARGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ APPSEC_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ASM_SERVERLESS_TRACED_INVOCATIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ASM_SERVERLESS_TRACED_INVOCATIONS_PERCENTAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ BITS_AI_INVESTIGATIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ BROWSER_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CI_CODE_COVERAGE_COMMITTERS_PERCENTAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CI_CODE_COVERAGE_COMMITTERS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CI_PIPELINE_INDEXED_SPANS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CI_TEST_INDEXED_SPANS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CI_VISIBILITY_ITR_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CLOUD_SIEM_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CODE_SECURITY_HOST_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CONTAINER_EXCL_AGENT_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CONTAINER_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CSPM_CONTAINERS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CSPM_HOSTS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CUSTOM_EVENT_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CUSTOM_INGESTED_TIMESERIES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CUSTOM_TIMESERIES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CWS_CONTAINERS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CWS_FARGATE_TASK_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ CWS_HOSTS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ DATA_JOBS_MONITORING_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ DATA_STREAM_MONITORING_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ DBM_HOSTS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ DBM_QUERIES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ERROR_TRACKING_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ERROR_TRACKING_PERCENTAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ESTIMATED_INDEXED_SPANS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ESTIMATED_INGESTED_SPANS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ FARGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ FLEX_LOGS_STARTER: ClassVar["HourlyUsageAttributionUsageType"]
+ FLEX_STORED_LOGS: ClassVar["HourlyUsageAttributionUsageType"]
+ FUNCTIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INCIDENT_MANAGEMENT_MONTHLY_ACTIVE_USERS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INDEXED_SPANS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INFRA_HOST_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INFRA_HOST_BASIC_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INGESTED_LOGS_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INGESTED_SPANS_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ INVOCATIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LAMBDA_TRACED_INVOCATIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LLM_OBSERVABILITY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LLM_SPANS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_15DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_180DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_1DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_30DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_360DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_3DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_45DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_60DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_7DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_90DAY_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ LOGS_INDEXED_CUSTOM_RETENTION_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ MOBILE_APP_TESTING_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ NDM_NETFLOW_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ NETWORK_DEVICE_WIRELESS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ NPM_HOST_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ OBS_PIPELINE_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ OBS_PIPELINE_VCPU_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ ONLINE_ARCHIVE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ PRODUCT_ANALYTICS_SESSION_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ PROFILED_CONTAINER_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ PROFILED_FARGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ PROFILED_HOST_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ PUBLISHED_APP_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ RUM_BROWSER_MOBILE_SESSIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ RUM_INGESTED_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ RUM_INVESTIGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ RUM_REPLAY_SESSIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ RUM_SESSION_REPLAY_ADD_ON_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SCA_FARGATE_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SDS_SCANNED_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SERVERLESS_APPS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SERVERLESS_APPS_APM_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SIEM_12MO_RETENTION_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SIEM_6MO_RETENTION_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SIEM_ANALYZED_LOGS_ADD_ON_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SIEM_INGESTED_BYTES_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ SNMP_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ UNIVERSAL_SERVICE_MONITORING_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ VULN_MANAGEMENT_HOSTS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+ WORKFLOW_EXECUTIONS_USAGE: ClassVar["HourlyUsageAttributionUsageType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+HourlyUsageAttributionUsageType.API_USAGE = HourlyUsageAttributionUsageType("api_usage")
+HourlyUsageAttributionUsageType.APM_FARGATE_USAGE = HourlyUsageAttributionUsageType("apm_fargate_usage")
+HourlyUsageAttributionUsageType.APM_HOST_USAGE = HourlyUsageAttributionUsageType("apm_host_usage")
+HourlyUsageAttributionUsageType.APM_USM_USAGE = HourlyUsageAttributionUsageType("apm_usm_usage")
+HourlyUsageAttributionUsageType.APPSEC_FARGATE_USAGE = HourlyUsageAttributionUsageType("appsec_fargate_usage")
+HourlyUsageAttributionUsageType.APPSEC_USAGE = HourlyUsageAttributionUsageType("appsec_usage")
+HourlyUsageAttributionUsageType.ASM_SERVERLESS_TRACED_INVOCATIONS_USAGE = HourlyUsageAttributionUsageType("asm_serverless_traced_invocations_usage")
+HourlyUsageAttributionUsageType.ASM_SERVERLESS_TRACED_INVOCATIONS_PERCENTAGE = HourlyUsageAttributionUsageType("asm_serverless_traced_invocations_percentage")
+HourlyUsageAttributionUsageType.BITS_AI_INVESTIGATIONS_USAGE = HourlyUsageAttributionUsageType("bits_ai_investigations_usage")
+HourlyUsageAttributionUsageType.BROWSER_USAGE = HourlyUsageAttributionUsageType("browser_usage")
+HourlyUsageAttributionUsageType.CI_CODE_COVERAGE_COMMITTERS_PERCENTAGE = HourlyUsageAttributionUsageType("ci_code_coverage_committers_percentage")
+HourlyUsageAttributionUsageType.CI_CODE_COVERAGE_COMMITTERS_USAGE = HourlyUsageAttributionUsageType("ci_code_coverage_committers_usage")
+HourlyUsageAttributionUsageType.CI_PIPELINE_INDEXED_SPANS_USAGE = HourlyUsageAttributionUsageType("ci_pipeline_indexed_spans_usage")
+HourlyUsageAttributionUsageType.CI_TEST_INDEXED_SPANS_USAGE = HourlyUsageAttributionUsageType("ci_test_indexed_spans_usage")
+HourlyUsageAttributionUsageType.CI_VISIBILITY_ITR_USAGE = HourlyUsageAttributionUsageType("ci_visibility_itr_usage")
+HourlyUsageAttributionUsageType.CLOUD_SIEM_USAGE = HourlyUsageAttributionUsageType("cloud_siem_usage")
+HourlyUsageAttributionUsageType.CODE_SECURITY_HOST_USAGE = HourlyUsageAttributionUsageType("code_security_host_usage")
+HourlyUsageAttributionUsageType.CONTAINER_EXCL_AGENT_USAGE = HourlyUsageAttributionUsageType("container_excl_agent_usage")
+HourlyUsageAttributionUsageType.CONTAINER_USAGE = HourlyUsageAttributionUsageType("container_usage")
+HourlyUsageAttributionUsageType.CSPM_CONTAINERS_USAGE = HourlyUsageAttributionUsageType("cspm_containers_usage")
+HourlyUsageAttributionUsageType.CSPM_HOSTS_USAGE = HourlyUsageAttributionUsageType("cspm_hosts_usage")
+HourlyUsageAttributionUsageType.CUSTOM_EVENT_USAGE = HourlyUsageAttributionUsageType("custom_event_usage")
+HourlyUsageAttributionUsageType.CUSTOM_INGESTED_TIMESERIES_USAGE = HourlyUsageAttributionUsageType("custom_ingested_timeseries_usage")
+HourlyUsageAttributionUsageType.CUSTOM_TIMESERIES_USAGE = HourlyUsageAttributionUsageType("custom_timeseries_usage")
+HourlyUsageAttributionUsageType.CWS_CONTAINERS_USAGE = HourlyUsageAttributionUsageType("cws_containers_usage")
+HourlyUsageAttributionUsageType.CWS_FARGATE_TASK_USAGE = HourlyUsageAttributionUsageType("cws_fargate_task_usage")
+HourlyUsageAttributionUsageType.CWS_HOSTS_USAGE = HourlyUsageAttributionUsageType("cws_hosts_usage")
+HourlyUsageAttributionUsageType.DATA_JOBS_MONITORING_USAGE = HourlyUsageAttributionUsageType("data_jobs_monitoring_usage")
+HourlyUsageAttributionUsageType.DATA_STREAM_MONITORING_USAGE = HourlyUsageAttributionUsageType("data_stream_monitoring_usage")
+HourlyUsageAttributionUsageType.DBM_HOSTS_USAGE = HourlyUsageAttributionUsageType("dbm_hosts_usage")
+HourlyUsageAttributionUsageType.DBM_QUERIES_USAGE = HourlyUsageAttributionUsageType("dbm_queries_usage")
+HourlyUsageAttributionUsageType.ERROR_TRACKING_USAGE = HourlyUsageAttributionUsageType("error_tracking_usage")
+HourlyUsageAttributionUsageType.ERROR_TRACKING_PERCENTAGE = HourlyUsageAttributionUsageType("error_tracking_percentage")
+HourlyUsageAttributionUsageType.ESTIMATED_INDEXED_SPANS_USAGE = HourlyUsageAttributionUsageType("estimated_indexed_spans_usage")
+HourlyUsageAttributionUsageType.ESTIMATED_INGESTED_SPANS_USAGE = HourlyUsageAttributionUsageType("estimated_ingested_spans_usage")
+HourlyUsageAttributionUsageType.FARGATE_USAGE = HourlyUsageAttributionUsageType("fargate_usage")
+HourlyUsageAttributionUsageType.FLEX_LOGS_STARTER = HourlyUsageAttributionUsageType("flex_logs_starter")
+HourlyUsageAttributionUsageType.FLEX_STORED_LOGS = HourlyUsageAttributionUsageType("flex_stored_logs")
+HourlyUsageAttributionUsageType.FUNCTIONS_USAGE = HourlyUsageAttributionUsageType("functions_usage")
+HourlyUsageAttributionUsageType.INCIDENT_MANAGEMENT_MONTHLY_ACTIVE_USERS_USAGE = HourlyUsageAttributionUsageType("incident_management_monthly_active_users_usage")
+HourlyUsageAttributionUsageType.INDEXED_SPANS_USAGE = HourlyUsageAttributionUsageType("indexed_spans_usage")
+HourlyUsageAttributionUsageType.INFRA_HOST_USAGE = HourlyUsageAttributionUsageType("infra_host_usage")
+HourlyUsageAttributionUsageType.INFRA_HOST_BASIC_USAGE = HourlyUsageAttributionUsageType("infra_host_basic_usage")
+HourlyUsageAttributionUsageType.INGESTED_LOGS_BYTES_USAGE = HourlyUsageAttributionUsageType("ingested_logs_bytes_usage")
+HourlyUsageAttributionUsageType.INGESTED_SPANS_BYTES_USAGE = HourlyUsageAttributionUsageType("ingested_spans_bytes_usage")
+HourlyUsageAttributionUsageType.INVOCATIONS_USAGE = HourlyUsageAttributionUsageType("invocations_usage")
+HourlyUsageAttributionUsageType.LAMBDA_TRACED_INVOCATIONS_USAGE = HourlyUsageAttributionUsageType("lambda_traced_invocations_usage")
+HourlyUsageAttributionUsageType.LLM_OBSERVABILITY_USAGE = HourlyUsageAttributionUsageType("llm_observability_usage")
+HourlyUsageAttributionUsageType.LLM_SPANS_USAGE = HourlyUsageAttributionUsageType("llm_spans_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_15DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_15day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_180DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_180day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_1DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_1day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_30DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_30day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_360DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_360day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_3DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_3day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_45DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_45day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_60DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_60day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_7DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_7day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_90DAY_USAGE = HourlyUsageAttributionUsageType("logs_indexed_90day_usage")
+HourlyUsageAttributionUsageType.LOGS_INDEXED_CUSTOM_RETENTION_USAGE = HourlyUsageAttributionUsageType("logs_indexed_custom_retention_usage")
+HourlyUsageAttributionUsageType.MOBILE_APP_TESTING_USAGE = HourlyUsageAttributionUsageType("mobile_app_testing_usage")
+HourlyUsageAttributionUsageType.NDM_NETFLOW_USAGE = HourlyUsageAttributionUsageType("ndm_netflow_usage")
+HourlyUsageAttributionUsageType.NETWORK_DEVICE_WIRELESS_USAGE = HourlyUsageAttributionUsageType("npm_host_usage")
+HourlyUsageAttributionUsageType.NPM_HOST_USAGE = HourlyUsageAttributionUsageType("network_device_wireless_usage")
+HourlyUsageAttributionUsageType.OBS_PIPELINE_BYTES_USAGE = HourlyUsageAttributionUsageType("obs_pipeline_bytes_usage")
+HourlyUsageAttributionUsageType.OBS_PIPELINE_VCPU_USAGE = HourlyUsageAttributionUsageType("obs_pipelines_vcpu_usage")
+HourlyUsageAttributionUsageType.ONLINE_ARCHIVE_USAGE = HourlyUsageAttributionUsageType("online_archive_usage")
+HourlyUsageAttributionUsageType.PRODUCT_ANALYTICS_SESSION_USAGE = HourlyUsageAttributionUsageType("product_analytics_session_usage")
+HourlyUsageAttributionUsageType.PROFILED_CONTAINER_USAGE = HourlyUsageAttributionUsageType("profiled_container_usage")
+HourlyUsageAttributionUsageType.PROFILED_FARGATE_USAGE = HourlyUsageAttributionUsageType("profiled_fargate_usage")
+HourlyUsageAttributionUsageType.PROFILED_HOST_USAGE = HourlyUsageAttributionUsageType("profiled_host_usage")
+HourlyUsageAttributionUsageType.PUBLISHED_APP_USAGE = HourlyUsageAttributionUsageType("published_app")
+HourlyUsageAttributionUsageType.RUM_BROWSER_MOBILE_SESSIONS_USAGE = HourlyUsageAttributionUsageType("rum_browser_mobile_sessions_usage")
+HourlyUsageAttributionUsageType.RUM_INGESTED_USAGE = HourlyUsageAttributionUsageType("rum_ingested_usage")
+HourlyUsageAttributionUsageType.RUM_INVESTIGATE_USAGE = HourlyUsageAttributionUsageType("rum_investigate_usage")
+HourlyUsageAttributionUsageType.RUM_REPLAY_SESSIONS_USAGE = HourlyUsageAttributionUsageType("rum_replay_sessions_usage")
+HourlyUsageAttributionUsageType.RUM_SESSION_REPLAY_ADD_ON_USAGE = HourlyUsageAttributionUsageType("rum_session_replay_add_on_usage")
+HourlyUsageAttributionUsageType.SCA_FARGATE_USAGE = HourlyUsageAttributionUsageType("sca_fargate_usage")
+HourlyUsageAttributionUsageType.SDS_SCANNED_BYTES_USAGE = HourlyUsageAttributionUsageType("sds_scanned_bytes_usage")
+HourlyUsageAttributionUsageType.SERVERLESS_APPS_USAGE = HourlyUsageAttributionUsageType("serverless_apps_usage")
+HourlyUsageAttributionUsageType.SERVERLESS_APPS_APM_USAGE = HourlyUsageAttributionUsageType("serverless_apps_apm_usage")
+HourlyUsageAttributionUsageType.SIEM_12MO_RETENTION_USAGE = HourlyUsageAttributionUsageType("siem_12mo_retention_usage")
+HourlyUsageAttributionUsageType.SIEM_6MO_RETENTION_USAGE = HourlyUsageAttributionUsageType("siem_6mo_retention_usage")
+HourlyUsageAttributionUsageType.SIEM_ANALYZED_LOGS_ADD_ON_USAGE = HourlyUsageAttributionUsageType("siem_analyzed_logs_add_on_usage")
+HourlyUsageAttributionUsageType.SIEM_INGESTED_BYTES_USAGE = HourlyUsageAttributionUsageType("siem_ingested_bytes_usage")
+HourlyUsageAttributionUsageType.SNMP_USAGE = HourlyUsageAttributionUsageType("snmp_usage")
+HourlyUsageAttributionUsageType.UNIVERSAL_SERVICE_MONITORING_USAGE = HourlyUsageAttributionUsageType("universal_service_monitoring_usage")
+HourlyUsageAttributionUsageType.VULN_MANAGEMENT_HOSTS_USAGE = HourlyUsageAttributionUsageType("vuln_management_hosts_usage")
+HourlyUsageAttributionUsageType.WORKFLOW_EXECUTIONS_USAGE = HourlyUsageAttributionUsageType("workflow_executions_usage")
diff --git a/datadog_api_client/v1/model/http_log.py b/datadog_api_client/v1/model/http_log.py
new file mode 100644
index 0000000000..99de1d9fe5
--- /dev/null
+++ b/datadog_api_client/v1/model/http_log.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HTTPLog(ModelSimple):
+ """
+ Structured log message.
+
+
+ :type value: [HTTPLogItem]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.http_log_item import HTTPLogItem
+ return {
+ "value": ([HTTPLogItem],),
+ }
diff --git a/datadog_api_client/v1/model/http_log_error.py b/datadog_api_client/v1/model/http_log_error.py
new file mode 100644
index 0000000000..c13e26c290
--- /dev/null
+++ b/datadog_api_client/v1/model/http_log_error.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HTTPLogError(ModelNormal):
+ validations = {
+ "code": {
+ "inclusive_maximum": 2147483647,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "code": (int,),
+ "message": (str,),
+ }
+ attribute_map = {
+ "code": "code",
+ "message": "message",
+ }
+
+ def __init__(self_, code: int, message: str, **kwargs):
+ """
+ Invalid query performed.
+
+ :param code: Error code.
+ :type code: int
+
+ :param message: Error message.
+ :type message: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.code = code
+ self_.message = message
diff --git a/datadog_api_client/v1/model/http_log_item.py b/datadog_api_client/v1/model/http_log_item.py
new file mode 100644
index 0000000000..d42939a404
--- /dev/null
+++ b/datadog_api_client/v1/model/http_log_item.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class HTTPLogItem(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return (str,)
+ @cached_property
+ def openapi_types(_):
+ return {
+ "ddsource": (str,),
+ "ddtags": (str,),
+ "hostname": (str,),
+ "message": (str,),
+ "service": (str,),
+ }
+ attribute_map = {
+ "ddsource": "ddsource",
+ "ddtags": "ddtags",
+ "hostname": "hostname",
+ "message": "message",
+ "service": "service",
+ }
+
+ def __init__(self_, message: str, ddsource: Union[str, UnsetType]=unset, ddtags: Union[str, UnsetType]=unset, hostname: Union[str, UnsetType]=unset, service: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Logs that are sent over HTTP.
+
+ :param ddsource: The integration name associated with your log: the technology from which the log originated.
+ When it matches an integration name, Datadog automatically installs the corresponding parsers and facets.
+ See `reserved attributes `_.
+ :type ddsource: str, optional
+
+ :param ddtags: Tags associated with your logs.
+ :type ddtags: str, optional
+
+ :param hostname: The name of the originating host of the log.
+ :type hostname: str, optional
+
+ :param message: The message `reserved attribute `_
+ of your log. By default, Datadog ingests the value of the message attribute as the body of the log entry.
+ That value is then highlighted and displayed in the Logstream, where it is indexed for full text search.
+ :type message: str
+
+ :param service: The name of the application or service generating the log events.
+ It is used to switch from Logs to APM, so make sure you define the same value when you use both products.
+ See `reserved attributes `_.
+ :type service: str, optional
+ """
+ if ddsource is not unset:
+ kwargs["ddsource"] = ddsource
+ if ddtags is not unset:
+ kwargs["ddtags"] = ddtags
+ if hostname is not unset:
+ kwargs["hostname"] = hostname
+ if service is not unset:
+ kwargs["service"] = service
+ super().__init__(kwargs)
+
+
+ self_.message = message
diff --git a/datadog_api_client/v1/model/i_frame_widget_definition.py b/datadog_api_client/v1/model/i_frame_widget_definition.py
new file mode 100644
index 0000000000..b237adbb29
--- /dev/null
+++ b/datadog_api_client/v1/model/i_frame_widget_definition.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.i_frame_widget_definition_type import IFrameWidgetDefinitionType
+
+class IFrameWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.i_frame_widget_definition_type import IFrameWidgetDefinitionType
+ return {
+ "type": (IFrameWidgetDefinitionType,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ "url": "url",
+ }
+
+ def __init__(self_, type: IFrameWidgetDefinitionType, url: str, **kwargs):
+ """
+ The iframe widget allows you to embed a portion of any other web page on your dashboard.
+
+ :param type: Type of the iframe widget.
+ :type type: IFrameWidgetDefinitionType
+
+ :param url: URL of the iframe.
+ :type url: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.url = url
diff --git a/datadog_api_client/v1/model/i_frame_widget_definition_type.py b/datadog_api_client/v1/model/i_frame_widget_definition_type.py
new file mode 100644
index 0000000000..30fc513e9d
--- /dev/null
+++ b/datadog_api_client/v1/model/i_frame_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class IFrameWidgetDefinitionType(ModelSimple):
+ """
+ Type of the iframe widget.
+
+ :param value: If omitted defaults to "iframe". Must be one of ["iframe"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "iframe",
+ }
+ IFRAME: ClassVar["IFrameWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+IFrameWidgetDefinitionType.IFRAME = IFrameWidgetDefinitionType("iframe")
diff --git a/datadog_api_client/v1/model/idp_form_data.py b/datadog_api_client/v1/model/idp_form_data.py
new file mode 100644
index 0000000000..b41207ad05
--- /dev/null
+++ b/datadog_api_client/v1/model/idp_form_data.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IdpFormData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "idp_file": (file_type,),
+ }
+ attribute_map = {
+ "idp_file": "idp_file",
+ }
+
+ def __init__(self_, idp_file: file_type, **kwargs):
+ """
+ Object describing the IdP configuration.
+
+ :param idp_file: The path to the XML metadata file you wish to upload.
+ :type idp_file: file_type
+ """
+ super().__init__(kwargs)
+
+
+ self_.idp_file = idp_file
diff --git a/datadog_api_client/v1/model/idp_response.py b/datadog_api_client/v1/model/idp_response.py
new file mode 100644
index 0000000000..5015a67d43
--- /dev/null
+++ b/datadog_api_client/v1/model/idp_response.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IdpResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "message": (str,),
+ }
+ attribute_map = {
+ "message": "message",
+ }
+
+ def __init__(self_, message: str, **kwargs):
+ """
+ The IdP response object.
+
+ :param message: Identity provider response.
+ :type message: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.message = message
diff --git a/datadog_api_client/v1/model/image_widget_definition.py b/datadog_api_client/v1/model/image_widget_definition.py
new file mode 100644
index 0000000000..4f37a61f3c
--- /dev/null
+++ b/datadog_api_client/v1/model/image_widget_definition.py
@@ -0,0 +1,113 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_horizontal_align import WidgetHorizontalAlign
+ from datadog_api_client.v1.model.widget_margin import WidgetMargin
+ from datadog_api_client.v1.model.widget_image_sizing import WidgetImageSizing
+ from datadog_api_client.v1.model.image_widget_definition_type import ImageWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_vertical_align import WidgetVerticalAlign
+
+class ImageWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_horizontal_align import WidgetHorizontalAlign
+ from datadog_api_client.v1.model.widget_margin import WidgetMargin
+ from datadog_api_client.v1.model.widget_image_sizing import WidgetImageSizing
+ from datadog_api_client.v1.model.image_widget_definition_type import ImageWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_vertical_align import WidgetVerticalAlign
+ return {
+ "has_background": (bool,),
+ "has_border": (bool,),
+ "horizontal_align": (WidgetHorizontalAlign,),
+ "margin": (WidgetMargin,),
+ "sizing": (WidgetImageSizing,),
+ "type": (ImageWidgetDefinitionType,),
+ "url": (str,),
+ "url_dark_theme": (str,),
+ "vertical_align": (WidgetVerticalAlign,),
+ }
+ attribute_map = {
+ "has_background": "has_background",
+ "has_border": "has_border",
+ "horizontal_align": "horizontal_align",
+ "margin": "margin",
+ "sizing": "sizing",
+ "type": "type",
+ "url": "url",
+ "url_dark_theme": "url_dark_theme",
+ "vertical_align": "vertical_align",
+ }
+
+ def __init__(self_, type: ImageWidgetDefinitionType, url: str, has_background: Union[bool, UnsetType]=unset, has_border: Union[bool, UnsetType]=unset, horizontal_align: Union[WidgetHorizontalAlign, UnsetType]=unset, margin: Union[WidgetMargin, UnsetType]=unset, sizing: Union[WidgetImageSizing, UnsetType]=unset, url_dark_theme: Union[str, UnsetType]=unset, vertical_align: Union[WidgetVerticalAlign, UnsetType]=unset, **kwargs):
+ """
+ The image widget allows you to embed an image on your dashboard. An image can be a PNG, JPG, or animated GIF.
+
+ :param has_background: Whether to display a background or not.
+ :type has_background: bool, optional
+
+ :param has_border: Whether to display a border or not.
+ :type has_border: bool, optional
+
+ :param horizontal_align: Horizontal alignment.
+ :type horizontal_align: WidgetHorizontalAlign, optional
+
+ :param margin: Size of the margins around the image.
+ **Note** : ``small`` and ``large`` values are deprecated.
+ :type margin: WidgetMargin, optional
+
+ :param sizing: How to size the image on the widget. The values are based on the image ``object-fit`` CSS properties.
+ **Note** : ``zoom`` , ``fit`` and ``center`` values are deprecated.
+ :type sizing: WidgetImageSizing, optional
+
+ :param type: Type of the image widget.
+ :type type: ImageWidgetDefinitionType
+
+ :param url: URL of the image.
+ :type url: str
+
+ :param url_dark_theme: URL of the image in dark mode.
+ :type url_dark_theme: str, optional
+
+ :param vertical_align: Vertical alignment.
+ :type vertical_align: WidgetVerticalAlign, optional
+ """
+ if has_background is not unset:
+ kwargs["has_background"] = has_background
+ if has_border is not unset:
+ kwargs["has_border"] = has_border
+ if horizontal_align is not unset:
+ kwargs["horizontal_align"] = horizontal_align
+ if margin is not unset:
+ kwargs["margin"] = margin
+ if sizing is not unset:
+ kwargs["sizing"] = sizing
+ if url_dark_theme is not unset:
+ kwargs["url_dark_theme"] = url_dark_theme
+ if vertical_align is not unset:
+ kwargs["vertical_align"] = vertical_align
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.url = url
diff --git a/datadog_api_client/v1/model/image_widget_definition_type.py b/datadog_api_client/v1/model/image_widget_definition_type.py
new file mode 100644
index 0000000000..618c79c0fb
--- /dev/null
+++ b/datadog_api_client/v1/model/image_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ImageWidgetDefinitionType(ModelSimple):
+ """
+ Type of the image widget.
+
+ :param value: If omitted defaults to "image". Must be one of ["image"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "image",
+ }
+ IMAGE: ClassVar["ImageWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ImageWidgetDefinitionType.IMAGE = ImageWidgetDefinitionType("image")
diff --git a/datadog_api_client/v1/model/intake_payload_accepted.py b/datadog_api_client/v1/model/intake_payload_accepted.py
new file mode 100644
index 0000000000..60fcac7c91
--- /dev/null
+++ b/datadog_api_client/v1/model/intake_payload_accepted.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IntakePayloadAccepted(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "status": (str,),
+ }
+ attribute_map = {
+ "status": "status",
+ }
+
+ def __init__(self_, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The payload accepted for intake.
+
+ :param status: The status of the intake payload.
+ :type status: str, optional
+ """
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_agents.py b/datadog_api_client/v1/model/ip_prefixes_agents.py
new file mode 100644
index 0000000000..3c886f3c22
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_agents.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesAgents(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Agent endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_api.py b/datadog_api_client/v1/model/ip_prefixes_api.py
new file mode 100644
index 0000000000..e1948426f0
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_api.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesAPI(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the API endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_apm.py b/datadog_api_client/v1/model/ip_prefixes_apm.py
new file mode 100644
index 0000000000..24e9f70fc4
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_apm.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesAPM(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the APM endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_global.py b/datadog_api_client/v1/model/ip_prefixes_global.py
new file mode 100644
index 0000000000..136085cc3f
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_global.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesGlobal(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for all Datadog endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_logs.py b/datadog_api_client/v1/model/ip_prefixes_logs.py
new file mode 100644
index 0000000000..778f412be3
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_logs.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesLogs(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Logs endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_orchestrator.py b/datadog_api_client/v1/model/ip_prefixes_orchestrator.py
new file mode 100644
index 0000000000..dc3b0562e3
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_orchestrator.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesOrchestrator(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Orchestrator endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_process.py b/datadog_api_client/v1/model/ip_prefixes_process.py
new file mode 100644
index 0000000000..fcfec4bdce
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_process.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesProcess(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Process endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_remote_configuration.py b/datadog_api_client/v1/model/ip_prefixes_remote_configuration.py
new file mode 100644
index 0000000000..64aea90a7b
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_remote_configuration.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesRemoteConfiguration(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Remote Configuration endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_synthetics.py b/datadog_api_client/v1/model/ip_prefixes_synthetics.py
new file mode 100644
index 0000000000..de66ecff8e
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_synthetics.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesSynthetics(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv4_by_location": ({str: ([str],)},),
+ "prefixes_ipv6": ([str],),
+ "prefixes_ipv6_by_location": ({str: ([str],)},),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv4_by_location": "prefixes_ipv4_by_location",
+ "prefixes_ipv6": "prefixes_ipv6",
+ "prefixes_ipv6_by_location": "prefixes_ipv6_by_location",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv4_by_location: Union[Dict[str, List[str]], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, prefixes_ipv6_by_location: Union[Dict[str, List[str]], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Synthetics endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv4_by_location: List of IPv4 prefixes by location.
+ :type prefixes_ipv4_by_location: {str: ([str],)}, optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+
+ :param prefixes_ipv6_by_location: List of IPv6 prefixes by location.
+ :type prefixes_ipv6_by_location: {str: ([str],)}, optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv4_by_location is not unset:
+ kwargs["prefixes_ipv4_by_location"] = prefixes_ipv4_by_location
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ if prefixes_ipv6_by_location is not unset:
+ kwargs["prefixes_ipv6_by_location"] = prefixes_ipv6_by_location
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_synthetics_private_locations.py b/datadog_api_client/v1/model/ip_prefixes_synthetics_private_locations.py
new file mode 100644
index 0000000000..2de406b24a
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_synthetics_private_locations.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesSyntheticsPrivateLocations(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Synthetics Private Locations endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_prefixes_webhooks.py b/datadog_api_client/v1/model/ip_prefixes_webhooks.py
new file mode 100644
index 0000000000..4d198342b2
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_prefixes_webhooks.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class IPPrefixesWebhooks(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "prefixes_ipv4": ([str],),
+ "prefixes_ipv6": ([str],),
+ }
+ attribute_map = {
+ "prefixes_ipv4": "prefixes_ipv4",
+ "prefixes_ipv6": "prefixes_ipv6",
+ }
+
+ def __init__(self_, prefixes_ipv4: Union[List[str], UnsetType]=unset, prefixes_ipv6: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Available prefix information for the Webhook endpoints.
+
+ :param prefixes_ipv4: List of IPv4 prefixes.
+ :type prefixes_ipv4: [str], optional
+
+ :param prefixes_ipv6: List of IPv6 prefixes.
+ :type prefixes_ipv6: [str], optional
+ """
+ if prefixes_ipv4 is not unset:
+ kwargs["prefixes_ipv4"] = prefixes_ipv4
+ if prefixes_ipv6 is not unset:
+ kwargs["prefixes_ipv6"] = prefixes_ipv6
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/ip_ranges.py b/datadog_api_client/v1/model/ip_ranges.py
new file mode 100644
index 0000000000..f6752b8b18
--- /dev/null
+++ b/datadog_api_client/v1/model/ip_ranges.py
@@ -0,0 +1,153 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.ip_prefixes_agents import IPPrefixesAgents
+ from datadog_api_client.v1.model.ip_prefixes_api import IPPrefixesAPI
+ from datadog_api_client.v1.model.ip_prefixes_apm import IPPrefixesAPM
+ from datadog_api_client.v1.model.ip_prefixes_global import IPPrefixesGlobal
+ from datadog_api_client.v1.model.ip_prefixes_logs import IPPrefixesLogs
+ from datadog_api_client.v1.model.ip_prefixes_orchestrator import IPPrefixesOrchestrator
+ from datadog_api_client.v1.model.ip_prefixes_process import IPPrefixesProcess
+ from datadog_api_client.v1.model.ip_prefixes_remote_configuration import IPPrefixesRemoteConfiguration
+ from datadog_api_client.v1.model.ip_prefixes_synthetics import IPPrefixesSynthetics
+ from datadog_api_client.v1.model.ip_prefixes_synthetics_private_locations import IPPrefixesSyntheticsPrivateLocations
+ from datadog_api_client.v1.model.ip_prefixes_webhooks import IPPrefixesWebhooks
+
+class IPRanges(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.ip_prefixes_agents import IPPrefixesAgents
+ from datadog_api_client.v1.model.ip_prefixes_api import IPPrefixesAPI
+ from datadog_api_client.v1.model.ip_prefixes_apm import IPPrefixesAPM
+ from datadog_api_client.v1.model.ip_prefixes_global import IPPrefixesGlobal
+ from datadog_api_client.v1.model.ip_prefixes_logs import IPPrefixesLogs
+ from datadog_api_client.v1.model.ip_prefixes_orchestrator import IPPrefixesOrchestrator
+ from datadog_api_client.v1.model.ip_prefixes_process import IPPrefixesProcess
+ from datadog_api_client.v1.model.ip_prefixes_remote_configuration import IPPrefixesRemoteConfiguration
+ from datadog_api_client.v1.model.ip_prefixes_synthetics import IPPrefixesSynthetics
+ from datadog_api_client.v1.model.ip_prefixes_synthetics_private_locations import IPPrefixesSyntheticsPrivateLocations
+ from datadog_api_client.v1.model.ip_prefixes_webhooks import IPPrefixesWebhooks
+ return {
+ "agents": (IPPrefixesAgents,),
+ "api": (IPPrefixesAPI,),
+ "apm": (IPPrefixesAPM,),
+ "_global": (IPPrefixesGlobal,),
+ "logs": (IPPrefixesLogs,),
+ "modified": (str,),
+ "orchestrator": (IPPrefixesOrchestrator,),
+ "process": (IPPrefixesProcess,),
+ "remote_configuration": (IPPrefixesRemoteConfiguration,),
+ "synthetics": (IPPrefixesSynthetics,),
+ "synthetics_private_locations": (IPPrefixesSyntheticsPrivateLocations,),
+ "version": (int,),
+ "webhooks": (IPPrefixesWebhooks,),
+ }
+ attribute_map = {
+ "agents": "agents",
+ "api": "api",
+ "apm": "apm",
+ "_global": "global",
+ "logs": "logs",
+ "modified": "modified",
+ "orchestrator": "orchestrator",
+ "process": "process",
+ "remote_configuration": "remote-configuration",
+ "synthetics": "synthetics",
+ "synthetics_private_locations": "synthetics-private-locations",
+ "version": "version",
+ "webhooks": "webhooks",
+ }
+
+ def __init__(self_, agents: Union[IPPrefixesAgents, UnsetType]=unset, api: Union[IPPrefixesAPI, UnsetType]=unset, apm: Union[IPPrefixesAPM, UnsetType]=unset, _global: Union[IPPrefixesGlobal, UnsetType]=unset, logs: Union[IPPrefixesLogs, UnsetType]=unset, modified: Union[str, UnsetType]=unset, orchestrator: Union[IPPrefixesOrchestrator, UnsetType]=unset, process: Union[IPPrefixesProcess, UnsetType]=unset, remote_configuration: Union[IPPrefixesRemoteConfiguration, UnsetType]=unset, synthetics: Union[IPPrefixesSynthetics, UnsetType]=unset, synthetics_private_locations: Union[IPPrefixesSyntheticsPrivateLocations, UnsetType]=unset, version: Union[int, UnsetType]=unset, webhooks: Union[IPPrefixesWebhooks, UnsetType]=unset, **kwargs):
+ """
+ IP ranges.
+
+ :param agents: Available prefix information for the Agent endpoints.
+ :type agents: IPPrefixesAgents, optional
+
+ :param api: Available prefix information for the API endpoints.
+ :type api: IPPrefixesAPI, optional
+
+ :param apm: Available prefix information for the APM endpoints.
+ :type apm: IPPrefixesAPM, optional
+
+ :param _global: Available prefix information for all Datadog endpoints.
+ :type _global: IPPrefixesGlobal, optional
+
+ :param logs: Available prefix information for the Logs endpoints.
+ :type logs: IPPrefixesLogs, optional
+
+ :param modified: Date when last updated, in the form ``YYYY-MM-DD-hh-mm-ss``.
+ :type modified: str, optional
+
+ :param orchestrator: Available prefix information for the Orchestrator endpoints.
+ :type orchestrator: IPPrefixesOrchestrator, optional
+
+ :param process: Available prefix information for the Process endpoints.
+ :type process: IPPrefixesProcess, optional
+
+ :param remote_configuration: Available prefix information for the Remote Configuration endpoints.
+ :type remote_configuration: IPPrefixesRemoteConfiguration, optional
+
+ :param synthetics: Available prefix information for the Synthetics endpoints.
+ :type synthetics: IPPrefixesSynthetics, optional
+
+ :param synthetics_private_locations: Available prefix information for the Synthetics Private Locations endpoints.
+ :type synthetics_private_locations: IPPrefixesSyntheticsPrivateLocations, optional
+
+ :param version: Version of the IP list.
+ :type version: int, optional
+
+ :param webhooks: Available prefix information for the Webhook endpoints.
+ :type webhooks: IPPrefixesWebhooks, optional
+ """
+ if agents is not unset:
+ kwargs["agents"] = agents
+ if api is not unset:
+ kwargs["api"] = api
+ if apm is not unset:
+ kwargs["apm"] = apm
+ if _global is not unset:
+ kwargs["_global"] = _global
+ if logs is not unset:
+ kwargs["logs"] = logs
+ if modified is not unset:
+ kwargs["modified"] = modified
+ if orchestrator is not unset:
+ kwargs["orchestrator"] = orchestrator
+ if process is not unset:
+ kwargs["process"] = process
+ if remote_configuration is not unset:
+ kwargs["remote_configuration"] = remote_configuration
+ if synthetics is not unset:
+ kwargs["synthetics"] = synthetics
+ if synthetics_private_locations is not unset:
+ kwargs["synthetics_private_locations"] = synthetics_private_locations
+ if version is not unset:
+ kwargs["version"] = version
+ if webhooks is not unset:
+ kwargs["webhooks"] = webhooks
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/list_stream_column.py b/datadog_api_client/v1/model/list_stream_column.py
new file mode 100644
index 0000000000..36d19e57c6
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_column.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.list_stream_column_width import ListStreamColumnWidth
+
+class ListStreamColumn(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.list_stream_column_width import ListStreamColumnWidth
+ return {
+ "field": (str,),
+ "width": (ListStreamColumnWidth,),
+ }
+ attribute_map = {
+ "field": "field",
+ "width": "width",
+ }
+
+ def __init__(self_, field: str, width: ListStreamColumnWidth, **kwargs):
+ """
+ Widget column.
+
+ :param field: Widget column field.
+ :type field: str
+
+ :param width: Widget column width.
+ :type width: ListStreamColumnWidth
+ """
+ super().__init__(kwargs)
+
+
+ self_.field = field
+ self_.width = width
diff --git a/datadog_api_client/v1/model/list_stream_column_width.py b/datadog_api_client/v1/model/list_stream_column_width.py
new file mode 100644
index 0000000000..bcdc475352
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_column_width.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamColumnWidth(ModelSimple):
+ """
+ Widget column width.
+
+ :param value: Must be one of ["auto", "compact", "full"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "auto",
+ "compact",
+ "full",
+ }
+ AUTO: ClassVar["ListStreamColumnWidth"]
+ COMPACT: ClassVar["ListStreamColumnWidth"]
+ FULL: ClassVar["ListStreamColumnWidth"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamColumnWidth.AUTO = ListStreamColumnWidth("auto")
+ListStreamColumnWidth.COMPACT = ListStreamColumnWidth("compact")
+ListStreamColumnWidth.FULL = ListStreamColumnWidth("full")
diff --git a/datadog_api_client/v1/model/list_stream_compute_aggregation.py b/datadog_api_client/v1/model/list_stream_compute_aggregation.py
new file mode 100644
index 0000000000..32f09dbc11
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_compute_aggregation.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamComputeAggregation(ModelSimple):
+ """
+ Aggregation value.
+
+ :param value: Must be one of ["count", "cardinality", "median", "pc75", "pc90", "pc95", "pc98", "pc99", "sum", "min", "max", "avg", "earliest", "latest", "most_frequent"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "count",
+ "cardinality",
+ "median",
+ "pc75",
+ "pc90",
+ "pc95",
+ "pc98",
+ "pc99",
+ "sum",
+ "min",
+ "max",
+ "avg",
+ "earliest",
+ "latest",
+ "most_frequent",
+ }
+ COUNT: ClassVar["ListStreamComputeAggregation"]
+ CARDINALITY: ClassVar["ListStreamComputeAggregation"]
+ MEDIAN: ClassVar["ListStreamComputeAggregation"]
+ PC75: ClassVar["ListStreamComputeAggregation"]
+ PC90: ClassVar["ListStreamComputeAggregation"]
+ PC95: ClassVar["ListStreamComputeAggregation"]
+ PC98: ClassVar["ListStreamComputeAggregation"]
+ PC99: ClassVar["ListStreamComputeAggregation"]
+ SUM: ClassVar["ListStreamComputeAggregation"]
+ MIN: ClassVar["ListStreamComputeAggregation"]
+ MAX: ClassVar["ListStreamComputeAggregation"]
+ AVG: ClassVar["ListStreamComputeAggregation"]
+ EARLIEST: ClassVar["ListStreamComputeAggregation"]
+ LATEST: ClassVar["ListStreamComputeAggregation"]
+ MOST_FREQUENT: ClassVar["ListStreamComputeAggregation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamComputeAggregation.COUNT = ListStreamComputeAggregation("count")
+ListStreamComputeAggregation.CARDINALITY = ListStreamComputeAggregation("cardinality")
+ListStreamComputeAggregation.MEDIAN = ListStreamComputeAggregation("median")
+ListStreamComputeAggregation.PC75 = ListStreamComputeAggregation("pc75")
+ListStreamComputeAggregation.PC90 = ListStreamComputeAggregation("pc90")
+ListStreamComputeAggregation.PC95 = ListStreamComputeAggregation("pc95")
+ListStreamComputeAggregation.PC98 = ListStreamComputeAggregation("pc98")
+ListStreamComputeAggregation.PC99 = ListStreamComputeAggregation("pc99")
+ListStreamComputeAggregation.SUM = ListStreamComputeAggregation("sum")
+ListStreamComputeAggregation.MIN = ListStreamComputeAggregation("min")
+ListStreamComputeAggregation.MAX = ListStreamComputeAggregation("max")
+ListStreamComputeAggregation.AVG = ListStreamComputeAggregation("avg")
+ListStreamComputeAggregation.EARLIEST = ListStreamComputeAggregation("earliest")
+ListStreamComputeAggregation.LATEST = ListStreamComputeAggregation("latest")
+ListStreamComputeAggregation.MOST_FREQUENT = ListStreamComputeAggregation("most_frequent")
diff --git a/datadog_api_client/v1/model/list_stream_compute_items.py b/datadog_api_client/v1/model/list_stream_compute_items.py
new file mode 100644
index 0000000000..4b780cd464
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_compute_items.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.list_stream_compute_aggregation import ListStreamComputeAggregation
+
+class ListStreamComputeItems(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.list_stream_compute_aggregation import ListStreamComputeAggregation
+ return {
+ "aggregation": (ListStreamComputeAggregation,),
+ "facet": (str,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "facet": "facet",
+ }
+
+ def __init__(self_, aggregation: ListStreamComputeAggregation, facet: Union[str, UnsetType]=unset, **kwargs):
+ """
+ List of facets and aggregations which to compute.
+
+ :param aggregation: Aggregation value.
+ :type aggregation: ListStreamComputeAggregation
+
+ :param facet: Facet name.
+ :type facet: str, optional
+ """
+ if facet is not unset:
+ kwargs["facet"] = facet
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/list_stream_group_by_items.py b/datadog_api_client/v1/model/list_stream_group_by_items.py
new file mode 100644
index 0000000000..b22c8e6f4c
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_group_by_items.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ListStreamGroupByItems(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "facet": (str,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ }
+
+ def __init__(self_, facet: str, **kwargs):
+ """
+ List of facets on which to group.
+
+ :param facet: Facet name.
+ :type facet: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/list_stream_issue_persona.py b/datadog_api_client/v1/model/list_stream_issue_persona.py
new file mode 100644
index 0000000000..9c876d3d38
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_issue_persona.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamIssuePersona(ModelSimple):
+ """
+ Persona filter for the `issue_stream` data source.
+
+ :param value: Must be one of ["all", "browser", "mobile", "backend"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "all",
+ "browser",
+ "mobile",
+ "backend",
+ }
+ ALL: ClassVar["ListStreamIssuePersona"]
+ BROWSER: ClassVar["ListStreamIssuePersona"]
+ MOBILE: ClassVar["ListStreamIssuePersona"]
+ BACKEND: ClassVar["ListStreamIssuePersona"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamIssuePersona.ALL = ListStreamIssuePersona("all")
+ListStreamIssuePersona.BROWSER = ListStreamIssuePersona("browser")
+ListStreamIssuePersona.MOBILE = ListStreamIssuePersona("mobile")
+ListStreamIssuePersona.BACKEND = ListStreamIssuePersona("backend")
diff --git a/datadog_api_client/v1/model/list_stream_issue_state.py b/datadog_api_client/v1/model/list_stream_issue_state.py
new file mode 100644
index 0000000000..53c34a4264
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_issue_state.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamIssueState(ModelSimple):
+ """
+ Issue state filter for the `issue_stream` data source.
+
+ :param value: Must be one of ["OPEN", "IGNORED", "ACKNOWLEDGED", "RESOLVED"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "OPEN",
+ "IGNORED",
+ "ACKNOWLEDGED",
+ "RESOLVED",
+ }
+ OPEN: ClassVar["ListStreamIssueState"]
+ IGNORED: ClassVar["ListStreamIssueState"]
+ ACKNOWLEDGED: ClassVar["ListStreamIssueState"]
+ RESOLVED: ClassVar["ListStreamIssueState"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamIssueState.OPEN = ListStreamIssueState("OPEN")
+ListStreamIssueState.IGNORED = ListStreamIssueState("IGNORED")
+ListStreamIssueState.ACKNOWLEDGED = ListStreamIssueState("ACKNOWLEDGED")
+ListStreamIssueState.RESOLVED = ListStreamIssueState("RESOLVED")
diff --git a/datadog_api_client/v1/model/list_stream_query.py b/datadog_api_client/v1/model/list_stream_query.py
new file mode 100644
index 0000000000..785acd8471
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_query.py
@@ -0,0 +1,169 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.list_stream_compute_items import ListStreamComputeItems
+ from datadog_api_client.v1.model.list_stream_source import ListStreamSource
+ from datadog_api_client.v1.model.widget_event_size import WidgetEventSize
+ from datadog_api_client.v1.model.list_stream_group_by_items import ListStreamGroupByItems
+ from datadog_api_client.v1.model.list_stream_issue_persona import ListStreamIssuePersona
+ from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+ from datadog_api_client.v1.model.list_stream_issue_state import ListStreamIssueState
+ from datadog_api_client.v1.model.list_stream_query_version import ListStreamQueryVersion
+
+class ListStreamQuery(ModelNormal):
+ validations = {
+ "compute": {
+ "max_items": 5,
+ "min_items": 1,
+ },
+ "group_by": {
+ "max_items": 4,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.list_stream_compute_items import ListStreamComputeItems
+ from datadog_api_client.v1.model.list_stream_source import ListStreamSource
+ from datadog_api_client.v1.model.widget_event_size import WidgetEventSize
+ from datadog_api_client.v1.model.list_stream_group_by_items import ListStreamGroupByItems
+ from datadog_api_client.v1.model.list_stream_issue_persona import ListStreamIssuePersona
+ from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+ from datadog_api_client.v1.model.list_stream_issue_state import ListStreamIssueState
+ from datadog_api_client.v1.model.list_stream_query_version import ListStreamQueryVersion
+ return {
+ "assignee_uuids": ([str],),
+ "clustering_pattern_field_path": (str,),
+ "compute": ([ListStreamComputeItems],),
+ "data_source": (ListStreamSource,),
+ "event_size": (WidgetEventSize,),
+ "group_by": ([ListStreamGroupByItems],),
+ "indexes": ([str],),
+ "persona": (ListStreamIssuePersona,),
+ "query_string": (str,),
+ "sort": (WidgetFieldSort,),
+ "states": ([ListStreamIssueState],),
+ "storage": (str,),
+ "suspected_causes": ([str],),
+ "team_handles": ([str],),
+ "version": (ListStreamQueryVersion,),
+ }
+ attribute_map = {
+ "assignee_uuids": "assignee_uuids",
+ "clustering_pattern_field_path": "clustering_pattern_field_path",
+ "compute": "compute",
+ "data_source": "data_source",
+ "event_size": "event_size",
+ "group_by": "group_by",
+ "indexes": "indexes",
+ "persona": "persona",
+ "query_string": "query_string",
+ "sort": "sort",
+ "states": "states",
+ "storage": "storage",
+ "suspected_causes": "suspected_causes",
+ "team_handles": "team_handles",
+ "version": "version",
+ }
+
+ def __init__(self_, data_source: ListStreamSource, query_string: str, assignee_uuids: Union[List[str], UnsetType]=unset, clustering_pattern_field_path: Union[str, UnsetType]=unset, compute: Union[List[ListStreamComputeItems], UnsetType]=unset, event_size: Union[WidgetEventSize, UnsetType]=unset, group_by: Union[List[ListStreamGroupByItems], UnsetType]=unset, indexes: Union[List[str], UnsetType]=unset, persona: Union[ListStreamIssuePersona, UnsetType]=unset, sort: Union[WidgetFieldSort, UnsetType]=unset, states: Union[List[ListStreamIssueState], UnsetType]=unset, storage: Union[str, UnsetType]=unset, suspected_causes: Union[List[str], UnsetType]=unset, team_handles: Union[List[str], UnsetType]=unset, version: Union[ListStreamQueryVersion, UnsetType]=unset, **kwargs):
+ """
+ Updated list stream widget.
+
+ :param assignee_uuids: Filter by assignee UUIDs. Usable only with ``issue_stream``.
+ :type assignee_uuids: [str], optional
+
+ :param clustering_pattern_field_path: Specifies the field for logs pattern clustering. Usable only with logs_pattern_stream.
+ :type clustering_pattern_field_path: str, optional
+
+ :param compute: Compute configuration for the List Stream Widget. Compute can be used only with the logs_transaction_stream (from 1 to 5 items) list stream source.
+ :type compute: [ListStreamComputeItems], optional
+
+ :param data_source: Source from which to query items to display in the stream. apm_issue_stream, rum_issue_stream, and logs_issue_stream are deprecated. Use issue_stream instead.
+ :type data_source: ListStreamSource
+
+ :param event_size: Size to use to display an event.
+ :type event_size: WidgetEventSize, optional
+
+ :param group_by: Group by configuration for the List Stream Widget. Group by can be used only with logs_pattern_stream (up to 4 items) or logs_transaction_stream (one group by item is required) list stream source.
+ :type group_by: [ListStreamGroupByItems], optional
+
+ :param indexes: List of indexes.
+ :type indexes: [str], optional
+
+ :param persona: Persona filter for the ``issue_stream`` data source.
+ :type persona: ListStreamIssuePersona, optional
+
+ :param query_string: Widget query.
+ :type query_string: str
+
+ :param sort: Which column and order to sort by
+ :type sort: WidgetFieldSort, optional
+
+ :param states: Filter by issue states. Usable only with ``issue_stream``.
+ :type states: [ListStreamIssueState], optional
+
+ :param storage: Option for storage location. Feature in Private Beta.
+ :type storage: str, optional
+
+ :param suspected_causes: Filter by suspected causes. Usable only with ``issue_stream``.
+ :type suspected_causes: [str], optional
+
+ :param team_handles: Filter by team handles. Usable only with ``issue_stream``.
+ :type team_handles: [str], optional
+
+ :param version: Version of the query for the logs transaction stream widget. When omitted, v1 query behavior is
+ preserved. Set to ``sequential_query`` to use v2 behavior. **This feature is in Preview.**
+ :type version: ListStreamQueryVersion, optional
+ """
+ if assignee_uuids is not unset:
+ kwargs["assignee_uuids"] = assignee_uuids
+ if clustering_pattern_field_path is not unset:
+ kwargs["clustering_pattern_field_path"] = clustering_pattern_field_path
+ if compute is not unset:
+ kwargs["compute"] = compute
+ if event_size is not unset:
+ kwargs["event_size"] = event_size
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ if persona is not unset:
+ kwargs["persona"] = persona
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if states is not unset:
+ kwargs["states"] = states
+ if storage is not unset:
+ kwargs["storage"] = storage
+ if suspected_causes is not unset:
+ kwargs["suspected_causes"] = suspected_causes
+ if team_handles is not unset:
+ kwargs["team_handles"] = team_handles
+ if version is not unset:
+ kwargs["version"] = version
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.query_string = query_string
diff --git a/datadog_api_client/v1/model/list_stream_query_version.py b/datadog_api_client/v1/model/list_stream_query_version.py
new file mode 100644
index 0000000000..4f62a9ce09
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_query_version.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamQueryVersion(ModelSimple):
+ """
+ Version of the query for the logs transaction stream widget. When omitted, v1 query behavior is
+ preserved. Set to `sequential_query` to use v2 behavior. **This feature is in Preview.**
+
+ :param value: If omitted defaults to "sequential_query". Must be one of ["sequential_query"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "sequential_query",
+ }
+ SEQUENTIAL_QUERY: ClassVar["ListStreamQueryVersion"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamQueryVersion.SEQUENTIAL_QUERY = ListStreamQueryVersion("sequential_query")
diff --git a/datadog_api_client/v1/model/list_stream_response_format.py b/datadog_api_client/v1/model/list_stream_response_format.py
new file mode 100644
index 0000000000..30692db162
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_response_format.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamResponseFormat(ModelSimple):
+ """
+ Widget response format.
+
+ :param value: If omitted defaults to "event_list". Must be one of ["event_list"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "event_list",
+ }
+ EVENT_LIST: ClassVar["ListStreamResponseFormat"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamResponseFormat.EVENT_LIST = ListStreamResponseFormat("event_list")
diff --git a/datadog_api_client/v1/model/list_stream_source.py b/datadog_api_client/v1/model/list_stream_source.py
new file mode 100644
index 0000000000..9cdb99475d
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_source.py
@@ -0,0 +1,93 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamSource(ModelSimple):
+ """
+ Source from which to query items to display in the stream. apm_issue_stream, rum_issue_stream, and logs_issue_stream are deprecated. Use issue_stream instead.
+
+ :param value: If omitted defaults to "logs_stream". Must be one of ["logs_stream", "audit_stream", "ci_pipeline_stream", "ci_test_stream", "rum_issue_stream", "apm_issue_stream", "trace_stream", "logs_issue_stream", "logs_pattern_stream", "logs_transaction_stream", "event_stream", "rum_stream", "llm_observability_stream", "issue_stream", "security_runtime_stream", "security_signals_stream", "incidents_stream"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "logs_stream",
+ "audit_stream",
+ "ci_pipeline_stream",
+ "ci_test_stream",
+ "rum_issue_stream",
+ "apm_issue_stream",
+ "trace_stream",
+ "logs_issue_stream",
+ "logs_pattern_stream",
+ "logs_transaction_stream",
+ "event_stream",
+ "rum_stream",
+ "llm_observability_stream",
+ "issue_stream",
+ "security_runtime_stream",
+ "security_signals_stream",
+ "incidents_stream",
+ }
+ LOGS_STREAM: ClassVar["ListStreamSource"]
+ AUDIT_STREAM: ClassVar["ListStreamSource"]
+ CI_PIPELINE_STREAM: ClassVar["ListStreamSource"]
+ CI_TEST_STREAM: ClassVar["ListStreamSource"]
+ RUM_ISSUE_STREAM: ClassVar["ListStreamSource"]
+ APM_ISSUE_STREAM: ClassVar["ListStreamSource"]
+ TRACE_STREAM: ClassVar["ListStreamSource"]
+ LOGS_ISSUE_STREAM: ClassVar["ListStreamSource"]
+ LOGS_PATTERN_STREAM: ClassVar["ListStreamSource"]
+ LOGS_TRANSACTION_STREAM: ClassVar["ListStreamSource"]
+ EVENT_STREAM: ClassVar["ListStreamSource"]
+ RUM_STREAM: ClassVar["ListStreamSource"]
+ LLM_OBSERVABILITY_STREAM: ClassVar["ListStreamSource"]
+ ISSUE_STREAM: ClassVar["ListStreamSource"]
+ SECURITY_RUNTIME_STREAM: ClassVar["ListStreamSource"]
+ SECURITY_SIGNALS_STREAM: ClassVar["ListStreamSource"]
+ INCIDENTS_STREAM: ClassVar["ListStreamSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamSource.LOGS_STREAM = ListStreamSource("logs_stream")
+ListStreamSource.AUDIT_STREAM = ListStreamSource("audit_stream")
+ListStreamSource.CI_PIPELINE_STREAM = ListStreamSource("ci_pipeline_stream")
+ListStreamSource.CI_TEST_STREAM = ListStreamSource("ci_test_stream")
+ListStreamSource.RUM_ISSUE_STREAM = ListStreamSource("rum_issue_stream")
+ListStreamSource.APM_ISSUE_STREAM = ListStreamSource("apm_issue_stream")
+ListStreamSource.TRACE_STREAM = ListStreamSource("trace_stream")
+ListStreamSource.LOGS_ISSUE_STREAM = ListStreamSource("logs_issue_stream")
+ListStreamSource.LOGS_PATTERN_STREAM = ListStreamSource("logs_pattern_stream")
+ListStreamSource.LOGS_TRANSACTION_STREAM = ListStreamSource("logs_transaction_stream")
+ListStreamSource.EVENT_STREAM = ListStreamSource("event_stream")
+ListStreamSource.RUM_STREAM = ListStreamSource("rum_stream")
+ListStreamSource.LLM_OBSERVABILITY_STREAM = ListStreamSource("llm_observability_stream")
+ListStreamSource.ISSUE_STREAM = ListStreamSource("issue_stream")
+ListStreamSource.SECURITY_RUNTIME_STREAM = ListStreamSource("security_runtime_stream")
+ListStreamSource.SECURITY_SIGNALS_STREAM = ListStreamSource("security_signals_stream")
+ListStreamSource.INCIDENTS_STREAM = ListStreamSource("incidents_stream")
diff --git a/datadog_api_client/v1/model/list_stream_widget_definition.py b/datadog_api_client/v1/model/list_stream_widget_definition.py
new file mode 100644
index 0000000000..210aba0833
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_widget_definition.py
@@ -0,0 +1,119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.list_stream_widget_request import ListStreamWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.list_stream_widget_definition_type import ListStreamWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class ListStreamWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.list_stream_widget_request import ListStreamWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.list_stream_widget_definition_type import ListStreamWidgetDefinitionType
+ return {
+ "description": (str,),
+ "legend_size": (str,),
+ "requests": ([ListStreamWidgetRequest],),
+ "show_legend": (bool,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (ListStreamWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "legend_size": "legend_size",
+ "requests": "requests",
+ "show_legend": "show_legend",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[ListStreamWidgetRequest], type: ListStreamWidgetDefinitionType, description: Union[str, UnsetType]=unset, legend_size: Union[str, UnsetType]=unset, show_legend: Union[bool, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The list stream visualization displays a table of recent events in your application that
+ match a search criteria using user-defined columns.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param legend_size: Available legend sizes for a widget. Should be one of "0", "2", "4", "8", "16", or "auto".
+ :type legend_size: str, optional
+
+ :param requests: Request payload used to query items.
+ :type requests: [ListStreamWidgetRequest]
+
+ :param show_legend: Whether or not to display the legend on this widget.
+ :type show_legend: bool, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the list stream widget.
+ :type type: ListStreamWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if legend_size is not unset:
+ kwargs["legend_size"] = legend_size
+ if show_legend is not unset:
+ kwargs["show_legend"] = show_legend
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/list_stream_widget_definition_type.py b/datadog_api_client/v1/model/list_stream_widget_definition_type.py
new file mode 100644
index 0000000000..fa3cdb53cb
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ListStreamWidgetDefinitionType(ModelSimple):
+ """
+ Type of the list stream widget.
+
+ :param value: If omitted defaults to "list_stream". Must be one of ["list_stream"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "list_stream",
+ }
+ LIST_STREAM: ClassVar["ListStreamWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ListStreamWidgetDefinitionType.LIST_STREAM = ListStreamWidgetDefinitionType("list_stream")
diff --git a/datadog_api_client/v1/model/list_stream_widget_request.py b/datadog_api_client/v1/model/list_stream_widget_request.py
new file mode 100644
index 0000000000..77cec5efe2
--- /dev/null
+++ b/datadog_api_client/v1/model/list_stream_widget_request.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
+ from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
+ from datadog_api_client.v1.model.list_stream_response_format import ListStreamResponseFormat
+
+class ListStreamWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
+ from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
+ from datadog_api_client.v1.model.list_stream_response_format import ListStreamResponseFormat
+ return {
+ "columns": ([ListStreamColumn],),
+ "query": (ListStreamQuery,),
+ "response_format": (ListStreamResponseFormat,),
+ }
+ attribute_map = {
+ "columns": "columns",
+ "query": "query",
+ "response_format": "response_format",
+ }
+
+ def __init__(self_, columns: List[ListStreamColumn], query: ListStreamQuery, response_format: ListStreamResponseFormat, **kwargs):
+ """
+ Updated list stream widget.
+
+ :param columns: Widget columns.
+ :type columns: [ListStreamColumn]
+
+ :param query: Updated list stream widget.
+ :type query: ListStreamQuery
+
+ :param response_format: Widget response format.
+ :type response_format: ListStreamResponseFormat
+ """
+ super().__init__(kwargs)
+
+
+ self_.columns = columns
+ self_.query = query
+ self_.response_format = response_format
diff --git a/datadog_api_client/v1/model/log.py b/datadog_api_client/v1/model/log.py
new file mode 100644
index 0000000000..049d0efc31
--- /dev/null
+++ b/datadog_api_client/v1/model/log.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_content import LogContent
+
+class Log(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_content import LogContent
+ return {
+ "content": (LogContent,),
+ "id": (str,),
+ }
+ attribute_map = {
+ "content": "content",
+ "id": "id",
+ }
+
+ def __init__(self_, content: Union[LogContent, UnsetType]=unset, id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object describing a log after being processed and stored by Datadog.
+
+ :param content: JSON object containing all log attributes and their associated values.
+ :type content: LogContent, optional
+
+ :param id: ID of the Log.
+ :type id: str, optional
+ """
+ if content is not unset:
+ kwargs["content"] = content
+ if id is not unset:
+ kwargs["id"] = id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/log_content.py b/datadog_api_client/v1/model/log_content.py
new file mode 100644
index 0000000000..afd62d44fe
--- /dev/null
+++ b/datadog_api_client/v1/model/log_content.py
@@ -0,0 +1,85 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogContent(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "attributes": ({str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)},),
+ "host": (str,),
+ "message": (str,),
+ "service": (str,),
+ "tags": ([str],),
+ "timestamp": (datetime,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "host": "host",
+ "message": "message",
+ "service": "service",
+ "tags": "tags",
+ "timestamp": "timestamp",
+ }
+
+ def __init__(self_, attributes: Union[Dict[str, Any], UnsetType]=unset, host: Union[str, UnsetType]=unset, message: Union[str, UnsetType]=unset, service: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, timestamp: Union[datetime, UnsetType]=unset, **kwargs):
+ """
+ JSON object containing all log attributes and their associated values.
+
+ :param attributes: JSON object of attributes from your log.
+ :type attributes: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)}, optional
+
+ :param host: Name of the machine from where the logs are being sent.
+ :type host: str, optional
+
+ :param message: The message `reserved attribute `_
+ of your log. By default, Datadog ingests the value of the message attribute as the body of the log entry.
+ That value is then highlighted and displayed in the Logstream, where it is indexed for full text search.
+ :type message: str, optional
+
+ :param service: The name of the application or service generating the log events.
+ It is used to switch from Logs to APM, so make sure you define the same
+ value when you use both products.
+ :type service: str, optional
+
+ :param tags: Array of tags associated with your log.
+ :type tags: [str], optional
+
+ :param timestamp: Timestamp of your log.
+ :type timestamp: datetime, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if host is not unset:
+ kwargs["host"] = host
+ if message is not unset:
+ kwargs["message"] = message
+ if service is not unset:
+ kwargs["service"] = service
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if timestamp is not unset:
+ kwargs["timestamp"] = timestamp
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/log_query_definition.py b/datadog_api_client/v1/model/log_query_definition.py
new file mode 100644
index 0000000000..d5db184400
--- /dev/null
+++ b/datadog_api_client/v1/model/log_query_definition.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_query_compute import LogsQueryCompute
+ from datadog_api_client.v1.model.log_query_definition_group_by import LogQueryDefinitionGroupBy
+ from datadog_api_client.v1.model.log_query_definition_search import LogQueryDefinitionSearch
+
+class LogQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_query_compute import LogsQueryCompute
+ from datadog_api_client.v1.model.log_query_definition_group_by import LogQueryDefinitionGroupBy
+ from datadog_api_client.v1.model.log_query_definition_search import LogQueryDefinitionSearch
+ return {
+ "compute": (LogsQueryCompute,),
+ "group_by": ([LogQueryDefinitionGroupBy],),
+ "index": (str,),
+ "multi_compute": ([LogsQueryCompute],),
+ "search": (LogQueryDefinitionSearch,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "group_by": "group_by",
+ "index": "index",
+ "multi_compute": "multi_compute",
+ "search": "search",
+ }
+
+ def __init__(self_, compute: Union[LogsQueryCompute, UnsetType]=unset, group_by: Union[List[LogQueryDefinitionGroupBy], UnsetType]=unset, index: Union[str, UnsetType]=unset, multi_compute: Union[List[LogsQueryCompute], UnsetType]=unset, search: Union[LogQueryDefinitionSearch, UnsetType]=unset, **kwargs):
+ """
+ The log query.
+
+ :param compute: Define computation for a log query.
+ :type compute: LogsQueryCompute, optional
+
+ :param group_by: List of tag prefixes to group by in the case of a cluster check.
+ :type group_by: [LogQueryDefinitionGroupBy], optional
+
+ :param index: A coma separated-list of index names. Use "*" query all indexes at once. `Multiple Indexes `_
+ :type index: str, optional
+
+ :param multi_compute: This field is mutually exclusive with ``compute``.
+ :type multi_compute: [LogsQueryCompute], optional
+
+ :param search: The query being made on the logs.
+ :type search: LogQueryDefinitionSearch, optional
+ """
+ if compute is not unset:
+ kwargs["compute"] = compute
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if index is not unset:
+ kwargs["index"] = index
+ if multi_compute is not unset:
+ kwargs["multi_compute"] = multi_compute
+ if search is not unset:
+ kwargs["search"] = search
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/log_query_definition_group_by.py b/datadog_api_client/v1/model/log_query_definition_group_by.py
new file mode 100644
index 0000000000..972f91046b
--- /dev/null
+++ b/datadog_api_client/v1/model/log_query_definition_group_by.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition_group_by_sort import LogQueryDefinitionGroupBySort
+
+class LogQueryDefinitionGroupBy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition_group_by_sort import LogQueryDefinitionGroupBySort
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "sort": (LogQueryDefinitionGroupBySort,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "sort": "sort",
+ }
+
+ def __init__(self_, facet: str, limit: Union[int, UnsetType]=unset, sort: Union[LogQueryDefinitionGroupBySort, UnsetType]=unset, **kwargs):
+ """
+ Defined items in the group.
+
+ :param facet: Facet name.
+ :type facet: str
+
+ :param limit: Maximum number of items in the group.
+ :type limit: int, optional
+
+ :param sort: Define a sorting method.
+ :type sort: LogQueryDefinitionGroupBySort, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/log_query_definition_group_by_sort.py b/datadog_api_client/v1/model/log_query_definition_group_by_sort.py
new file mode 100644
index 0000000000..4d2d16f7a4
--- /dev/null
+++ b/datadog_api_client/v1/model/log_query_definition_group_by_sort.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class LogQueryDefinitionGroupBySort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "aggregation": (str,),
+ "facet": (str,),
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "facet": "facet",
+ "order": "order",
+ }
+
+ def __init__(self_, aggregation: str, order: WidgetSort, facet: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Define a sorting method.
+
+ :param aggregation: The aggregation method.
+ :type aggregation: str
+
+ :param facet: Facet name.
+ :type facet: str, optional
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort
+ """
+ if facet is not unset:
+ kwargs["facet"] = facet
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
+ self_.order = order
diff --git a/datadog_api_client/v1/model/log_query_definition_search.py b/datadog_api_client/v1/model/log_query_definition_search.py
new file mode 100644
index 0000000000..1bbb17e023
--- /dev/null
+++ b/datadog_api_client/v1/model/log_query_definition_search.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogQueryDefinitionSearch(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ }
+ attribute_map = {
+ "query": "query",
+ }
+
+ def __init__(self_, query: str, **kwargs):
+ """
+ The query being made on the logs.
+
+ :param query: Search value to apply.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
diff --git a/datadog_api_client/v1/model/log_stream_widget_definition.py b/datadog_api_client/v1/model/log_stream_widget_definition.py
new file mode 100644
index 0000000000..8a7bde1ff1
--- /dev/null
+++ b/datadog_api_client/v1/model/log_stream_widget_definition.py
@@ -0,0 +1,150 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_message_display import WidgetMessageDisplay
+ from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.log_stream_widget_definition_type import LogStreamWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class LogStreamWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_message_display import WidgetMessageDisplay
+ from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.log_stream_widget_definition_type import LogStreamWidgetDefinitionType
+ return {
+ "columns": ([str],),
+ "description": (str,),
+ "indexes": ([str],),
+ "logset": (str,),
+ "message_display": (WidgetMessageDisplay,),
+ "query": (str,),
+ "show_date_column": (bool,),
+ "show_message_column": (bool,),
+ "sort": (WidgetFieldSort,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (LogStreamWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "columns": "columns",
+ "description": "description",
+ "indexes": "indexes",
+ "logset": "logset",
+ "message_display": "message_display",
+ "query": "query",
+ "show_date_column": "show_date_column",
+ "show_message_column": "show_message_column",
+ "sort": "sort",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogStreamWidgetDefinitionType, columns: Union[List[str], UnsetType]=unset, description: Union[str, UnsetType]=unset, indexes: Union[List[str], UnsetType]=unset, logset: Union[str, UnsetType]=unset, message_display: Union[WidgetMessageDisplay, UnsetType]=unset, query: Union[str, UnsetType]=unset, show_date_column: Union[bool, UnsetType]=unset, show_message_column: Union[bool, UnsetType]=unset, sort: Union[WidgetFieldSort, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The Log Stream displays a log flow matching the defined query.
+
+ :param columns: Which columns to display on the widget.
+ :type columns: [str], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param indexes: An array of index names to query in the stream. Use [] to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param logset: ID of the log set to use. **Deprecated**.
+ :type logset: str, optional
+
+ :param message_display: Amount of log lines to display
+ :type message_display: WidgetMessageDisplay, optional
+
+ :param query: Query to filter the log stream with.
+ :type query: str, optional
+
+ :param show_date_column: Whether to show the date column or not
+ :type show_date_column: bool, optional
+
+ :param show_message_column: Whether to show the message column or not
+ :type show_message_column: bool, optional
+
+ :param sort: Which column and order to sort by
+ :type sort: WidgetFieldSort, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the log stream widget.
+ :type type: LogStreamWidgetDefinitionType
+ """
+ if columns is not unset:
+ kwargs["columns"] = columns
+ if description is not unset:
+ kwargs["description"] = description
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ if logset is not unset:
+ kwargs["logset"] = logset
+ if message_display is not unset:
+ kwargs["message_display"] = message_display
+ if query is not unset:
+ kwargs["query"] = query
+ if show_date_column is not unset:
+ kwargs["show_date_column"] = show_date_column
+ if show_message_column is not unset:
+ kwargs["show_message_column"] = show_message_column
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/log_stream_widget_definition_type.py b/datadog_api_client/v1/model/log_stream_widget_definition_type.py
new file mode 100644
index 0000000000..2ae165a0ec
--- /dev/null
+++ b/datadog_api_client/v1/model/log_stream_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogStreamWidgetDefinitionType(ModelSimple):
+ """
+ Type of the log stream widget.
+
+ :param value: If omitted defaults to "log_stream". Must be one of ["log_stream"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "log_stream",
+ }
+ LOG_STREAM: ClassVar["LogStreamWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogStreamWidgetDefinitionType.LOG_STREAM = LogStreamWidgetDefinitionType("log_stream")
diff --git a/datadog_api_client/v1/model/logs_api_error.py b/datadog_api_client/v1/model/logs_api_error.py
new file mode 100644
index 0000000000..ffc5b1a390
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_api_error.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsAPIError(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "code": (str,),
+ "details": ([LogsAPIError],),
+ "message": (str,),
+ }
+ attribute_map = {
+ "code": "code",
+ "details": "details",
+ "message": "message",
+ }
+
+ def __init__(self_, code: Union[str, UnsetType]=unset, details: Union[List[LogsAPIError], UnsetType]=unset, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Error returned by the Logs API
+
+ :param code: Code identifying the error
+ :type code: str, optional
+
+ :param details: Additional error details
+ :type details: [LogsAPIError], optional
+
+ :param message: Error message
+ :type message: str, optional
+ """
+ if code is not unset:
+ kwargs["code"] = code
+ if details is not unset:
+ kwargs["details"] = details
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_api_error_response.py b/datadog_api_client/v1/model/logs_api_error_response.py
new file mode 100644
index 0000000000..df338c47b0
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_api_error_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_api_error import LogsAPIError
+
+class LogsAPIErrorResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_api_error import LogsAPIError
+ return {
+ "error": (LogsAPIError,),
+ }
+ attribute_map = {
+ "error": "error",
+ }
+
+ def __init__(self_, error: Union[LogsAPIError, UnsetType]=unset, **kwargs):
+ """
+ Response returned by the Logs API when errors occur.
+
+ :param error: Error returned by the Logs API
+ :type error: LogsAPIError, optional
+ """
+ if error is not unset:
+ kwargs["error"] = error
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_api_limit_reached_response.py b/datadog_api_client/v1/model/logs_api_limit_reached_response.py
new file mode 100644
index 0000000000..81ac00357d
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_api_limit_reached_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_api_error import LogsAPIError
+
+class LogsAPILimitReachedResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_api_error import LogsAPIError
+ return {
+ "error": (LogsAPIError,),
+ }
+ attribute_map = {
+ "error": "error",
+ }
+
+ def __init__(self_, error: Union[LogsAPIError, UnsetType]=unset, **kwargs):
+ """
+ Response returned by the Logs API when the max limit has been reached.
+
+ :param error: Error returned by the Logs API
+ :type error: LogsAPIError, optional
+ """
+ if error is not unset:
+ kwargs["error"] = error
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_arithmetic_processor.py b/datadog_api_client/v1/model/logs_arithmetic_processor.py
new file mode 100644
index 0000000000..6c82f5800f
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_arithmetic_processor.py
@@ -0,0 +1,102 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_arithmetic_processor_type import LogsArithmeticProcessorType
+
+class LogsArithmeticProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_arithmetic_processor_type import LogsArithmeticProcessorType
+ return {
+ "expression": (str,),
+ "is_enabled": (bool,),
+ "is_replace_missing": (bool,),
+ "name": (str,),
+ "target": (str,),
+ "type": (LogsArithmeticProcessorType,),
+ }
+ attribute_map = {
+ "expression": "expression",
+ "is_enabled": "is_enabled",
+ "is_replace_missing": "is_replace_missing",
+ "name": "name",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, expression: str, target: str, type: LogsArithmeticProcessorType, is_enabled: Union[bool, UnsetType]=unset, is_replace_missing: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use the Arithmetic Processor to add a new attribute (without spaces or special characters
+ in the new attribute name) to a log with the result of the provided formula.
+ This enables you to remap different time attributes with different units into a single attribute,
+ or to compute operations on attributes within the same log.
+
+ The formula can use parentheses and the basic arithmetic operators ``-`` , ``+`` , ``*`` , ``/``.
+
+ By default, the calculation is skipped if an attribute is missing.
+ Select “Replace missing attribute by 0” to automatically populate
+ missing attribute values with 0 to ensure that the calculation is done.
+ An attribute is missing if it is not found in the log attributes,
+ or if it cannot be converted to a number.
+
+ *Notes* :
+
+ * The operator ``-`` needs to be space split in the formula as it can also be contained in attribute names.
+ * If the target attribute already exists, it is overwritten by the result of the formula.
+ * Results are rounded up to the 9th decimal. For example, if the result of the formula is ``0.1234567891`` ,
+ the actual value stored for the attribute is ``0.123456789``.
+ * If you need to scale a unit of measure,
+ see `Scale Filter `_.
+
+ :param expression: Arithmetic operation between one or more log attributes.
+ :type expression: str
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param is_replace_missing: If ``true`` , it replaces all missing attributes of expression by ``0`` , ``false``
+ skip the operation if an attribute is missing.
+ :type is_replace_missing: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param target: Name of the attribute that contains the result of the arithmetic operation.
+ :type target: str
+
+ :param type: Type of logs arithmetic processor.
+ :type type: LogsArithmeticProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if is_replace_missing is not unset:
+ kwargs["is_replace_missing"] = is_replace_missing
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.expression = expression
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_arithmetic_processor_type.py b/datadog_api_client/v1/model/logs_arithmetic_processor_type.py
new file mode 100644
index 0000000000..11cbe7609a
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_arithmetic_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArithmeticProcessorType(ModelSimple):
+ """
+ Type of logs arithmetic processor.
+
+ :param value: If omitted defaults to "arithmetic-processor". Must be one of ["arithmetic-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "arithmetic-processor",
+ }
+ ARITHMETIC_PROCESSOR: ClassVar["LogsArithmeticProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArithmeticProcessorType.ARITHMETIC_PROCESSOR = LogsArithmeticProcessorType("arithmetic-processor")
diff --git a/datadog_api_client/v1/model/logs_array_map_arithmetic_sub_processor.py b/datadog_api_client/v1/model/logs_array_map_arithmetic_sub_processor.py
new file mode 100644
index 0000000000..aee2b46703
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_arithmetic_sub_processor.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_arithmetic_processor_type import LogsArithmeticProcessorType
+
+class LogsArrayMapArithmeticSubProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_arithmetic_processor_type import LogsArithmeticProcessorType
+ return {
+ "expression": (str,),
+ "is_replace_missing": (bool,),
+ "name": (str,),
+ "target": (str,),
+ "type": (LogsArithmeticProcessorType,),
+ }
+ attribute_map = {
+ "expression": "expression",
+ "is_replace_missing": "is_replace_missing",
+ "name": "name",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, expression: str, target: str, type: LogsArithmeticProcessorType, is_replace_missing: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ An arithmetic sub-processor for use inside an array-map processor.
+ Unlike the top-level arithmetic processor, ``is_enabled`` is not supported.
+
+ :param expression: Arithmetic operation to perform.
+ :type expression: str
+
+ :param is_replace_missing: Replace missing attribute values with 0.
+ :type is_replace_missing: bool, optional
+
+ :param name: Name of the sub-processor.
+ :type name: str, optional
+
+ :param target: Target attribute path for the result.
+ :type target: str
+
+ :param type: Type of logs arithmetic processor.
+ :type type: LogsArithmeticProcessorType
+ """
+ if is_replace_missing is not unset:
+ kwargs["is_replace_missing"] = is_replace_missing
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.expression = expression
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_map_attribute_remapper.py b/datadog_api_client/v1/model/logs_array_map_attribute_remapper.py
new file mode 100644
index 0000000000..3d0399bff1
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_attribute_remapper.py
@@ -0,0 +1,94 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.target_format_type import TargetFormatType
+ from datadog_api_client.v1.model.logs_attribute_remapper_type import LogsAttributeRemapperType
+
+class LogsArrayMapAttributeRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.target_format_type import TargetFormatType
+ from datadog_api_client.v1.model.logs_attribute_remapper_type import LogsAttributeRemapperType
+ return {
+ "name": (str,),
+ "override_on_conflict": (bool,),
+ "preserve_source": (bool,),
+ "sources": ([str],),
+ "target": (str,),
+ "target_format": (TargetFormatType,),
+ "type": (LogsAttributeRemapperType,),
+ }
+ attribute_map = {
+ "name": "name",
+ "override_on_conflict": "override_on_conflict",
+ "preserve_source": "preserve_source",
+ "sources": "sources",
+ "target": "target",
+ "target_format": "target_format",
+ "type": "type",
+ }
+
+ def __init__(self_, sources: List[str], target: str, type: LogsAttributeRemapperType, name: Union[str, UnsetType]=unset, override_on_conflict: Union[bool, UnsetType]=unset, preserve_source: Union[bool, UnsetType]=unset, target_format: Union[TargetFormatType, UnsetType]=unset, **kwargs):
+ """
+ An attribute remapper sub-processor for use inside an array-map processor.
+ Unlike the top-level attribute remapper, ``is_enabled`` , ``source_type`` , and
+ ``target_type`` are not supported.
+
+ :param name: Name of the sub-processor.
+ :type name: str, optional
+
+ :param override_on_conflict: Override the target element if already set.
+ :type override_on_conflict: bool, optional
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param sources: Array of source attribute paths.
+ :type sources: [str]
+
+ :param target: Target attribute path.
+ :type target: str
+
+ :param target_format: If the ``target_type`` of the remapper is ``attribute`` , try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. ``string`` , ``integer`` , or ``double`` are the possible types.
+ If the ``target_type`` is ``tag`` , this parameter may not be specified.
+ :type target_format: TargetFormatType, optional
+
+ :param type: Type of logs attribute remapper.
+ :type type: LogsAttributeRemapperType
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if override_on_conflict is not unset:
+ kwargs["override_on_conflict"] = override_on_conflict
+ if preserve_source is not unset:
+ kwargs["preserve_source"] = preserve_source
+ if target_format is not unset:
+ kwargs["target_format"] = target_format
+ super().__init__(kwargs)
+
+
+ self_.sources = sources
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_map_category_sub_processor.py b/datadog_api_client/v1/model/logs_array_map_category_sub_processor.py
new file mode 100644
index 0000000000..74cbc83d3b
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_category_sub_processor.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_category_processor_category import LogsCategoryProcessorCategory
+ from datadog_api_client.v1.model.logs_category_processor_type import LogsCategoryProcessorType
+
+class LogsArrayMapCategorySubProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_category_processor_category import LogsCategoryProcessorCategory
+ from datadog_api_client.v1.model.logs_category_processor_type import LogsCategoryProcessorType
+ return {
+ "categories": ([LogsCategoryProcessorCategory],),
+ "name": (str,),
+ "target": (str,),
+ "type": (LogsCategoryProcessorType,),
+ }
+ attribute_map = {
+ "categories": "categories",
+ "name": "name",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, categories: List[LogsCategoryProcessorCategory], target: str, type: LogsCategoryProcessorType, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A category sub-processor for use inside an array-map processor.
+ Unlike the top-level category processor, ``is_enabled`` is not supported.
+
+ :param categories: Array of filters to match against a log and the corresponding value to assign.
+ :type categories: [LogsCategoryProcessorCategory]
+
+ :param name: Name of the sub-processor.
+ :type name: str, optional
+
+ :param target: Target attribute path for the category value.
+ :type target: str
+
+ :param type: Type of logs category processor.
+ :type type: LogsCategoryProcessorType
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.categories = categories
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_map_processor.py b/datadog_api_client/v1/model/logs_array_map_processor.py
new file mode 100644
index 0000000000..7976645321
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_processor.py
@@ -0,0 +1,103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_array_map_sub_processor import LogsArrayMapSubProcessor
+ from datadog_api_client.v1.model.logs_array_map_processor_type import LogsArrayMapProcessorType
+ from datadog_api_client.v1.model.logs_array_map_attribute_remapper import LogsArrayMapAttributeRemapper
+ from datadog_api_client.v1.model.logs_array_map_arithmetic_sub_processor import LogsArrayMapArithmeticSubProcessor
+ from datadog_api_client.v1.model.logs_array_map_string_builder_sub_processor import LogsArrayMapStringBuilderSubProcessor
+ from datadog_api_client.v1.model.logs_array_map_category_sub_processor import LogsArrayMapCategorySubProcessor
+
+class LogsArrayMapProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_array_map_sub_processor import LogsArrayMapSubProcessor
+ from datadog_api_client.v1.model.logs_array_map_processor_type import LogsArrayMapProcessorType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "preserve_source": (bool,),
+ "processors": ([LogsArrayMapSubProcessor],),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsArrayMapProcessorType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "preserve_source": "preserve_source",
+ "processors": "processors",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, processors: List[Union[LogsArrayMapSubProcessor, LogsArrayMapAttributeRemapper, LogsArrayMapArithmeticSubProcessor, LogsArrayMapStringBuilderSubProcessor, LogsArrayMapCategorySubProcessor]], source: str, target: str, type: LogsArrayMapProcessorType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, preserve_source: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ The array-map processor transforms each element of a source array by applying
+ sub-processors in order and collecting the results into a target array.
+ Results can be written to a new array, to the source array (in-place), or to
+ an existing target array. Sub-processors can read from ``$sourceElem.``
+ (object element field), bare ``$sourceElem`` (primitive element), or any parent
+ log attribute path. Sub-processors write to ``$targetElem.`` (object
+ output field) or bare ``$targetElem`` (primitive output).
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param preserve_source: When ``false`` and ``source != target`` , the source attribute is removed after
+ processing. Cannot be ``false`` when ``source == target``.
+ :type preserve_source: bool, optional
+
+ :param processors: Sub-processors applied to each element. Allowed types: ``attribute-remapper`` ,
+ ``string-builder-processor`` , ``arithmetic-processor`` , ``category-processor``.
+ :type processors: [LogsArrayMapSubProcessor]
+
+ :param source: Attribute path of the source array. Elements are read-only via ``$sourceElem``
+ inside sub-processors.
+ :type source: str
+
+ :param target: Attribute path of the output array. Sub-processors write to ``$targetElem``
+ (or ``$targetElem.`` ) to build each output element.
+ :type target: str
+
+ :param type: Type of logs array-map processor.
+ :type type: LogsArrayMapProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if preserve_source is not unset:
+ kwargs["preserve_source"] = preserve_source
+ super().__init__(kwargs)
+
+
+ self_.processors = processors
+ self_.source = source
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_map_processor_type.py b/datadog_api_client/v1/model/logs_array_map_processor_type.py
new file mode 100644
index 0000000000..5998370bea
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArrayMapProcessorType(ModelSimple):
+ """
+ Type of logs array-map processor.
+
+ :param value: If omitted defaults to "array-map-processor". Must be one of ["array-map-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "array-map-processor",
+ }
+ ARRAY_MAP_PROCESSOR: ClassVar["LogsArrayMapProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArrayMapProcessorType.ARRAY_MAP_PROCESSOR = LogsArrayMapProcessorType("array-map-processor")
diff --git a/datadog_api_client/v1/model/logs_array_map_string_builder_sub_processor.py b/datadog_api_client/v1/model/logs_array_map_string_builder_sub_processor.py
new file mode 100644
index 0000000000..2c5eac972b
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_string_builder_sub_processor.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_string_builder_processor_type import LogsStringBuilderProcessorType
+
+class LogsArrayMapStringBuilderSubProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_string_builder_processor_type import LogsStringBuilderProcessorType
+ return {
+ "is_replace_missing": (bool,),
+ "name": (str,),
+ "target": (str,),
+ "template": (str,),
+ "type": (LogsStringBuilderProcessorType,),
+ }
+ attribute_map = {
+ "is_replace_missing": "is_replace_missing",
+ "name": "name",
+ "target": "target",
+ "template": "template",
+ "type": "type",
+ }
+
+ def __init__(self_, target: str, template: str, type: LogsStringBuilderProcessorType, is_replace_missing: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A string builder sub-processor for use inside an array-map processor.
+ Unlike the top-level string builder processor, ``is_enabled`` is not supported.
+
+ :param is_replace_missing: Replace missing attribute values with an empty string.
+ :type is_replace_missing: bool, optional
+
+ :param name: Name of the sub-processor.
+ :type name: str, optional
+
+ :param target: Target attribute path for the result.
+ :type target: str
+
+ :param template: Formula with one or more attributes and raw text.
+ :type template: str
+
+ :param type: Type of logs string builder processor.
+ :type type: LogsStringBuilderProcessorType
+ """
+ if is_replace_missing is not unset:
+ kwargs["is_replace_missing"] = is_replace_missing
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.target = target
+ self_.template = template
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_map_sub_processor.py b/datadog_api_client/v1/model/logs_array_map_sub_processor.py
new file mode 100644
index 0000000000..5c536eac23
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_map_sub_processor.py
@@ -0,0 +1,92 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsArrayMapSubProcessor(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ A sub-processor used inside an array-map processor.
+ Allowed types: ``attribute-remapper`` , ``string-builder-processor`` ,
+ ``arithmetic-processor`` , ``category-processor``.
+
+ :param name: Name of the sub-processor.
+ :type name: str, optional
+
+ :param override_on_conflict: Override the target element if already set.
+ :type override_on_conflict: bool, optional
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param sources: Array of source attribute paths.
+ :type sources: [str]
+
+ :param target: Target attribute path.
+ :type target: str
+
+ :param target_format: If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types.
+ If the `target_type` is `tag`, this parameter may not be specified.
+ :type target_format: TargetFormatType, optional
+
+ :param type: Type of logs attribute remapper.
+ :type type: LogsAttributeRemapperType
+
+ :param expression: Arithmetic operation to perform.
+ :type expression: str
+
+ :param is_replace_missing: Replace missing attribute values with 0.
+ :type is_replace_missing: bool, optional
+
+ :param template: Formula with one or more attributes and raw text.
+ :type template: str
+
+ :param categories: Array of filters to match against a log and the corresponding value to assign.
+ :type categories: [LogsCategoryProcessorCategory]
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.logs_array_map_attribute_remapper import LogsArrayMapAttributeRemapper
+ from datadog_api_client.v1.model.logs_array_map_arithmetic_sub_processor import LogsArrayMapArithmeticSubProcessor
+ from datadog_api_client.v1.model.logs_array_map_string_builder_sub_processor import LogsArrayMapStringBuilderSubProcessor
+ from datadog_api_client.v1.model.logs_array_map_category_sub_processor import LogsArrayMapCategorySubProcessor
+ return {
+ "oneOf": [
+ LogsArrayMapAttributeRemapper,
+ LogsArrayMapArithmeticSubProcessor,
+ LogsArrayMapStringBuilderSubProcessor,
+ LogsArrayMapCategorySubProcessor,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/logs_array_processor.py b/datadog_api_client/v1/model/logs_array_processor.py
new file mode 100644
index 0000000000..1638329b20
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_array_processor_operation import LogsArrayProcessorOperation
+ from datadog_api_client.v1.model.logs_array_processor_type import LogsArrayProcessorType
+ from datadog_api_client.v1.model.logs_array_processor_operation_append import LogsArrayProcessorOperationAppend
+ from datadog_api_client.v1.model.logs_array_processor_operation_length import LogsArrayProcessorOperationLength
+ from datadog_api_client.v1.model.logs_array_processor_operation_select import LogsArrayProcessorOperationSelect
+ from datadog_api_client.v1.model.logs_array_processor_operation_extract_key_value import LogsArrayProcessorOperationExtractKeyValue
+
+class LogsArrayProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_array_processor_operation import LogsArrayProcessorOperation
+ from datadog_api_client.v1.model.logs_array_processor_type import LogsArrayProcessorType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "operation": (LogsArrayProcessorOperation,),
+ "type": (LogsArrayProcessorType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "operation": "operation",
+ "type": "type",
+ }
+
+ def __init__(self_, operation: Union[LogsArrayProcessorOperation, LogsArrayProcessorOperationAppend, LogsArrayProcessorOperationLength, LogsArrayProcessorOperationSelect, LogsArrayProcessorOperationExtractKeyValue], type: LogsArrayProcessorType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A processor for extracting, aggregating, or transforming values from JSON arrays within your logs.
+ Supported operations are:
+
+ * Select value from matching element
+ * Compute array length
+ * Append a value to an array
+ * Extract key-value pairs from an array
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param operation: Configuration of the array processor operation to perform.
+ :type operation: LogsArrayProcessorOperation
+
+ :param type: Type of logs array processor.
+ :type type: LogsArrayProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.operation = operation
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation.py b/datadog_api_client/v1/model/logs_array_processor_operation.py
new file mode 100644
index 0000000000..724e0e0eac
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation.py
@@ -0,0 +1,79 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsArrayProcessorOperation(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Configuration of the array processor operation to perform.
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param source: Attribute path containing the value to append.
+ :type source: str
+
+ :param target: Attribute path of the array to append to.
+ :type target: str
+
+ :param type: Operation type.
+ :type type: LogsArrayProcessorOperationAppendType
+
+ :param filter: Filter condition expressed as `key:value` used to find the matching element.
+ :type filter: str
+
+ :param value_to_extract: Key of the value to extract from the matching element.
+ :type value_to_extract: str
+
+ :param key_to_extract: Key of the attribute in each array element that holds the name to use for the extracted attribute.
+ :type key_to_extract: str
+
+ :param override_on_conflict: Whether to override the target element if it's already set.
+ :type override_on_conflict: bool, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.logs_array_processor_operation_append import LogsArrayProcessorOperationAppend
+ from datadog_api_client.v1.model.logs_array_processor_operation_length import LogsArrayProcessorOperationLength
+ from datadog_api_client.v1.model.logs_array_processor_operation_select import LogsArrayProcessorOperationSelect
+ from datadog_api_client.v1.model.logs_array_processor_operation_extract_key_value import LogsArrayProcessorOperationExtractKeyValue
+ return {
+ "oneOf": [
+ LogsArrayProcessorOperationAppend,
+ LogsArrayProcessorOperationLength,
+ LogsArrayProcessorOperationSelect,
+ LogsArrayProcessorOperationExtractKeyValue,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_append.py b/datadog_api_client/v1/model/logs_array_processor_operation_append.py
new file mode 100644
index 0000000000..f0eb59a5ec
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_append.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_array_processor_operation_append_type import LogsArrayProcessorOperationAppendType
+
+class LogsArrayProcessorOperationAppend(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_array_processor_operation_append_type import LogsArrayProcessorOperationAppendType
+ return {
+ "preserve_source": (bool,),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsArrayProcessorOperationAppendType,),
+ }
+ attribute_map = {
+ "preserve_source": "preserve_source",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, source: str, target: str, type: LogsArrayProcessorOperationAppendType, preserve_source: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Operation that appends a value to a target array attribute.
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param source: Attribute path containing the value to append.
+ :type source: str
+
+ :param target: Attribute path of the array to append to.
+ :type target: str
+
+ :param type: Operation type.
+ :type type: LogsArrayProcessorOperationAppendType
+ """
+ if preserve_source is not unset:
+ kwargs["preserve_source"] = preserve_source
+ super().__init__(kwargs)
+
+
+ self_.source = source
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_append_type.py b/datadog_api_client/v1/model/logs_array_processor_operation_append_type.py
new file mode 100644
index 0000000000..e6312f8a06
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_append_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArrayProcessorOperationAppendType(ModelSimple):
+ """
+ Operation type.
+
+ :param value: If omitted defaults to "append". Must be one of ["append"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "append",
+ }
+ APPEND: ClassVar["LogsArrayProcessorOperationAppendType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArrayProcessorOperationAppendType.APPEND = LogsArrayProcessorOperationAppendType("append")
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_extract_key_value.py b/datadog_api_client/v1/model/logs_array_processor_operation_extract_key_value.py
new file mode 100644
index 0000000000..224e75e4a3
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_extract_key_value.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_array_processor_operation_extract_key_value_type import LogsArrayProcessorOperationExtractKeyValueType
+
+class LogsArrayProcessorOperationExtractKeyValue(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_array_processor_operation_extract_key_value_type import LogsArrayProcessorOperationExtractKeyValueType
+ return {
+ "key_to_extract": (str,),
+ "override_on_conflict": (bool,),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsArrayProcessorOperationExtractKeyValueType,),
+ "value_to_extract": (str,),
+ }
+ attribute_map = {
+ "key_to_extract": "key_to_extract",
+ "override_on_conflict": "override_on_conflict",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ "value_to_extract": "value_to_extract",
+ }
+
+ def __init__(self_, key_to_extract: str, source: str, type: LogsArrayProcessorOperationExtractKeyValueType, value_to_extract: str, override_on_conflict: Union[bool, UnsetType]=unset, target: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Operation that extracts key-value pairs from a ``source`` array and stores the result in the ``target`` attribute.
+
+ :param key_to_extract: Key of the attribute in each array element that holds the name to use for the extracted attribute.
+ :type key_to_extract: str
+
+ :param override_on_conflict: Whether to override the target element if it's already set.
+ :type override_on_conflict: bool, optional
+
+ :param source: Attribute path of the array to extract key-value pairs from.
+ :type source: str
+
+ :param target: Attribute that receives the extracted key-value pairs. If not specified, the extracted attributes are added at the root level of the log.
+ :type target: str, optional
+
+ :param type: Operation type.
+ :type type: LogsArrayProcessorOperationExtractKeyValueType
+
+ :param value_to_extract: Key of the attribute in each array element that holds the value to use for the extracted attribute.
+ :type value_to_extract: str
+ """
+ if override_on_conflict is not unset:
+ kwargs["override_on_conflict"] = override_on_conflict
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.key_to_extract = key_to_extract
+ self_.source = source
+ self_.type = type
+ self_.value_to_extract = value_to_extract
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_extract_key_value_type.py b/datadog_api_client/v1/model/logs_array_processor_operation_extract_key_value_type.py
new file mode 100644
index 0000000000..f273ffbeb3
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_extract_key_value_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArrayProcessorOperationExtractKeyValueType(ModelSimple):
+ """
+ Operation type.
+
+ :param value: If omitted defaults to "key-value". Must be one of ["key-value"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "key-value",
+ }
+ KEY_VALUE: ClassVar["LogsArrayProcessorOperationExtractKeyValueType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArrayProcessorOperationExtractKeyValueType.KEY_VALUE = LogsArrayProcessorOperationExtractKeyValueType("key-value")
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_length.py b/datadog_api_client/v1/model/logs_array_processor_operation_length.py
new file mode 100644
index 0000000000..7a7d358701
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_length.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_array_processor_operation_length_type import LogsArrayProcessorOperationLengthType
+
+class LogsArrayProcessorOperationLength(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_array_processor_operation_length_type import LogsArrayProcessorOperationLengthType
+ return {
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsArrayProcessorOperationLengthType,),
+ }
+ attribute_map = {
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, source: str, target: str, type: LogsArrayProcessorOperationLengthType, **kwargs):
+ """
+ Operation that computes the length of a ``source`` array and stores the result in the ``target`` attribute.
+
+ :param source: Attribute path of the array to measure.
+ :type source: str
+
+ :param target: Attribute that receives the computed length.
+ :type target: str
+
+ :param type: Operation type.
+ :type type: LogsArrayProcessorOperationLengthType
+ """
+ super().__init__(kwargs)
+
+
+ self_.source = source
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_length_type.py b/datadog_api_client/v1/model/logs_array_processor_operation_length_type.py
new file mode 100644
index 0000000000..505b03a5bb
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_length_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArrayProcessorOperationLengthType(ModelSimple):
+ """
+ Operation type.
+
+ :param value: If omitted defaults to "length". Must be one of ["length"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "length",
+ }
+ LENGTH: ClassVar["LogsArrayProcessorOperationLengthType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArrayProcessorOperationLengthType.LENGTH = LogsArrayProcessorOperationLengthType("length")
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_select.py b/datadog_api_client/v1/model/logs_array_processor_operation_select.py
new file mode 100644
index 0000000000..7784b548ba
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_select.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_array_processor_operation_select_type import LogsArrayProcessorOperationSelectType
+
+class LogsArrayProcessorOperationSelect(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_array_processor_operation_select_type import LogsArrayProcessorOperationSelectType
+ return {
+ "filter": (str,),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsArrayProcessorOperationSelectType,),
+ "value_to_extract": (str,),
+ }
+ attribute_map = {
+ "filter": "filter",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ "value_to_extract": "value_to_extract",
+ }
+
+ def __init__(self_, filter: str, source: str, target: str, type: LogsArrayProcessorOperationSelectType, value_to_extract: str, **kwargs):
+ """
+ Operation that finds an object in a ``source`` array using a ``filter`` , and then extracts a specific value into the ``target`` attribute.
+
+ :param filter: Filter condition expressed as ``key:value`` used to find the matching element.
+ :type filter: str
+
+ :param source: Attribute path of the array to search into.
+ :type source: str
+
+ :param target: Attribute that receives the extracted value.
+ :type target: str
+
+ :param type: Operation type.
+ :type type: LogsArrayProcessorOperationSelectType
+
+ :param value_to_extract: Key of the value to extract from the matching element.
+ :type value_to_extract: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.filter = filter
+ self_.source = source
+ self_.target = target
+ self_.type = type
+ self_.value_to_extract = value_to_extract
diff --git a/datadog_api_client/v1/model/logs_array_processor_operation_select_type.py b/datadog_api_client/v1/model/logs_array_processor_operation_select_type.py
new file mode 100644
index 0000000000..3072428a61
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_operation_select_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArrayProcessorOperationSelectType(ModelSimple):
+ """
+ Operation type.
+
+ :param value: If omitted defaults to "select". Must be one of ["select"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "select",
+ }
+ SELECT: ClassVar["LogsArrayProcessorOperationSelectType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArrayProcessorOperationSelectType.SELECT = LogsArrayProcessorOperationSelectType("select")
diff --git a/datadog_api_client/v1/model/logs_array_processor_type.py b/datadog_api_client/v1/model/logs_array_processor_type.py
new file mode 100644
index 0000000000..652da63a85
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_array_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsArrayProcessorType(ModelSimple):
+ """
+ Type of logs array processor.
+
+ :param value: If omitted defaults to "array-processor". Must be one of ["array-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "array-processor",
+ }
+ ARRAY_PROCESSOR: ClassVar["LogsArrayProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsArrayProcessorType.ARRAY_PROCESSOR = LogsArrayProcessorType("array-processor")
diff --git a/datadog_api_client/v1/model/logs_attribute_remapper.py b/datadog_api_client/v1/model/logs_attribute_remapper.py
new file mode 100644
index 0000000000..295924ccda
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_attribute_remapper.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.target_format_type import TargetFormatType
+ from datadog_api_client.v1.model.logs_attribute_remapper_type import LogsAttributeRemapperType
+
+class LogsAttributeRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.target_format_type import TargetFormatType
+ from datadog_api_client.v1.model.logs_attribute_remapper_type import LogsAttributeRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "override_on_conflict": (bool,),
+ "preserve_source": (bool,),
+ "source_type": (str,),
+ "sources": ([str],),
+ "target": (str,),
+ "target_format": (TargetFormatType,),
+ "target_type": (str,),
+ "type": (LogsAttributeRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "override_on_conflict": "override_on_conflict",
+ "preserve_source": "preserve_source",
+ "source_type": "source_type",
+ "sources": "sources",
+ "target": "target",
+ "target_format": "target_format",
+ "target_type": "target_type",
+ "type": "type",
+ }
+
+ def __init__(self_, sources: List[str], target: str, type: LogsAttributeRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, override_on_conflict: Union[bool, UnsetType]=unset, preserve_source: Union[bool, UnsetType]=unset, source_type: Union[str, UnsetType]=unset, target_format: Union[TargetFormatType, UnsetType]=unset, target_type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The remapper processor remaps any source attribute(s) or tag to another target attribute or tag.
+ Constraints on the tag/attribute name are explained in the `Tag Best Practice documentation `_.
+ Some additional constraints are applied as ``:`` or ``,`` are not allowed in the target tag/attribute name.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param override_on_conflict: Whether to override the target element if it's already set.
+ :type override_on_conflict: bool, optional
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param source_type: Defines if the sources are from log ``attribute`` or ``tag``.
+ :type source_type: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param target: Final attribute or tag name to remap the sources to.
+ :type target: str
+
+ :param target_format: If the ``target_type`` of the remapper is ``attribute`` , try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. ``string`` , ``integer`` , or ``double`` are the possible types.
+ If the ``target_type`` is ``tag`` , this parameter may not be specified.
+ :type target_format: TargetFormatType, optional
+
+ :param target_type: Defines if the final attribute or tag name is from log ``attribute`` or ``tag``.
+ :type target_type: str, optional
+
+ :param type: Type of logs attribute remapper.
+ :type type: LogsAttributeRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if override_on_conflict is not unset:
+ kwargs["override_on_conflict"] = override_on_conflict
+ if preserve_source is not unset:
+ kwargs["preserve_source"] = preserve_source
+ if source_type is not unset:
+ kwargs["source_type"] = source_type
+ if target_format is not unset:
+ kwargs["target_format"] = target_format
+ if target_type is not unset:
+ kwargs["target_type"] = target_type
+ super().__init__(kwargs)
+
+
+ self_.sources = sources
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_attribute_remapper_type.py b/datadog_api_client/v1/model/logs_attribute_remapper_type.py
new file mode 100644
index 0000000000..76af49e63f
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_attribute_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsAttributeRemapperType(ModelSimple):
+ """
+ Type of logs attribute remapper.
+
+ :param value: If omitted defaults to "attribute-remapper". Must be one of ["attribute-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "attribute-remapper",
+ }
+ ATTRIBUTE_REMAPPER: ClassVar["LogsAttributeRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsAttributeRemapperType.ATTRIBUTE_REMAPPER = LogsAttributeRemapperType("attribute-remapper")
diff --git a/datadog_api_client/v1/model/logs_by_retention.py b/datadog_api_client/v1/model/logs_by_retention.py
new file mode 100644
index 0000000000..3792f360cb
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_by_retention.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_by_retention_orgs import LogsByRetentionOrgs
+ from datadog_api_client.v1.model.logs_retention_agg_sum_usage import LogsRetentionAggSumUsage
+ from datadog_api_client.v1.model.logs_by_retention_monthly_usage import LogsByRetentionMonthlyUsage
+
+class LogsByRetention(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_by_retention_orgs import LogsByRetentionOrgs
+ from datadog_api_client.v1.model.logs_retention_agg_sum_usage import LogsRetentionAggSumUsage
+ from datadog_api_client.v1.model.logs_by_retention_monthly_usage import LogsByRetentionMonthlyUsage
+ return {
+ "orgs": (LogsByRetentionOrgs,),
+ "usage": ([LogsRetentionAggSumUsage],),
+ "usage_by_month": (LogsByRetentionMonthlyUsage,),
+ }
+ attribute_map = {
+ "orgs": "orgs",
+ "usage": "usage",
+ "usage_by_month": "usage_by_month",
+ }
+
+ def __init__(self_, orgs: Union[LogsByRetentionOrgs, UnsetType]=unset, usage: Union[List[LogsRetentionAggSumUsage], UnsetType]=unset, usage_by_month: Union[LogsByRetentionMonthlyUsage, UnsetType]=unset, **kwargs):
+ """
+ Object containing logs usage data broken down by retention period.
+
+ :param orgs: Indexed logs usage summary for each organization for each retention period with usage.
+ :type orgs: LogsByRetentionOrgs, optional
+
+ :param usage: Aggregated index logs usage for each retention period with usage.
+ :type usage: [LogsRetentionAggSumUsage], optional
+
+ :param usage_by_month: Object containing a summary of indexed logs usage by retention period for a single month.
+ :type usage_by_month: LogsByRetentionMonthlyUsage, optional
+ """
+ if orgs is not unset:
+ kwargs["orgs"] = orgs
+ if usage is not unset:
+ kwargs["usage"] = usage
+ if usage_by_month is not unset:
+ kwargs["usage_by_month"] = usage_by_month
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_by_retention_monthly_usage.py b/datadog_api_client/v1/model/logs_by_retention_monthly_usage.py
new file mode 100644
index 0000000000..d44757d13c
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_by_retention_monthly_usage.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_retention_sum_usage import LogsRetentionSumUsage
+
+class LogsByRetentionMonthlyUsage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_retention_sum_usage import LogsRetentionSumUsage
+ return {
+ "date": (datetime,),
+ "usage": ([LogsRetentionSumUsage],),
+ }
+ attribute_map = {
+ "date": "date",
+ "usage": "usage",
+ }
+
+ def __init__(self_, date: Union[datetime, UnsetType]=unset, usage: Union[List[LogsRetentionSumUsage], UnsetType]=unset, **kwargs):
+ """
+ Object containing a summary of indexed logs usage by retention period for a single month.
+
+ :param date: The month for the usage.
+ :type date: datetime, optional
+
+ :param usage: Indexed logs usage for each active retention for the month.
+ :type usage: [LogsRetentionSumUsage], optional
+ """
+ if date is not unset:
+ kwargs["date"] = date
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_by_retention_org_usage.py b/datadog_api_client/v1/model/logs_by_retention_org_usage.py
new file mode 100644
index 0000000000..de7f412c0d
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_by_retention_org_usage.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_retention_sum_usage import LogsRetentionSumUsage
+
+class LogsByRetentionOrgUsage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_retention_sum_usage import LogsRetentionSumUsage
+ return {
+ "usage": ([LogsRetentionSumUsage],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[LogsRetentionSumUsage], UnsetType]=unset, **kwargs):
+ """
+ Indexed logs usage by retention for a single organization.
+
+ :param usage: Indexed logs usage for each active retention for the organization.
+ :type usage: [LogsRetentionSumUsage], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_by_retention_orgs.py b/datadog_api_client/v1/model/logs_by_retention_orgs.py
new file mode 100644
index 0000000000..530b524070
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_by_retention_orgs.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_by_retention_org_usage import LogsByRetentionOrgUsage
+
+class LogsByRetentionOrgs(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_by_retention_org_usage import LogsByRetentionOrgUsage
+ return {
+ "usage": ([LogsByRetentionOrgUsage],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[LogsByRetentionOrgUsage], UnsetType]=unset, **kwargs):
+ """
+ Indexed logs usage summary for each organization for each retention period with usage.
+
+ :param usage: Indexed logs usage summary for each organization.
+ :type usage: [LogsByRetentionOrgUsage], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_category_processor.py b/datadog_api_client/v1/model/logs_category_processor.py
new file mode 100644
index 0000000000..32ef95c15c
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_category_processor.py
@@ -0,0 +1,89 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_category_processor_category import LogsCategoryProcessorCategory
+ from datadog_api_client.v1.model.logs_category_processor_type import LogsCategoryProcessorType
+
+class LogsCategoryProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_category_processor_category import LogsCategoryProcessorCategory
+ from datadog_api_client.v1.model.logs_category_processor_type import LogsCategoryProcessorType
+ return {
+ "categories": ([LogsCategoryProcessorCategory],),
+ "is_enabled": (bool,),
+ "name": (str,),
+ "target": (str,),
+ "type": (LogsCategoryProcessorType,),
+ }
+ attribute_map = {
+ "categories": "categories",
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, categories: List[LogsCategoryProcessorCategory], target: str, type: LogsCategoryProcessorType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use the Category Processor to add a new attribute (without spaces or special characters in the new attribute name)
+ to a log matching a provided search query. Use categories to create groups for an analytical view.
+ For example, URL groups, machine groups, environments, and response time buckets.
+
+ **Notes** :
+
+ * The syntax of the query is the one of Logs Explorer search bar.
+ The query can be done on any log attribute or tag, whether it is a facet or not.
+ Wildcards can also be used inside your query.
+ * Once the log has matched one of the Processor queries, it stops.
+ Make sure they are properly ordered in case a log could match several queries.
+ * The names of the categories must be unique.
+ * Once defined in the Category Processor, you can map categories to log status using the Log Status Remapper.
+
+ :param categories: Array of filters to match or not a log and their
+ corresponding ``name`` to assign a custom value to the log.
+ :type categories: [LogsCategoryProcessorCategory]
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param target: Name of the target attribute which value is defined by the matching category.
+ :type target: str
+
+ :param type: Type of logs category processor.
+ :type type: LogsCategoryProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.categories = categories
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_category_processor_category.py b/datadog_api_client/v1/model/logs_category_processor_category.py
new file mode 100644
index 0000000000..eaa6a42bb9
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_category_processor_category.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+
+class LogsCategoryProcessorCategory(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ return {
+ "filter": (LogsFilter,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "filter": "filter",
+ "name": "name",
+ }
+
+ def __init__(self_, filter: Union[LogsFilter, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object describing the logs filter.
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter, optional
+
+ :param name: Value to assign to the target attribute.
+ :type name: str, optional
+ """
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_category_processor_type.py b/datadog_api_client/v1/model/logs_category_processor_type.py
new file mode 100644
index 0000000000..43dc4c89e6
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_category_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsCategoryProcessorType(ModelSimple):
+ """
+ Type of logs category processor.
+
+ :param value: If omitted defaults to "category-processor". Must be one of ["category-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "category-processor",
+ }
+ CATEGORY_PROCESSOR: ClassVar["LogsCategoryProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsCategoryProcessorType.CATEGORY_PROCESSOR = LogsCategoryProcessorType("category-processor")
diff --git a/datadog_api_client/v1/model/logs_daily_limit_reset.py b/datadog_api_client/v1/model/logs_daily_limit_reset.py
new file mode 100644
index 0000000000..61ba6f4618
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_daily_limit_reset.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsDailyLimitReset(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "reset_time": (str,),
+ "reset_utc_offset": (str,),
+ }
+ attribute_map = {
+ "reset_time": "reset_time",
+ "reset_utc_offset": "reset_utc_offset",
+ }
+
+ def __init__(self_, reset_time: Union[str, UnsetType]=unset, reset_utc_offset: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing options to override the default daily limit reset time.
+
+ :param reset_time: String in ``HH:00`` format representing the time of day the daily limit should be reset. The hours must be between 00 and 23 (inclusive).
+ :type reset_time: str, optional
+
+ :param reset_utc_offset: String in ``(-|+)HH:00`` format representing the UTC offset to apply to the given reset time. The hours must be between -12 and +14 (inclusive).
+ :type reset_utc_offset: str, optional
+ """
+ if reset_time is not unset:
+ kwargs["reset_time"] = reset_time
+ if reset_utc_offset is not unset:
+ kwargs["reset_utc_offset"] = reset_utc_offset
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_date_remapper.py b/datadog_api_client/v1/model/logs_date_remapper.py
new file mode 100644
index 0000000000..cdc879d319
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_date_remapper.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_date_remapper_type import LogsDateRemapperType
+
+class LogsDateRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_date_remapper_type import LogsDateRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "type": (LogsDateRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "type": "type",
+ }
+
+ def __init__(self_, sources: List[str], type: LogsDateRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ As Datadog receives logs, it timestamps them using the value(s) from any of these default attributes.
+
+ * ``timestamp``
+ * ``date``
+ * ``_timestamp``
+ * ``Timestamp``
+ * ``eventTime``
+ *
+ ``published_date``
+
+ If your logs put their dates in an attribute not in this list,
+ use the log date Remapper Processor to define their date attribute as the official log timestamp.
+ The recognized date formats are ISO8601, UNIX (the milliseconds EPOCH format), and RFC3164.
+
+ **Note:** If your logs don’t contain any of the default attributes
+ and you haven’t defined your own date attribute, Datadog timestamps
+ the logs with the date it received them.
+
+ If multiple log date remapper processors can be applied to a given log,
+ only the first one (according to the pipelines order) is taken into account.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param type: Type of logs date remapper.
+ :type type: LogsDateRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.sources = sources
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_date_remapper_type.py b/datadog_api_client/v1/model/logs_date_remapper_type.py
new file mode 100644
index 0000000000..d98ae1a16f
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_date_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsDateRemapperType(ModelSimple):
+ """
+ Type of logs date remapper.
+
+ :param value: If omitted defaults to "date-remapper". Must be one of ["date-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "date-remapper",
+ }
+ DATE_REMAPPER: ClassVar["LogsDateRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsDateRemapperType.DATE_REMAPPER = LogsDateRemapperType("date-remapper")
diff --git a/datadog_api_client/v1/model/logs_decoder_processor.py b/datadog_api_client/v1/model/logs_decoder_processor.py
new file mode 100644
index 0000000000..cf98db3422
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_decoder_processor.py
@@ -0,0 +1,92 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_decoder_processor_binary_to_text_encoding import LogsDecoderProcessorBinaryToTextEncoding
+ from datadog_api_client.v1.model.logs_decoder_processor_input_representation import LogsDecoderProcessorInputRepresentation
+ from datadog_api_client.v1.model.logs_decoder_processor_type import LogsDecoderProcessorType
+
+class LogsDecoderProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_decoder_processor_binary_to_text_encoding import LogsDecoderProcessorBinaryToTextEncoding
+ from datadog_api_client.v1.model.logs_decoder_processor_input_representation import LogsDecoderProcessorInputRepresentation
+ from datadog_api_client.v1.model.logs_decoder_processor_type import LogsDecoderProcessorType
+ return {
+ "binary_to_text_encoding": (LogsDecoderProcessorBinaryToTextEncoding,),
+ "input_representation": (LogsDecoderProcessorInputRepresentation,),
+ "is_enabled": (bool,),
+ "name": (str,),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsDecoderProcessorType,),
+ }
+ attribute_map = {
+ "binary_to_text_encoding": "binary_to_text_encoding",
+ "input_representation": "input_representation",
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, binary_to_text_encoding: LogsDecoderProcessorBinaryToTextEncoding, input_representation: LogsDecoderProcessorInputRepresentation, source: str, target: str, type: LogsDecoderProcessorType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The decoder processor decodes any source attribute containing a
+ base64/base16-encoded UTF-8/ASCII string back to its original value, storing the
+ result in a target attribute.
+
+ :param binary_to_text_encoding: The encoding used to represent the binary data.
+ :type binary_to_text_encoding: LogsDecoderProcessorBinaryToTextEncoding
+
+ :param input_representation: The original representation of input string.
+ :type input_representation: LogsDecoderProcessorInputRepresentation
+
+ :param is_enabled: Whether the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param source: Name of the log attribute with the encoded data.
+ :type source: str
+
+ :param target: Name of the log attribute that contains the decoded data.
+ :type target: str
+
+ :param type: Type of logs decoder processor.
+ :type type: LogsDecoderProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.binary_to_text_encoding = binary_to_text_encoding
+ self_.input_representation = input_representation
+ self_.source = source
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_decoder_processor_binary_to_text_encoding.py b/datadog_api_client/v1/model/logs_decoder_processor_binary_to_text_encoding.py
new file mode 100644
index 0000000000..9038c3bf31
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_decoder_processor_binary_to_text_encoding.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsDecoderProcessorBinaryToTextEncoding(ModelSimple):
+ """
+ The encoding used to represent the binary data.
+
+ :param value: Must be one of ["base64", "base16"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "base64",
+ "base16",
+ }
+ BASE64: ClassVar["LogsDecoderProcessorBinaryToTextEncoding"]
+ BASE16: ClassVar["LogsDecoderProcessorBinaryToTextEncoding"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsDecoderProcessorBinaryToTextEncoding.BASE64 = LogsDecoderProcessorBinaryToTextEncoding("base64")
+LogsDecoderProcessorBinaryToTextEncoding.BASE16 = LogsDecoderProcessorBinaryToTextEncoding("base16")
diff --git a/datadog_api_client/v1/model/logs_decoder_processor_input_representation.py b/datadog_api_client/v1/model/logs_decoder_processor_input_representation.py
new file mode 100644
index 0000000000..71e5268b17
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_decoder_processor_input_representation.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsDecoderProcessorInputRepresentation(ModelSimple):
+ """
+ The original representation of input string.
+
+ :param value: Must be one of ["utf_8", "integer"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "utf_8",
+ "integer",
+ }
+ UTF_8: ClassVar["LogsDecoderProcessorInputRepresentation"]
+ INTEGER: ClassVar["LogsDecoderProcessorInputRepresentation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsDecoderProcessorInputRepresentation.UTF_8 = LogsDecoderProcessorInputRepresentation("utf_8")
+LogsDecoderProcessorInputRepresentation.INTEGER = LogsDecoderProcessorInputRepresentation("integer")
diff --git a/datadog_api_client/v1/model/logs_decoder_processor_type.py b/datadog_api_client/v1/model/logs_decoder_processor_type.py
new file mode 100644
index 0000000000..b32649a29d
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_decoder_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsDecoderProcessorType(ModelSimple):
+ """
+ Type of logs decoder processor.
+
+ :param value: If omitted defaults to "decoder-processor". Must be one of ["decoder-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "decoder-processor",
+ }
+ DECODER_PROCESSOR: ClassVar["LogsDecoderProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsDecoderProcessorType.DECODER_PROCESSOR = LogsDecoderProcessorType("decoder-processor")
diff --git a/datadog_api_client/v1/model/logs_exclude_attribute_processor.py b/datadog_api_client/v1/model/logs_exclude_attribute_processor.py
new file mode 100644
index 0000000000..03206e79ad
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_exclude_attribute_processor.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_exclude_attribute_processor_type import LogsExcludeAttributeProcessorType
+
+class LogsExcludeAttributeProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_exclude_attribute_processor_type import LogsExcludeAttributeProcessorType
+ return {
+ "attribute_to_exclude": (str,),
+ "is_enabled": (bool,),
+ "name": (str,),
+ "type": (LogsExcludeAttributeProcessorType,),
+ }
+ attribute_map = {
+ "attribute_to_exclude": "attribute_to_exclude",
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "type": "type",
+ }
+
+ def __init__(self_, attribute_to_exclude: str, type: LogsExcludeAttributeProcessorType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use this processor to remove an attribute from a log during processing.
+ The processor strips the specified attribute from the log event, which is useful
+ when the attribute contains sensitive data or is no longer needed downstream.
+
+ :param attribute_to_exclude: Name of the log attribute to remove from the log event.
+ :type attribute_to_exclude: str
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param type: Type of logs exclude attribute processor.
+ :type type: LogsExcludeAttributeProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.attribute_to_exclude = attribute_to_exclude
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_exclude_attribute_processor_type.py b/datadog_api_client/v1/model/logs_exclude_attribute_processor_type.py
new file mode 100644
index 0000000000..32c87e5c72
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_exclude_attribute_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsExcludeAttributeProcessorType(ModelSimple):
+ """
+ Type of logs exclude attribute processor.
+
+ :param value: If omitted defaults to "exclude-attribute". Must be one of ["exclude-attribute"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "exclude-attribute",
+ }
+ EXCLUDE_ATTRIBUTE: ClassVar["LogsExcludeAttributeProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsExcludeAttributeProcessorType.EXCLUDE_ATTRIBUTE = LogsExcludeAttributeProcessorType("exclude-attribute")
diff --git a/datadog_api_client/v1/model/logs_exclusion.py b/datadog_api_client/v1/model/logs_exclusion.py
new file mode 100644
index 0000000000..29d001a255
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_exclusion.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_exclusion_filter import LogsExclusionFilter
+
+class LogsExclusion(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_exclusion_filter import LogsExclusionFilter
+ return {
+ "filter": (LogsExclusionFilter,),
+ "is_enabled": (bool,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "filter": "filter",
+ "is_enabled": "is_enabled",
+ "name": "name",
+ }
+
+ def __init__(self_, name: str, filter: Union[LogsExclusionFilter, UnsetType]=unset, is_enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Represents the index exclusion filter object from configuration API.
+
+ :param filter: Exclusion filter is defined by a query, a sampling rule, and a active/inactive toggle.
+ :type filter: LogsExclusionFilter, optional
+
+ :param is_enabled: Whether or not the exclusion filter is active.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the index exclusion filter.
+ :type name: str
+ """
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/logs_exclusion_filter.py b/datadog_api_client/v1/model/logs_exclusion_filter.py
new file mode 100644
index 0000000000..ae9ab4e57a
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_exclusion_filter.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsExclusionFilter(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ "sample_attribute": (str,),
+ "sample_rate": (float,),
+ }
+ attribute_map = {
+ "query": "query",
+ "sample_attribute": "sample_attribute",
+ "sample_rate": "sample_rate",
+ }
+
+ def __init__(self_, sample_rate: float, query: Union[str, UnsetType]=unset, sample_attribute: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Exclusion filter is defined by a query, a sampling rule, and a active/inactive toggle.
+
+ :param query: Default query is ``*`` , meaning all logs flowing in the index would be excluded.
+ Scope down exclusion filter to only a subset of logs with a log query.
+ :type query: str, optional
+
+ :param sample_attribute: Sample attribute to use for the sampling of logs going through this exclusion filter.
+ When set, only the logs with the specified attribute are sampled.
+ :type sample_attribute: str, optional
+
+ :param sample_rate: Sample rate to apply to logs going through this exclusion filter,
+ a value of 1.0 excludes all logs matching the query.
+ :type sample_rate: float
+ """
+ if query is not unset:
+ kwargs["query"] = query
+ if sample_attribute is not unset:
+ kwargs["sample_attribute"] = sample_attribute
+ super().__init__(kwargs)
+
+
+ self_.sample_rate = sample_rate
diff --git a/datadog_api_client/v1/model/logs_filter.py b/datadog_api_client/v1/model/logs_filter.py
new file mode 100644
index 0000000000..2cd3afe129
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_filter.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsFilter(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ }
+ attribute_map = {
+ "query": "query",
+ }
+
+ def __init__(self_, query: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Filter for logs.
+
+ :param query: The filter query.
+ :type query: str, optional
+ """
+ if query is not unset:
+ kwargs["query"] = query
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_geo_ip_parser.py b/datadog_api_client/v1/model/logs_geo_ip_parser.py
new file mode 100644
index 0000000000..aae8aa7c05
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_geo_ip_parser.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_geo_ip_parser_type import LogsGeoIPParserType
+
+class LogsGeoIPParser(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_geo_ip_parser_type import LogsGeoIPParserType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "target": (str,),
+ "type": (LogsGeoIPParserType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsGeoIPParserType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The GeoIP parser takes an IP address attribute and extracts if available
+ the Continent, Country, Subdivision, and City information in the target attribute path.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param target: Name of the parent attribute that contains all the extracted details from the ``sources``.
+ :type target: str
+
+ :param type: Type of GeoIP parser.
+ :type type: LogsGeoIPParserType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+ sources = kwargs.get("sources", ['network.client.ip'])
+ target = kwargs.get("target", "network.client.geoip")
+
+
+ self_.sources = sources
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_geo_ip_parser_type.py b/datadog_api_client/v1/model/logs_geo_ip_parser_type.py
new file mode 100644
index 0000000000..1c29808bbd
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_geo_ip_parser_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsGeoIPParserType(ModelSimple):
+ """
+ Type of GeoIP parser.
+
+ :param value: If omitted defaults to "geo-ip-parser". Must be one of ["geo-ip-parser"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "geo-ip-parser",
+ }
+ GEO_IP_PARSER: ClassVar["LogsGeoIPParserType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsGeoIPParserType.GEO_IP_PARSER = LogsGeoIPParserType("geo-ip-parser")
diff --git a/datadog_api_client/v1/model/logs_grok_parser.py b/datadog_api_client/v1/model/logs_grok_parser.py
new file mode 100644
index 0000000000..4c37a6c94c
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_grok_parser.py
@@ -0,0 +1,90 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_grok_parser_rules import LogsGrokParserRules
+ from datadog_api_client.v1.model.logs_grok_parser_type import LogsGrokParserType
+
+class LogsGrokParser(ModelNormal):
+ validations = {
+ "samples": {
+ "max_items": 5,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_grok_parser_rules import LogsGrokParserRules
+ from datadog_api_client.v1.model.logs_grok_parser_type import LogsGrokParserType
+ return {
+ "grok": (LogsGrokParserRules,),
+ "is_enabled": (bool,),
+ "name": (str,),
+ "samples": ([str],),
+ "source": (str,),
+ "type": (LogsGrokParserType,),
+ }
+ attribute_map = {
+ "grok": "grok",
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "samples": "samples",
+ "source": "source",
+ "type": "type",
+ }
+
+ def __init__(self_, grok: LogsGrokParserRules, type: LogsGrokParserType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, samples: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Create custom grok rules to parse the full message or `a specific attribute of your raw event `_.
+ For more information, see the `parsing section `_.
+
+ :param grok: Set of rules for the grok parser.
+ :type grok: LogsGrokParserRules
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param samples: List of sample logs to test this grok parser.
+ :type samples: [str], optional
+
+ :param source: Name of the log attribute to parse.
+ :type source: str
+
+ :param type: Type of logs grok parser.
+ :type type: LogsGrokParserType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if samples is not unset:
+ kwargs["samples"] = samples
+ super().__init__(kwargs)
+ source = kwargs.get("source", "message")
+
+
+ self_.grok = grok
+ self_.source = source
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_grok_parser_rules.py b/datadog_api_client/v1/model/logs_grok_parser_rules.py
new file mode 100644
index 0000000000..184b062df0
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_grok_parser_rules.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsGrokParserRules(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "match_rules": (str,),
+ "support_rules": (str,),
+ }
+ attribute_map = {
+ "match_rules": "match_rules",
+ "support_rules": "support_rules",
+ }
+
+ def __init__(self_, match_rules: str, support_rules: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Set of rules for the grok parser.
+
+ :param match_rules: List of match rules for the grok parser, separated by a new line.
+ :type match_rules: str
+
+ :param support_rules: List of support rules for the grok parser, separated by a new line.
+ :type support_rules: str, optional
+ """
+ if support_rules is not unset:
+ kwargs["support_rules"] = support_rules
+ super().__init__(kwargs)
+
+
+ self_.match_rules = match_rules
diff --git a/datadog_api_client/v1/model/logs_grok_parser_type.py b/datadog_api_client/v1/model/logs_grok_parser_type.py
new file mode 100644
index 0000000000..2bdf037d13
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_grok_parser_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsGrokParserType(ModelSimple):
+ """
+ Type of logs grok parser.
+
+ :param value: If omitted defaults to "grok-parser". Must be one of ["grok-parser"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "grok-parser",
+ }
+ GROK_PARSER: ClassVar["LogsGrokParserType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsGrokParserType.GROK_PARSER = LogsGrokParserType("grok-parser")
diff --git a/datadog_api_client/v1/model/logs_index.py b/datadog_api_client/v1/model/logs_index.py
new file mode 100644
index 0000000000..3d0e73f36a
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_index.py
@@ -0,0 +1,130 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
+ from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+
+class LogsIndex(ModelNormal):
+ validations = {
+ "daily_limit_warning_threshold_percentage": {
+ "inclusive_maximum": 99.99,
+ "inclusive_minimum": 50,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
+ from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ return {
+ "daily_limit": (int,),
+ "daily_limit_reset": (LogsDailyLimitReset,),
+ "daily_limit_warning_threshold_percentage": (float,),
+ "exclusion_filters": ([LogsExclusion],),
+ "filter": (LogsFilter,),
+ "is_rate_limited": (bool,),
+ "name": (str,),
+ "num_flex_logs_retention_days": (int,),
+ "num_retention_days": (int,),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "daily_limit": "daily_limit",
+ "daily_limit_reset": "daily_limit_reset",
+ "daily_limit_warning_threshold_percentage": "daily_limit_warning_threshold_percentage",
+ "exclusion_filters": "exclusion_filters",
+ "filter": "filter",
+ "is_rate_limited": "is_rate_limited",
+ "name": "name",
+ "num_flex_logs_retention_days": "num_flex_logs_retention_days",
+ "num_retention_days": "num_retention_days",
+ "tags": "tags",
+ }
+ read_only_vars = {
+ "is_rate_limited",
+ }
+
+ def __init__(self_, filter: LogsFilter, name: str, daily_limit: Union[int, UnsetType]=unset, daily_limit_reset: Union[LogsDailyLimitReset, UnsetType]=unset, daily_limit_warning_threshold_percentage: Union[float, UnsetType]=unset, exclusion_filters: Union[List[LogsExclusion], UnsetType]=unset, is_rate_limited: Union[bool, UnsetType]=unset, num_flex_logs_retention_days: Union[int, UnsetType]=unset, num_retention_days: Union[int, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object describing a Datadog Log index.
+
+ :param daily_limit: The number of log events you can send in this index per day before you are rate-limited.
+ :type daily_limit: int, optional
+
+ :param daily_limit_reset: Object containing options to override the default daily limit reset time.
+ :type daily_limit_reset: LogsDailyLimitReset, optional
+
+ :param daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated.
+ :type daily_limit_warning_threshold_percentage: float, optional
+
+ :param exclusion_filters: An array of exclusion objects. The logs are tested against the query of each filter,
+ following the order of the array. Only the first matching active exclusion matters,
+ others (if any) are ignored.
+ :type exclusion_filters: [LogsExclusion], optional
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter
+
+ :param is_rate_limited: A boolean stating if the index is rate limited, meaning more logs than the daily limit have been sent.
+ Rate limit is reset every-day at 2pm UTC.
+ :type is_rate_limited: bool, optional
+
+ :param name: The name of the index.
+ :type name: str
+
+ :param num_flex_logs_retention_days: The total number of days logs are stored in Standard and Flex Tier before being deleted from the index.
+ If Standard Tier is enabled on this index, logs are first retained in Standard Tier for the number of days specified through ``num_retention_days`` ,
+ and then stored in Flex Tier until the number of days specified in ``num_flex_logs_retention_days`` is reached.
+ The available values depend on retention plans specified in your organization's contract/subscriptions.
+ :type num_flex_logs_retention_days: int, optional
+
+ :param num_retention_days: The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index.
+ The available values depend on retention plans specified in your organization's contract/subscriptions.
+ :type num_retention_days: int, optional
+
+ :param tags: A list of tags associated with the index. Tags must be in ``key:value`` format.
+ :type tags: [str], optional
+ """
+ if daily_limit is not unset:
+ kwargs["daily_limit"] = daily_limit
+ if daily_limit_reset is not unset:
+ kwargs["daily_limit_reset"] = daily_limit_reset
+ if daily_limit_warning_threshold_percentage is not unset:
+ kwargs["daily_limit_warning_threshold_percentage"] = daily_limit_warning_threshold_percentage
+ if exclusion_filters is not unset:
+ kwargs["exclusion_filters"] = exclusion_filters
+ if is_rate_limited is not unset:
+ kwargs["is_rate_limited"] = is_rate_limited
+ if num_flex_logs_retention_days is not unset:
+ kwargs["num_flex_logs_retention_days"] = num_flex_logs_retention_days
+ if num_retention_days is not unset:
+ kwargs["num_retention_days"] = num_retention_days
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.filter = filter
+ self_.name = name
diff --git a/datadog_api_client/v1/model/logs_index_list_response.py b/datadog_api_client/v1/model/logs_index_list_response.py
new file mode 100644
index 0000000000..ec453b9200
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_index_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_index import LogsIndex
+
+class LogsIndexListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_index import LogsIndex
+ return {
+ "indexes": ([LogsIndex],),
+ }
+ attribute_map = {
+ "indexes": "indexes",
+ }
+
+ def __init__(self_, indexes: Union[List[LogsIndex], UnsetType]=unset, **kwargs):
+ """
+ Object with all Index configurations for a given organization.
+
+ :param indexes: Array of Log index configurations.
+ :type indexes: [LogsIndex], optional
+ """
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_index_update_request.py b/datadog_api_client/v1/model/logs_index_update_request.py
new file mode 100644
index 0000000000..4f457cf368
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_index_update_request.py
@@ -0,0 +1,126 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
+ from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+
+class LogsIndexUpdateRequest(ModelNormal):
+ validations = {
+ "daily_limit_warning_threshold_percentage": {
+ "inclusive_maximum": 99.99,
+ "inclusive_minimum": 50,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
+ from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ return {
+ "daily_limit": (int,),
+ "daily_limit_reset": (LogsDailyLimitReset,),
+ "daily_limit_warning_threshold_percentage": (float,),
+ "disable_daily_limit": (bool,),
+ "exclusion_filters": ([LogsExclusion],),
+ "filter": (LogsFilter,),
+ "num_flex_logs_retention_days": (int,),
+ "num_retention_days": (int,),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "daily_limit": "daily_limit",
+ "daily_limit_reset": "daily_limit_reset",
+ "daily_limit_warning_threshold_percentage": "daily_limit_warning_threshold_percentage",
+ "disable_daily_limit": "disable_daily_limit",
+ "exclusion_filters": "exclusion_filters",
+ "filter": "filter",
+ "num_flex_logs_retention_days": "num_flex_logs_retention_days",
+ "num_retention_days": "num_retention_days",
+ "tags": "tags",
+ }
+
+ def __init__(self_, filter: LogsFilter, daily_limit: Union[int, UnsetType]=unset, daily_limit_reset: Union[LogsDailyLimitReset, UnsetType]=unset, daily_limit_warning_threshold_percentage: Union[float, UnsetType]=unset, disable_daily_limit: Union[bool, UnsetType]=unset, exclusion_filters: Union[List[LogsExclusion], UnsetType]=unset, num_flex_logs_retention_days: Union[int, UnsetType]=unset, num_retention_days: Union[int, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object for updating a Datadog Log index.
+
+ :param daily_limit: The number of log events you can send in this index per day before you are rate-limited.
+ :type daily_limit: int, optional
+
+ :param daily_limit_reset: Object containing options to override the default daily limit reset time.
+ :type daily_limit_reset: LogsDailyLimitReset, optional
+
+ :param daily_limit_warning_threshold_percentage: A percentage threshold of the daily quota at which a Datadog warning event is generated.
+ :type daily_limit_warning_threshold_percentage: float, optional
+
+ :param disable_daily_limit: If true, sets the ``daily_limit`` value to null and the index is not limited on a daily basis (any
+ specified ``daily_limit`` value in the request is ignored). If false or omitted, the index's current
+ ``daily_limit`` is maintained.
+ :type disable_daily_limit: bool, optional
+
+ :param exclusion_filters: An array of exclusion objects. The logs are tested against the query of each filter,
+ following the order of the array. Only the first matching active exclusion matters,
+ others (if any) are ignored.
+ :type exclusion_filters: [LogsExclusion], optional
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter
+
+ :param num_flex_logs_retention_days: The total number of days logs are stored in Standard and Flex Tier before being deleted from the index.
+ If Standard Tier is enabled on this index, logs are first retained in Standard Tier for the number of days specified through ``num_retention_days`` ,
+ and then stored in Flex Tier until the number of days specified in ``num_flex_logs_retention_days`` is reached.
+ The available values depend on retention plans specified in your organization's contract/subscriptions.
+
+ **Note** : Changing this value affects all logs already in this index. It may also affect billing.
+ :type num_flex_logs_retention_days: int, optional
+
+ :param num_retention_days: The number of days logs are stored in Standard Tier before aging into the Flex Tier or being deleted from the index.
+ The available values depend on retention plans specified in your organization's contract/subscriptions.
+
+ **Note** : Changing this value affects all logs already in this index. It may also affect billing.
+ :type num_retention_days: int, optional
+
+ :param tags: A list of tags associated with the index. Tags must be in ``key:value`` format.
+ :type tags: [str], optional
+ """
+ if daily_limit is not unset:
+ kwargs["daily_limit"] = daily_limit
+ if daily_limit_reset is not unset:
+ kwargs["daily_limit_reset"] = daily_limit_reset
+ if daily_limit_warning_threshold_percentage is not unset:
+ kwargs["daily_limit_warning_threshold_percentage"] = daily_limit_warning_threshold_percentage
+ if disable_daily_limit is not unset:
+ kwargs["disable_daily_limit"] = disable_daily_limit
+ if exclusion_filters is not unset:
+ kwargs["exclusion_filters"] = exclusion_filters
+ if num_flex_logs_retention_days is not unset:
+ kwargs["num_flex_logs_retention_days"] = num_flex_logs_retention_days
+ if num_retention_days is not unset:
+ kwargs["num_retention_days"] = num_retention_days
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.filter = filter
diff --git a/datadog_api_client/v1/model/logs_indexes_order.py b/datadog_api_client/v1/model/logs_indexes_order.py
new file mode 100644
index 0000000000..dab76a8877
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_indexes_order.py
@@ -0,0 +1,47 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsIndexesOrder(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "index_names": ([str],),
+ }
+ attribute_map = {
+ "index_names": "index_names",
+ }
+
+ def __init__(self_, index_names: List[str], **kwargs):
+ """
+ Object containing the ordered list of log index names.
+
+ :param index_names: Array of strings identifying by their name(s) the index(es) of your organization.
+ Logs are tested against the query filter of each index one by one, following the order of the array.
+ Logs are eventually stored in the first matching index.
+ :type index_names: [str]
+ """
+ super().__init__(kwargs)
+
+
+ self_.index_names = index_names
diff --git a/datadog_api_client/v1/model/logs_list_request.py b/datadog_api_client/v1/model/logs_list_request.py
new file mode 100644
index 0000000000..bdcd1e4b6d
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_list_request.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_sort import LogsSort
+ from datadog_api_client.v1.model.logs_list_request_time import LogsListRequestTime
+
+class LogsListRequest(ModelNormal):
+ validations = {
+ "limit": {
+ "inclusive_maximum": 1000,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_sort import LogsSort
+ from datadog_api_client.v1.model.logs_list_request_time import LogsListRequestTime
+ return {
+ "index": (str,),
+ "limit": (int,),
+ "query": (str,),
+ "sort": (LogsSort,),
+ "start_at": (str,),
+ "time": (LogsListRequestTime,),
+ }
+ attribute_map = {
+ "index": "index",
+ "limit": "limit",
+ "query": "query",
+ "sort": "sort",
+ "start_at": "startAt",
+ "time": "time",
+ }
+
+ def __init__(self_, time: LogsListRequestTime, index: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, sort: Union[LogsSort, UnsetType]=unset, start_at: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to send with the request to retrieve a list of logs from your Organization.
+
+ :param index: The log index on which the request is performed. For multi-index organizations,
+ the default is all live indexes. Historical indexes of rehydrated logs must be specified.
+ :type index: str, optional
+
+ :param limit: Number of logs return in the response.
+ :type limit: int, optional
+
+ :param query: The search query - following the log search syntax.
+ :type query: str, optional
+
+ :param sort: Time-ascending ``asc`` or time-descending ``desc`` results.
+ :type sort: LogsSort, optional
+
+ :param start_at: Hash identifier of the first log to return in the list, available in a log ``id`` attribute.
+ This parameter is used for the pagination feature.
+
+ **Note** : This parameter is ignored if the corresponding log
+ is out of the scope of the specified time window.
+ :type start_at: str, optional
+
+ :param time: Timeframe to retrieve the log from.
+ :type time: LogsListRequestTime
+ """
+ if index is not unset:
+ kwargs["index"] = index
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if query is not unset:
+ kwargs["query"] = query
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if start_at is not unset:
+ kwargs["start_at"] = start_at
+ super().__init__(kwargs)
+
+
+ self_.time = time
diff --git a/datadog_api_client/v1/model/logs_list_request_time.py b/datadog_api_client/v1/model/logs_list_request_time.py
new file mode 100644
index 0000000000..3374b86a70
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_list_request_time.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsListRequestTime(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "_from": (datetime,),
+ "timezone": (str,),
+ "to": (datetime,),
+ }
+ attribute_map = {
+ "_from": "from",
+ "timezone": "timezone",
+ "to": "to",
+ }
+
+ def __init__(self_, _from: datetime, to: datetime, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Timeframe to retrieve the log from.
+
+ :param _from: Minimum timestamp for requested logs.
+ :type _from: datetime
+
+ :param timezone: Timezone can be specified both as an offset (for example "UTC+03:00")
+ or a regional zone (for example "Europe/Paris").
+ :type timezone: str, optional
+
+ :param to: Maximum timestamp for requested logs.
+ :type to: datetime
+ """
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
+ self_._from = _from
+ self_.to = to
diff --git a/datadog_api_client/v1/model/logs_list_response.py b/datadog_api_client/v1/model/logs_list_response.py
new file mode 100644
index 0000000000..f7d26a874a
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_list_response.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log import Log
+
+class LogsListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log import Log
+ return {
+ "logs": ([Log],),
+ "next_log_id": (str, none_type),
+ "status": (str,),
+ }
+ attribute_map = {
+ "logs": "logs",
+ "next_log_id": "nextLogId",
+ "status": "status",
+ }
+
+ def __init__(self_, logs: Union[List[Log], UnsetType]=unset, next_log_id: Union[str, none_type, UnsetType]=unset, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Response object with all logs matching the request and pagination information.
+
+ :param logs: Array of logs matching the request and the ``nextLogId`` if sent.
+ :type logs: [Log], optional
+
+ :param next_log_id: Hash identifier of the next log to return in the list.
+ This parameter is used for the pagination feature.
+ :type next_log_id: str, none_type, optional
+
+ :param status: Status of the response.
+ :type status: str, optional
+ """
+ if logs is not unset:
+ kwargs["logs"] = logs
+ if next_log_id is not unset:
+ kwargs["next_log_id"] = next_log_id
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_lookup_processor.py b/datadog_api_client/v1/model/logs_lookup_processor.py
new file mode 100644
index 0000000000..d6173ef417
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_lookup_processor.py
@@ -0,0 +1,94 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_lookup_processor_type import LogsLookupProcessorType
+
+class LogsLookupProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_lookup_processor_type import LogsLookupProcessorType
+ return {
+ "default_lookup": (str,),
+ "is_enabled": (bool,),
+ "lookup_table": ([str],),
+ "name": (str,),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsLookupProcessorType,),
+ }
+ attribute_map = {
+ "default_lookup": "default_lookup",
+ "is_enabled": "is_enabled",
+ "lookup_table": "lookup_table",
+ "name": "name",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, lookup_table: List[str], source: str, target: str, type: LogsLookupProcessorType, default_lookup: Union[str, UnsetType]=unset, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use the Lookup Processor to define a mapping between a log attribute
+ and a human readable value saved in the processors mapping table.
+ For example, you can use the Lookup Processor to map an internal service ID
+ into a human readable service name. Alternatively, you could also use it to check
+ if the MAC address that just attempted to connect to the production
+ environment belongs to your list of stolen machines.
+
+ :param default_lookup: Value to set the target attribute if the source value is not found in the list.
+ :type default_lookup: str, optional
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param lookup_table: Mapping table of values for the source attribute and their associated target attribute values,
+ formatted as ``["source_key1,target_value1", "source_key2,target_value2"]``
+ :type lookup_table: [str]
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param source: Source attribute used to perform the lookup.
+ :type source: str
+
+ :param target: Name of the attribute that contains the corresponding value in the mapping list
+ or the ``default_lookup`` if not found in the mapping list.
+ :type target: str
+
+ :param type: Type of logs lookup processor.
+ :type type: LogsLookupProcessorType
+ """
+ if default_lookup is not unset:
+ kwargs["default_lookup"] = default_lookup
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.lookup_table = lookup_table
+ self_.source = source
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_lookup_processor_type.py b/datadog_api_client/v1/model/logs_lookup_processor_type.py
new file mode 100644
index 0000000000..4de57f2ffa
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_lookup_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsLookupProcessorType(ModelSimple):
+ """
+ Type of logs lookup processor.
+
+ :param value: If omitted defaults to "lookup-processor". Must be one of ["lookup-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "lookup-processor",
+ }
+ LOOKUP_PROCESSOR: ClassVar["LogsLookupProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsLookupProcessorType.LOOKUP_PROCESSOR = LogsLookupProcessorType("lookup-processor")
diff --git a/datadog_api_client/v1/model/logs_message_remapper.py b/datadog_api_client/v1/model/logs_message_remapper.py
new file mode 100644
index 0000000000..4f9dc78594
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_message_remapper.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_message_remapper_type import LogsMessageRemapperType
+
+class LogsMessageRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_message_remapper_type import LogsMessageRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "type": (LogsMessageRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsMessageRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The message is a key attribute in Datadog.
+ It is displayed in the message column of the Log Explorer and you can do full string search on it.
+ Use this Processor to define one or more attributes as the official log message.
+
+ **Note:** If multiple log message remapper processors can be applied to a given log,
+ only the first one (according to the pipeline order) is taken into account.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param type: Type of logs message remapper.
+ :type type: LogsMessageRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+ sources = kwargs.get("sources", ['msg'])
+
+
+ self_.sources = sources
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_message_remapper_type.py b/datadog_api_client/v1/model/logs_message_remapper_type.py
new file mode 100644
index 0000000000..625f2292f3
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_message_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsMessageRemapperType(ModelSimple):
+ """
+ Type of logs message remapper.
+
+ :param value: If omitted defaults to "message-remapper". Must be one of ["message-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "message-remapper",
+ }
+ MESSAGE_REMAPPER: ClassVar["LogsMessageRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsMessageRemapperType.MESSAGE_REMAPPER = LogsMessageRemapperType("message-remapper")
diff --git a/datadog_api_client/v1/model/logs_pipeline.py b/datadog_api_client/v1/model/logs_pipeline.py
new file mode 100644
index 0000000000..a01a42bd11
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_pipeline.py
@@ -0,0 +1,137 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ from datadog_api_client.v1.model.logs_processor import LogsProcessor
+ from datadog_api_client.v1.model.logs_grok_parser import LogsGrokParser
+ from datadog_api_client.v1.model.logs_date_remapper import LogsDateRemapper
+ from datadog_api_client.v1.model.logs_status_remapper import LogsStatusRemapper
+ from datadog_api_client.v1.model.logs_service_remapper import LogsServiceRemapper
+ from datadog_api_client.v1.model.logs_message_remapper import LogsMessageRemapper
+ from datadog_api_client.v1.model.logs_attribute_remapper import LogsAttributeRemapper
+ from datadog_api_client.v1.model.logs_url_parser import LogsURLParser
+ from datadog_api_client.v1.model.logs_user_agent_parser import LogsUserAgentParser
+ from datadog_api_client.v1.model.logs_category_processor import LogsCategoryProcessor
+ from datadog_api_client.v1.model.logs_arithmetic_processor import LogsArithmeticProcessor
+ from datadog_api_client.v1.model.logs_string_builder_processor import LogsStringBuilderProcessor
+ from datadog_api_client.v1.model.logs_pipeline_processor import LogsPipelineProcessor
+ from datadog_api_client.v1.model.logs_geo_ip_parser import LogsGeoIPParser
+ from datadog_api_client.v1.model.logs_lookup_processor import LogsLookupProcessor
+ from datadog_api_client.v1.model.reference_table_logs_lookup_processor import ReferenceTableLogsLookupProcessor
+ from datadog_api_client.v1.model.logs_trace_remapper import LogsTraceRemapper
+ from datadog_api_client.v1.model.logs_span_remapper import LogsSpanRemapper
+ from datadog_api_client.v1.model.logs_array_processor import LogsArrayProcessor
+ from datadog_api_client.v1.model.logs_decoder_processor import LogsDecoderProcessor
+ from datadog_api_client.v1.model.logs_schema_processor import LogsSchemaProcessor
+ from datadog_api_client.v1.model.logs_exclude_attribute_processor import LogsExcludeAttributeProcessor
+ from datadog_api_client.v1.model.logs_array_map_processor import LogsArrayMapProcessor
+
+class LogsPipeline(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ from datadog_api_client.v1.model.logs_processor import LogsProcessor
+ return {
+ "description": (str,),
+ "filter": (LogsFilter,),
+ "id": (str,),
+ "is_enabled": (bool,),
+ "is_read_only": (bool,),
+ "name": (str,),
+ "processors": ([LogsProcessor],),
+ "tags": ([str],),
+ "type": (str,),
+ }
+ attribute_map = {
+ "description": "description",
+ "filter": "filter",
+ "id": "id",
+ "is_enabled": "is_enabled",
+ "is_read_only": "is_read_only",
+ "name": "name",
+ "processors": "processors",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "id",
+ "is_read_only",
+ "type",
+ }
+
+ def __init__(self_, name: str, description: Union[str, UnsetType]=unset, filter: Union[LogsFilter, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_enabled: Union[bool, UnsetType]=unset, is_read_only: Union[bool, UnsetType]=unset, processors: Union[List[Union[LogsProcessor, LogsGrokParser, LogsDateRemapper, LogsStatusRemapper, LogsServiceRemapper, LogsMessageRemapper, LogsAttributeRemapper, LogsURLParser, LogsUserAgentParser, LogsCategoryProcessor, LogsArithmeticProcessor, LogsStringBuilderProcessor, LogsPipelineProcessor, LogsGeoIPParser, LogsLookupProcessor, ReferenceTableLogsLookupProcessor, LogsTraceRemapper, LogsSpanRemapper, LogsArrayProcessor, LogsDecoderProcessor, LogsSchemaProcessor, LogsExcludeAttributeProcessor, LogsArrayMapProcessor]], UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Pipelines and processors operate on incoming logs,
+ parsing and transforming them into structured attributes for easier querying.
+
+ **Note** : These endpoints are only available for admin users.
+ Make sure to use an application key created by an admin.
+
+ :param description: A description of the pipeline.
+ :type description: str, optional
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter, optional
+
+ :param id: ID of the pipeline.
+ :type id: str, optional
+
+ :param is_enabled: Whether or not the pipeline is enabled.
+ :type is_enabled: bool, optional
+
+ :param is_read_only: Whether or not the pipeline can be edited.
+ :type is_read_only: bool, optional
+
+ :param name: Name of the pipeline.
+ :type name: str
+
+ :param processors: Ordered list of processors in this pipeline.
+ :type processors: [LogsProcessor], optional
+
+ :param tags: A list of tags associated with the pipeline.
+ :type tags: [str], optional
+
+ :param type: Type of pipeline.
+ :type type: str, optional
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if id is not unset:
+ kwargs["id"] = id
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if is_read_only is not unset:
+ kwargs["is_read_only"] = is_read_only
+ if processors is not unset:
+ kwargs["processors"] = processors
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/logs_pipeline_list.py b/datadog_api_client/v1/model/logs_pipeline_list.py
new file mode 100644
index 0000000000..0d0b149655
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_pipeline_list.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsPipelineList(ModelSimple):
+ """
+ Array of all log pipeline objects configured for the organization.
+
+
+ :type value: [LogsPipeline]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_pipeline import LogsPipeline
+ return {
+ "value": ([LogsPipeline],),
+ }
diff --git a/datadog_api_client/v1/model/logs_pipeline_processor.py b/datadog_api_client/v1/model/logs_pipeline_processor.py
new file mode 100644
index 0000000000..2d24308ccb
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_pipeline_processor.py
@@ -0,0 +1,119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ from datadog_api_client.v1.model.logs_processor import LogsProcessor
+ from datadog_api_client.v1.model.logs_pipeline_processor_type import LogsPipelineProcessorType
+ from datadog_api_client.v1.model.logs_grok_parser import LogsGrokParser
+ from datadog_api_client.v1.model.logs_date_remapper import LogsDateRemapper
+ from datadog_api_client.v1.model.logs_status_remapper import LogsStatusRemapper
+ from datadog_api_client.v1.model.logs_service_remapper import LogsServiceRemapper
+ from datadog_api_client.v1.model.logs_message_remapper import LogsMessageRemapper
+ from datadog_api_client.v1.model.logs_attribute_remapper import LogsAttributeRemapper
+ from datadog_api_client.v1.model.logs_url_parser import LogsURLParser
+ from datadog_api_client.v1.model.logs_user_agent_parser import LogsUserAgentParser
+ from datadog_api_client.v1.model.logs_category_processor import LogsCategoryProcessor
+ from datadog_api_client.v1.model.logs_arithmetic_processor import LogsArithmeticProcessor
+ from datadog_api_client.v1.model.logs_string_builder_processor import LogsStringBuilderProcessor
+ from datadog_api_client.v1.model.logs_geo_ip_parser import LogsGeoIPParser
+ from datadog_api_client.v1.model.logs_lookup_processor import LogsLookupProcessor
+ from datadog_api_client.v1.model.reference_table_logs_lookup_processor import ReferenceTableLogsLookupProcessor
+ from datadog_api_client.v1.model.logs_trace_remapper import LogsTraceRemapper
+ from datadog_api_client.v1.model.logs_span_remapper import LogsSpanRemapper
+ from datadog_api_client.v1.model.logs_array_processor import LogsArrayProcessor
+ from datadog_api_client.v1.model.logs_decoder_processor import LogsDecoderProcessor
+ from datadog_api_client.v1.model.logs_schema_processor import LogsSchemaProcessor
+ from datadog_api_client.v1.model.logs_exclude_attribute_processor import LogsExcludeAttributeProcessor
+ from datadog_api_client.v1.model.logs_array_map_processor import LogsArrayMapProcessor
+
+class LogsPipelineProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ from datadog_api_client.v1.model.logs_processor import LogsProcessor
+ from datadog_api_client.v1.model.logs_pipeline_processor_type import LogsPipelineProcessorType
+ return {
+ "description": (str,),
+ "filter": (LogsFilter,),
+ "is_enabled": (bool,),
+ "name": (str,),
+ "processors": ([LogsProcessor],),
+ "tags": ([str],),
+ "type": (LogsPipelineProcessorType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "filter": "filter",
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "processors": "processors",
+ "tags": "tags",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsPipelineProcessorType, description: Union[str, UnsetType]=unset, filter: Union[LogsFilter, UnsetType]=unset, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, processors: Union[List[Union[LogsProcessor, LogsGrokParser, LogsDateRemapper, LogsStatusRemapper, LogsServiceRemapper, LogsMessageRemapper, LogsAttributeRemapper, LogsURLParser, LogsUserAgentParser, LogsCategoryProcessor, LogsArithmeticProcessor, LogsStringBuilderProcessor, LogsPipelineProcessor, LogsGeoIPParser, LogsLookupProcessor, ReferenceTableLogsLookupProcessor, LogsTraceRemapper, LogsSpanRemapper, LogsArrayProcessor, LogsDecoderProcessor, LogsSchemaProcessor, LogsExcludeAttributeProcessor, LogsArrayMapProcessor]], UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Nested Pipelines are pipelines within a pipeline. Use Nested Pipelines to split the processing into two steps.
+ For example, first use a high-level filtering such as team and then a second level of filtering based on the
+ integration, service, or any other tag or attribute.
+
+ A pipeline can contain Nested Pipelines and Processors whereas a Nested Pipeline can only contain Processors.
+
+ :param description: A description of the pipeline.
+ :type description: str, optional
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter, optional
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param processors: Ordered list of processors in this pipeline.
+ :type processors: [LogsProcessor], optional
+
+ :param tags: A list of tags associated with the pipeline.
+ :type tags: [str], optional
+
+ :param type: Type of logs pipeline processor.
+ :type type: LogsPipelineProcessorType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if filter is not unset:
+ kwargs["filter"] = filter
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if processors is not unset:
+ kwargs["processors"] = processors
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_pipeline_processor_type.py b/datadog_api_client/v1/model/logs_pipeline_processor_type.py
new file mode 100644
index 0000000000..0d4eb60143
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_pipeline_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsPipelineProcessorType(ModelSimple):
+ """
+ Type of logs pipeline processor.
+
+ :param value: If omitted defaults to "pipeline". Must be one of ["pipeline"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "pipeline",
+ }
+ PIPELINE: ClassVar["LogsPipelineProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsPipelineProcessorType.PIPELINE = LogsPipelineProcessorType("pipeline")
diff --git a/datadog_api_client/v1/model/logs_pipelines_order.py b/datadog_api_client/v1/model/logs_pipelines_order.py
new file mode 100644
index 0000000000..77b0ad9006
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_pipelines_order.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsPipelinesOrder(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "pipeline_ids": ([str],),
+ }
+ attribute_map = {
+ "pipeline_ids": "pipeline_ids",
+ }
+
+ def __init__(self_, pipeline_ids: List[str], **kwargs):
+ """
+ Object containing the ordered list of pipeline IDs.
+
+ :param pipeline_ids: Ordered Array of ```` strings, the order of pipeline IDs in the array
+ define the overall Pipelines order for Datadog.
+ :type pipeline_ids: [str]
+ """
+ super().__init__(kwargs)
+
+
+ self_.pipeline_ids = pipeline_ids
diff --git a/datadog_api_client/v1/model/logs_processor.py b/datadog_api_client/v1/model/logs_processor.py
new file mode 100644
index 0000000000..3fe25b97d9
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_processor.py
@@ -0,0 +1,192 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsProcessor(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Definition of a logs processor.
+
+ :param grok: Set of rules for the grok parser.
+ :type grok: LogsGrokParserRules
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param samples: List of sample logs to test this grok parser.
+ :type samples: [str], optional
+
+ :param source: Name of the log attribute to parse.
+ :type source: str
+
+ :param type: Type of logs grok parser.
+ :type type: LogsGrokParserType
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param override_on_conflict: Whether to override the target element if it's already set.
+ :type override_on_conflict: bool, optional
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param source_type: Defines if the sources are from log `attribute` or `tag`.
+ :type source_type: str, optional
+
+ :param target: Final attribute or tag name to remap the sources to.
+ :type target: str
+
+ :param target_format: If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types.
+ If the `target_type` is `tag`, this parameter may not be specified.
+ :type target_format: TargetFormatType, optional
+
+ :param target_type: Defines if the final attribute or tag name is from log `attribute` or `tag`.
+ :type target_type: str, optional
+
+ :param normalize_ending_slashes: Normalize the ending slashes or not.
+ :type normalize_ending_slashes: bool, none_type, optional
+
+ :param is_encoded: Define if the source attribute is URL encoded or not.
+ :type is_encoded: bool, optional
+
+ :param categories: Array of filters to match or not a log and their
+ corresponding `name` to assign a custom value to the log.
+ :type categories: [LogsCategoryProcessorCategory]
+
+ :param expression: Arithmetic operation between one or more log attributes.
+ :type expression: str
+
+ :param is_replace_missing: If `true`, it replaces all missing attributes of expression by `0`, `false`
+ skip the operation if an attribute is missing.
+ :type is_replace_missing: bool, optional
+
+ :param template: A formula with one or more attributes and raw text.
+ :type template: str
+
+ :param description: A description of the pipeline.
+ :type description: str, optional
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter, optional
+
+ :param processors: Ordered list of processors in this pipeline.
+ :type processors: [LogsProcessor], optional
+
+ :param tags: A list of tags associated with the pipeline.
+ :type tags: [str], optional
+
+ :param default_lookup: Value to set the target attribute if the source value is not found in the list.
+ :type default_lookup: str, optional
+
+ :param lookup_table: Mapping table of values for the source attribute and their associated target attribute values,
+ formatted as `["source_key1,target_value1", "source_key2,target_value2"]`
+ :type lookup_table: [str]
+
+ :param lookup_enrichment_table: Name of the Reference Table for the source attribute and their associated target attribute values.
+ :type lookup_enrichment_table: str
+
+ :param operation: Configuration of the array processor operation to perform.
+ :type operation: LogsArrayProcessorOperation
+
+ :param binary_to_text_encoding: The encoding used to represent the binary data.
+ :type binary_to_text_encoding: LogsDecoderProcessorBinaryToTextEncoding
+
+ :param input_representation: The original representation of input string.
+ :type input_representation: LogsDecoderProcessorInputRepresentation
+
+ :param mappers: The `LogsSchemaProcessor` `mappers`.
+ :type mappers: [LogsSchemaMapper]
+
+ :param schema: Configuration of the schema data to use.
+ :type schema: LogsSchemaData
+
+ :param attribute_to_exclude: Name of the log attribute to remove from the log event.
+ :type attribute_to_exclude: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.logs_grok_parser import LogsGrokParser
+ from datadog_api_client.v1.model.logs_date_remapper import LogsDateRemapper
+ from datadog_api_client.v1.model.logs_status_remapper import LogsStatusRemapper
+ from datadog_api_client.v1.model.logs_service_remapper import LogsServiceRemapper
+ from datadog_api_client.v1.model.logs_message_remapper import LogsMessageRemapper
+ from datadog_api_client.v1.model.logs_attribute_remapper import LogsAttributeRemapper
+ from datadog_api_client.v1.model.logs_url_parser import LogsURLParser
+ from datadog_api_client.v1.model.logs_user_agent_parser import LogsUserAgentParser
+ from datadog_api_client.v1.model.logs_category_processor import LogsCategoryProcessor
+ from datadog_api_client.v1.model.logs_arithmetic_processor import LogsArithmeticProcessor
+ from datadog_api_client.v1.model.logs_string_builder_processor import LogsStringBuilderProcessor
+ from datadog_api_client.v1.model.logs_pipeline_processor import LogsPipelineProcessor
+ from datadog_api_client.v1.model.logs_geo_ip_parser import LogsGeoIPParser
+ from datadog_api_client.v1.model.logs_lookup_processor import LogsLookupProcessor
+ from datadog_api_client.v1.model.reference_table_logs_lookup_processor import ReferenceTableLogsLookupProcessor
+ from datadog_api_client.v1.model.logs_trace_remapper import LogsTraceRemapper
+ from datadog_api_client.v1.model.logs_span_remapper import LogsSpanRemapper
+ from datadog_api_client.v1.model.logs_array_processor import LogsArrayProcessor
+ from datadog_api_client.v1.model.logs_decoder_processor import LogsDecoderProcessor
+ from datadog_api_client.v1.model.logs_schema_processor import LogsSchemaProcessor
+ from datadog_api_client.v1.model.logs_exclude_attribute_processor import LogsExcludeAttributeProcessor
+ from datadog_api_client.v1.model.logs_array_map_processor import LogsArrayMapProcessor
+ return {
+ "oneOf": [
+ LogsGrokParser,
+ LogsDateRemapper,
+ LogsStatusRemapper,
+ LogsServiceRemapper,
+ LogsMessageRemapper,
+ LogsAttributeRemapper,
+ LogsURLParser,
+ LogsUserAgentParser,
+ LogsCategoryProcessor,
+ LogsArithmeticProcessor,
+ LogsStringBuilderProcessor,
+ LogsPipelineProcessor,
+ LogsGeoIPParser,
+ LogsLookupProcessor,
+ ReferenceTableLogsLookupProcessor,
+ LogsTraceRemapper,
+ LogsSpanRemapper,
+ LogsArrayProcessor,
+ LogsDecoderProcessor,
+ LogsSchemaProcessor,
+ LogsExcludeAttributeProcessor,
+ LogsArrayMapProcessor,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/logs_query_compute.py b/datadog_api_client/v1/model/logs_query_compute.py
new file mode 100644
index 0000000000..a9eea80f1e
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_query_compute.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsQueryCompute(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "aggregation": (str,),
+ "facet": (str,),
+ "interval": (int,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "facet": "facet",
+ "interval": "interval",
+ }
+
+ def __init__(self_, aggregation: str, facet: Union[str, UnsetType]=unset, interval: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Define computation for a log query.
+
+ :param aggregation: The aggregation method.
+ :type aggregation: str
+
+ :param facet: Facet name.
+ :type facet: str, optional
+
+ :param interval: Define a time interval in seconds.
+ :type interval: int, optional
+ """
+ if facet is not unset:
+ kwargs["facet"] = facet
+ if interval is not unset:
+ kwargs["interval"] = interval
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/logs_retention_agg_sum_usage.py b/datadog_api_client/v1/model/logs_retention_agg_sum_usage.py
new file mode 100644
index 0000000000..27adeb3f65
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_retention_agg_sum_usage.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsRetentionAggSumUsage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "logs_indexed_logs_usage_agg_sum": (int,),
+ "logs_live_indexed_logs_usage_agg_sum": (int,),
+ "logs_rehydrated_indexed_logs_usage_agg_sum": (int,),
+ "retention": (str,),
+ }
+ attribute_map = {
+ "logs_indexed_logs_usage_agg_sum": "logs_indexed_logs_usage_agg_sum",
+ "logs_live_indexed_logs_usage_agg_sum": "logs_live_indexed_logs_usage_agg_sum",
+ "logs_rehydrated_indexed_logs_usage_agg_sum": "logs_rehydrated_indexed_logs_usage_agg_sum",
+ "retention": "retention",
+ }
+
+ def __init__(self_, logs_indexed_logs_usage_agg_sum: Union[int, UnsetType]=unset, logs_live_indexed_logs_usage_agg_sum: Union[int, UnsetType]=unset, logs_rehydrated_indexed_logs_usage_agg_sum: Union[int, UnsetType]=unset, retention: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing indexed logs usage aggregated across organizations and months for a retention period.
+
+ :param logs_indexed_logs_usage_agg_sum: Total indexed logs for this retention period.
+ :type logs_indexed_logs_usage_agg_sum: int, optional
+
+ :param logs_live_indexed_logs_usage_agg_sum: Live indexed logs for this retention period.
+ :type logs_live_indexed_logs_usage_agg_sum: int, optional
+
+ :param logs_rehydrated_indexed_logs_usage_agg_sum: Rehydrated indexed logs for this retention period.
+ :type logs_rehydrated_indexed_logs_usage_agg_sum: int, optional
+
+ :param retention: The retention period in days or "custom" for all custom retention periods.
+ :type retention: str, optional
+ """
+ if logs_indexed_logs_usage_agg_sum is not unset:
+ kwargs["logs_indexed_logs_usage_agg_sum"] = logs_indexed_logs_usage_agg_sum
+ if logs_live_indexed_logs_usage_agg_sum is not unset:
+ kwargs["logs_live_indexed_logs_usage_agg_sum"] = logs_live_indexed_logs_usage_agg_sum
+ if logs_rehydrated_indexed_logs_usage_agg_sum is not unset:
+ kwargs["logs_rehydrated_indexed_logs_usage_agg_sum"] = logs_rehydrated_indexed_logs_usage_agg_sum
+ if retention is not unset:
+ kwargs["retention"] = retention
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_retention_sum_usage.py b/datadog_api_client/v1/model/logs_retention_sum_usage.py
new file mode 100644
index 0000000000..beba9c5c16
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_retention_sum_usage.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsRetentionSumUsage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "logs_indexed_logs_usage_sum": (int,),
+ "logs_live_indexed_logs_usage_sum": (int,),
+ "logs_rehydrated_indexed_logs_usage_sum": (int,),
+ "retention": (str,),
+ }
+ attribute_map = {
+ "logs_indexed_logs_usage_sum": "logs_indexed_logs_usage_sum",
+ "logs_live_indexed_logs_usage_sum": "logs_live_indexed_logs_usage_sum",
+ "logs_rehydrated_indexed_logs_usage_sum": "logs_rehydrated_indexed_logs_usage_sum",
+ "retention": "retention",
+ }
+
+ def __init__(self_, logs_indexed_logs_usage_sum: Union[int, UnsetType]=unset, logs_live_indexed_logs_usage_sum: Union[int, UnsetType]=unset, logs_rehydrated_indexed_logs_usage_sum: Union[int, UnsetType]=unset, retention: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing indexed logs usage grouped by retention period and summed.
+
+ :param logs_indexed_logs_usage_sum: Total indexed logs for this retention period.
+ :type logs_indexed_logs_usage_sum: int, optional
+
+ :param logs_live_indexed_logs_usage_sum: Live indexed logs for this retention period.
+ :type logs_live_indexed_logs_usage_sum: int, optional
+
+ :param logs_rehydrated_indexed_logs_usage_sum: Rehydrated indexed logs for this retention period.
+ :type logs_rehydrated_indexed_logs_usage_sum: int, optional
+
+ :param retention: The retention period in days or "custom" for all custom retention periods.
+ :type retention: str, optional
+ """
+ if logs_indexed_logs_usage_sum is not unset:
+ kwargs["logs_indexed_logs_usage_sum"] = logs_indexed_logs_usage_sum
+ if logs_live_indexed_logs_usage_sum is not unset:
+ kwargs["logs_live_indexed_logs_usage_sum"] = logs_live_indexed_logs_usage_sum
+ if logs_rehydrated_indexed_logs_usage_sum is not unset:
+ kwargs["logs_rehydrated_indexed_logs_usage_sum"] = logs_rehydrated_indexed_logs_usage_sum
+ if retention is not unset:
+ kwargs["retention"] = retention
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_schema_category_mapper.py b/datadog_api_client/v1/model/logs_schema_category_mapper.py
new file mode 100644
index 0000000000..23ca273380
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_category_mapper.py
@@ -0,0 +1,92 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_schema_category_mapper_category import LogsSchemaCategoryMapperCategory
+ from datadog_api_client.v1.model.logs_schema_category_mapper_fallback import LogsSchemaCategoryMapperFallback
+ from datadog_api_client.v1.model.logs_schema_category_mapper_targets import LogsSchemaCategoryMapperTargets
+ from datadog_api_client.v1.model.logs_schema_category_mapper_type import LogsSchemaCategoryMapperType
+
+class LogsSchemaCategoryMapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_schema_category_mapper_category import LogsSchemaCategoryMapperCategory
+ from datadog_api_client.v1.model.logs_schema_category_mapper_fallback import LogsSchemaCategoryMapperFallback
+ from datadog_api_client.v1.model.logs_schema_category_mapper_targets import LogsSchemaCategoryMapperTargets
+ from datadog_api_client.v1.model.logs_schema_category_mapper_type import LogsSchemaCategoryMapperType
+ return {
+ "categories": ([LogsSchemaCategoryMapperCategory],),
+ "fallback": (LogsSchemaCategoryMapperFallback,),
+ "name": (str,),
+ "targets": (LogsSchemaCategoryMapperTargets,),
+ "type": (LogsSchemaCategoryMapperType,),
+ }
+ attribute_map = {
+ "categories": "categories",
+ "fallback": "fallback",
+ "name": "name",
+ "targets": "targets",
+ "type": "type",
+ }
+
+ def __init__(self_, categories: List[LogsSchemaCategoryMapperCategory], name: str, targets: LogsSchemaCategoryMapperTargets, type: LogsSchemaCategoryMapperType, fallback: Union[LogsSchemaCategoryMapperFallback, UnsetType]=unset, **kwargs):
+ """
+ Use the Schema Category Mapper to categorize log event into enum fields.
+ In the case of OCSF, they can be used to map sibling fields which are composed of an ID and a name.
+
+ **Notes** :
+
+ * The syntax of the query is the one of Logs Explorer search bar.
+ The query can be done on any log attribute or tag, whether it is a facet or not.
+ Wildcards can also be used inside your query.
+ * Categories are executed in order and processing stops at the first match.
+ Make sure categories are properly ordered in case a log could match multiple queries.
+ * Sibling fields always have a numerical ID field and a human-readable string name.
+ * A fallback section handles cases where the name or ID value matches a specific value.
+ If the name matches "Other" or the ID matches 99, the value of the sibling name field will be pulled from a source field from the original log.
+
+ :param categories: Array of filters to match or not a log and their
+ corresponding ``name`` to assign a custom value to the log.
+ :type categories: [LogsSchemaCategoryMapperCategory]
+
+ :param fallback: Used to override hardcoded category values with a value pulled from a source attribute on the log.
+ :type fallback: LogsSchemaCategoryMapperFallback, optional
+
+ :param name: Name of the logs schema category mapper.
+ :type name: str
+
+ :param targets: Name of the target attributes which value is defined by the matching category.
+ :type targets: LogsSchemaCategoryMapperTargets
+
+ :param type: Type of logs schema category mapper.
+ :type type: LogsSchemaCategoryMapperType
+ """
+ if fallback is not unset:
+ kwargs["fallback"] = fallback
+ super().__init__(kwargs)
+
+
+ self_.categories = categories
+ self_.name = name
+ self_.targets = targets
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_schema_category_mapper_category.py b/datadog_api_client/v1/model/logs_schema_category_mapper_category.py
new file mode 100644
index 0000000000..47ba492dd3
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_category_mapper_category.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+
+class LogsSchemaCategoryMapperCategory(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_filter import LogsFilter
+ return {
+ "filter": (LogsFilter,),
+ "id": (int,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "filter": "filter",
+ "id": "id",
+ "name": "name",
+ }
+
+ def __init__(self_, filter: LogsFilter, id: int, name: str, **kwargs):
+ """
+ Object describing the logs filter with corresponding category ID and name assignment.
+
+ :param filter: Filter for logs.
+ :type filter: LogsFilter
+
+ :param id: ID to inject into the category.
+ :type id: int
+
+ :param name: Value to assign to target schema field.
+ :type name: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.filter = filter
+ self_.id = id
+ self_.name = name
diff --git a/datadog_api_client/v1/model/logs_schema_category_mapper_fallback.py b/datadog_api_client/v1/model/logs_schema_category_mapper_fallback.py
new file mode 100644
index 0000000000..923dfa0334
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_category_mapper_fallback.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsSchemaCategoryMapperFallback(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "sources": ({str: ([str],)},),
+ "values": ({str: (str,)},),
+ }
+ attribute_map = {
+ "sources": "sources",
+ "values": "values",
+ }
+
+ def __init__(self_, sources: Union[Dict[str, List[str]], UnsetType]=unset, values: Union[Dict[str, str], UnsetType]=unset, **kwargs):
+ """
+ Used to override hardcoded category values with a value pulled from a source attribute on the log.
+
+ :param sources: Fallback sources used to populate value of field.
+ :type sources: {str: ([str],)}, optional
+
+ :param values: Values that define when the fallback is used.
+ :type values: {str: (str,)}, optional
+ """
+ if sources is not unset:
+ kwargs["sources"] = sources
+ if values is not unset:
+ kwargs["values"] = values
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_schema_category_mapper_targets.py b/datadog_api_client/v1/model/logs_schema_category_mapper_targets.py
new file mode 100644
index 0000000000..3aa383d945
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_category_mapper_targets.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsSchemaCategoryMapperTargets(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "id": "id",
+ "name": "name",
+ }
+
+ def __init__(self_, id: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Name of the target attributes which value is defined by the matching category.
+
+ :param id: ID of the field to map log attributes to.
+ :type id: str, optional
+
+ :param name: Name of the field to map log attributes to.
+ :type name: str, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/logs_schema_category_mapper_type.py b/datadog_api_client/v1/model/logs_schema_category_mapper_type.py
new file mode 100644
index 0000000000..1315e4e8a5
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_category_mapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsSchemaCategoryMapperType(ModelSimple):
+ """
+ Type of logs schema category mapper.
+
+ :param value: If omitted defaults to "schema-category-mapper". Must be one of ["schema-category-mapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "schema-category-mapper",
+ }
+ SCHEMA_CATEGORY_MAPPER: ClassVar["LogsSchemaCategoryMapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsSchemaCategoryMapperType.SCHEMA_CATEGORY_MAPPER = LogsSchemaCategoryMapperType("schema-category-mapper")
diff --git a/datadog_api_client/v1/model/logs_schema_data.py b/datadog_api_client/v1/model/logs_schema_data.py
new file mode 100644
index 0000000000..4b5f364ed7
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_data.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsSchemaData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "class_name": (str,),
+ "class_uid": (int,),
+ "profiles": ([str],),
+ "schema_type": (str,),
+ "version": (str,),
+ }
+ attribute_map = {
+ "class_name": "class_name",
+ "class_uid": "class_uid",
+ "profiles": "profiles",
+ "schema_type": "schema_type",
+ "version": "version",
+ }
+
+ def __init__(self_, class_name: str, class_uid: int, schema_type: str, version: str, profiles: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Configuration of the schema data to use.
+
+ :param class_name: Class name of the schema to use.
+ :type class_name: str
+
+ :param class_uid: Class UID of the schema to use.
+ :type class_uid: int
+
+ :param profiles: Optional list of profiles to modify the schema.
+ :type profiles: [str], optional
+
+ :param schema_type: Type of schema to use.
+ :type schema_type: str
+
+ :param version: Version of the schema to use.
+ :type version: str
+ """
+ if profiles is not unset:
+ kwargs["profiles"] = profiles
+ super().__init__(kwargs)
+
+
+ self_.class_name = class_name
+ self_.class_uid = class_uid
+ self_.schema_type = schema_type
+ self_.version = version
diff --git a/datadog_api_client/v1/model/logs_schema_mapper.py b/datadog_api_client/v1/model/logs_schema_mapper.py
new file mode 100644
index 0000000000..e466a5a112
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_mapper.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class LogsSchemaMapper(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Configuration of the schema processor mapper to use.
+
+ :param name: Name of the logs schema remapper.
+ :type name: str
+
+ :param override_on_conflict: Whether to override the target element if it's already set.
+ :type override_on_conflict: bool, optional
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param target: Target field to map log source field to.
+ :type target: str
+
+ :param target_format: If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types.
+ If the `target_type` is `tag`, this parameter may not be specified.
+ :type target_format: TargetFormatType, optional
+
+ :param type: Type of logs schema remapper.
+ :type type: LogsSchemaRemapperType
+
+ :param categories: Array of filters to match or not a log and their
+ corresponding `name` to assign a custom value to the log.
+ :type categories: [LogsSchemaCategoryMapperCategory]
+
+ :param fallback: Used to override hardcoded category values with a value pulled from a source attribute on the log.
+ :type fallback: LogsSchemaCategoryMapperFallback, optional
+
+ :param targets: Name of the target attributes which value is defined by the matching category.
+ :type targets: LogsSchemaCategoryMapperTargets
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.logs_schema_remapper import LogsSchemaRemapper
+ from datadog_api_client.v1.model.logs_schema_category_mapper import LogsSchemaCategoryMapper
+ return {
+ "oneOf": [
+ LogsSchemaRemapper,
+ LogsSchemaCategoryMapper,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/logs_schema_processor.py b/datadog_api_client/v1/model/logs_schema_processor.py
new file mode 100644
index 0000000000..c91dcf5165
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_processor.py
@@ -0,0 +1,79 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_schema_mapper import LogsSchemaMapper
+ from datadog_api_client.v1.model.logs_schema_data import LogsSchemaData
+ from datadog_api_client.v1.model.logs_schema_processor_type import LogsSchemaProcessorType
+ from datadog_api_client.v1.model.logs_schema_remapper import LogsSchemaRemapper
+ from datadog_api_client.v1.model.logs_schema_category_mapper import LogsSchemaCategoryMapper
+
+class LogsSchemaProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_schema_mapper import LogsSchemaMapper
+ from datadog_api_client.v1.model.logs_schema_data import LogsSchemaData
+ from datadog_api_client.v1.model.logs_schema_processor_type import LogsSchemaProcessorType
+ return {
+ "is_enabled": (bool,),
+ "mappers": ([LogsSchemaMapper],),
+ "name": (str,),
+ "schema": (LogsSchemaData,),
+ "type": (LogsSchemaProcessorType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "mappers": "mappers",
+ "name": "name",
+ "schema": "schema",
+ "type": "type",
+ }
+
+ def __init__(self_, mappers: List[Union[LogsSchemaMapper, LogsSchemaRemapper, LogsSchemaCategoryMapper]], name: str, schema: LogsSchemaData, type: LogsSchemaProcessorType, is_enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ A processor that has additional validations and checks for a given schema. Currently supported schema types include OCSF.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param mappers: The ``LogsSchemaProcessor`` ``mappers``.
+ :type mappers: [LogsSchemaMapper]
+
+ :param name: Name of the processor.
+ :type name: str
+
+ :param schema: Configuration of the schema data to use.
+ :type schema: LogsSchemaData
+
+ :param type: Type of logs schema processor.
+ :type type: LogsSchemaProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ super().__init__(kwargs)
+
+
+ self_.mappers = mappers
+ self_.name = name
+ self_.schema = schema
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_schema_processor_type.py b/datadog_api_client/v1/model/logs_schema_processor_type.py
new file mode 100644
index 0000000000..80ef8f0aa4
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsSchemaProcessorType(ModelSimple):
+ """
+ Type of logs schema processor.
+
+ :param value: If omitted defaults to "schema-processor". Must be one of ["schema-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "schema-processor",
+ }
+ SCHEMA_PROCESSOR: ClassVar["LogsSchemaProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsSchemaProcessorType.SCHEMA_PROCESSOR = LogsSchemaProcessorType("schema-processor")
diff --git a/datadog_api_client/v1/model/logs_schema_remapper.py b/datadog_api_client/v1/model/logs_schema_remapper.py
new file mode 100644
index 0000000000..f0bedfb319
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_remapper.py
@@ -0,0 +1,91 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.target_format_type import TargetFormatType
+ from datadog_api_client.v1.model.logs_schema_remapper_type import LogsSchemaRemapperType
+
+class LogsSchemaRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.target_format_type import TargetFormatType
+ from datadog_api_client.v1.model.logs_schema_remapper_type import LogsSchemaRemapperType
+ return {
+ "name": (str,),
+ "override_on_conflict": (bool,),
+ "preserve_source": (bool,),
+ "sources": ([str],),
+ "target": (str,),
+ "target_format": (TargetFormatType,),
+ "type": (LogsSchemaRemapperType,),
+ }
+ attribute_map = {
+ "name": "name",
+ "override_on_conflict": "override_on_conflict",
+ "preserve_source": "preserve_source",
+ "sources": "sources",
+ "target": "target",
+ "target_format": "target_format",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, sources: List[str], target: str, type: LogsSchemaRemapperType, override_on_conflict: Union[bool, UnsetType]=unset, preserve_source: Union[bool, UnsetType]=unset, target_format: Union[TargetFormatType, UnsetType]=unset, **kwargs):
+ """
+ The schema remapper maps source log fields to their correct fields.
+
+ :param name: Name of the logs schema remapper.
+ :type name: str
+
+ :param override_on_conflict: Whether to override the target element if it's already set.
+ :type override_on_conflict: bool, optional
+
+ :param preserve_source: Remove or preserve the remapped source element.
+ :type preserve_source: bool, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param target: Target field to map log source field to.
+ :type target: str
+
+ :param target_format: If the ``target_type`` of the remapper is ``attribute`` , try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. ``string`` , ``integer`` , or ``double`` are the possible types.
+ If the ``target_type`` is ``tag`` , this parameter may not be specified.
+ :type target_format: TargetFormatType, optional
+
+ :param type: Type of logs schema remapper.
+ :type type: LogsSchemaRemapperType
+ """
+ if override_on_conflict is not unset:
+ kwargs["override_on_conflict"] = override_on_conflict
+ if preserve_source is not unset:
+ kwargs["preserve_source"] = preserve_source
+ if target_format is not unset:
+ kwargs["target_format"] = target_format
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.sources = sources
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_schema_remapper_type.py b/datadog_api_client/v1/model/logs_schema_remapper_type.py
new file mode 100644
index 0000000000..98ed804608
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_schema_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsSchemaRemapperType(ModelSimple):
+ """
+ Type of logs schema remapper.
+
+ :param value: If omitted defaults to "schema-remapper". Must be one of ["schema-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "schema-remapper",
+ }
+ SCHEMA_REMAPPER: ClassVar["LogsSchemaRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsSchemaRemapperType.SCHEMA_REMAPPER = LogsSchemaRemapperType("schema-remapper")
diff --git a/datadog_api_client/v1/model/logs_service_remapper.py b/datadog_api_client/v1/model/logs_service_remapper.py
new file mode 100644
index 0000000000..a862d9616f
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_service_remapper.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_service_remapper_type import LogsServiceRemapperType
+
+class LogsServiceRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_service_remapper_type import LogsServiceRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "type": (LogsServiceRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "type": "type",
+ }
+
+ def __init__(self_, sources: List[str], type: LogsServiceRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use this processor if you want to assign one or more attributes as the official service.
+
+ **Note:** If multiple service remapper processors can be applied to a given log,
+ only the first one (according to the pipeline order) is taken into account.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param type: Type of logs service remapper.
+ :type type: LogsServiceRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.sources = sources
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_service_remapper_type.py b/datadog_api_client/v1/model/logs_service_remapper_type.py
new file mode 100644
index 0000000000..f80bffe69b
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_service_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsServiceRemapperType(ModelSimple):
+ """
+ Type of logs service remapper.
+
+ :param value: If omitted defaults to "service-remapper". Must be one of ["service-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "service-remapper",
+ }
+ SERVICE_REMAPPER: ClassVar["LogsServiceRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsServiceRemapperType.SERVICE_REMAPPER = LogsServiceRemapperType("service-remapper")
diff --git a/datadog_api_client/v1/model/logs_sort.py b/datadog_api_client/v1/model/logs_sort.py
new file mode 100644
index 0000000000..4fe9c06869
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_sort.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsSort(ModelSimple):
+ """
+ Time-ascending `asc` or time-descending `desc` results.
+
+ :param value: Must be one of ["asc", "desc"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "asc",
+ "desc",
+ }
+ TIME_ASCENDING: ClassVar["LogsSort"]
+ TIME_DESCENDING: ClassVar["LogsSort"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsSort.TIME_ASCENDING = LogsSort("asc")
+LogsSort.TIME_DESCENDING = LogsSort("desc")
diff --git a/datadog_api_client/v1/model/logs_span_remapper.py b/datadog_api_client/v1/model/logs_span_remapper.py
new file mode 100644
index 0000000000..0ec1ae6f3e
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_span_remapper.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_span_remapper_type import LogsSpanRemapperType
+
+class LogsSpanRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_span_remapper_type import LogsSpanRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "type": (LogsSpanRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsSpanRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, sources: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ There are two ways to define correlation between application spans and logs:
+
+ #.
+ Follow the documentation on `how to inject a span ID in the application logs `_.
+ Log integrations automatically handle all remaining setup steps by default.
+
+ #.
+ Use the span remapper processor to define a log attribute as its associated span ID.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str], optional
+
+ :param type: Type of logs span remapper.
+ :type type: LogsSpanRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if sources is not unset:
+ kwargs["sources"] = sources
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_span_remapper_type.py b/datadog_api_client/v1/model/logs_span_remapper_type.py
new file mode 100644
index 0000000000..96ee42dfa9
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_span_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsSpanRemapperType(ModelSimple):
+ """
+ Type of logs span remapper.
+
+ :param value: If omitted defaults to "span-id-remapper". Must be one of ["span-id-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "span-id-remapper",
+ }
+ SPAN_ID_REMAPPER: ClassVar["LogsSpanRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsSpanRemapperType.SPAN_ID_REMAPPER = LogsSpanRemapperType("span-id-remapper")
diff --git a/datadog_api_client/v1/model/logs_status_remapper.py b/datadog_api_client/v1/model/logs_status_remapper.py
new file mode 100644
index 0000000000..cddc127873
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_status_remapper.py
@@ -0,0 +1,86 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_status_remapper_type import LogsStatusRemapperType
+
+class LogsStatusRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_status_remapper_type import LogsStatusRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "type": (LogsStatusRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "type": "type",
+ }
+
+ def __init__(self_, sources: List[str], type: LogsStatusRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use this Processor if you want to assign some attributes as the official status.
+
+ Each incoming status value is mapped as follows.
+
+ * Integers from 0 to 7 map to the Syslog severity standards
+ * Strings beginning with ``emerg`` or f (case-insensitive) map to ``emerg`` (0)
+ * Strings beginning with ``a`` (case-insensitive) map to ``alert`` (1)
+ * Strings beginning with ``c`` (case-insensitive) map to ``critical`` (2)
+ * Strings beginning with ``err`` (case-insensitive) map to ``error`` (3)
+ * Strings beginning with ``w`` (case-insensitive) map to ``warning`` (4)
+ * Strings beginning with ``n`` (case-insensitive) map to ``notice`` (5)
+ * Strings beginning with ``i`` (case-insensitive) map to ``info`` (6)
+ * Strings beginning with ``d`` , ``trace`` or ``verbose`` (case-insensitive) map to ``debug`` (7)
+ * Strings beginning with ``o`` or matching ``OK`` or ``Success`` (case-insensitive) map to OK
+ *
+ All others map to ``info`` (6)
+
+ **Note:** If multiple log status remapper processors can be applied to a given log,
+ only the first one (according to the pipelines order) is taken into account.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param type: Type of logs status remapper.
+ :type type: LogsStatusRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.sources = sources
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_status_remapper_type.py b/datadog_api_client/v1/model/logs_status_remapper_type.py
new file mode 100644
index 0000000000..63f154a542
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_status_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsStatusRemapperType(ModelSimple):
+ """
+ Type of logs status remapper.
+
+ :param value: If omitted defaults to "status-remapper". Must be one of ["status-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "status-remapper",
+ }
+ STATUS_REMAPPER: ClassVar["LogsStatusRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsStatusRemapperType.STATUS_REMAPPER = LogsStatusRemapperType("status-remapper")
diff --git a/datadog_api_client/v1/model/logs_string_builder_processor.py b/datadog_api_client/v1/model/logs_string_builder_processor.py
new file mode 100644
index 0000000000..5ac4c117d3
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_string_builder_processor.py
@@ -0,0 +1,94 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_string_builder_processor_type import LogsStringBuilderProcessorType
+
+class LogsStringBuilderProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_string_builder_processor_type import LogsStringBuilderProcessorType
+ return {
+ "is_enabled": (bool,),
+ "is_replace_missing": (bool,),
+ "name": (str,),
+ "target": (str,),
+ "template": (str,),
+ "type": (LogsStringBuilderProcessorType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "is_replace_missing": "is_replace_missing",
+ "name": "name",
+ "target": "target",
+ "template": "template",
+ "type": "type",
+ }
+
+ def __init__(self_, target: str, template: str, type: LogsStringBuilderProcessorType, is_enabled: Union[bool, UnsetType]=unset, is_replace_missing: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use the string builder processor to add a new attribute (without spaces or special characters)
+ to a log with the result of the provided template.
+ This enables aggregation of different attributes or raw strings into a single attribute.
+
+ The template is defined by both raw text and blocks with the syntax ``%{attribute_path}``.
+
+ **Notes** :
+
+ * The processor only accepts attributes with values or an array of values in the blocks.
+ * If an attribute cannot be used (object or array of object),
+ it is replaced by an empty string or the entire operation is skipped depending on your selection.
+ * If the target attribute already exists, it is overwritten by the result of the template.
+ * Results of the template cannot exceed 256 characters.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param is_replace_missing: If true, it replaces all missing attributes of ``template`` by an empty string.
+ If ``false`` (default), skips the operation for missing attributes.
+ :type is_replace_missing: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param target: The name of the attribute that contains the result of the template.
+ :type target: str
+
+ :param template: A formula with one or more attributes and raw text.
+ :type template: str
+
+ :param type: Type of logs string builder processor.
+ :type type: LogsStringBuilderProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if is_replace_missing is not unset:
+ kwargs["is_replace_missing"] = is_replace_missing
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.target = target
+ self_.template = template
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_string_builder_processor_type.py b/datadog_api_client/v1/model/logs_string_builder_processor_type.py
new file mode 100644
index 0000000000..6df7a8f578
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_string_builder_processor_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsStringBuilderProcessorType(ModelSimple):
+ """
+ Type of logs string builder processor.
+
+ :param value: If omitted defaults to "string-builder-processor". Must be one of ["string-builder-processor"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "string-builder-processor",
+ }
+ STRING_BUILDER_PROCESSOR: ClassVar["LogsStringBuilderProcessorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsStringBuilderProcessorType.STRING_BUILDER_PROCESSOR = LogsStringBuilderProcessorType("string-builder-processor")
diff --git a/datadog_api_client/v1/model/logs_trace_remapper.py b/datadog_api_client/v1/model/logs_trace_remapper.py
new file mode 100644
index 0000000000..0c083e81f8
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_trace_remapper.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_trace_remapper_type import LogsTraceRemapperType
+
+class LogsTraceRemapper(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_trace_remapper_type import LogsTraceRemapperType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "type": (LogsTraceRemapperType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "sources": "sources",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsTraceRemapperType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, sources: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ There are two ways to improve correlation between application traces and logs.
+
+ #.
+ Follow the documentation on `how to inject a trace ID in the application logs `_
+ and by default log integrations take care of all the rest of the setup.
+
+ #.
+ Use the Trace remapper processor to define a log attribute as its associated trace ID.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str], optional
+
+ :param type: Type of logs trace remapper.
+ :type type: LogsTraceRemapperType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if sources is not unset:
+ kwargs["sources"] = sources
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_trace_remapper_type.py b/datadog_api_client/v1/model/logs_trace_remapper_type.py
new file mode 100644
index 0000000000..e3cfbde761
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_trace_remapper_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsTraceRemapperType(ModelSimple):
+ """
+ Type of logs trace remapper.
+
+ :param value: If omitted defaults to "trace-id-remapper". Must be one of ["trace-id-remapper"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "trace-id-remapper",
+ }
+ TRACE_ID_REMAPPER: ClassVar["LogsTraceRemapperType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsTraceRemapperType.TRACE_ID_REMAPPER = LogsTraceRemapperType("trace-id-remapper")
diff --git a/datadog_api_client/v1/model/logs_url_parser.py b/datadog_api_client/v1/model/logs_url_parser.py
new file mode 100644
index 0000000000..fefe2bfb56
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_url_parser.py
@@ -0,0 +1,83 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_url_parser_type import LogsURLParserType
+
+class LogsURLParser(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_url_parser_type import LogsURLParserType
+ return {
+ "is_enabled": (bool,),
+ "name": (str,),
+ "normalize_ending_slashes": (bool, none_type),
+ "sources": ([str],),
+ "target": (str,),
+ "type": (LogsURLParserType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "name": "name",
+ "normalize_ending_slashes": "normalize_ending_slashes",
+ "sources": "sources",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsURLParserType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, normalize_ending_slashes: Union[bool, none_type, UnsetType]=unset, **kwargs):
+ """
+ This processor extracts query parameters and other important parameters from a URL.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param normalize_ending_slashes: Normalize the ending slashes or not.
+ :type normalize_ending_slashes: bool, none_type, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param target: Name of the parent attribute that contains all the extracted details from the ``sources``.
+ :type target: str
+
+ :param type: Type of logs URL parser.
+ :type type: LogsURLParserType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ if normalize_ending_slashes is not unset:
+ kwargs["normalize_ending_slashes"] = normalize_ending_slashes
+ super().__init__(kwargs)
+ sources = kwargs.get("sources", ['http.url'])
+ target = kwargs.get("target", "http.url_details")
+
+
+ self_.sources = sources
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_url_parser_type.py b/datadog_api_client/v1/model/logs_url_parser_type.py
new file mode 100644
index 0000000000..e63eb252a1
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_url_parser_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsURLParserType(ModelSimple):
+ """
+ Type of logs URL parser.
+
+ :param value: If omitted defaults to "url-parser". Must be one of ["url-parser"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "url-parser",
+ }
+ URL_PARSER: ClassVar["LogsURLParserType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsURLParserType.URL_PARSER = LogsURLParserType("url-parser")
diff --git a/datadog_api_client/v1/model/logs_user_agent_parser.py b/datadog_api_client/v1/model/logs_user_agent_parser.py
new file mode 100644
index 0000000000..05083217e7
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_user_agent_parser.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_user_agent_parser_type import LogsUserAgentParserType
+
+class LogsUserAgentParser(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_user_agent_parser_type import LogsUserAgentParserType
+ return {
+ "is_enabled": (bool,),
+ "is_encoded": (bool,),
+ "name": (str,),
+ "sources": ([str],),
+ "target": (str,),
+ "type": (LogsUserAgentParserType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "is_encoded": "is_encoded",
+ "name": "name",
+ "sources": "sources",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, type: LogsUserAgentParserType, is_enabled: Union[bool, UnsetType]=unset, is_encoded: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The User-Agent parser takes a User-Agent attribute and extracts the OS, browser, device, and other user data.
+ It recognizes major bots like the Google Bot, Yahoo Slurp, and Bing.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param is_encoded: Define if the source attribute is URL encoded or not.
+ :type is_encoded: bool, optional
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param sources: Array of source attributes.
+ :type sources: [str]
+
+ :param target: Name of the parent attribute that contains all the extracted details from the ``sources``.
+ :type target: str
+
+ :param type: Type of logs User-Agent parser.
+ :type type: LogsUserAgentParserType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if is_encoded is not unset:
+ kwargs["is_encoded"] = is_encoded
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+ sources = kwargs.get("sources", ['http.useragent'])
+ target = kwargs.get("target", "http.useragent_details")
+
+
+ self_.sources = sources
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/logs_user_agent_parser_type.py b/datadog_api_client/v1/model/logs_user_agent_parser_type.py
new file mode 100644
index 0000000000..b330691122
--- /dev/null
+++ b/datadog_api_client/v1/model/logs_user_agent_parser_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class LogsUserAgentParserType(ModelSimple):
+ """
+ Type of logs User-Agent parser.
+
+ :param value: If omitted defaults to "user-agent-parser". Must be one of ["user-agent-parser"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "user-agent-parser",
+ }
+ USER_AGENT_PARSER: ClassVar["LogsUserAgentParserType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+LogsUserAgentParserType.USER_AGENT_PARSER = LogsUserAgentParserType("user-agent-parser")
diff --git a/datadog_api_client/v1/model/matching_downtime.py b/datadog_api_client/v1/model/matching_downtime.py
new file mode 100644
index 0000000000..b5ac030cb5
--- /dev/null
+++ b/datadog_api_client/v1/model/matching_downtime.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MatchingDowntime(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "end": (int, none_type),
+ "id": (int,),
+ "scope": ([str],),
+ "start": (int,),
+ }
+ attribute_map = {
+ "end": "end",
+ "id": "id",
+ "scope": "scope",
+ "start": "start",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, id: int, end: Union[int, none_type, UnsetType]=unset, scope: Union[List[str], UnsetType]=unset, start: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object describing a downtime that matches this monitor.
+
+ :param end: POSIX timestamp to end the downtime.
+ :type end: int, none_type, optional
+
+ :param id: The downtime ID.
+ :type id: int
+
+ :param scope: The scope(s) to which the downtime applies. Must be in ``key:value`` format. For example, ``host:app2``.
+ Provide multiple scopes as a comma-separated list like ``env:dev,env:prod``.
+ The resulting downtime applies to sources that matches ALL provided scopes ( ``env:dev`` **AND** ``env:prod`` ).
+ :type scope: [str], optional
+
+ :param start: POSIX timestamp to start the downtime.
+ :type start: int, optional
+ """
+ if end is not unset:
+ kwargs["end"] = end
+ if scope is not unset:
+ kwargs["scope"] = scope
+ if start is not unset:
+ kwargs["start"] = start
+ super().__init__(kwargs)
+
+
+ self_.id = id
diff --git a/datadog_api_client/v1/model/metric_content_encoding.py b/datadog_api_client/v1/model/metric_content_encoding.py
new file mode 100644
index 0000000000..ab89d40ae1
--- /dev/null
+++ b/datadog_api_client/v1/model/metric_content_encoding.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MetricContentEncoding(ModelSimple):
+ """
+ HTTP header used to compress the media-type.
+
+ :param value: If omitted defaults to "deflate". Must be one of ["deflate", "gzip"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "deflate",
+ "gzip",
+ }
+ DEFLATE: ClassVar["MetricContentEncoding"]
+ GZIP: ClassVar["MetricContentEncoding"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MetricContentEncoding.DEFLATE = MetricContentEncoding("deflate")
+MetricContentEncoding.GZIP = MetricContentEncoding("gzip")
diff --git a/datadog_api_client/v1/model/metric_metadata.py b/datadog_api_client/v1/model/metric_metadata.py
new file mode 100644
index 0000000000..99541230cf
--- /dev/null
+++ b/datadog_api_client/v1/model/metric_metadata.py
@@ -0,0 +1,91 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MetricMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "description": (str,),
+ "integration": (str,),
+ "per_unit": (str,),
+ "short_name": (str,),
+ "statsd_interval": (int,),
+ "type": (str,),
+ "unit": (str,),
+ }
+ attribute_map = {
+ "description": "description",
+ "integration": "integration",
+ "per_unit": "per_unit",
+ "short_name": "short_name",
+ "statsd_interval": "statsd_interval",
+ "type": "type",
+ "unit": "unit",
+ }
+ read_only_vars = {
+ "integration",
+ }
+
+ def __init__(self_, description: Union[str, UnsetType]=unset, integration: Union[str, UnsetType]=unset, per_unit: Union[str, UnsetType]=unset, short_name: Union[str, UnsetType]=unset, statsd_interval: Union[int, UnsetType]=unset, type: Union[str, UnsetType]=unset, unit: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object with all metric related metadata.
+
+ :param description: Metric description.
+ :type description: str, optional
+
+ :param integration: Name of the integration that sent the metric if applicable.
+ :type integration: str, optional
+
+ :param per_unit: Per unit of the metric such as ``second`` in ``bytes per second``.
+ :type per_unit: str, optional
+
+ :param short_name: A more human-readable and abbreviated version of the metric name.
+ :type short_name: str, optional
+
+ :param statsd_interval: StatsD flush interval of the metric in seconds if applicable.
+ :type statsd_interval: int, optional
+
+ :param type: Metric type such as ``gauge`` or ``rate``.
+ :type type: str, optional
+
+ :param unit: Primary unit of the metric such as ``byte`` or ``operation``.
+ :type unit: str, optional
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if integration is not unset:
+ kwargs["integration"] = integration
+ if per_unit is not unset:
+ kwargs["per_unit"] = per_unit
+ if short_name is not unset:
+ kwargs["short_name"] = short_name
+ if statsd_interval is not unset:
+ kwargs["statsd_interval"] = statsd_interval
+ if type is not unset:
+ kwargs["type"] = type
+ if unit is not unset:
+ kwargs["unit"] = unit
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/metric_search_response.py b/datadog_api_client/v1/model/metric_search_response.py
new file mode 100644
index 0000000000..a8009e71c7
--- /dev/null
+++ b/datadog_api_client/v1/model/metric_search_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.metric_search_response_results import MetricSearchResponseResults
+
+class MetricSearchResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.metric_search_response_results import MetricSearchResponseResults
+ return {
+ "results": (MetricSearchResponseResults,),
+ }
+ attribute_map = {
+ "results": "results",
+ }
+
+ def __init__(self_, results: Union[MetricSearchResponseResults, UnsetType]=unset, **kwargs):
+ """
+ Object containing the list of metrics matching the search query.
+
+ :param results: Search result.
+ :type results: MetricSearchResponseResults, optional
+ """
+ if results is not unset:
+ kwargs["results"] = results
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/metric_search_response_results.py b/datadog_api_client/v1/model/metric_search_response_results.py
new file mode 100644
index 0000000000..832e64ea43
--- /dev/null
+++ b/datadog_api_client/v1/model/metric_search_response_results.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MetricSearchResponseResults(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "metrics": ([str],),
+ }
+ attribute_map = {
+ "metrics": "metrics",
+ }
+
+ def __init__(self_, metrics: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Search result.
+
+ :param metrics: List of metrics that match the search query.
+ :type metrics: [str], optional
+ """
+ if metrics is not unset:
+ kwargs["metrics"] = metrics
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/metrics_list_response.py b/datadog_api_client/v1/model/metrics_list_response.py
new file mode 100644
index 0000000000..6abee0c517
--- /dev/null
+++ b/datadog_api_client/v1/model/metrics_list_response.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MetricsListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "_from": (str,),
+ "metrics": ([str],),
+ }
+ attribute_map = {
+ "_from": "from",
+ "metrics": "metrics",
+ }
+
+ def __init__(self_, _from: Union[str, UnsetType]=unset, metrics: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object listing all metric names stored by Datadog since a given time.
+
+ :param _from: Time when the metrics were active, seconds since the Unix epoch.
+ :type _from: str, optional
+
+ :param metrics: List of metric names.
+ :type metrics: [str], optional
+ """
+ if _from is not unset:
+ kwargs["_from"] = _from
+ if metrics is not unset:
+ kwargs["metrics"] = metrics
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/metrics_payload.py b/datadog_api_client/v1/model/metrics_payload.py
new file mode 100644
index 0000000000..2f9ad9be3b
--- /dev/null
+++ b/datadog_api_client/v1/model/metrics_payload.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.series import Series
+
+class MetricsPayload(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.series import Series
+ return {
+ "series": ([Series],),
+ }
+ attribute_map = {
+ "series": "series",
+ }
+
+ def __init__(self_, series: List[Series], **kwargs):
+ """
+ The metrics' payload.
+
+ :param series: A list of timeseries to submit to Datadog.
+ :type series: [Series]
+ """
+ super().__init__(kwargs)
+
+
+ self_.series = series
diff --git a/datadog_api_client/v1/model/metrics_query_metadata.py b/datadog_api_client/v1/model/metrics_query_metadata.py
new file mode 100644
index 0000000000..e9acccec51
--- /dev/null
+++ b/datadog_api_client/v1/model/metrics_query_metadata.py
@@ -0,0 +1,159 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.point import Point
+ from datadog_api_client.v1.model.metrics_query_unit import MetricsQueryUnit
+
+class MetricsQueryMetadata(ModelNormal):
+ validations = {
+ "unit": {
+ "max_items": 2,
+ "min_items": 2,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.point import Point
+ from datadog_api_client.v1.model.metrics_query_unit import MetricsQueryUnit
+ return {
+ "aggr": (str, none_type),
+ "display_name": (str,),
+ "end": (int,),
+ "expression": (str,),
+ "interval": (int,),
+ "length": (int,),
+ "metric": (str,),
+ "pointlist": ([Point],),
+ "query_index": (int,),
+ "scope": (str,),
+ "start": (int,),
+ "tag_set": ([str],),
+ "unit": ([MetricsQueryUnit, none_type],),
+ }
+ attribute_map = {
+ "aggr": "aggr",
+ "display_name": "display_name",
+ "end": "end",
+ "expression": "expression",
+ "interval": "interval",
+ "length": "length",
+ "metric": "metric",
+ "pointlist": "pointlist",
+ "query_index": "query_index",
+ "scope": "scope",
+ "start": "start",
+ "tag_set": "tag_set",
+ "unit": "unit",
+ }
+ read_only_vars = {
+ "aggr",
+ "display_name",
+ "end",
+ "expression",
+ "interval",
+ "length",
+ "metric",
+ "pointlist",
+ "query_index",
+ "scope",
+ "start",
+ "tag_set",
+ "unit",
+ }
+
+ def __init__(self_, aggr: Union[str, none_type, UnsetType]=unset, display_name: Union[str, UnsetType]=unset, end: Union[int, UnsetType]=unset, expression: Union[str, UnsetType]=unset, interval: Union[int, UnsetType]=unset, length: Union[int, UnsetType]=unset, metric: Union[str, UnsetType]=unset, pointlist: Union[List[Point], UnsetType]=unset, query_index: Union[int, UnsetType]=unset, scope: Union[str, UnsetType]=unset, start: Union[int, UnsetType]=unset, tag_set: Union[List[str], UnsetType]=unset, unit: Union[List[MetricsQueryUnit], UnsetType]=unset, **kwargs):
+ """
+ Object containing all metric names returned and their associated metadata.
+
+ :param aggr: Aggregation type.
+ :type aggr: str, none_type, optional
+
+ :param display_name: Display name of the metric.
+ :type display_name: str, optional
+
+ :param end: End of the time window, milliseconds since Unix epoch.
+ :type end: int, optional
+
+ :param expression: Metric expression.
+ :type expression: str, optional
+
+ :param interval: Number of milliseconds between data samples.
+ :type interval: int, optional
+
+ :param length: Number of data samples.
+ :type length: int, optional
+
+ :param metric: Metric name.
+ :type metric: str, optional
+
+ :param pointlist: List of points of the timeseries in milliseconds.
+ :type pointlist: [Point], optional
+
+ :param query_index: The index of the series' query within the request.
+ :type query_index: int, optional
+
+ :param scope: Metric scope, comma separated list of tags.
+ :type scope: str, optional
+
+ :param start: Start of the time window, milliseconds since Unix epoch.
+ :type start: int, optional
+
+ :param tag_set: Unique tags identifying this series.
+ :type tag_set: [str], optional
+
+ :param unit: Detailed information about the metric unit.
+ The first element describes the "primary unit" (for example, ``bytes`` in ``bytes per second`` ).
+ The second element describes the "per unit" (for example, ``second`` in ``bytes per second`` ).
+ If the second element is not present, the API returns null.
+ :type unit: [MetricsQueryUnit, none_type], optional
+ """
+ if aggr is not unset:
+ kwargs["aggr"] = aggr
+ if display_name is not unset:
+ kwargs["display_name"] = display_name
+ if end is not unset:
+ kwargs["end"] = end
+ if expression is not unset:
+ kwargs["expression"] = expression
+ if interval is not unset:
+ kwargs["interval"] = interval
+ if length is not unset:
+ kwargs["length"] = length
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if pointlist is not unset:
+ kwargs["pointlist"] = pointlist
+ if query_index is not unset:
+ kwargs["query_index"] = query_index
+ if scope is not unset:
+ kwargs["scope"] = scope
+ if start is not unset:
+ kwargs["start"] = start
+ if tag_set is not unset:
+ kwargs["tag_set"] = tag_set
+ if unit is not unset:
+ kwargs["unit"] = unit
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/metrics_query_response.py b/datadog_api_client/v1/model/metrics_query_response.py
new file mode 100644
index 0000000000..474506b991
--- /dev/null
+++ b/datadog_api_client/v1/model/metrics_query_response.py
@@ -0,0 +1,116 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.metrics_query_metadata import MetricsQueryMetadata
+
+class MetricsQueryResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.metrics_query_metadata import MetricsQueryMetadata
+ return {
+ "error": (str,),
+ "from_date": (int,),
+ "group_by": ([str],),
+ "message": (str,),
+ "query": (str,),
+ "res_type": (str,),
+ "series": ([MetricsQueryMetadata],),
+ "status": (str,),
+ "to_date": (int,),
+ }
+ attribute_map = {
+ "error": "error",
+ "from_date": "from_date",
+ "group_by": "group_by",
+ "message": "message",
+ "query": "query",
+ "res_type": "res_type",
+ "series": "series",
+ "status": "status",
+ "to_date": "to_date",
+ }
+ read_only_vars = {
+ "error",
+ "from_date",
+ "group_by",
+ "message",
+ "query",
+ "res_type",
+ "series",
+ "status",
+ "to_date",
+ }
+
+ def __init__(self_, error: Union[str, UnsetType]=unset, from_date: Union[int, UnsetType]=unset, group_by: Union[List[str], UnsetType]=unset, message: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, res_type: Union[str, UnsetType]=unset, series: Union[List[MetricsQueryMetadata], UnsetType]=unset, status: Union[str, UnsetType]=unset, to_date: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Response Object that includes your query and the list of metrics retrieved.
+
+ :param error: Message indicating the errors if status is not ``ok``.
+ :type error: str, optional
+
+ :param from_date: Start of requested time window, milliseconds since Unix epoch.
+ :type from_date: int, optional
+
+ :param group_by: List of tag keys on which to group.
+ :type group_by: [str], optional
+
+ :param message: Message indicating ``success`` if status is ``ok``.
+ :type message: str, optional
+
+ :param query: Query string
+ :type query: str, optional
+
+ :param res_type: Type of response.
+ :type res_type: str, optional
+
+ :param series: List of timeseries queried.
+ :type series: [MetricsQueryMetadata], optional
+
+ :param status: Status of the query.
+ :type status: str, optional
+
+ :param to_date: End of requested time window, milliseconds since Unix epoch.
+ :type to_date: int, optional
+ """
+ if error is not unset:
+ kwargs["error"] = error
+ if from_date is not unset:
+ kwargs["from_date"] = from_date
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if message is not unset:
+ kwargs["message"] = message
+ if query is not unset:
+ kwargs["query"] = query
+ if res_type is not unset:
+ kwargs["res_type"] = res_type
+ if series is not unset:
+ kwargs["series"] = series
+ if status is not unset:
+ kwargs["status"] = status
+ if to_date is not unset:
+ kwargs["to_date"] = to_date
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/metrics_query_unit.py b/datadog_api_client/v1/model/metrics_query_unit.py
new file mode 100644
index 0000000000..4cf7fc7572
--- /dev/null
+++ b/datadog_api_client/v1/model/metrics_query_unit.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MetricsQueryUnit(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "family": (str,),
+ "name": (str,),
+ "plural": (str,),
+ "scale_factor": (float,),
+ "short_name": (str,),
+ }
+ attribute_map = {
+ "family": "family",
+ "name": "name",
+ "plural": "plural",
+ "scale_factor": "scale_factor",
+ "short_name": "short_name",
+ }
+ read_only_vars = {
+ "family",
+ "name",
+ "plural",
+ "scale_factor",
+ "short_name",
+ }
+
+ def __init__(self_, family: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, plural: Union[str, UnsetType]=unset, scale_factor: Union[float, UnsetType]=unset, short_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing the metric unit family, scale factor, name, and short name.
+
+ :param family: Unit family, allows for conversion between units of the same family, for scaling.
+ :type family: str, optional
+
+ :param name: Unit name
+ :type name: str, optional
+
+ :param plural: Plural form of the unit name.
+ :type plural: str, optional
+
+ :param scale_factor: Factor for scaling between units of the same family.
+ :type scale_factor: float, optional
+
+ :param short_name: Abbreviation of the unit.
+ :type short_name: str, optional
+ """
+ if family is not unset:
+ kwargs["family"] = family
+ if name is not unset:
+ kwargs["name"] = name
+ if plural is not unset:
+ kwargs["plural"] = plural
+ if scale_factor is not unset:
+ kwargs["scale_factor"] = scale_factor
+ if short_name is not unset:
+ kwargs["short_name"] = short_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor.py b/datadog_api_client/v1/model/monitor.py
new file mode 100644
index 0000000000..242a518e21
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor.py
@@ -0,0 +1,208 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_asset import MonitorAsset
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.monitor_draft_status import MonitorDraftStatus
+ from datadog_api_client.v1.model.matching_downtime import MatchingDowntime
+ from datadog_api_client.v1.model.monitor_options import MonitorOptions
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ from datadog_api_client.v1.model.monitor_state import MonitorState
+ from datadog_api_client.v1.model.monitor_type import MonitorType
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import MonitorFormulaAndFunctionCostQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import MonitorFormulaAndFunctionDataQualityQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_jobs_query_definition import MonitorFormulaAndFunctionDataJobsQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import MonitorFormulaAndFunctionAggregateFilteredQueryDefinition
+
+class Monitor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_asset import MonitorAsset
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.monitor_draft_status import MonitorDraftStatus
+ from datadog_api_client.v1.model.matching_downtime import MatchingDowntime
+ from datadog_api_client.v1.model.monitor_options import MonitorOptions
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ from datadog_api_client.v1.model.monitor_state import MonitorState
+ from datadog_api_client.v1.model.monitor_type import MonitorType
+ return {
+ "assets": ([MonitorAsset],),
+ "created": (datetime,),
+ "creator": (Creator,),
+ "deleted": (datetime, none_type),
+ "draft_status": (MonitorDraftStatus,),
+ "id": (int,),
+ "matching_downtimes": ([MatchingDowntime],),
+ "message": (str,),
+ "modified": (datetime,),
+ "multi": (bool,),
+ "name": (str,),
+ "options": (MonitorOptions,),
+ "overall_state": (MonitorOverallStates,),
+ "priority": (int, none_type),
+ "query": (str,),
+ "restricted_roles": ([str], none_type),
+ "state": (MonitorState,),
+ "tags": ([str],),
+ "type": (MonitorType,),
+ }
+ attribute_map = {
+ "assets": "assets",
+ "created": "created",
+ "creator": "creator",
+ "deleted": "deleted",
+ "draft_status": "draft_status",
+ "id": "id",
+ "matching_downtimes": "matching_downtimes",
+ "message": "message",
+ "modified": "modified",
+ "multi": "multi",
+ "name": "name",
+ "options": "options",
+ "overall_state": "overall_state",
+ "priority": "priority",
+ "query": "query",
+ "restricted_roles": "restricted_roles",
+ "state": "state",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "created",
+ "creator",
+ "deleted",
+ "id",
+ "modified",
+ "multi",
+ "overall_state",
+ "state",
+ }
+
+ def __init__(self_, query: str, type: MonitorType, assets: Union[List[MonitorAsset], UnsetType]=unset, created: Union[datetime, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, deleted: Union[datetime, none_type, UnsetType]=unset, draft_status: Union[MonitorDraftStatus, UnsetType]=unset, id: Union[int, UnsetType]=unset, matching_downtimes: Union[List[MatchingDowntime], UnsetType]=unset, message: Union[str, UnsetType]=unset, modified: Union[datetime, UnsetType]=unset, multi: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, options: Union[MonitorOptions, UnsetType]=unset, overall_state: Union[MonitorOverallStates, UnsetType]=unset, priority: Union[int, none_type, UnsetType]=unset, restricted_roles: Union[List[str], none_type, UnsetType]=unset, state: Union[MonitorState, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object describing a monitor.
+
+ :param assets: The list of monitor assets tied to a monitor, which represents key links for users to take action on monitor alerts (for example, runbooks).
+ :type assets: [MonitorAsset], optional
+
+ :param created: Timestamp of the monitor creation.
+ :type created: datetime, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param deleted: Whether or not the monitor is deleted. (Always ``null`` )
+ :type deleted: datetime, none_type, optional
+
+ :param draft_status: Indicates whether the monitor is in a draft or published state.
+
+ ``draft`` : The monitor appears as Draft and does not send notifications.
+ ``published`` : The monitor is active and evaluates conditions and notify as configured.
+
+ This field is in preview. The draft value is only available to customers with the feature enabled.
+ :type draft_status: MonitorDraftStatus, optional
+
+ :param id: ID of this monitor.
+ :type id: int, optional
+
+ :param matching_downtimes: A list of active v1 downtimes that match this monitor.
+ :type matching_downtimes: [MatchingDowntime], optional
+
+ :param message: A message to include with notifications for this monitor.
+ :type message: str, optional
+
+ :param modified: Last timestamp when the monitor was edited.
+ :type modified: datetime, optional
+
+ :param multi: Whether or not the monitor is broken down on different groups.
+ :type multi: bool, optional
+
+ :param name: The monitor name.
+ :type name: str, optional
+
+ :param options: List of options associated with your monitor.
+ :type options: MonitorOptions, optional
+
+ :param overall_state: The different states your monitor can be in.
+ :type overall_state: MonitorOverallStates, optional
+
+ :param priority: Integer from 1 (high) to 5 (low) indicating alert severity.
+ :type priority: int, none_type, optional
+
+ :param query: The monitor query.
+ :type query: str
+
+ :param restricted_roles: A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the `Roles API `_ and are located in the ``data.id`` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. You can use the `Restriction Policies API `_ to manage write authorization for individual monitors by teams and users, in addition to roles.
+ :type restricted_roles: [str], none_type, optional
+
+ :param state: Wrapper object with the different monitor states.
+ :type state: MonitorState, optional
+
+ :param tags: Tags associated to your monitor.
+ :type tags: [str], optional
+
+ :param type: The type of the monitor. For more information about ``type`` , see the `monitor options `_ docs.
+ :type type: MonitorType
+ """
+ if assets is not unset:
+ kwargs["assets"] = assets
+ if created is not unset:
+ kwargs["created"] = created
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if deleted is not unset:
+ kwargs["deleted"] = deleted
+ if draft_status is not unset:
+ kwargs["draft_status"] = draft_status
+ if id is not unset:
+ kwargs["id"] = id
+ if matching_downtimes is not unset:
+ kwargs["matching_downtimes"] = matching_downtimes
+ if message is not unset:
+ kwargs["message"] = message
+ if modified is not unset:
+ kwargs["modified"] = modified
+ if multi is not unset:
+ kwargs["multi"] = multi
+ if name is not unset:
+ kwargs["name"] = name
+ if options is not unset:
+ kwargs["options"] = options
+ if overall_state is not unset:
+ kwargs["overall_state"] = overall_state
+ if priority is not unset:
+ kwargs["priority"] = priority
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ if state is not unset:
+ kwargs["state"] = state
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.type = type
diff --git a/datadog_api_client/v1/model/monitor_asset.py b/datadog_api_client/v1/model/monitor_asset.py
new file mode 100644
index 0000000000..11d965eb63
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_asset.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_asset_category import MonitorAssetCategory
+ from datadog_api_client.v1.model.monitor_asset_resource_type import MonitorAssetResourceType
+
+class MonitorAsset(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_asset_category import MonitorAssetCategory
+ from datadog_api_client.v1.model.monitor_asset_resource_type import MonitorAssetResourceType
+ return {
+ "category": (MonitorAssetCategory,),
+ "name": (str,),
+ "resource_key": (str,),
+ "resource_type": (MonitorAssetResourceType,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "category": "category",
+ "name": "name",
+ "resource_key": "resource_key",
+ "resource_type": "resource_type",
+ "url": "url",
+ }
+
+ def __init__(self_, category: MonitorAssetCategory, name: str, url: str, resource_key: Union[str, UnsetType]=unset, resource_type: Union[MonitorAssetResourceType, UnsetType]=unset, **kwargs):
+ """
+ Represents key links tied to a monitor to help users take action on alerts.
+ This feature is in Preview and only available to users with the feature enabled.
+
+ :param category: Indicates the type of asset this entity represents on a monitor.
+ :type category: MonitorAssetCategory
+
+ :param name: Name for the monitor asset
+ :type name: str
+
+ :param resource_key: Represents the identifier of the internal Datadog resource that this asset represents. IDs in this field should be passed in as strings.
+ :type resource_key: str, optional
+
+ :param resource_type: Type of internal Datadog resource associated with a monitor asset.
+ :type resource_type: MonitorAssetResourceType, optional
+
+ :param url: URL link for the asset. For links with an internal resource type set, this should be the relative path to where the Datadog domain is appended internally. For external links, this should be the full URL path.
+ :type url: str
+ """
+ if resource_key is not unset:
+ kwargs["resource_key"] = resource_key
+ if resource_type is not unset:
+ kwargs["resource_type"] = resource_type
+ super().__init__(kwargs)
+
+
+ self_.category = category
+ self_.name = name
+ self_.url = url
diff --git a/datadog_api_client/v1/model/monitor_asset_category.py b/datadog_api_client/v1/model/monitor_asset_category.py
new file mode 100644
index 0000000000..2db286f1da
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_asset_category.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorAssetCategory(ModelSimple):
+ """
+ Indicates the type of asset this entity represents on a monitor.
+
+ :param value: If omitted defaults to "runbook". Must be one of ["runbook"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "runbook",
+ }
+ RUNBOOK: ClassVar["MonitorAssetCategory"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorAssetCategory.RUNBOOK = MonitorAssetCategory("runbook")
diff --git a/datadog_api_client/v1/model/monitor_asset_resource_type.py b/datadog_api_client/v1/model/monitor_asset_resource_type.py
new file mode 100644
index 0000000000..fb7bc15c26
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_asset_resource_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorAssetResourceType(ModelSimple):
+ """
+ Type of internal Datadog resource associated with a monitor asset.
+
+ :param value: If omitted defaults to "notebook". Must be one of ["notebook"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "notebook",
+ }
+ NOTEBOOK: ClassVar["MonitorAssetResourceType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorAssetResourceType.NOTEBOOK = MonitorAssetResourceType("notebook")
diff --git a/datadog_api_client/v1/model/monitor_device_id.py b/datadog_api_client/v1/model/monitor_device_id.py
new file mode 100644
index 0000000000..ee666961f2
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_device_id.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorDeviceID(ModelSimple):
+ """
+ ID of the device the Synthetics monitor is running on. Same as `SyntheticsDeviceID`.
+
+ :param value: Must be one of ["laptop_large", "tablet", "mobile_small", "chrome.laptop_large", "chrome.tablet", "chrome.mobile_small", "firefox.laptop_large", "firefox.tablet", "firefox.mobile_small"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "laptop_large",
+ "tablet",
+ "mobile_small",
+ "chrome.laptop_large",
+ "chrome.tablet",
+ "chrome.mobile_small",
+ "firefox.laptop_large",
+ "firefox.tablet",
+ "firefox.mobile_small",
+ }
+ LAPTOP_LARGE: ClassVar["MonitorDeviceID"]
+ TABLET: ClassVar["MonitorDeviceID"]
+ MOBILE_SMALL: ClassVar["MonitorDeviceID"]
+ CHROME_LAPTOP_LARGE: ClassVar["MonitorDeviceID"]
+ CHROME_TABLET: ClassVar["MonitorDeviceID"]
+ CHROME_MOBILE_SMALL: ClassVar["MonitorDeviceID"]
+ FIREFOX_LAPTOP_LARGE: ClassVar["MonitorDeviceID"]
+ FIREFOX_TABLET: ClassVar["MonitorDeviceID"]
+ FIREFOX_MOBILE_SMALL: ClassVar["MonitorDeviceID"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorDeviceID.LAPTOP_LARGE = MonitorDeviceID("laptop_large")
+MonitorDeviceID.TABLET = MonitorDeviceID("tablet")
+MonitorDeviceID.MOBILE_SMALL = MonitorDeviceID("mobile_small")
+MonitorDeviceID.CHROME_LAPTOP_LARGE = MonitorDeviceID("chrome.laptop_large")
+MonitorDeviceID.CHROME_TABLET = MonitorDeviceID("chrome.tablet")
+MonitorDeviceID.CHROME_MOBILE_SMALL = MonitorDeviceID("chrome.mobile_small")
+MonitorDeviceID.FIREFOX_LAPTOP_LARGE = MonitorDeviceID("firefox.laptop_large")
+MonitorDeviceID.FIREFOX_TABLET = MonitorDeviceID("firefox.tablet")
+MonitorDeviceID.FIREFOX_MOBILE_SMALL = MonitorDeviceID("firefox.mobile_small")
diff --git a/datadog_api_client/v1/model/monitor_draft_status.py b/datadog_api_client/v1/model/monitor_draft_status.py
new file mode 100644
index 0000000000..ecc83b2f00
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_draft_status.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorDraftStatus(ModelSimple):
+ """
+ Indicates whether the monitor is in a draft or published state.
+
+ `draft`: The monitor appears as Draft and does not send notifications.
+ `published`: The monitor is active and evaluates conditions and notify as configured.
+
+ This field is in preview. The draft value is only available to customers with the feature enabled.
+
+ :param value: If omitted defaults to "published". Must be one of ["draft", "published"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "draft",
+ "published",
+ }
+ DRAFT: ClassVar["MonitorDraftStatus"]
+ PUBLISHED: ClassVar["MonitorDraftStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorDraftStatus.DRAFT = MonitorDraftStatus("draft")
+MonitorDraftStatus.PUBLISHED = MonitorDraftStatus("published")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augment_query.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augment_query.py
new file mode 100644
index 0000000000..72fec27a83
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augment_query.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionAggregateAugmentQuery(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Augment query for aggregate augmented queries. Can be an events query or a reference table query.
+
+ :param compute: Compute options.
+ :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute
+
+ :param data_source: Data source for event platform-based queries.
+ :type data_source: MonitorFormulaAndFunctionEventsDataSource
+
+ :param group_by: Group by options.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search options.
+ :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param columns: List of columns to retrieve from the reference table.
+ :type columns: [MonitorFormulaAndFunctionReferenceTableColumn], optional
+
+ :param query_filter: Optional filter expression for the reference table query.
+ :type query_filter: str, optional
+
+ :param table_name: Name of the reference table.
+ :type table_name: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import MonitorFormulaAndFunctionReferenceTableQueryDefinition
+ return {
+ "oneOf": [
+ MonitorFormulaAndFunctionEventQueryDefinition,
+ MonitorFormulaAndFunctionReferenceTableQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_data_source.py
new file mode 100644
index 0000000000..d6f495dc82
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionAggregateAugmentedDataSource(ModelSimple):
+ """
+ Data source for aggregate augmented queries.
+
+ :param value: If omitted defaults to "aggregate_augmented_query". Must be one of ["aggregate_augmented_query"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "aggregate_augmented_query",
+ }
+ AGGREGATE_AUGMENTED_QUERY: ClassVar["MonitorFormulaAndFunctionAggregateAugmentedDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionAggregateAugmentedDataSource.AGGREGATE_AUGMENTED_QUERY = MonitorFormulaAndFunctionAggregateAugmentedDataSource("aggregate_augmented_query")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_query_definition.py
new file mode 100644
index 0000000000..83884c5dd7
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_augmented_query_definition.py
@@ -0,0 +1,106 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augment_query import MonitorFormulaAndFunctionAggregateAugmentQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import MonitorFormulaAndFunctionAggregateBaseQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import MonitorFormulaAndFunctionAggregateAugmentedDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import MonitorFormulaAndFunctionAggregateQueryJoinCondition
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import MonitorFormulaAndFunctionReferenceTableQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import MonitorFormulaAndFunctionMetricsQueryDefinition
+
+class MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition(ModelNormal):
+ validations = {
+ "compute": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augment_query import MonitorFormulaAndFunctionAggregateAugmentQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import MonitorFormulaAndFunctionAggregateBaseQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import MonitorFormulaAndFunctionAggregateAugmentedDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import MonitorFormulaAndFunctionAggregateQueryJoinCondition
+ return {
+ "augment_query": (MonitorFormulaAndFunctionAggregateAugmentQuery,),
+ "base_query": (MonitorFormulaAndFunctionAggregateBaseQuery,),
+ "compute": ([MonitorFormulaAndFunctionEventQueryDefinitionCompute],),
+ "data_source": (MonitorFormulaAndFunctionAggregateAugmentedDataSource,),
+ "group_by": ([MonitorFormulaAndFunctionEventQueryGroupBy],),
+ "join_condition": (MonitorFormulaAndFunctionAggregateQueryJoinCondition,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "augment_query": "augment_query",
+ "base_query": "base_query",
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "join_condition": "join_condition",
+ "name": "name",
+ }
+
+ def __init__(self_, augment_query: Union[MonitorFormulaAndFunctionAggregateAugmentQuery, MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionReferenceTableQueryDefinition], base_query: Union[MonitorFormulaAndFunctionAggregateBaseQuery, MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionMetricsQueryDefinition], compute: List[MonitorFormulaAndFunctionEventQueryDefinitionCompute], data_source: MonitorFormulaAndFunctionAggregateAugmentedDataSource, group_by: List[MonitorFormulaAndFunctionEventQueryGroupBy], join_condition: MonitorFormulaAndFunctionAggregateQueryJoinCondition, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions aggregate augmented query. Used to enrich base query results with data from a reference table.
+
+ :param augment_query: Augment query for aggregate augmented queries. Can be an events query or a reference table query.
+ :type augment_query: MonitorFormulaAndFunctionAggregateAugmentQuery
+
+ :param base_query: Base query for aggregate queries. Can be an events query or a metrics query.
+ :type base_query: MonitorFormulaAndFunctionAggregateBaseQuery
+
+ :param compute: Compute options for the query.
+ :type compute: [MonitorFormulaAndFunctionEventQueryDefinitionCompute]
+
+ :param data_source: Data source for aggregate augmented queries.
+ :type data_source: MonitorFormulaAndFunctionAggregateAugmentedDataSource
+
+ :param group_by: Group by options for the query.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy]
+
+ :param join_condition: Join condition for aggregate augmented queries.
+ :type join_condition: MonitorFormulaAndFunctionAggregateQueryJoinCondition
+
+ :param name: Name of the query for use in formulas.
+ :type name: str, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.augment_query = augment_query
+ self_.base_query = base_query
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.group_by = group_by
+ self_.join_condition = join_condition
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_base_query.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_base_query.py
new file mode 100644
index 0000000000..6d0156e026
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_base_query.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionAggregateBaseQuery(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Base query for aggregate queries. Can be an events query or a metrics query.
+
+ :param compute: Compute options.
+ :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute
+
+ :param data_source: Data source for event platform-based queries.
+ :type data_source: MonitorFormulaAndFunctionEventsDataSource
+
+ :param group_by: Group by options.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search options.
+ :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param aggregator: Aggregator for metrics queries.
+ :type aggregator: MonitorFormulaAndFunctionMetricsAggregator, optional
+
+ :param query: The metrics query definition.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import MonitorFormulaAndFunctionMetricsQueryDefinition
+ return {
+ "oneOf": [
+ MonitorFormulaAndFunctionEventQueryDefinition,
+ MonitorFormulaAndFunctionMetricsQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filter_query.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filter_query.py
new file mode 100644
index 0000000000..07156dc0ed
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filter_query.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionAggregateFilterQuery(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Filter query for aggregate filtered queries. Can be an events query or a reference table query.
+
+ :param compute: Compute options.
+ :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute
+
+ :param data_source: Data source for event platform-based queries.
+ :type data_source: MonitorFormulaAndFunctionEventsDataSource
+
+ :param group_by: Group by options.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search options.
+ :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param columns: List of columns to retrieve from the reference table.
+ :type columns: [MonitorFormulaAndFunctionReferenceTableColumn], optional
+
+ :param query_filter: Optional filter expression for the reference table query.
+ :type query_filter: str, optional
+
+ :param table_name: Name of the reference table.
+ :type table_name: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import MonitorFormulaAndFunctionReferenceTableQueryDefinition
+ return {
+ "oneOf": [
+ MonitorFormulaAndFunctionEventQueryDefinition,
+ MonitorFormulaAndFunctionReferenceTableQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_data_source.py
new file mode 100644
index 0000000000..211c3a1288
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionAggregateFilteredDataSource(ModelSimple):
+ """
+ Data source for aggregate filtered queries.
+
+ :param value: If omitted defaults to "aggregate_filtered_query". Must be one of ["aggregate_filtered_query"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "aggregate_filtered_query",
+ }
+ AGGREGATE_FILTERED_QUERY: ClassVar["MonitorFormulaAndFunctionAggregateFilteredDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionAggregateFilteredDataSource.AGGREGATE_FILTERED_QUERY = MonitorFormulaAndFunctionAggregateFilteredDataSource("aggregate_filtered_query")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_query_definition.py
new file mode 100644
index 0000000000..95342c236b
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_filtered_query_definition.py
@@ -0,0 +1,103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import MonitorFormulaAndFunctionAggregateBaseQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import MonitorFormulaAndFunctionAggregateFilteredDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query import MonitorFormulaAndFunctionAggregateFilterQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import MonitorFormulaAndFunctionAggregateQueryFilter
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import MonitorFormulaAndFunctionMetricsQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import MonitorFormulaAndFunctionReferenceTableQueryDefinition
+
+class MonitorFormulaAndFunctionAggregateFilteredQueryDefinition(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import MonitorFormulaAndFunctionAggregateBaseQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import MonitorFormulaAndFunctionAggregateFilteredDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query import MonitorFormulaAndFunctionAggregateFilterQuery
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import MonitorFormulaAndFunctionAggregateQueryFilter
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+ return {
+ "base_query": (MonitorFormulaAndFunctionAggregateBaseQuery,),
+ "compute": ([MonitorFormulaAndFunctionEventQueryDefinitionCompute],),
+ "data_source": (MonitorFormulaAndFunctionAggregateFilteredDataSource,),
+ "filter_query": (MonitorFormulaAndFunctionAggregateFilterQuery,),
+ "filters": ([MonitorFormulaAndFunctionAggregateQueryFilter],),
+ "group_by": ([MonitorFormulaAndFunctionEventQueryGroupBy],),
+ "name": (str,),
+ }
+ attribute_map = {
+ "base_query": "base_query",
+ "compute": "compute",
+ "data_source": "data_source",
+ "filter_query": "filter_query",
+ "filters": "filters",
+ "group_by": "group_by",
+ "name": "name",
+ }
+
+ def __init__(self_, base_query: Union[MonitorFormulaAndFunctionAggregateBaseQuery, MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionMetricsQueryDefinition], data_source: MonitorFormulaAndFunctionAggregateFilteredDataSource, filter_query: Union[MonitorFormulaAndFunctionAggregateFilterQuery, MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionReferenceTableQueryDefinition], filters: List[MonitorFormulaAndFunctionAggregateQueryFilter], compute: Union[List[MonitorFormulaAndFunctionEventQueryDefinitionCompute], UnsetType]=unset, group_by: Union[List[MonitorFormulaAndFunctionEventQueryGroupBy], UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions aggregate filtered query. Used to filter base query results using data from another source.
+
+ :param base_query: Base query for aggregate queries. Can be an events query or a metrics query.
+ :type base_query: MonitorFormulaAndFunctionAggregateBaseQuery
+
+ :param compute: Compute options for the query.
+ :type compute: [MonitorFormulaAndFunctionEventQueryDefinitionCompute], optional
+
+ :param data_source: Data source for aggregate filtered queries.
+ :type data_source: MonitorFormulaAndFunctionAggregateFilteredDataSource
+
+ :param filter_query: Filter query for aggregate filtered queries. Can be an events query or a reference table query.
+ :type filter_query: MonitorFormulaAndFunctionAggregateFilterQuery
+
+ :param filters: Filter conditions for the query.
+ :type filters: [MonitorFormulaAndFunctionAggregateQueryFilter]
+
+ :param group_by: Group by options for the query.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str, optional
+ """
+ if compute is not unset:
+ kwargs["compute"] = compute
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.base_query = base_query
+ self_.data_source = data_source
+ self_.filter_query = filter_query
+ self_.filters = filters
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_filter.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_filter.py
new file mode 100644
index 0000000000..44e489b51f
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_filter.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionAggregateQueryFilter(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "base_attribute": (str,),
+ "exclude": (bool,),
+ "filter_attribute": (str,),
+ }
+ attribute_map = {
+ "base_attribute": "base_attribute",
+ "exclude": "exclude",
+ "filter_attribute": "filter_attribute",
+ }
+
+ def __init__(self_, base_attribute: str, filter_attribute: str, exclude: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Filter definition for aggregate filtered queries.
+
+ :param base_attribute: Attribute from the base query to filter on.
+ :type base_attribute: str
+
+ :param exclude: Whether to exclude matching records instead of including them.
+ :type exclude: bool, optional
+
+ :param filter_attribute: Attribute from the filter query to match against.
+ :type filter_attribute: str
+ """
+ if exclude is not unset:
+ kwargs["exclude"] = exclude
+ super().__init__(kwargs)
+
+
+ self_.base_attribute = base_attribute
+ self_.filter_attribute = filter_attribute
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_condition.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_condition.py
new file mode 100644
index 0000000000..37e05da8a5
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_condition.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import MonitorFormulaAndFunctionAggregateQueryJoinType
+
+class MonitorFormulaAndFunctionAggregateQueryJoinCondition(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import MonitorFormulaAndFunctionAggregateQueryJoinType
+ return {
+ "augment_attribute": (str,),
+ "base_attribute": (str,),
+ "join_type": (MonitorFormulaAndFunctionAggregateQueryJoinType,),
+ }
+ attribute_map = {
+ "augment_attribute": "augment_attribute",
+ "base_attribute": "base_attribute",
+ "join_type": "join_type",
+ }
+
+ def __init__(self_, augment_attribute: str, base_attribute: str, join_type: MonitorFormulaAndFunctionAggregateQueryJoinType, **kwargs):
+ """
+ Join condition for aggregate augmented queries.
+
+ :param augment_attribute: Attribute from the augment query to join on.
+ :type augment_attribute: str
+
+ :param base_attribute: Attribute from the base query to join on.
+ :type base_attribute: str
+
+ :param join_type: Join type for aggregate query join conditions.
+ :type join_type: MonitorFormulaAndFunctionAggregateQueryJoinType
+ """
+ super().__init__(kwargs)
+
+
+ self_.augment_attribute = augment_attribute
+ self_.base_attribute = base_attribute
+ self_.join_type = join_type
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_type.py b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_type.py
new file mode 100644
index 0000000000..ce1e183b71
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_aggregate_query_join_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionAggregateQueryJoinType(ModelSimple):
+ """
+ Join type for aggregate query join conditions.
+
+ :param value: Must be one of ["inner", "left"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "inner",
+ "left",
+ }
+ INNER: ClassVar["MonitorFormulaAndFunctionAggregateQueryJoinType"]
+ LEFT: ClassVar["MonitorFormulaAndFunctionAggregateQueryJoinType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionAggregateQueryJoinType.INNER = MonitorFormulaAndFunctionAggregateQueryJoinType("inner")
+MonitorFormulaAndFunctionAggregateQueryJoinType.LEFT = MonitorFormulaAndFunctionAggregateQueryJoinType("left")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_cost_aggregator.py b/datadog_api_client/v1/model/monitor_formula_and_function_cost_aggregator.py
new file mode 100644
index 0000000000..3bd89e02ef
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_cost_aggregator.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionCostAggregator(ModelSimple):
+ """
+ Aggregation methods for metric queries.
+
+ :param value: Must be one of ["avg", "sum", "max", "min", "last", "area", "l2norm", "percentile", "stddev"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg",
+ "sum",
+ "max",
+ "min",
+ "last",
+ "area",
+ "l2norm",
+ "percentile",
+ "stddev",
+ }
+ AVG: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ SUM: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ MAX: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ MIN: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ LAST: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ AREA: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ L2NORM: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ PERCENTILE: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+ STDDEV: ClassVar["MonitorFormulaAndFunctionCostAggregator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionCostAggregator.AVG = MonitorFormulaAndFunctionCostAggregator("avg")
+MonitorFormulaAndFunctionCostAggregator.SUM = MonitorFormulaAndFunctionCostAggregator("sum")
+MonitorFormulaAndFunctionCostAggregator.MAX = MonitorFormulaAndFunctionCostAggregator("max")
+MonitorFormulaAndFunctionCostAggregator.MIN = MonitorFormulaAndFunctionCostAggregator("min")
+MonitorFormulaAndFunctionCostAggregator.LAST = MonitorFormulaAndFunctionCostAggregator("last")
+MonitorFormulaAndFunctionCostAggregator.AREA = MonitorFormulaAndFunctionCostAggregator("area")
+MonitorFormulaAndFunctionCostAggregator.L2NORM = MonitorFormulaAndFunctionCostAggregator("l2norm")
+MonitorFormulaAndFunctionCostAggregator.PERCENTILE = MonitorFormulaAndFunctionCostAggregator("percentile")
+MonitorFormulaAndFunctionCostAggregator.STDDEV = MonitorFormulaAndFunctionCostAggregator("stddev")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_cost_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_cost_data_source.py
new file mode 100644
index 0000000000..1fc5bb7f1f
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_cost_data_source.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionCostDataSource(ModelSimple):
+ """
+ Data source for cost queries.
+
+ :param value: Must be one of ["metrics", "cloud_cost", "datadog_usage"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "metrics",
+ "cloud_cost",
+ "datadog_usage",
+ }
+ METRICS: ClassVar["MonitorFormulaAndFunctionCostDataSource"]
+ CLOUD_COST: ClassVar["MonitorFormulaAndFunctionCostDataSource"]
+ DATADOG_USAGE: ClassVar["MonitorFormulaAndFunctionCostDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionCostDataSource.METRICS = MonitorFormulaAndFunctionCostDataSource("metrics")
+MonitorFormulaAndFunctionCostDataSource.CLOUD_COST = MonitorFormulaAndFunctionCostDataSource("cloud_cost")
+MonitorFormulaAndFunctionCostDataSource.DATADOG_USAGE = MonitorFormulaAndFunctionCostDataSource("datadog_usage")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_cost_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_cost_query_definition.py
new file mode 100644
index 0000000000..79445d05a9
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_cost_query_definition.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import MonitorFormulaAndFunctionCostAggregator
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source import MonitorFormulaAndFunctionCostDataSource
+
+class MonitorFormulaAndFunctionCostQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import MonitorFormulaAndFunctionCostAggregator
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source import MonitorFormulaAndFunctionCostDataSource
+ return {
+ "aggregator": (MonitorFormulaAndFunctionCostAggregator,),
+ "data_source": (MonitorFormulaAndFunctionCostDataSource,),
+ "name": (str,),
+ "query": (str,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "data_source": "data_source",
+ "name": "name",
+ "query": "query",
+ }
+
+ def __init__(self_, data_source: MonitorFormulaAndFunctionCostDataSource, name: str, query: str, aggregator: Union[MonitorFormulaAndFunctionCostAggregator, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions cost query.
+
+ :param aggregator: Aggregation methods for metric queries.
+ :type aggregator: MonitorFormulaAndFunctionCostAggregator, optional
+
+ :param data_source: Data source for cost queries.
+ :type data_source: MonitorFormulaAndFunctionCostDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: The monitor query.
+ :type query: str
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.name = name
+ self_.query = query
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_data_jobs_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_data_jobs_query_definition.py
new file mode 100644
index 0000000000..adec699fa4
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_data_jobs_query_definition.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionDataJobsQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "job_type": (str,),
+ "jobs_query": (str,),
+ "name": (str,),
+ "query_dialect": (str,),
+ }
+ attribute_map = {
+ "job_type": "job_type",
+ "jobs_query": "jobs_query",
+ "name": "name",
+ "query_dialect": "query_dialect",
+ }
+
+ def __init__(self_, job_type: str, jobs_query: str, name: str, query_dialect: str, **kwargs):
+ """
+ A formula and functions data jobs query.
+
+ :param job_type: The type of job being monitored. Valid values include:
+ ``databricks.job`` , ``spark.application`` , ``airflow.dag`` ,
+ ``dbt.job`` , ``dbt.model`` , ``dbt.test`` , ``glue.job``.
+ Custom job types are supported with the ``custom.ol.`` prefix.
+ :type job_type: str
+
+ :param jobs_query: Filter expression used to select the jobs to monitor.
+ :type jobs_query: str
+
+ :param name: Name of the query for use in formulas. Must be ``run_query``.
+ :type name: str
+
+ :param query_dialect: Query dialect for data jobs queries. Currently only ``metric`` is supported.
+ :type query_dialect: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.job_type = job_type
+ self_.jobs_query = jobs_query
+ self_.name = name
+ self_.query_dialect = query_dialect
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_data_source.py
new file mode 100644
index 0000000000..a1b66563b3
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionDataQualityDataSource(ModelSimple):
+ """
+ Data source for data quality queries.
+
+ :param value: If omitted defaults to "data_quality_metrics". Must be one of ["data_quality_metrics"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "data_quality_metrics",
+ }
+ DATA_QUALITY_METRICS: ClassVar["MonitorFormulaAndFunctionDataQualityDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionDataQualityDataSource.DATA_QUALITY_METRICS = MonitorFormulaAndFunctionDataQualityDataSource("data_quality_metrics")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_model_type_override.py b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_model_type_override.py
new file mode 100644
index 0000000000..c1974a6886
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_model_type_override.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionDataQualityModelTypeOverride(ModelSimple):
+ """
+ Override for the model type used in anomaly detection.
+
+ :param value: Must be one of ["freshness", "percentage", "any"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "freshness",
+ "percentage",
+ "any",
+ }
+ FRESHNESS: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"]
+ PERCENTAGE: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"]
+ ANY: ClassVar["MonitorFormulaAndFunctionDataQualityModelTypeOverride"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionDataQualityModelTypeOverride.FRESHNESS = MonitorFormulaAndFunctionDataQualityModelTypeOverride("freshness")
+MonitorFormulaAndFunctionDataQualityModelTypeOverride.PERCENTAGE = MonitorFormulaAndFunctionDataQualityModelTypeOverride("percentage")
+MonitorFormulaAndFunctionDataQualityModelTypeOverride.ANY = MonitorFormulaAndFunctionDataQualityModelTypeOverride("any")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_monitor_options.py b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_monitor_options.py
new file mode 100644
index 0000000000..e66231fea0
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_monitor_options.py
@@ -0,0 +1,86 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import MonitorFormulaAndFunctionDataQualityModelTypeOverride
+
+class MonitorFormulaAndFunctionDataQualityMonitorOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import MonitorFormulaAndFunctionDataQualityModelTypeOverride
+ return {
+ "crontab_override": (str,),
+ "custom_sql": (str,),
+ "custom_where": (str,),
+ "group_by_columns": ([str],),
+ "model_type_override": (MonitorFormulaAndFunctionDataQualityModelTypeOverride,),
+ "sensitivity": (float,),
+ }
+ attribute_map = {
+ "crontab_override": "crontab_override",
+ "custom_sql": "custom_sql",
+ "custom_where": "custom_where",
+ "group_by_columns": "group_by_columns",
+ "model_type_override": "model_type_override",
+ "sensitivity": "sensitivity",
+ }
+
+ def __init__(self_, crontab_override: Union[str, UnsetType]=unset, custom_sql: Union[str, UnsetType]=unset, custom_where: Union[str, UnsetType]=unset, group_by_columns: Union[List[str], UnsetType]=unset, model_type_override: Union[MonitorFormulaAndFunctionDataQualityModelTypeOverride, UnsetType]=unset, sensitivity: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Monitor configuration options for data quality queries.
+
+ :param crontab_override: Crontab expression to override the default schedule.
+ :type crontab_override: str, optional
+
+ :param custom_sql: Custom SQL query for the monitor.
+ :type custom_sql: str, optional
+
+ :param custom_where: Custom WHERE clause for the query.
+ :type custom_where: str, optional
+
+ :param group_by_columns: Columns to group results by.
+ :type group_by_columns: [str], optional
+
+ :param model_type_override: Override for the model type used in anomaly detection.
+ :type model_type_override: MonitorFormulaAndFunctionDataQualityModelTypeOverride, optional
+
+ :param sensitivity: Sensitivity of the anomaly detection model, expressed as a multiplier on the width
+ of the predicted bounds. Higher values widen the bounds and produce fewer alerts;
+ lower values tighten them and produce more alerts. Defaults to ``3.0``.
+ :type sensitivity: float, optional
+ """
+ if crontab_override is not unset:
+ kwargs["crontab_override"] = crontab_override
+ if custom_sql is not unset:
+ kwargs["custom_sql"] = custom_sql
+ if custom_where is not unset:
+ kwargs["custom_where"] = custom_where
+ if group_by_columns is not unset:
+ kwargs["group_by_columns"] = group_by_columns
+ if model_type_override is not unset:
+ kwargs["model_type_override"] = model_type_override
+ if sensitivity is not unset:
+ kwargs["sensitivity"] = sensitivity
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_query_definition.py
new file mode 100644
index 0000000000..eeb3be7749
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_data_quality_query_definition.py
@@ -0,0 +1,100 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source import MonitorFormulaAndFunctionDataQualityDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options import MonitorFormulaAndFunctionDataQualityMonitorOptions
+
+class MonitorFormulaAndFunctionDataQualityQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source import MonitorFormulaAndFunctionDataQualityDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options import MonitorFormulaAndFunctionDataQualityMonitorOptions
+ return {
+ "data_source": (MonitorFormulaAndFunctionDataQualityDataSource,),
+ "filter": (str,),
+ "group_by": ([str],),
+ "measure": (str,),
+ "monitor_options": (MonitorFormulaAndFunctionDataQualityMonitorOptions,),
+ "name": (str,),
+ "schema_version": (str,),
+ "scope": (str,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "filter": "filter",
+ "group_by": "group_by",
+ "measure": "measure",
+ "monitor_options": "monitor_options",
+ "name": "name",
+ "schema_version": "schema_version",
+ "scope": "scope",
+ }
+
+ def __init__(self_, data_source: MonitorFormulaAndFunctionDataQualityDataSource, filter: str, measure: str, name: str, group_by: Union[List[str], UnsetType]=unset, monitor_options: Union[MonitorFormulaAndFunctionDataQualityMonitorOptions, UnsetType]=unset, schema_version: Union[str, UnsetType]=unset, scope: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions data quality query.
+
+ :param data_source: Data source for data quality queries.
+ :type data_source: MonitorFormulaAndFunctionDataQualityDataSource
+
+ :param filter: Filter expression used to match on data entities. Uses Aastra query syntax.
+ :type filter: str
+
+ :param group_by: Optional grouping fields for aggregation.
+ :type group_by: [str], optional
+
+ :param measure: The data quality measure to query. Common values include:
+ ``bytes`` , ``cardinality`` , ``custom`` , ``freshness`` , ``max`` , ``mean`` , ``min`` ,
+ ``nullness`` , ``percent_negative`` , ``percent_zero`` , ``row_count`` , ``stddev`` ,
+ ``sum`` , ``uniqueness``. Additional values may be supported.
+ :type measure: str
+
+ :param monitor_options: Monitor configuration options for data quality queries.
+ :type monitor_options: MonitorFormulaAndFunctionDataQualityMonitorOptions, optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param schema_version: Schema version for the data quality query.
+ :type schema_version: str, optional
+
+ :param scope: Optional scoping expression to further filter metrics. Uses metrics filter syntax.
+ This is useful when an entity has been configured to emit metrics with additional tags.
+ :type scope: str, optional
+ """
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if monitor_options is not unset:
+ kwargs["monitor_options"] = monitor_options
+ if schema_version is not unset:
+ kwargs["schema_version"] = schema_version
+ if scope is not unset:
+ kwargs["scope"] = scope
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.filter = filter
+ self_.measure = measure
+ self_.name = name
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_event_aggregation.py b/datadog_api_client/v1/model/monitor_formula_and_function_event_aggregation.py
new file mode 100644
index 0000000000..46f7db0bbb
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_event_aggregation.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionEventAggregation(ModelSimple):
+ """
+ Aggregation methods for event platform queries.
+
+ :param value: Must be one of ["count", "cardinality", "median", "pc75", "pc90", "pc95", "pc98", "pc99", "sum", "min", "max", "avg"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "count",
+ "cardinality",
+ "median",
+ "pc75",
+ "pc90",
+ "pc95",
+ "pc98",
+ "pc99",
+ "sum",
+ "min",
+ "max",
+ "avg",
+ }
+ COUNT: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ CARDINALITY: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ MEDIAN: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ PC75: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ PC90: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ PC95: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ PC98: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ PC99: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ SUM: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ MIN: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ MAX: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+ AVG: ClassVar["MonitorFormulaAndFunctionEventAggregation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionEventAggregation.COUNT = MonitorFormulaAndFunctionEventAggregation("count")
+MonitorFormulaAndFunctionEventAggregation.CARDINALITY = MonitorFormulaAndFunctionEventAggregation("cardinality")
+MonitorFormulaAndFunctionEventAggregation.MEDIAN = MonitorFormulaAndFunctionEventAggregation("median")
+MonitorFormulaAndFunctionEventAggregation.PC75 = MonitorFormulaAndFunctionEventAggregation("pc75")
+MonitorFormulaAndFunctionEventAggregation.PC90 = MonitorFormulaAndFunctionEventAggregation("pc90")
+MonitorFormulaAndFunctionEventAggregation.PC95 = MonitorFormulaAndFunctionEventAggregation("pc95")
+MonitorFormulaAndFunctionEventAggregation.PC98 = MonitorFormulaAndFunctionEventAggregation("pc98")
+MonitorFormulaAndFunctionEventAggregation.PC99 = MonitorFormulaAndFunctionEventAggregation("pc99")
+MonitorFormulaAndFunctionEventAggregation.SUM = MonitorFormulaAndFunctionEventAggregation("sum")
+MonitorFormulaAndFunctionEventAggregation.MIN = MonitorFormulaAndFunctionEventAggregation("min")
+MonitorFormulaAndFunctionEventAggregation.MAX = MonitorFormulaAndFunctionEventAggregation("max")
+MonitorFormulaAndFunctionEventAggregation.AVG = MonitorFormulaAndFunctionEventAggregation("avg")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition.py
new file mode 100644
index 0000000000..02cb310ce2
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.monitor_formula_and_function_events_data_source import MonitorFormulaAndFunctionEventsDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_search import MonitorFormulaAndFunctionEventQueryDefinitionSearch
+
+class MonitorFormulaAndFunctionEventQueryDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+ from datadog_api_client.v1.model.monitor_formula_and_function_events_data_source import MonitorFormulaAndFunctionEventsDataSource
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_search import MonitorFormulaAndFunctionEventQueryDefinitionSearch
+ return {
+ "compute": (MonitorFormulaAndFunctionEventQueryDefinitionCompute,),
+ "data_source": (MonitorFormulaAndFunctionEventsDataSource,),
+ "group_by": ([MonitorFormulaAndFunctionEventQueryGroupBy],),
+ "indexes": ([str],),
+ "name": (str,),
+ "search": (MonitorFormulaAndFunctionEventQueryDefinitionSearch,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "indexes": "indexes",
+ "name": "name",
+ "search": "search",
+ }
+
+ def __init__(self_, compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute, data_source: MonitorFormulaAndFunctionEventsDataSource, name: str, group_by: Union[List[MonitorFormulaAndFunctionEventQueryGroupBy], UnsetType]=unset, indexes: Union[List[str], UnsetType]=unset, search: Union[MonitorFormulaAndFunctionEventQueryDefinitionSearch, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions events query.
+
+ :param compute: Compute options.
+ :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute
+
+ :param data_source: Data source for event platform-based queries.
+ :type data_source: MonitorFormulaAndFunctionEventsDataSource
+
+ :param group_by: Group by options.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use ``[]`` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search options.
+ :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional
+ """
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if indexes is not unset:
+ kwargs["indexes"] = indexes
+ if search is not unset:
+ kwargs["search"] = search
+ super().__init__(kwargs)
+
+
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.name = name
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py
new file mode 100644
index 0000000000..78bd19d665
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_compute.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_aggregation import MonitorFormulaAndFunctionEventAggregation
+
+class MonitorFormulaAndFunctionEventQueryDefinitionCompute(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_aggregation import MonitorFormulaAndFunctionEventAggregation
+ return {
+ "aggregation": (MonitorFormulaAndFunctionEventAggregation,),
+ "interval": (int,),
+ "metric": (str,),
+ "name": (str,),
+ "source": (str,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "interval": "interval",
+ "metric": "metric",
+ "name": "name",
+ "source": "source",
+ }
+
+ def __init__(self_, aggregation: MonitorFormulaAndFunctionEventAggregation, interval: Union[int, UnsetType]=unset, metric: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, source: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Compute options.
+
+ :param aggregation: Aggregation methods for event platform queries.
+ :type aggregation: MonitorFormulaAndFunctionEventAggregation
+
+ :param interval: A time interval in milliseconds.
+ :type interval: int, optional
+
+ :param metric: Measurable attribute to compute.
+ :type metric: str, optional
+
+ :param name: The name assigned to this aggregation, when multiple aggregations are defined for a query.
+ :type name: str, optional
+
+ :param source: Source reference for composite query payloads.
+ :type source: str, optional
+ """
+ if interval is not unset:
+ kwargs["interval"] = interval
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if name is not unset:
+ kwargs["name"] = name
+ if source is not unset:
+ kwargs["source"] = source
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_search.py b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_search.py
new file mode 100644
index 0000000000..b55ee3cb16
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_definition_search.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionEventQueryDefinitionSearch(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ }
+ attribute_map = {
+ "query": "query",
+ }
+
+ def __init__(self_, query: str, **kwargs):
+ """
+ Search options.
+
+ :param query: Events search string.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_event_query_group_by.py b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_group_by.py
new file mode 100644
index 0000000000..884f3dbba9
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_group_by.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by_sort import MonitorFormulaAndFunctionEventQueryGroupBySort
+
+class MonitorFormulaAndFunctionEventQueryGroupBy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by_sort import MonitorFormulaAndFunctionEventQueryGroupBySort
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "sort": (MonitorFormulaAndFunctionEventQueryGroupBySort,),
+ "source": (str,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "sort": "sort",
+ "source": "source",
+ }
+
+ def __init__(self_, facet: str, limit: Union[int, UnsetType]=unset, sort: Union[MonitorFormulaAndFunctionEventQueryGroupBySort, UnsetType]=unset, source: Union[str, UnsetType]=unset, **kwargs):
+ """
+ List of objects used to group by.
+
+ :param facet: Event facet.
+ :type facet: str
+
+ :param limit: Number of groups to return.
+ :type limit: int, optional
+
+ :param sort: Options for sorting group by results.
+ :type sort: MonitorFormulaAndFunctionEventQueryGroupBySort, optional
+
+ :param source: Source reference for composite query payloads.
+ :type source: str, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if source is not unset:
+ kwargs["source"] = source
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_event_query_group_by_sort.py b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_group_by_sort.py
new file mode 100644
index 0000000000..96e2ace494
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_event_query_group_by_sort.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_aggregation import MonitorFormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+
+class MonitorFormulaAndFunctionEventQueryGroupBySort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_aggregation import MonitorFormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+ return {
+ "aggregation": (MonitorFormulaAndFunctionEventAggregation,),
+ "metric": (str,),
+ "order": (QuerySortOrder,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ "order": "order",
+ }
+
+ def __init__(self_, aggregation: MonitorFormulaAndFunctionEventAggregation, metric: Union[str, UnsetType]=unset, order: Union[QuerySortOrder, UnsetType]=unset, **kwargs):
+ """
+ Options for sorting group by results.
+
+ :param aggregation: Aggregation methods for event platform queries.
+ :type aggregation: MonitorFormulaAndFunctionEventAggregation
+
+ :param metric: Metric used for sorting group by results.
+ :type metric: str, optional
+
+ :param order: Direction of sort.
+ :type order: QuerySortOrder, optional
+ """
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_events_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_events_data_source.py
new file mode 100644
index 0000000000..0d18644752
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_events_data_source.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionEventsDataSource(ModelSimple):
+ """
+ Data source for event platform-based queries.
+
+ :param value: Must be one of ["rum", "ci_pipelines", "ci_tests", "audit", "events", "logs", "spans", "database_queries", "network", "network_path"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "rum",
+ "ci_pipelines",
+ "ci_tests",
+ "audit",
+ "events",
+ "logs",
+ "spans",
+ "database_queries",
+ "network",
+ "network_path",
+ }
+ RUM: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ CI_PIPELINES: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ CI_TESTS: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ AUDIT: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ EVENTS: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ LOGS: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ SPANS: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ DATABASE_QUERIES: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ NETWORK: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+ NETWORK_PATH: ClassVar["MonitorFormulaAndFunctionEventsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionEventsDataSource.RUM = MonitorFormulaAndFunctionEventsDataSource("rum")
+MonitorFormulaAndFunctionEventsDataSource.CI_PIPELINES = MonitorFormulaAndFunctionEventsDataSource("ci_pipelines")
+MonitorFormulaAndFunctionEventsDataSource.CI_TESTS = MonitorFormulaAndFunctionEventsDataSource("ci_tests")
+MonitorFormulaAndFunctionEventsDataSource.AUDIT = MonitorFormulaAndFunctionEventsDataSource("audit")
+MonitorFormulaAndFunctionEventsDataSource.EVENTS = MonitorFormulaAndFunctionEventsDataSource("events")
+MonitorFormulaAndFunctionEventsDataSource.LOGS = MonitorFormulaAndFunctionEventsDataSource("logs")
+MonitorFormulaAndFunctionEventsDataSource.SPANS = MonitorFormulaAndFunctionEventsDataSource("spans")
+MonitorFormulaAndFunctionEventsDataSource.DATABASE_QUERIES = MonitorFormulaAndFunctionEventsDataSource("database_queries")
+MonitorFormulaAndFunctionEventsDataSource.NETWORK = MonitorFormulaAndFunctionEventsDataSource("network")
+MonitorFormulaAndFunctionEventsDataSource.NETWORK_PATH = MonitorFormulaAndFunctionEventsDataSource("network_path")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_metrics_aggregator.py b/datadog_api_client/v1/model/monitor_formula_and_function_metrics_aggregator.py
new file mode 100644
index 0000000000..c6adee7917
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_metrics_aggregator.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionMetricsAggregator(ModelSimple):
+ """
+ Aggregator for metrics queries.
+
+ :param value: Must be one of ["avg", "min", "max", "sum", "last", "mean", "area", "l2norm", "percentile", "stddev", "count_unique"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg",
+ "min",
+ "max",
+ "sum",
+ "last",
+ "mean",
+ "area",
+ "l2norm",
+ "percentile",
+ "stddev",
+ "count_unique",
+ }
+ AVG: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ MIN: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ MAX: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ SUM: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ LAST: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ MEAN: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ AREA: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ L2NORM: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ PERCENTILE: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ STDDEV: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+ COUNT_UNIQUE: ClassVar["MonitorFormulaAndFunctionMetricsAggregator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionMetricsAggregator.AVG = MonitorFormulaAndFunctionMetricsAggregator("avg")
+MonitorFormulaAndFunctionMetricsAggregator.MIN = MonitorFormulaAndFunctionMetricsAggregator("min")
+MonitorFormulaAndFunctionMetricsAggregator.MAX = MonitorFormulaAndFunctionMetricsAggregator("max")
+MonitorFormulaAndFunctionMetricsAggregator.SUM = MonitorFormulaAndFunctionMetricsAggregator("sum")
+MonitorFormulaAndFunctionMetricsAggregator.LAST = MonitorFormulaAndFunctionMetricsAggregator("last")
+MonitorFormulaAndFunctionMetricsAggregator.MEAN = MonitorFormulaAndFunctionMetricsAggregator("mean")
+MonitorFormulaAndFunctionMetricsAggregator.AREA = MonitorFormulaAndFunctionMetricsAggregator("area")
+MonitorFormulaAndFunctionMetricsAggregator.L2NORM = MonitorFormulaAndFunctionMetricsAggregator("l2norm")
+MonitorFormulaAndFunctionMetricsAggregator.PERCENTILE = MonitorFormulaAndFunctionMetricsAggregator("percentile")
+MonitorFormulaAndFunctionMetricsAggregator.STDDEV = MonitorFormulaAndFunctionMetricsAggregator("stddev")
+MonitorFormulaAndFunctionMetricsAggregator.COUNT_UNIQUE = MonitorFormulaAndFunctionMetricsAggregator("count_unique")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_metrics_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_metrics_data_source.py
new file mode 100644
index 0000000000..726740e8c3
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_metrics_data_source.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionMetricsDataSource(ModelSimple):
+ """
+ Data source for metrics queries.
+
+ :param value: Must be one of ["metrics", "cloud_cost", "datadog_usage"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "metrics",
+ "cloud_cost",
+ "datadog_usage",
+ }
+ METRICS: ClassVar["MonitorFormulaAndFunctionMetricsDataSource"]
+ CLOUD_COST: ClassVar["MonitorFormulaAndFunctionMetricsDataSource"]
+ DATADOG_USAGE: ClassVar["MonitorFormulaAndFunctionMetricsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionMetricsDataSource.METRICS = MonitorFormulaAndFunctionMetricsDataSource("metrics")
+MonitorFormulaAndFunctionMetricsDataSource.CLOUD_COST = MonitorFormulaAndFunctionMetricsDataSource("cloud_cost")
+MonitorFormulaAndFunctionMetricsDataSource.DATADOG_USAGE = MonitorFormulaAndFunctionMetricsDataSource("datadog_usage")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_metrics_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_metrics_query_definition.py
new file mode 100644
index 0000000000..690975ae4a
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_metrics_query_definition.py
@@ -0,0 +1,73 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_aggregator import MonitorFormulaAndFunctionMetricsAggregator
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import MonitorFormulaAndFunctionMetricsDataSource
+
+class MonitorFormulaAndFunctionMetricsQueryDefinition(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_aggregator import MonitorFormulaAndFunctionMetricsAggregator
+ from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import MonitorFormulaAndFunctionMetricsDataSource
+ return {
+ "aggregator": (MonitorFormulaAndFunctionMetricsAggregator,),
+ "data_source": (MonitorFormulaAndFunctionMetricsDataSource,),
+ "name": (str,),
+ "query": (str,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "data_source": "data_source",
+ "name": "name",
+ "query": "query",
+ }
+
+ def __init__(self_, data_source: MonitorFormulaAndFunctionMetricsDataSource, query: str, aggregator: Union[MonitorFormulaAndFunctionMetricsAggregator, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A formula and functions metrics query for use in aggregate queries.
+
+ :param aggregator: Aggregator for metrics queries.
+ :type aggregator: MonitorFormulaAndFunctionMetricsAggregator, optional
+
+ :param data_source: Data source for metrics queries.
+ :type data_source: MonitorFormulaAndFunctionMetricsDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str, optional
+
+ :param query: The metrics query definition.
+ :type query: str
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.query = query
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py
new file mode 100644
index 0000000000..098dab726d
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_query_definition.py
@@ -0,0 +1,129 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionQueryDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ A formula and function query.
+
+ :param compute: Compute options.
+ :type compute: MonitorFormulaAndFunctionEventQueryDefinitionCompute
+
+ :param data_source: Data source for event platform-based queries.
+ :type data_source: MonitorFormulaAndFunctionEventsDataSource
+
+ :param group_by: Group by options.
+ :type group_by: [MonitorFormulaAndFunctionEventQueryGroupBy], optional
+
+ :param indexes: An array of index names to query in the stream. Omit or use `[]` to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param search: Search options.
+ :type search: MonitorFormulaAndFunctionEventQueryDefinitionSearch, optional
+
+ :param aggregator: Aggregation methods for metric queries.
+ :type aggregator: MonitorFormulaAndFunctionCostAggregator, optional
+
+ :param query: The monitor query.
+ :type query: str
+
+ :param filter: Filter expression used to match on data entities. Uses Aastra query syntax.
+ :type filter: str
+
+ :param measure: The data quality measure to query. Common values include:
+ `bytes`, `cardinality`, `custom`, `freshness`, `max`, `mean`, `min`,
+ `nullness`, `percent_negative`, `percent_zero`, `row_count`, `stddev`,
+ `sum`, `uniqueness`. Additional values may be supported.
+ :type measure: str
+
+ :param monitor_options: Monitor configuration options for data quality queries.
+ :type monitor_options: MonitorFormulaAndFunctionDataQualityMonitorOptions, optional
+
+ :param schema_version: Schema version for the data quality query.
+ :type schema_version: str, optional
+
+ :param scope: Optional scoping expression to further filter metrics. Uses metrics filter syntax.
+ This is useful when an entity has been configured to emit metrics with additional tags.
+ :type scope: str, optional
+
+ :param job_type: The type of job being monitored. Valid values include:
+ `databricks.job`, `spark.application`, `airflow.dag`,
+ `dbt.job`, `dbt.model`, `dbt.test`, `glue.job`.
+ Custom job types are supported with the `custom.ol.` prefix.
+ :type job_type: str
+
+ :param jobs_query: Filter expression used to select the jobs to monitor.
+ :type jobs_query: str
+
+ :param query_dialect: Query dialect for data jobs queries. Currently only `metric` is supported.
+ :type query_dialect: str
+
+ :param augment_query: Augment query for aggregate augmented queries. Can be an events query or a reference table query.
+ :type augment_query: MonitorFormulaAndFunctionAggregateAugmentQuery
+
+ :param base_query: Base query for aggregate queries. Can be an events query or a metrics query.
+ :type base_query: MonitorFormulaAndFunctionAggregateBaseQuery
+
+ :param join_condition: Join condition for aggregate augmented queries.
+ :type join_condition: MonitorFormulaAndFunctionAggregateQueryJoinCondition
+
+ :param filter_query: Filter query for aggregate filtered queries. Can be an events query or a reference table query.
+ :type filter_query: MonitorFormulaAndFunctionAggregateFilterQuery
+
+ :param filters: Filter conditions for the query.
+ :type filters: [MonitorFormulaAndFunctionAggregateQueryFilter]
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import MonitorFormulaAndFunctionCostQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import MonitorFormulaAndFunctionDataQualityQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_jobs_query_definition import MonitorFormulaAndFunctionDataJobsQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import MonitorFormulaAndFunctionAggregateFilteredQueryDefinition
+ return {
+ "oneOf": [
+ MonitorFormulaAndFunctionEventQueryDefinition,
+ MonitorFormulaAndFunctionCostQueryDefinition,
+ MonitorFormulaAndFunctionDataQualityQueryDefinition,
+ MonitorFormulaAndFunctionDataJobsQueryDefinition,
+ MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition,
+ MonitorFormulaAndFunctionAggregateFilteredQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_column.py b/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_column.py
new file mode 100644
index 0000000000..ce88a43495
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_column.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorFormulaAndFunctionReferenceTableColumn(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "alias": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "name": "name",
+ }
+
+ def __init__(self_, name: str, alias: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A column definition for reference table queries.
+
+ :param alias: Optional alias for the column.
+ :type alias: str, optional
+
+ :param name: Name of the column.
+ :type name: str
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_data_source.py b/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_data_source.py
new file mode 100644
index 0000000000..ffab5c9000
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorFormulaAndFunctionReferenceTableDataSource(ModelSimple):
+ """
+ Data source for reference table queries.
+
+ :param value: If omitted defaults to "reference_table". Must be one of ["reference_table"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "reference_table",
+ }
+ REFERENCE_TABLE: ClassVar["MonitorFormulaAndFunctionReferenceTableDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorFormulaAndFunctionReferenceTableDataSource.REFERENCE_TABLE = MonitorFormulaAndFunctionReferenceTableDataSource("reference_table")
diff --git a/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_query_definition.py b/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_query_definition.py
new file mode 100644
index 0000000000..03f46ec912
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_formula_and_function_reference_table_query_definition.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import MonitorFormulaAndFunctionReferenceTableColumn
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import MonitorFormulaAndFunctionReferenceTableDataSource
+
+class MonitorFormulaAndFunctionReferenceTableQueryDefinition(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import MonitorFormulaAndFunctionReferenceTableColumn
+ from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import MonitorFormulaAndFunctionReferenceTableDataSource
+ return {
+ "columns": ([MonitorFormulaAndFunctionReferenceTableColumn],),
+ "data_source": (MonitorFormulaAndFunctionReferenceTableDataSource,),
+ "name": (str,),
+ "query_filter": (str,),
+ "table_name": (str,),
+ }
+ attribute_map = {
+ "columns": "columns",
+ "data_source": "data_source",
+ "name": "name",
+ "query_filter": "query_filter",
+ "table_name": "table_name",
+ }
+
+ def __init__(self_, data_source: MonitorFormulaAndFunctionReferenceTableDataSource, table_name: str, columns: Union[List[MonitorFormulaAndFunctionReferenceTableColumn], UnsetType]=unset, name: Union[str, UnsetType]=unset, query_filter: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A reference table query for use in aggregate queries.
+
+ :param columns: List of columns to retrieve from the reference table.
+ :type columns: [MonitorFormulaAndFunctionReferenceTableColumn], optional
+
+ :param data_source: Data source for reference table queries.
+ :type data_source: MonitorFormulaAndFunctionReferenceTableDataSource
+
+ :param name: Name of the query.
+ :type name: str, optional
+
+ :param query_filter: Optional filter expression for the reference table query.
+ :type query_filter: str, optional
+
+ :param table_name: Name of the reference table.
+ :type table_name: str
+ """
+ if columns is not unset:
+ kwargs["columns"] = columns
+ if name is not unset:
+ kwargs["name"] = name
+ if query_filter is not unset:
+ kwargs["query_filter"] = query_filter
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.table_name = table_name
diff --git a/datadog_api_client/v1/model/monitor_group_search_response.py b/datadog_api_client/v1/model/monitor_group_search_response.py
new file mode 100644
index 0000000000..3034d6f529
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_group_search_response.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_group_search_response_counts import MonitorGroupSearchResponseCounts
+ from datadog_api_client.v1.model.monitor_group_search_result import MonitorGroupSearchResult
+ from datadog_api_client.v1.model.monitor_search_response_metadata import MonitorSearchResponseMetadata
+
+class MonitorGroupSearchResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_group_search_response_counts import MonitorGroupSearchResponseCounts
+ from datadog_api_client.v1.model.monitor_group_search_result import MonitorGroupSearchResult
+ from datadog_api_client.v1.model.monitor_search_response_metadata import MonitorSearchResponseMetadata
+ return {
+ "counts": (MonitorGroupSearchResponseCounts,),
+ "groups": ([MonitorGroupSearchResult],),
+ "metadata": (MonitorSearchResponseMetadata,),
+ }
+ attribute_map = {
+ "counts": "counts",
+ "groups": "groups",
+ "metadata": "metadata",
+ }
+ read_only_vars = {
+ "counts",
+ "groups",
+ }
+
+ def __init__(self_, counts: Union[MonitorGroupSearchResponseCounts, UnsetType]=unset, groups: Union[List[MonitorGroupSearchResult], UnsetType]=unset, metadata: Union[MonitorSearchResponseMetadata, UnsetType]=unset, **kwargs):
+ """
+ The response of a monitor group search.
+
+ :param counts: The counts of monitor groups per different criteria.
+ :type counts: MonitorGroupSearchResponseCounts, optional
+
+ :param groups: The list of found monitor groups.
+ :type groups: [MonitorGroupSearchResult], optional
+
+ :param metadata: Metadata about the response.
+ :type metadata: MonitorSearchResponseMetadata, optional
+ """
+ if counts is not unset:
+ kwargs["counts"] = counts
+ if groups is not unset:
+ kwargs["groups"] = groups
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_group_search_response_counts.py b/datadog_api_client/v1/model/monitor_group_search_response_counts.py
new file mode 100644
index 0000000000..6225603926
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_group_search_response_counts.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_search_count import MonitorSearchCount
+
+class MonitorGroupSearchResponseCounts(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_search_count import MonitorSearchCount
+ return {
+ "status": (MonitorSearchCount,),
+ "type": (MonitorSearchCount,),
+ }
+ attribute_map = {
+ "status": "status",
+ "type": "type",
+ }
+
+ def __init__(self_, status: Union[MonitorSearchCount, UnsetType]=unset, type: Union[MonitorSearchCount, UnsetType]=unset, **kwargs):
+ """
+ The counts of monitor groups per different criteria.
+
+ :param status: Search facets.
+ :type status: MonitorSearchCount, optional
+
+ :param type: Search facets.
+ :type type: MonitorSearchCount, optional
+ """
+ if status is not unset:
+ kwargs["status"] = status
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_group_search_result.py b/datadog_api_client/v1/model/monitor_group_search_result.py
new file mode 100644
index 0000000000..7a59167645
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_group_search_result.py
@@ -0,0 +1,100 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+
+class MonitorGroupSearchResult(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ return {
+ "group": (str,),
+ "group_tags": ([str],),
+ "last_nodata_ts": (int,),
+ "last_triggered_ts": (int, none_type),
+ "monitor_id": (int,),
+ "monitor_name": (str,),
+ "status": (MonitorOverallStates,),
+ }
+ attribute_map = {
+ "group": "group",
+ "group_tags": "group_tags",
+ "last_nodata_ts": "last_nodata_ts",
+ "last_triggered_ts": "last_triggered_ts",
+ "monitor_id": "monitor_id",
+ "monitor_name": "monitor_name",
+ "status": "status",
+ }
+ read_only_vars = {
+ "group",
+ "group_tags",
+ "last_nodata_ts",
+ "last_triggered_ts",
+ "monitor_id",
+ "monitor_name",
+ "status",
+ }
+
+ def __init__(self_, group: Union[str, UnsetType]=unset, group_tags: Union[List[str], UnsetType]=unset, last_nodata_ts: Union[int, UnsetType]=unset, last_triggered_ts: Union[int, none_type, UnsetType]=unset, monitor_id: Union[int, UnsetType]=unset, monitor_name: Union[str, UnsetType]=unset, status: Union[MonitorOverallStates, UnsetType]=unset, **kwargs):
+ """
+ A single monitor group search result.
+
+ :param group: The name of the group.
+ :type group: str, optional
+
+ :param group_tags: The list of tags of the monitor group.
+ :type group_tags: [str], optional
+
+ :param last_nodata_ts: Latest timestamp the monitor group was in NO_DATA state.
+ :type last_nodata_ts: int, optional
+
+ :param last_triggered_ts: Latest timestamp the monitor group triggered.
+ :type last_triggered_ts: int, none_type, optional
+
+ :param monitor_id: The ID of the monitor.
+ :type monitor_id: int, optional
+
+ :param monitor_name: The name of the monitor.
+ :type monitor_name: str, optional
+
+ :param status: The different states your monitor can be in.
+ :type status: MonitorOverallStates, optional
+ """
+ if group is not unset:
+ kwargs["group"] = group
+ if group_tags is not unset:
+ kwargs["group_tags"] = group_tags
+ if last_nodata_ts is not unset:
+ kwargs["last_nodata_ts"] = last_nodata_ts
+ if last_triggered_ts is not unset:
+ kwargs["last_triggered_ts"] = last_triggered_ts
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if monitor_name is not unset:
+ kwargs["monitor_name"] = monitor_name
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_options.py b/datadog_api_client/v1/model/monitor_options.py
new file mode 100644
index 0000000000..6973522903
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options.py
@@ -0,0 +1,332 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_options_aggregation import MonitorOptionsAggregation
+ from datadog_api_client.v1.model.monitor_device_id import MonitorDeviceID
+ from datadog_api_client.v1.model.monitor_options_notification_presets import MonitorOptionsNotificationPresets
+ from datadog_api_client.v1.model.on_missing_data_option import OnMissingDataOption
+ from datadog_api_client.v1.model.monitor_renotify_status_type import MonitorRenotifyStatusType
+ from datadog_api_client.v1.model.monitor_options_scheduling_options import MonitorOptionsSchedulingOptions
+ from datadog_api_client.v1.model.monitor_threshold_window_options import MonitorThresholdWindowOptions
+ from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds
+ from datadog_api_client.v1.model.monitor_formula_and_function_query_definition import MonitorFormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import MonitorFormulaAndFunctionCostQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import MonitorFormulaAndFunctionDataQualityQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_jobs_query_definition import MonitorFormulaAndFunctionDataJobsQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import MonitorFormulaAndFunctionAggregateFilteredQueryDefinition
+
+class MonitorOptions(ModelNormal):
+ validations = {
+ "min_failure_duration": {
+ "inclusive_maximum": 7200,
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_options_aggregation import MonitorOptionsAggregation
+ from datadog_api_client.v1.model.monitor_device_id import MonitorDeviceID
+ from datadog_api_client.v1.model.monitor_options_notification_presets import MonitorOptionsNotificationPresets
+ from datadog_api_client.v1.model.on_missing_data_option import OnMissingDataOption
+ from datadog_api_client.v1.model.monitor_renotify_status_type import MonitorRenotifyStatusType
+ from datadog_api_client.v1.model.monitor_options_scheduling_options import MonitorOptionsSchedulingOptions
+ from datadog_api_client.v1.model.monitor_threshold_window_options import MonitorThresholdWindowOptions
+ from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds
+ from datadog_api_client.v1.model.monitor_formula_and_function_query_definition import MonitorFormulaAndFunctionQueryDefinition
+ return {
+ "aggregation": (MonitorOptionsAggregation,),
+ "device_ids": ([MonitorDeviceID],),
+ "enable_logs_sample": (bool,),
+ "enable_samples": (bool,),
+ "escalation_message": (str,),
+ "evaluation_delay": (int, none_type),
+ "group_retention_duration": (str,),
+ "groupby_simple_monitor": (bool,),
+ "include_tags": (bool,),
+ "locked": (bool,),
+ "min_failure_duration": (int, none_type),
+ "min_location_failed": (int, none_type),
+ "new_group_delay": (int, none_type),
+ "new_host_delay": (int, none_type),
+ "no_data_timeframe": (int, none_type),
+ "notification_preset_name": (MonitorOptionsNotificationPresets,),
+ "notify_audit": (bool,),
+ "notify_by": ([str],),
+ "notify_no_data": (bool,),
+ "on_missing_data": (OnMissingDataOption,),
+ "renotify_interval": (int, none_type),
+ "renotify_occurrences": (int, none_type),
+ "renotify_statuses": ([MonitorRenotifyStatusType], none_type),
+ "require_full_window": (bool,),
+ "scheduling_options": (MonitorOptionsSchedulingOptions,),
+ "silenced": ({str: (int, none_type,)},),
+ "synthetics_check_id": (str, none_type),
+ "threshold_windows": (MonitorThresholdWindowOptions,),
+ "thresholds": (MonitorThresholds,),
+ "timeout_h": (int, none_type),
+ "variables": ([MonitorFormulaAndFunctionQueryDefinition],),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "device_ids": "device_ids",
+ "enable_logs_sample": "enable_logs_sample",
+ "enable_samples": "enable_samples",
+ "escalation_message": "escalation_message",
+ "evaluation_delay": "evaluation_delay",
+ "group_retention_duration": "group_retention_duration",
+ "groupby_simple_monitor": "groupby_simple_monitor",
+ "include_tags": "include_tags",
+ "locked": "locked",
+ "min_failure_duration": "min_failure_duration",
+ "min_location_failed": "min_location_failed",
+ "new_group_delay": "new_group_delay",
+ "new_host_delay": "new_host_delay",
+ "no_data_timeframe": "no_data_timeframe",
+ "notification_preset_name": "notification_preset_name",
+ "notify_audit": "notify_audit",
+ "notify_by": "notify_by",
+ "notify_no_data": "notify_no_data",
+ "on_missing_data": "on_missing_data",
+ "renotify_interval": "renotify_interval",
+ "renotify_occurrences": "renotify_occurrences",
+ "renotify_statuses": "renotify_statuses",
+ "require_full_window": "require_full_window",
+ "scheduling_options": "scheduling_options",
+ "silenced": "silenced",
+ "synthetics_check_id": "synthetics_check_id",
+ "threshold_windows": "threshold_windows",
+ "thresholds": "thresholds",
+ "timeout_h": "timeout_h",
+ "variables": "variables",
+ }
+ read_only_vars = {
+ "aggregation",
+ "device_ids",
+ }
+
+ def __init__(self_, aggregation: Union[MonitorOptionsAggregation, UnsetType]=unset, device_ids: Union[List[MonitorDeviceID], UnsetType]=unset, enable_logs_sample: Union[bool, UnsetType]=unset, enable_samples: Union[bool, UnsetType]=unset, escalation_message: Union[str, UnsetType]=unset, evaluation_delay: Union[int, none_type, UnsetType]=unset, group_retention_duration: Union[str, UnsetType]=unset, groupby_simple_monitor: Union[bool, UnsetType]=unset, include_tags: Union[bool, UnsetType]=unset, locked: Union[bool, UnsetType]=unset, min_failure_duration: Union[int, none_type, UnsetType]=unset, min_location_failed: Union[int, none_type, UnsetType]=unset, new_group_delay: Union[int, none_type, UnsetType]=unset, new_host_delay: Union[int, none_type, UnsetType]=unset, no_data_timeframe: Union[int, none_type, UnsetType]=unset, notification_preset_name: Union[MonitorOptionsNotificationPresets, UnsetType]=unset, notify_audit: Union[bool, UnsetType]=unset, notify_by: Union[List[str], UnsetType]=unset, notify_no_data: Union[bool, UnsetType]=unset, on_missing_data: Union[OnMissingDataOption, UnsetType]=unset, renotify_interval: Union[int, none_type, UnsetType]=unset, renotify_occurrences: Union[int, none_type, UnsetType]=unset, renotify_statuses: Union[List[MonitorRenotifyStatusType], none_type, UnsetType]=unset, require_full_window: Union[bool, UnsetType]=unset, scheduling_options: Union[MonitorOptionsSchedulingOptions, UnsetType]=unset, silenced: Union[Dict[str, Union[int, none_type]], UnsetType]=unset, synthetics_check_id: Union[str, none_type, UnsetType]=unset, threshold_windows: Union[MonitorThresholdWindowOptions, UnsetType]=unset, thresholds: Union[MonitorThresholds, UnsetType]=unset, timeout_h: Union[int, none_type, UnsetType]=unset, variables: Union[List[Union[MonitorFormulaAndFunctionQueryDefinition, MonitorFormulaAndFunctionEventQueryDefinition, MonitorFormulaAndFunctionCostQueryDefinition, MonitorFormulaAndFunctionDataQualityQueryDefinition, MonitorFormulaAndFunctionDataJobsQueryDefinition, MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition, MonitorFormulaAndFunctionAggregateFilteredQueryDefinition]], UnsetType]=unset, **kwargs):
+ """
+ List of options associated with your monitor.
+
+ :param aggregation: Type of aggregation performed in the monitor query.
+ :type aggregation: MonitorOptionsAggregation, optional
+
+ :param device_ids: IDs of the device the Synthetics monitor is running on. **Deprecated**.
+ :type device_ids: [MonitorDeviceID], optional
+
+ :param enable_logs_sample: Whether or not to send a log sample when the log monitor triggers.
+ :type enable_logs_sample: bool, optional
+
+ :param enable_samples: Whether or not to send a list of samples when the monitor triggers. This is only used by CI Test and Pipeline monitors.
+ :type enable_samples: bool, optional
+
+ :param escalation_message: We recommend using the `is_renotify `_ ,
+ block in the original message instead.
+ A message to include with a re-notification. Supports the ``@username`` notification we allow elsewhere.
+ Not applicable if ``renotify_interval`` is ``None``.
+ :type escalation_message: str, optional
+
+ :param evaluation_delay: Time (in seconds) to delay evaluation, as a non-negative integer. For example, if the value is set to ``300`` (5min),
+ the timeframe is set to ``last_5m`` and the time is 7:00, the monitor evaluates data from 6:50 to 6:55.
+ This is useful for AWS CloudWatch and other backfilled metrics to ensure the monitor always has data during evaluation.
+ :type evaluation_delay: int, none_type, optional
+
+ :param group_retention_duration: The time span after which groups with missing data are dropped from the monitor state.
+ The minimum value is one hour, and the maximum value is 72 hours.
+ Example values are: "60m", "1h", and "2d".
+ This option is only available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.
+ :type group_retention_duration: str, optional
+
+ :param groupby_simple_monitor: Whether the log alert monitor triggers a single alert or multiple alerts when any group breaches a threshold. Use ``notify_by`` instead. **Deprecated**.
+ :type groupby_simple_monitor: bool, optional
+
+ :param include_tags: A Boolean indicating whether notifications from this monitor automatically inserts its triggering tags into the title.
+
+ **Examples**
+
+ * If ``True`` , ``[Triggered on {host:h1}] Monitor Title``
+ * If ``False`` , ``[Triggered] Monitor Title``
+ :type include_tags: bool, optional
+
+ :param locked: Whether or not the monitor is locked (only editable by creator and admins). Use ``restricted_roles`` instead. **Deprecated**.
+ :type locked: bool, optional
+
+ :param min_failure_duration: How long the test should be in failure before alerting (integer, number of seconds, max 7200).
+ :type min_failure_duration: int, none_type, optional
+
+ :param min_location_failed: The minimum number of locations in failure at the same time during
+ at least one moment in the ``min_failure_duration`` period ( ``min_location_failed`` and ``min_failure_duration``
+ are part of the advanced alerting rules - integer, >= 1).
+ :type min_location_failed: int, none_type, optional
+
+ :param new_group_delay: Time (in seconds) to skip evaluations for new groups.
+
+ For example, this option can be used to skip evaluations for new hosts while they initialize.
+
+ Must be a non negative integer.
+ :type new_group_delay: int, none_type, optional
+
+ :param new_host_delay: Time (in seconds) to allow a host to boot and applications
+ to fully start before starting the evaluation of monitor results.
+ Should be a non negative integer.
+
+ Use new_group_delay instead. **Deprecated**.
+ :type new_host_delay: int, none_type, optional
+
+ :param no_data_timeframe: The number of minutes before a monitor notifies after data stops reporting.
+ Datadog recommends at least 2x the monitor timeframe for query alerts or 2 minutes for service checks.
+ If omitted, 2x the evaluation timeframe is used for query alerts, and 24 hours is used for service checks.
+ :type no_data_timeframe: int, none_type, optional
+
+ :param notification_preset_name: Toggles the display of additional content sent in the monitor notification.
+ :type notification_preset_name: MonitorOptionsNotificationPresets, optional
+
+ :param notify_audit: A Boolean indicating whether tagged users is notified on changes to this monitor.
+ :type notify_audit: bool, optional
+
+ :param notify_by: Controls what granularity a monitor alerts on. Only available for monitors with groupings.
+ For instance, a monitor grouped by ``cluster`` , ``namespace`` , and ``pod`` can be configured to only notify on each
+ new ``cluster`` violating the alert conditions by setting ``notify_by`` to ``["cluster"]``. Tags mentioned
+ in ``notify_by`` must be a subset of the grouping tags in the query.
+ For example, a query grouped by ``cluster`` and ``namespace`` cannot notify on ``region``.
+ Setting ``notify_by`` to ``["*"]`` configures the monitor to notify as a simple-alert.
+ :type notify_by: [str], optional
+
+ :param notify_no_data: A Boolean indicating whether this monitor notifies when data stops reporting. Defaults to ``false``.
+ :type notify_no_data: bool, optional
+
+ :param on_missing_data: Controls how groups or monitors are treated if an evaluation does not return any data points.
+ The default option results in different behavior depending on the monitor query type.
+ For monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions.
+ For monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status.
+ This option is available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.
+ It is also required for metric monitors that use ``scheduling_options.custom_schedule``.
+ :type on_missing_data: OnMissingDataOption, optional
+
+ :param renotify_interval: The number of minutes after the last notification before a monitor re-notifies on the current status.
+ It only re-notifies if it’s not resolved.
+ :type renotify_interval: int, none_type, optional
+
+ :param renotify_occurrences: The number of times re-notification messages should be sent on the current status at the provided re-notification interval.
+ :type renotify_occurrences: int, none_type, optional
+
+ :param renotify_statuses: The types of monitor statuses for which re-notification messages are sent.
+ Default: **null** if ``renotify_interval`` is **null**.
+ If ``renotify_interval`` is set, defaults to renotify on ``Alert`` and ``No Data``.
+ :type renotify_statuses: [MonitorRenotifyStatusType], none_type, optional
+
+ :param require_full_window: A Boolean indicating whether this monitor needs a full window of data before it’s evaluated.
+ We highly recommend you set this to ``false`` for sparse metrics,
+ otherwise some evaluations are skipped. Default is false. This setting only applies to
+ metric monitors.
+ :type require_full_window: bool, optional
+
+ :param scheduling_options: Configuration options for scheduling.
+ :type scheduling_options: MonitorOptionsSchedulingOptions, optional
+
+ :param silenced: Information about the downtime applied to the monitor. Only shows v1 downtimes. **Deprecated**.
+ :type silenced: {str: (int, none_type,)}, optional
+
+ :param synthetics_check_id: ID of the corresponding Synthetic check. **Deprecated**.
+ :type synthetics_check_id: str, none_type, optional
+
+ :param threshold_windows: Alerting time window options.
+ :type threshold_windows: MonitorThresholdWindowOptions, optional
+
+ :param thresholds: List of the different monitor threshold available.
+ :type thresholds: MonitorThresholds, optional
+
+ :param timeout_h: The number of hours of the monitor not reporting data before it automatically resolves from a triggered state. The minimum allowed value is 0 hours. The maximum allowed value is 24 hours.
+ :type timeout_h: int, none_type, optional
+
+ :param variables: List of requests that can be used in the monitor query. **This feature is currently in beta.**
+ :type variables: [MonitorFormulaAndFunctionQueryDefinition], optional
+ """
+ if aggregation is not unset:
+ kwargs["aggregation"] = aggregation
+ if device_ids is not unset:
+ kwargs["device_ids"] = device_ids
+ if enable_logs_sample is not unset:
+ kwargs["enable_logs_sample"] = enable_logs_sample
+ if enable_samples is not unset:
+ kwargs["enable_samples"] = enable_samples
+ if escalation_message is not unset:
+ kwargs["escalation_message"] = escalation_message
+ if evaluation_delay is not unset:
+ kwargs["evaluation_delay"] = evaluation_delay
+ if group_retention_duration is not unset:
+ kwargs["group_retention_duration"] = group_retention_duration
+ if groupby_simple_monitor is not unset:
+ kwargs["groupby_simple_monitor"] = groupby_simple_monitor
+ if include_tags is not unset:
+ kwargs["include_tags"] = include_tags
+ if locked is not unset:
+ kwargs["locked"] = locked
+ if min_failure_duration is not unset:
+ kwargs["min_failure_duration"] = min_failure_duration
+ if min_location_failed is not unset:
+ kwargs["min_location_failed"] = min_location_failed
+ if new_group_delay is not unset:
+ kwargs["new_group_delay"] = new_group_delay
+ if new_host_delay is not unset:
+ kwargs["new_host_delay"] = new_host_delay
+ if no_data_timeframe is not unset:
+ kwargs["no_data_timeframe"] = no_data_timeframe
+ if notification_preset_name is not unset:
+ kwargs["notification_preset_name"] = notification_preset_name
+ if notify_audit is not unset:
+ kwargs["notify_audit"] = notify_audit
+ if notify_by is not unset:
+ kwargs["notify_by"] = notify_by
+ if notify_no_data is not unset:
+ kwargs["notify_no_data"] = notify_no_data
+ if on_missing_data is not unset:
+ kwargs["on_missing_data"] = on_missing_data
+ if renotify_interval is not unset:
+ kwargs["renotify_interval"] = renotify_interval
+ if renotify_occurrences is not unset:
+ kwargs["renotify_occurrences"] = renotify_occurrences
+ if renotify_statuses is not unset:
+ kwargs["renotify_statuses"] = renotify_statuses
+ if require_full_window is not unset:
+ kwargs["require_full_window"] = require_full_window
+ if scheduling_options is not unset:
+ kwargs["scheduling_options"] = scheduling_options
+ if silenced is not unset:
+ kwargs["silenced"] = silenced
+ if synthetics_check_id is not unset:
+ kwargs["synthetics_check_id"] = synthetics_check_id
+ if threshold_windows is not unset:
+ kwargs["threshold_windows"] = threshold_windows
+ if thresholds is not unset:
+ kwargs["thresholds"] = thresholds
+ if timeout_h is not unset:
+ kwargs["timeout_h"] = timeout_h
+ if variables is not unset:
+ kwargs["variables"] = variables
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_options_aggregation.py b/datadog_api_client/v1/model/monitor_options_aggregation.py
new file mode 100644
index 0000000000..463465c084
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options_aggregation.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorOptionsAggregation(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "group_by": (str,),
+ "metric": (str,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "group_by": "group_by",
+ "metric": "metric",
+ "type": "type",
+ }
+
+ def __init__(self_, group_by: Union[str, UnsetType]=unset, metric: Union[str, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Type of aggregation performed in the monitor query.
+
+ :param group_by: Group to break down the monitor on.
+ :type group_by: str, optional
+
+ :param metric: Metric name used in the monitor.
+ :type metric: str, optional
+
+ :param type: Metric type used in the monitor.
+ :type type: str, optional
+ """
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_options_custom_schedule.py b/datadog_api_client/v1/model/monitor_options_custom_schedule.py
new file mode 100644
index 0000000000..b063ffb2f0
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options_custom_schedule.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_options_custom_schedule_recurrence import MonitorOptionsCustomScheduleRecurrence
+
+class MonitorOptionsCustomSchedule(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_options_custom_schedule_recurrence import MonitorOptionsCustomScheduleRecurrence
+ return {
+ "recurrences": ([MonitorOptionsCustomScheduleRecurrence],),
+ }
+ attribute_map = {
+ "recurrences": "recurrences",
+ }
+
+ def __init__(self_, recurrences: Union[List[MonitorOptionsCustomScheduleRecurrence], UnsetType]=unset, **kwargs):
+ """
+ Configuration options for the custom schedule. **This feature is in private beta.**
+
+ :param recurrences: Array of custom schedule recurrences.
+ :type recurrences: [MonitorOptionsCustomScheduleRecurrence], optional
+ """
+ if recurrences is not unset:
+ kwargs["recurrences"] = recurrences
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_options_custom_schedule_recurrence.py b/datadog_api_client/v1/model/monitor_options_custom_schedule_recurrence.py
new file mode 100644
index 0000000000..ec03b292b5
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options_custom_schedule_recurrence.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorOptionsCustomScheduleRecurrence(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "rrule": (str,),
+ "start": (str,),
+ "timezone": (str,),
+ }
+ attribute_map = {
+ "rrule": "rrule",
+ "start": "start",
+ "timezone": "timezone",
+ }
+
+ def __init__(self_, rrule: Union[str, UnsetType]=unset, start: Union[str, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Configuration for a recurrence set on the monitor options for custom schedule.
+
+ :param rrule: Defines the recurrence rule (RRULE) for a given schedule.
+ :type rrule: str, optional
+
+ :param start: Defines the start date and time of the recurring schedule.
+ :type start: str, optional
+
+ :param timezone: Defines the timezone the schedule runs on.
+ :type timezone: str, optional
+ """
+ if rrule is not unset:
+ kwargs["rrule"] = rrule
+ if start is not unset:
+ kwargs["start"] = start
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_options_notification_presets.py b/datadog_api_client/v1/model/monitor_options_notification_presets.py
new file mode 100644
index 0000000000..3299004616
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options_notification_presets.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorOptionsNotificationPresets(ModelSimple):
+ """
+ Toggles the display of additional content sent in the monitor notification.
+
+ :param value: If omitted defaults to "show_all". Must be one of ["show_all", "hide_query", "hide_handles", "hide_all", "hide_query_and_handles", "show_only_snapshot", "hide_handles_and_footer"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "show_all",
+ "hide_query",
+ "hide_handles",
+ "hide_all",
+ "hide_query_and_handles",
+ "show_only_snapshot",
+ "hide_handles_and_footer",
+ }
+ SHOW_ALL: ClassVar["MonitorOptionsNotificationPresets"]
+ HIDE_QUERY: ClassVar["MonitorOptionsNotificationPresets"]
+ HIDE_HANDLES: ClassVar["MonitorOptionsNotificationPresets"]
+ HIDE_ALL: ClassVar["MonitorOptionsNotificationPresets"]
+ HIDE_QUERY_AND_HANDLES: ClassVar["MonitorOptionsNotificationPresets"]
+ SHOW_ONLY_SNAPSHOT: ClassVar["MonitorOptionsNotificationPresets"]
+ HIDE_HANDLES_AND_FOOTER: ClassVar["MonitorOptionsNotificationPresets"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorOptionsNotificationPresets.SHOW_ALL = MonitorOptionsNotificationPresets("show_all")
+MonitorOptionsNotificationPresets.HIDE_QUERY = MonitorOptionsNotificationPresets("hide_query")
+MonitorOptionsNotificationPresets.HIDE_HANDLES = MonitorOptionsNotificationPresets("hide_handles")
+MonitorOptionsNotificationPresets.HIDE_ALL = MonitorOptionsNotificationPresets("hide_all")
+MonitorOptionsNotificationPresets.HIDE_QUERY_AND_HANDLES = MonitorOptionsNotificationPresets("hide_query_and_handles")
+MonitorOptionsNotificationPresets.SHOW_ONLY_SNAPSHOT = MonitorOptionsNotificationPresets("show_only_snapshot")
+MonitorOptionsNotificationPresets.HIDE_HANDLES_AND_FOOTER = MonitorOptionsNotificationPresets("hide_handles_and_footer")
diff --git a/datadog_api_client/v1/model/monitor_options_scheduling_options.py b/datadog_api_client/v1/model/monitor_options_scheduling_options.py
new file mode 100644
index 0000000000..1665348b79
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options_scheduling_options.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_options_custom_schedule import MonitorOptionsCustomSchedule
+ from datadog_api_client.v1.model.monitor_options_scheduling_options_evaluation_window import MonitorOptionsSchedulingOptionsEvaluationWindow
+
+class MonitorOptionsSchedulingOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_options_custom_schedule import MonitorOptionsCustomSchedule
+ from datadog_api_client.v1.model.monitor_options_scheduling_options_evaluation_window import MonitorOptionsSchedulingOptionsEvaluationWindow
+ return {
+ "custom_schedule": (MonitorOptionsCustomSchedule,),
+ "evaluation_window": (MonitorOptionsSchedulingOptionsEvaluationWindow,),
+ }
+ attribute_map = {
+ "custom_schedule": "custom_schedule",
+ "evaluation_window": "evaluation_window",
+ }
+
+ def __init__(self_, custom_schedule: Union[MonitorOptionsCustomSchedule, UnsetType]=unset, evaluation_window: Union[MonitorOptionsSchedulingOptionsEvaluationWindow, UnsetType]=unset, **kwargs):
+ """
+ Configuration options for scheduling.
+
+ :param custom_schedule: Configuration options for the custom schedule. **This feature is in private beta.**
+ :type custom_schedule: MonitorOptionsCustomSchedule, optional
+
+ :param evaluation_window: Configuration options for the evaluation window. If ``hour_starts`` is set, no other fields may be set. Otherwise, ``day_starts`` and ``month_starts`` must be set together.
+ :type evaluation_window: MonitorOptionsSchedulingOptionsEvaluationWindow, optional
+ """
+ if custom_schedule is not unset:
+ kwargs["custom_schedule"] = custom_schedule
+ if evaluation_window is not unset:
+ kwargs["evaluation_window"] = evaluation_window
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_options_scheduling_options_evaluation_window.py b/datadog_api_client/v1/model/monitor_options_scheduling_options_evaluation_window.py
new file mode 100644
index 0000000000..63ed6bc566
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_options_scheduling_options_evaluation_window.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorOptionsSchedulingOptionsEvaluationWindow(ModelNormal):
+ validations = {
+ "hour_starts": {
+ "inclusive_maximum": 59,
+ "inclusive_minimum": 0,
+ },
+ "month_starts": {
+ "inclusive_maximum": 1,
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "day_starts": (str,),
+ "hour_starts": (int,),
+ "month_starts": (int,),
+ "timezone": (str,),
+ }
+ attribute_map = {
+ "day_starts": "day_starts",
+ "hour_starts": "hour_starts",
+ "month_starts": "month_starts",
+ "timezone": "timezone",
+ }
+
+ def __init__(self_, day_starts: Union[str, UnsetType]=unset, hour_starts: Union[int, UnsetType]=unset, month_starts: Union[int, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Configuration options for the evaluation window. If ``hour_starts`` is set, no other fields may be set. Otherwise, ``day_starts`` and ``month_starts`` must be set together.
+
+ :param day_starts: The time of the day at which a one day cumulative evaluation window starts.
+ :type day_starts: str, optional
+
+ :param hour_starts: The minute of the hour at which a one hour cumulative evaluation window starts.
+ :type hour_starts: int, optional
+
+ :param month_starts: The day of the month at which a one month cumulative evaluation window starts.
+ :type month_starts: int, optional
+
+ :param timezone: The timezone of the time of the day of the cumulative evaluation window start.
+ :type timezone: str, optional
+ """
+ if day_starts is not unset:
+ kwargs["day_starts"] = day_starts
+ if hour_starts is not unset:
+ kwargs["hour_starts"] = hour_starts
+ if month_starts is not unset:
+ kwargs["month_starts"] = month_starts
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_overall_states.py b/datadog_api_client/v1/model/monitor_overall_states.py
new file mode 100644
index 0000000000..6bf02443ad
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_overall_states.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorOverallStates(ModelSimple):
+ """
+ The different states your monitor can be in.
+
+ :param value: Must be one of ["Alert", "Ignored", "No Data", "OK", "Skipped", "Unknown", "Warn"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "Alert",
+ "Ignored",
+ "No Data",
+ "OK",
+ "Skipped",
+ "Unknown",
+ "Warn",
+ }
+ ALERT: ClassVar["MonitorOverallStates"]
+ IGNORED: ClassVar["MonitorOverallStates"]
+ NO_DATA: ClassVar["MonitorOverallStates"]
+ OK: ClassVar["MonitorOverallStates"]
+ SKIPPED: ClassVar["MonitorOverallStates"]
+ UNKNOWN: ClassVar["MonitorOverallStates"]
+ WARN: ClassVar["MonitorOverallStates"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorOverallStates.ALERT = MonitorOverallStates("Alert")
+MonitorOverallStates.IGNORED = MonitorOverallStates("Ignored")
+MonitorOverallStates.NO_DATA = MonitorOverallStates("No Data")
+MonitorOverallStates.OK = MonitorOverallStates("OK")
+MonitorOverallStates.SKIPPED = MonitorOverallStates("Skipped")
+MonitorOverallStates.UNKNOWN = MonitorOverallStates("Unknown")
+MonitorOverallStates.WARN = MonitorOverallStates("Warn")
diff --git a/datadog_api_client/v1/model/monitor_renotify_status_type.py b/datadog_api_client/v1/model/monitor_renotify_status_type.py
new file mode 100644
index 0000000000..e378d1f778
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_renotify_status_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorRenotifyStatusType(ModelSimple):
+ """
+ The different statuses for which renotification is supported.
+
+ :param value: Must be one of ["alert", "warn", "no data"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "alert",
+ "warn",
+ "no data",
+ }
+ ALERT: ClassVar["MonitorRenotifyStatusType"]
+ WARN: ClassVar["MonitorRenotifyStatusType"]
+ NO_DATA: ClassVar["MonitorRenotifyStatusType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorRenotifyStatusType.ALERT = MonitorRenotifyStatusType("alert")
+MonitorRenotifyStatusType.WARN = MonitorRenotifyStatusType("warn")
+MonitorRenotifyStatusType.NO_DATA = MonitorRenotifyStatusType("no data")
diff --git a/datadog_api_client/v1/model/monitor_search_count.py b/datadog_api_client/v1/model/monitor_search_count.py
new file mode 100644
index 0000000000..2ccc3884a1
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_count.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorSearchCount(ModelSimple):
+ """
+ Search facets.
+
+
+ :type value: [MonitorSearchCountItem]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_search_count_item import MonitorSearchCountItem
+ return {
+ "value": ([MonitorSearchCountItem],),
+ }
diff --git a/datadog_api_client/v1/model/monitor_search_count_item.py b/datadog_api_client/v1/model/monitor_search_count_item.py
new file mode 100644
index 0000000000..03da508dfa
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_count_item.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorSearchCountItem(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "count": (int,),
+ "name": (bool, date, datetime, dict, float, int, list, str, UUID, none_type,),
+ }
+ attribute_map = {
+ "count": "count",
+ "name": "name",
+ }
+ read_only_vars = {
+ "count",
+ "name",
+ }
+
+ def __init__(self_, count: Union[int, UnsetType]=unset, name: Union[Any, UnsetType]=unset, **kwargs):
+ """
+ A facet item.
+
+ :param count: The number of found monitors with the listed value.
+ :type count: int, optional
+
+ :param name: The facet value.
+ :type name: bool, date, datetime, dict, float, int, list, str, UUID, none_type, optional
+ """
+ if count is not unset:
+ kwargs["count"] = count
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_search_response.py b/datadog_api_client/v1/model/monitor_search_response.py
new file mode 100644
index 0000000000..72444f235e
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_response.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_search_response_counts import MonitorSearchResponseCounts
+ from datadog_api_client.v1.model.monitor_search_response_metadata import MonitorSearchResponseMetadata
+ from datadog_api_client.v1.model.monitor_search_result import MonitorSearchResult
+
+class MonitorSearchResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_search_response_counts import MonitorSearchResponseCounts
+ from datadog_api_client.v1.model.monitor_search_response_metadata import MonitorSearchResponseMetadata
+ from datadog_api_client.v1.model.monitor_search_result import MonitorSearchResult
+ return {
+ "counts": (MonitorSearchResponseCounts,),
+ "metadata": (MonitorSearchResponseMetadata,),
+ "monitors": ([MonitorSearchResult],),
+ }
+ attribute_map = {
+ "counts": "counts",
+ "metadata": "metadata",
+ "monitors": "monitors",
+ }
+ read_only_vars = {
+ "counts",
+ "monitors",
+ }
+
+ def __init__(self_, counts: Union[MonitorSearchResponseCounts, UnsetType]=unset, metadata: Union[MonitorSearchResponseMetadata, UnsetType]=unset, monitors: Union[List[MonitorSearchResult], UnsetType]=unset, **kwargs):
+ """
+ The response from a monitor search.
+
+ :param counts: The counts of monitors per different criteria.
+ :type counts: MonitorSearchResponseCounts, optional
+
+ :param metadata: Metadata about the response.
+ :type metadata: MonitorSearchResponseMetadata, optional
+
+ :param monitors: The list of found monitors.
+ :type monitors: [MonitorSearchResult], optional
+ """
+ if counts is not unset:
+ kwargs["counts"] = counts
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if monitors is not unset:
+ kwargs["monitors"] = monitors
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_search_response_counts.py b/datadog_api_client/v1/model/monitor_search_response_counts.py
new file mode 100644
index 0000000000..5c18aa794c
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_response_counts.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_search_count import MonitorSearchCount
+
+class MonitorSearchResponseCounts(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_search_count import MonitorSearchCount
+ return {
+ "muted": (MonitorSearchCount,),
+ "status": (MonitorSearchCount,),
+ "tag": (MonitorSearchCount,),
+ "type": (MonitorSearchCount,),
+ }
+ attribute_map = {
+ "muted": "muted",
+ "status": "status",
+ "tag": "tag",
+ "type": "type",
+ }
+
+ def __init__(self_, muted: Union[MonitorSearchCount, UnsetType]=unset, status: Union[MonitorSearchCount, UnsetType]=unset, tag: Union[MonitorSearchCount, UnsetType]=unset, type: Union[MonitorSearchCount, UnsetType]=unset, **kwargs):
+ """
+ The counts of monitors per different criteria.
+
+ :param muted: Search facets.
+ :type muted: MonitorSearchCount, optional
+
+ :param status: Search facets.
+ :type status: MonitorSearchCount, optional
+
+ :param tag: Search facets.
+ :type tag: MonitorSearchCount, optional
+
+ :param type: Search facets.
+ :type type: MonitorSearchCount, optional
+ """
+ if muted is not unset:
+ kwargs["muted"] = muted
+ if status is not unset:
+ kwargs["status"] = status
+ if tag is not unset:
+ kwargs["tag"] = tag
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_search_response_metadata.py b/datadog_api_client/v1/model/monitor_search_response_metadata.py
new file mode 100644
index 0000000000..642954a935
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_response_metadata.py
@@ -0,0 +1,73 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorSearchResponseMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "page": (int,),
+ "page_count": (int,),
+ "per_page": (int,),
+ "total_count": (int,),
+ }
+ attribute_map = {
+ "page": "page",
+ "page_count": "page_count",
+ "per_page": "per_page",
+ "total_count": "total_count",
+ }
+ read_only_vars = {
+ "page",
+ "page_count",
+ "per_page",
+ "total_count",
+ }
+
+ def __init__(self_, page: Union[int, UnsetType]=unset, page_count: Union[int, UnsetType]=unset, per_page: Union[int, UnsetType]=unset, total_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Metadata about the response.
+
+ :param page: The page to start paginating from.
+ :type page: int, optional
+
+ :param page_count: The number of pages.
+ :type page_count: int, optional
+
+ :param per_page: The number of monitors to return per page.
+ :type per_page: int, optional
+
+ :param total_count: The total number of monitors.
+ :type total_count: int, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ if page_count is not unset:
+ kwargs["page_count"] = page_count
+ if per_page is not unset:
+ kwargs["per_page"] = per_page
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_search_result.py b/datadog_api_client/v1/model/monitor_search_result.py
new file mode 100644
index 0000000000..4f5f2d7dd8
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_result.py
@@ -0,0 +1,162 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.monitor_search_result_notification import MonitorSearchResultNotification
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ from datadog_api_client.v1.model.monitor_type import MonitorType
+
+class MonitorSearchResult(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.monitor_search_result_notification import MonitorSearchResultNotification
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ from datadog_api_client.v1.model.monitor_type import MonitorType
+ return {
+ "classification": (str,),
+ "creator": (Creator,),
+ "id": (int,),
+ "last_triggered_ts": (int, none_type),
+ "metrics": ([str],),
+ "name": (str,),
+ "notifications": ([MonitorSearchResultNotification],),
+ "org_id": (int,),
+ "quality_issues": ([str],),
+ "query": (str,),
+ "scopes": ([str],),
+ "status": (MonitorOverallStates,),
+ "tags": ([str],),
+ "type": (MonitorType,),
+ }
+ attribute_map = {
+ "classification": "classification",
+ "creator": "creator",
+ "id": "id",
+ "last_triggered_ts": "last_triggered_ts",
+ "metrics": "metrics",
+ "name": "name",
+ "notifications": "notifications",
+ "org_id": "org_id",
+ "quality_issues": "quality_issues",
+ "query": "query",
+ "scopes": "scopes",
+ "status": "status",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "classification",
+ "creator",
+ "id",
+ "last_triggered_ts",
+ "metrics",
+ "name",
+ "notifications",
+ "org_id",
+ "quality_issues",
+ "status",
+ "tags",
+ }
+
+ def __init__(self_, classification: Union[str, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, id: Union[int, UnsetType]=unset, last_triggered_ts: Union[int, none_type, UnsetType]=unset, metrics: Union[List[str], UnsetType]=unset, name: Union[str, UnsetType]=unset, notifications: Union[List[MonitorSearchResultNotification], UnsetType]=unset, org_id: Union[int, UnsetType]=unset, quality_issues: Union[List[str], UnsetType]=unset, query: Union[str, UnsetType]=unset, scopes: Union[List[str], UnsetType]=unset, status: Union[MonitorOverallStates, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[MonitorType, UnsetType]=unset, **kwargs):
+ """
+ Holds search results.
+
+ :param classification: Classification of the monitor.
+ :type classification: str, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param id: ID of the monitor.
+ :type id: int, optional
+
+ :param last_triggered_ts: Latest timestamp the monitor triggered.
+ :type last_triggered_ts: int, none_type, optional
+
+ :param metrics: Metrics used by the monitor.
+ :type metrics: [str], optional
+
+ :param name: The monitor name.
+ :type name: str, optional
+
+ :param notifications: The notification triggered by the monitor.
+ :type notifications: [MonitorSearchResultNotification], optional
+
+ :param org_id: The ID of the organization.
+ :type org_id: int, optional
+
+ :param quality_issues: Quality issues detected with the monitor.
+ :type quality_issues: [str], optional
+
+ :param query: The monitor query.
+ :type query: str, optional
+
+ :param scopes: The scope(s) to which the downtime applies, for example ``host:app2``.
+ Provide multiple scopes as a comma-separated list, for example ``env:dev,env:prod``.
+ The resulting downtime applies to sources that matches ALL provided scopes
+ (that is ``env:dev AND env:prod`` ), NOT any of them.
+ :type scopes: [str], optional
+
+ :param status: The different states your monitor can be in.
+ :type status: MonitorOverallStates, optional
+
+ :param tags: Tags associated with the monitor.
+ :type tags: [str], optional
+
+ :param type: The type of the monitor. For more information about ``type`` , see the `monitor options `_ docs.
+ :type type: MonitorType, optional
+ """
+ if classification is not unset:
+ kwargs["classification"] = classification
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if id is not unset:
+ kwargs["id"] = id
+ if last_triggered_ts is not unset:
+ kwargs["last_triggered_ts"] = last_triggered_ts
+ if metrics is not unset:
+ kwargs["metrics"] = metrics
+ if name is not unset:
+ kwargs["name"] = name
+ if notifications is not unset:
+ kwargs["notifications"] = notifications
+ if org_id is not unset:
+ kwargs["org_id"] = org_id
+ if quality_issues is not unset:
+ kwargs["quality_issues"] = quality_issues
+ if query is not unset:
+ kwargs["query"] = query
+ if scopes is not unset:
+ kwargs["scopes"] = scopes
+ if status is not unset:
+ kwargs["status"] = status
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_search_result_notification.py b/datadog_api_client/v1/model/monitor_search_result_notification.py
new file mode 100644
index 0000000000..03a780f004
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_search_result_notification.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorSearchResultNotification(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "handle": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "handle": "handle",
+ "name": "name",
+ }
+ read_only_vars = {
+ "handle",
+ "name",
+ }
+
+ def __init__(self_, handle: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A notification triggered by the monitor.
+
+ :param handle: The email address that received the notification.
+ :type handle: str, optional
+
+ :param name: The username receiving the notification
+ :type name: str, optional
+ """
+ if handle is not unset:
+ kwargs["handle"] = handle
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_state.py b/datadog_api_client/v1/model/monitor_state.py
new file mode 100644
index 0000000000..346c4108df
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_state.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_state_group import MonitorStateGroup
+
+class MonitorState(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_state_group import MonitorStateGroup
+ return {
+ "groups": ({str: (MonitorStateGroup,)},),
+ }
+ attribute_map = {
+ "groups": "groups",
+ }
+
+ def __init__(self_, groups: Union[Dict[str, MonitorStateGroup], UnsetType]=unset, **kwargs):
+ """
+ Wrapper object with the different monitor states.
+
+ :param groups: Dictionary where the keys are groups (comma separated lists of tags) and the values are
+ the list of groups your monitor is broken down on.
+ :type groups: {str: (MonitorStateGroup,)}, optional
+ """
+ if groups is not unset:
+ kwargs["groups"] = groups
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_state_group.py b/datadog_api_client/v1/model/monitor_state_group.py
new file mode 100644
index 0000000000..df1de5b9d7
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_state_group.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+
+class MonitorStateGroup(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ return {
+ "last_nodata_ts": (int,),
+ "last_notified_ts": (int,),
+ "last_resolved_ts": (int,),
+ "last_triggered_ts": (int,),
+ "name": (str,),
+ "status": (MonitorOverallStates,),
+ }
+ attribute_map = {
+ "last_nodata_ts": "last_nodata_ts",
+ "last_notified_ts": "last_notified_ts",
+ "last_resolved_ts": "last_resolved_ts",
+ "last_triggered_ts": "last_triggered_ts",
+ "name": "name",
+ "status": "status",
+ }
+ read_only_vars = {
+ "status",
+ }
+
+ def __init__(self_, last_nodata_ts: Union[int, UnsetType]=unset, last_notified_ts: Union[int, UnsetType]=unset, last_resolved_ts: Union[int, UnsetType]=unset, last_triggered_ts: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, status: Union[MonitorOverallStates, UnsetType]=unset, **kwargs):
+ """
+ Monitor state for a single group.
+
+ :param last_nodata_ts: Latest timestamp the monitor was in NO_DATA state.
+ :type last_nodata_ts: int, optional
+
+ :param last_notified_ts: Latest timestamp of the notification sent for this monitor group.
+ :type last_notified_ts: int, optional
+
+ :param last_resolved_ts: Latest timestamp the monitor group was resolved.
+ :type last_resolved_ts: int, optional
+
+ :param last_triggered_ts: Latest timestamp the monitor group triggered.
+ :type last_triggered_ts: int, optional
+
+ :param name: The name of the monitor.
+ :type name: str, optional
+
+ :param status: The different states your monitor can be in.
+ :type status: MonitorOverallStates, optional
+ """
+ if last_nodata_ts is not unset:
+ kwargs["last_nodata_ts"] = last_nodata_ts
+ if last_notified_ts is not unset:
+ kwargs["last_notified_ts"] = last_notified_ts
+ if last_resolved_ts is not unset:
+ kwargs["last_resolved_ts"] = last_resolved_ts
+ if last_triggered_ts is not unset:
+ kwargs["last_triggered_ts"] = last_triggered_ts
+ if name is not unset:
+ kwargs["name"] = name
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_summary_widget_definition.py b/datadog_api_client/v1/model/monitor_summary_widget_definition.py
new file mode 100644
index 0000000000..54022aff0f
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_summary_widget_definition.py
@@ -0,0 +1,155 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_color_preference import WidgetColorPreference
+ from datadog_api_client.v1.model.widget_monitor_summary_display_format import WidgetMonitorSummaryDisplayFormat
+ from datadog_api_client.v1.model.widget_monitor_summary_sort import WidgetMonitorSummarySort
+ from datadog_api_client.v1.model.widget_summary_type import WidgetSummaryType
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.monitor_summary_widget_definition_type import MonitorSummaryWidgetDefinitionType
+
+class MonitorSummaryWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_color_preference import WidgetColorPreference
+ from datadog_api_client.v1.model.widget_monitor_summary_display_format import WidgetMonitorSummaryDisplayFormat
+ from datadog_api_client.v1.model.widget_monitor_summary_sort import WidgetMonitorSummarySort
+ from datadog_api_client.v1.model.widget_summary_type import WidgetSummaryType
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.monitor_summary_widget_definition_type import MonitorSummaryWidgetDefinitionType
+ return {
+ "color_preference": (WidgetColorPreference,),
+ "count": (int,),
+ "description": (str,),
+ "display_format": (WidgetMonitorSummaryDisplayFormat,),
+ "hide_zero_counts": (bool,),
+ "query": (str,),
+ "show_last_triggered": (bool,),
+ "show_priority": (bool,),
+ "sort": (WidgetMonitorSummarySort,),
+ "start": (int,),
+ "summary_type": (WidgetSummaryType,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (MonitorSummaryWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "color_preference": "color_preference",
+ "count": "count",
+ "description": "description",
+ "display_format": "display_format",
+ "hide_zero_counts": "hide_zero_counts",
+ "query": "query",
+ "show_last_triggered": "show_last_triggered",
+ "show_priority": "show_priority",
+ "sort": "sort",
+ "start": "start",
+ "summary_type": "summary_type",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, query: str, type: MonitorSummaryWidgetDefinitionType, color_preference: Union[WidgetColorPreference, UnsetType]=unset, count: Union[int, UnsetType]=unset, description: Union[str, UnsetType]=unset, display_format: Union[WidgetMonitorSummaryDisplayFormat, UnsetType]=unset, hide_zero_counts: Union[bool, UnsetType]=unset, show_last_triggered: Union[bool, UnsetType]=unset, show_priority: Union[bool, UnsetType]=unset, sort: Union[WidgetMonitorSummarySort, UnsetType]=unset, start: Union[int, UnsetType]=unset, summary_type: Union[WidgetSummaryType, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The monitor summary widget displays a summary view of all your Datadog monitors, or a subset based on a query.
+
+ :param color_preference: Which color to use on the widget.
+ :type color_preference: WidgetColorPreference, optional
+
+ :param count: The number of monitors to display. **Deprecated**.
+ :type count: int, optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param display_format: What to display on the widget.
+ :type display_format: WidgetMonitorSummaryDisplayFormat, optional
+
+ :param hide_zero_counts: Whether to show counts of 0 or not.
+ :type hide_zero_counts: bool, optional
+
+ :param query: Query to filter the monitors with.
+ :type query: str
+
+ :param show_last_triggered: Whether to show the time that has elapsed since the monitor/group triggered.
+ :type show_last_triggered: bool, optional
+
+ :param show_priority: Whether to show the priorities column.
+ :type show_priority: bool, optional
+
+ :param sort: Widget sorting methods.
+ :type sort: WidgetMonitorSummarySort, optional
+
+ :param start: The start of the list. Typically 0. **Deprecated**.
+ :type start: int, optional
+
+ :param summary_type: Which summary type should be used.
+ :type summary_type: WidgetSummaryType, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the monitor summary widget.
+ :type type: MonitorSummaryWidgetDefinitionType
+ """
+ if color_preference is not unset:
+ kwargs["color_preference"] = color_preference
+ if count is not unset:
+ kwargs["count"] = count
+ if description is not unset:
+ kwargs["description"] = description
+ if display_format is not unset:
+ kwargs["display_format"] = display_format
+ if hide_zero_counts is not unset:
+ kwargs["hide_zero_counts"] = hide_zero_counts
+ if show_last_triggered is not unset:
+ kwargs["show_last_triggered"] = show_last_triggered
+ if show_priority is not unset:
+ kwargs["show_priority"] = show_priority
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if start is not unset:
+ kwargs["start"] = start
+ if summary_type is not unset:
+ kwargs["summary_type"] = summary_type
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.type = type
diff --git a/datadog_api_client/v1/model/monitor_summary_widget_definition_type.py b/datadog_api_client/v1/model/monitor_summary_widget_definition_type.py
new file mode 100644
index 0000000000..6a5d1c99a5
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_summary_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorSummaryWidgetDefinitionType(ModelSimple):
+ """
+ Type of the monitor summary widget.
+
+ :param value: If omitted defaults to "manage_status". Must be one of ["manage_status"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "manage_status",
+ }
+ MANAGE_STATUS: ClassVar["MonitorSummaryWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorSummaryWidgetDefinitionType.MANAGE_STATUS = MonitorSummaryWidgetDefinitionType("manage_status")
diff --git a/datadog_api_client/v1/model/monitor_threshold_window_options.py b/datadog_api_client/v1/model/monitor_threshold_window_options.py
new file mode 100644
index 0000000000..feaf8aed02
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_threshold_window_options.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorThresholdWindowOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "recovery_window": (str, none_type),
+ "trigger_window": (str, none_type),
+ }
+ attribute_map = {
+ "recovery_window": "recovery_window",
+ "trigger_window": "trigger_window",
+ }
+
+ def __init__(self_, recovery_window: Union[str, none_type, UnsetType]=unset, trigger_window: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ Alerting time window options.
+
+ :param recovery_window: Describes how long an anomalous metric must be normal before the alert recovers.
+ :type recovery_window: str, none_type, optional
+
+ :param trigger_window: Describes how long a metric must be anomalous before an alert triggers.
+ :type trigger_window: str, none_type, optional
+ """
+ if recovery_window is not unset:
+ kwargs["recovery_window"] = recovery_window
+ if trigger_window is not unset:
+ kwargs["trigger_window"] = trigger_window
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_thresholds.py b/datadog_api_client/v1/model/monitor_thresholds.py
new file mode 100644
index 0000000000..19fcb5f49d
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_thresholds.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonitorThresholds(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "critical": (float,),
+ "critical_query": (str,),
+ "critical_recovery": (float, none_type),
+ "critical_recovery_query": (str,),
+ "ok": (float, none_type),
+ "unknown": (float, none_type),
+ "warning": (float, none_type),
+ "warning_recovery": (float, none_type),
+ }
+ attribute_map = {
+ "critical": "critical",
+ "critical_query": "critical_query",
+ "critical_recovery": "critical_recovery",
+ "critical_recovery_query": "critical_recovery_query",
+ "ok": "ok",
+ "unknown": "unknown",
+ "warning": "warning",
+ "warning_recovery": "warning_recovery",
+ }
+
+ def __init__(self_, critical: Union[float, UnsetType]=unset, critical_query: Union[str, UnsetType]=unset, critical_recovery: Union[float, none_type, UnsetType]=unset, critical_recovery_query: Union[str, UnsetType]=unset, ok: Union[float, none_type, UnsetType]=unset, unknown: Union[float, none_type, UnsetType]=unset, warning: Union[float, none_type, UnsetType]=unset, warning_recovery: Union[float, none_type, UnsetType]=unset, **kwargs):
+ """
+ List of the different monitor threshold available.
+
+ :param critical: The monitor ``CRITICAL`` threshold.
+ :type critical: float, optional
+
+ :param critical_query: Query evaluated as a dynamic ``CRITICAL`` threshold. Only supported on metric monitors with a formula query and options['variables']. Cannot be combined with static thresholds. This field is in preview.
+ :type critical_query: str, optional
+
+ :param critical_recovery: The monitor ``CRITICAL`` recovery threshold.
+ :type critical_recovery: float, none_type, optional
+
+ :param critical_recovery_query: Query evaluated as a dynamic ``CRITICAL`` recovery threshold. Only supported on metric monitors with a formula query and options['variables']. Cannot be combined with static thresholds. This field is in preview.
+ :type critical_recovery_query: str, optional
+
+ :param ok: The monitor ``OK`` threshold.
+ :type ok: float, none_type, optional
+
+ :param unknown: The monitor UNKNOWN threshold.
+ :type unknown: float, none_type, optional
+
+ :param warning: The monitor ``WARNING`` threshold.
+ :type warning: float, none_type, optional
+
+ :param warning_recovery: The monitor ``WARNING`` recovery threshold.
+ :type warning_recovery: float, none_type, optional
+ """
+ if critical is not unset:
+ kwargs["critical"] = critical
+ if critical_query is not unset:
+ kwargs["critical_query"] = critical_query
+ if critical_recovery is not unset:
+ kwargs["critical_recovery"] = critical_recovery
+ if critical_recovery_query is not unset:
+ kwargs["critical_recovery_query"] = critical_recovery_query
+ if ok is not unset:
+ kwargs["ok"] = ok
+ if unknown is not unset:
+ kwargs["unknown"] = unknown
+ if warning is not unset:
+ kwargs["warning"] = warning
+ if warning_recovery is not unset:
+ kwargs["warning_recovery"] = warning_recovery
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monitor_type.py b/datadog_api_client/v1/model/monitor_type.py
new file mode 100644
index 0000000000..2138810a57
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_type.py
@@ -0,0 +1,111 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonitorType(ModelSimple):
+ """
+ The type of the monitor. For more information about `type`, see the [monitor options](https://docs.datadoghq.com/monitors/guide/monitor_api_options/) docs.
+
+ :param value: Must be one of ["composite", "event alert", "log alert", "metric alert", "process alert", "query alert", "rum alert", "service check", "synthetics alert", "trace-analytics alert", "slo alert", "event-v2 alert", "audit alert", "ci-pipelines alert", "ci-tests alert", "error-tracking alert", "database-monitoring alert", "network-performance alert", "cost alert", "data-quality alert", "network-path alert", "data-jobs alert", "llm-observability alert"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "composite",
+ "event alert",
+ "log alert",
+ "metric alert",
+ "process alert",
+ "query alert",
+ "rum alert",
+ "service check",
+ "synthetics alert",
+ "trace-analytics alert",
+ "slo alert",
+ "event-v2 alert",
+ "audit alert",
+ "ci-pipelines alert",
+ "ci-tests alert",
+ "error-tracking alert",
+ "database-monitoring alert",
+ "network-performance alert",
+ "cost alert",
+ "data-quality alert",
+ "network-path alert",
+ "data-jobs alert",
+ "llm-observability alert",
+ }
+ COMPOSITE: ClassVar["MonitorType"]
+ EVENT_ALERT: ClassVar["MonitorType"]
+ LOG_ALERT: ClassVar["MonitorType"]
+ METRIC_ALERT: ClassVar["MonitorType"]
+ PROCESS_ALERT: ClassVar["MonitorType"]
+ QUERY_ALERT: ClassVar["MonitorType"]
+ RUM_ALERT: ClassVar["MonitorType"]
+ SERVICE_CHECK: ClassVar["MonitorType"]
+ SYNTHETICS_ALERT: ClassVar["MonitorType"]
+ TRACE_ANALYTICS_ALERT: ClassVar["MonitorType"]
+ SLO_ALERT: ClassVar["MonitorType"]
+ EVENT_V2_ALERT: ClassVar["MonitorType"]
+ AUDIT_ALERT: ClassVar["MonitorType"]
+ CI_PIPELINES_ALERT: ClassVar["MonitorType"]
+ CI_TESTS_ALERT: ClassVar["MonitorType"]
+ ERROR_TRACKING_ALERT: ClassVar["MonitorType"]
+ DATABASE_MONITORING_ALERT: ClassVar["MonitorType"]
+ NETWORK_PERFORMANCE_ALERT: ClassVar["MonitorType"]
+ COST_ALERT: ClassVar["MonitorType"]
+ DATA_QUALITY_ALERT: ClassVar["MonitorType"]
+ NETWORK_PATH_ALERT: ClassVar["MonitorType"]
+ DATA_JOBS_ALERT: ClassVar["MonitorType"]
+ LLM_OBSERVABILITY_ALERT: ClassVar["MonitorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonitorType.COMPOSITE = MonitorType("composite")
+MonitorType.EVENT_ALERT = MonitorType("event alert")
+MonitorType.LOG_ALERT = MonitorType("log alert")
+MonitorType.METRIC_ALERT = MonitorType("metric alert")
+MonitorType.PROCESS_ALERT = MonitorType("process alert")
+MonitorType.QUERY_ALERT = MonitorType("query alert")
+MonitorType.RUM_ALERT = MonitorType("rum alert")
+MonitorType.SERVICE_CHECK = MonitorType("service check")
+MonitorType.SYNTHETICS_ALERT = MonitorType("synthetics alert")
+MonitorType.TRACE_ANALYTICS_ALERT = MonitorType("trace-analytics alert")
+MonitorType.SLO_ALERT = MonitorType("slo alert")
+MonitorType.EVENT_V2_ALERT = MonitorType("event-v2 alert")
+MonitorType.AUDIT_ALERT = MonitorType("audit alert")
+MonitorType.CI_PIPELINES_ALERT = MonitorType("ci-pipelines alert")
+MonitorType.CI_TESTS_ALERT = MonitorType("ci-tests alert")
+MonitorType.ERROR_TRACKING_ALERT = MonitorType("error-tracking alert")
+MonitorType.DATABASE_MONITORING_ALERT = MonitorType("database-monitoring alert")
+MonitorType.NETWORK_PERFORMANCE_ALERT = MonitorType("network-performance alert")
+MonitorType.COST_ALERT = MonitorType("cost alert")
+MonitorType.DATA_QUALITY_ALERT = MonitorType("data-quality alert")
+MonitorType.NETWORK_PATH_ALERT = MonitorType("network-path alert")
+MonitorType.DATA_JOBS_ALERT = MonitorType("data-jobs alert")
+MonitorType.LLM_OBSERVABILITY_ALERT = MonitorType("llm-observability alert")
diff --git a/datadog_api_client/v1/model/monitor_update_request.py b/datadog_api_client/v1/model/monitor_update_request.py
new file mode 100644
index 0000000000..e27eea2e9f
--- /dev/null
+++ b/datadog_api_client/v1/model/monitor_update_request.py
@@ -0,0 +1,201 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monitor_asset import MonitorAsset
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.monitor_draft_status import MonitorDraftStatus
+ from datadog_api_client.v1.model.monitor_options import MonitorOptions
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ from datadog_api_client.v1.model.monitor_state import MonitorState
+ from datadog_api_client.v1.model.monitor_type import MonitorType
+ from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import MonitorFormulaAndFunctionCostQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import MonitorFormulaAndFunctionDataQualityQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_data_jobs_query_definition import MonitorFormulaAndFunctionDataJobsQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition
+ from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import MonitorFormulaAndFunctionAggregateFilteredQueryDefinition
+
+class MonitorUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monitor_asset import MonitorAsset
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.monitor_draft_status import MonitorDraftStatus
+ from datadog_api_client.v1.model.monitor_options import MonitorOptions
+ from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+ from datadog_api_client.v1.model.monitor_state import MonitorState
+ from datadog_api_client.v1.model.monitor_type import MonitorType
+ return {
+ "assets": ([MonitorAsset], none_type),
+ "created": (datetime,),
+ "creator": (Creator,),
+ "deleted": (datetime, none_type),
+ "draft_status": (MonitorDraftStatus,),
+ "id": (int,),
+ "message": (str,),
+ "modified": (datetime,),
+ "multi": (bool,),
+ "name": (str,),
+ "options": (MonitorOptions,),
+ "overall_state": (MonitorOverallStates,),
+ "priority": (int, none_type),
+ "query": (str,),
+ "restricted_roles": ([str], none_type),
+ "state": (MonitorState,),
+ "tags": ([str],),
+ "type": (MonitorType,),
+ }
+ attribute_map = {
+ "assets": "assets",
+ "created": "created",
+ "creator": "creator",
+ "deleted": "deleted",
+ "draft_status": "draft_status",
+ "id": "id",
+ "message": "message",
+ "modified": "modified",
+ "multi": "multi",
+ "name": "name",
+ "options": "options",
+ "overall_state": "overall_state",
+ "priority": "priority",
+ "query": "query",
+ "restricted_roles": "restricted_roles",
+ "state": "state",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "created",
+ "creator",
+ "deleted",
+ "id",
+ "modified",
+ "multi",
+ "overall_state",
+ "state",
+ }
+
+ def __init__(self_, assets: Union[List[MonitorAsset], none_type, UnsetType]=unset, created: Union[datetime, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, deleted: Union[datetime, none_type, UnsetType]=unset, draft_status: Union[MonitorDraftStatus, UnsetType]=unset, id: Union[int, UnsetType]=unset, message: Union[str, UnsetType]=unset, modified: Union[datetime, UnsetType]=unset, multi: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, options: Union[MonitorOptions, UnsetType]=unset, overall_state: Union[MonitorOverallStates, UnsetType]=unset, priority: Union[int, none_type, UnsetType]=unset, query: Union[str, UnsetType]=unset, restricted_roles: Union[List[str], none_type, UnsetType]=unset, state: Union[MonitorState, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[MonitorType, UnsetType]=unset, **kwargs):
+ """
+ Object describing a monitor update request.
+
+ :param assets: The list of monitor assets tied to a monitor, which represents key links for users to take action on monitor alerts (for example, runbooks).
+ :type assets: [MonitorAsset], none_type, optional
+
+ :param created: Timestamp of the monitor creation.
+ :type created: datetime, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param deleted: Whether or not the monitor is deleted. (Always ``null`` )
+ :type deleted: datetime, none_type, optional
+
+ :param draft_status: Indicates whether the monitor is in a draft or published state.
+
+ ``draft`` : The monitor appears as Draft and does not send notifications.
+ ``published`` : The monitor is active and evaluates conditions and notify as configured.
+
+ This field is in preview. The draft value is only available to customers with the feature enabled.
+ :type draft_status: MonitorDraftStatus, optional
+
+ :param id: ID of this monitor.
+ :type id: int, optional
+
+ :param message: A message to include with notifications for this monitor.
+ :type message: str, optional
+
+ :param modified: Last timestamp when the monitor was edited.
+ :type modified: datetime, optional
+
+ :param multi: Whether or not the monitor is broken down on different groups.
+ :type multi: bool, optional
+
+ :param name: The monitor name.
+ :type name: str, optional
+
+ :param options: List of options associated with your monitor.
+ :type options: MonitorOptions, optional
+
+ :param overall_state: The different states your monitor can be in.
+ :type overall_state: MonitorOverallStates, optional
+
+ :param priority: Integer from 1 (high) to 5 (low) indicating alert severity.
+ :type priority: int, none_type, optional
+
+ :param query: The monitor query.
+ :type query: str, optional
+
+ :param restricted_roles: A list of unique role identifiers to define which roles are allowed to edit the monitor. The unique identifiers for all roles can be pulled from the `Roles API `_ and are located in the ``data.id`` field. Editing a monitor includes any updates to the monitor configuration, monitor deletion, and muting of the monitor for any amount of time. You can use the `Restriction Policies API `_ to manage write authorization for individual monitors by teams and users, in addition to roles.
+ :type restricted_roles: [str], none_type, optional
+
+ :param state: Wrapper object with the different monitor states.
+ :type state: MonitorState, optional
+
+ :param tags: Tags associated to your monitor.
+ :type tags: [str], optional
+
+ :param type: The type of the monitor. For more information about ``type`` , see the `monitor options `_ docs.
+ :type type: MonitorType, optional
+ """
+ if assets is not unset:
+ kwargs["assets"] = assets
+ if created is not unset:
+ kwargs["created"] = created
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if deleted is not unset:
+ kwargs["deleted"] = deleted
+ if draft_status is not unset:
+ kwargs["draft_status"] = draft_status
+ if id is not unset:
+ kwargs["id"] = id
+ if message is not unset:
+ kwargs["message"] = message
+ if modified is not unset:
+ kwargs["modified"] = modified
+ if multi is not unset:
+ kwargs["multi"] = multi
+ if name is not unset:
+ kwargs["name"] = name
+ if options is not unset:
+ kwargs["options"] = options
+ if overall_state is not unset:
+ kwargs["overall_state"] = overall_state
+ if priority is not unset:
+ kwargs["priority"] = priority
+ if query is not unset:
+ kwargs["query"] = query
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ if state is not unset:
+ kwargs["state"] = state
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monthly_usage_attribution_body.py b/datadog_api_client/v1/model/monthly_usage_attribution_body.py
new file mode 100644
index 0000000000..5bedc726ee
--- /dev/null
+++ b/datadog_api_client/v1/model/monthly_usage_attribution_body.py
@@ -0,0 +1,104 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_attribution_tag_names import UsageAttributionTagNames
+ from datadog_api_client.v1.model.monthly_usage_attribution_values import MonthlyUsageAttributionValues
+
+class MonthlyUsageAttributionBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_attribution_tag_names import UsageAttributionTagNames
+ from datadog_api_client.v1.model.monthly_usage_attribution_values import MonthlyUsageAttributionValues
+ return {
+ "month": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "region": (str,),
+ "tag_config_source": (str,),
+ "tags": (UsageAttributionTagNames,),
+ "updated_at": (datetime,),
+ "values": (MonthlyUsageAttributionValues,),
+ }
+ attribute_map = {
+ "month": "month",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "region": "region",
+ "tag_config_source": "tag_config_source",
+ "tags": "tags",
+ "updated_at": "updated_at",
+ "values": "values",
+ }
+
+ def __init__(self_, month: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, region: Union[str, UnsetType]=unset, tag_config_source: Union[str, UnsetType]=unset, tags: Union[UsageAttributionTagNames, none_type, UnsetType]=unset, updated_at: Union[datetime, UnsetType]=unset, values: Union[MonthlyUsageAttributionValues, UnsetType]=unset, **kwargs):
+ """
+ Usage Summary by tag for a given organization.
+
+ :param month: Datetime in ISO-8601 format, UTC, precise to month: [YYYY-MM].
+ :type month: datetime, optional
+
+ :param org_name: The name of the organization.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param region: The region of the Datadog instance that the organization belongs to.
+ :type region: str, optional
+
+ :param tag_config_source: The source of the usage attribution tag configuration and the selected tags in the format ``::://////``.
+ :type tag_config_source: str, optional
+
+ :param tags: Tag keys and values.
+
+ A ``null`` value here means that the requested tag breakdown cannot be applied because it does not match the `tags
+ configured for usage attribution `_.
+ In this scenario the API returns the total usage, not broken down by tags.
+ :type tags: UsageAttributionTagNames, none_type, optional
+
+ :param updated_at: Datetime of the most recent update to the usage values.
+ :type updated_at: datetime, optional
+
+ :param values: Fields in Usage Summary by tag(s).
+ :type values: MonthlyUsageAttributionValues, optional
+ """
+ if month is not unset:
+ kwargs["month"] = month
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if region is not unset:
+ kwargs["region"] = region
+ if tag_config_source is not unset:
+ kwargs["tag_config_source"] = tag_config_source
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if updated_at is not unset:
+ kwargs["updated_at"] = updated_at
+ if values is not unset:
+ kwargs["values"] = values
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monthly_usage_attribution_metadata.py b/datadog_api_client/v1/model/monthly_usage_attribution_metadata.py
new file mode 100644
index 0000000000..c46c2c2534
--- /dev/null
+++ b/datadog_api_client/v1/model/monthly_usage_attribution_metadata.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_attribution_aggregates import UsageAttributionAggregates
+ from datadog_api_client.v1.model.monthly_usage_attribution_pagination import MonthlyUsageAttributionPagination
+
+class MonthlyUsageAttributionMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_attribution_aggregates import UsageAttributionAggregates
+ from datadog_api_client.v1.model.monthly_usage_attribution_pagination import MonthlyUsageAttributionPagination
+ return {
+ "aggregates": (UsageAttributionAggregates,),
+ "pagination": (MonthlyUsageAttributionPagination,),
+ }
+ attribute_map = {
+ "aggregates": "aggregates",
+ "pagination": "pagination",
+ }
+
+ def __init__(self_, aggregates: Union[UsageAttributionAggregates, UnsetType]=unset, pagination: Union[MonthlyUsageAttributionPagination, UnsetType]=unset, **kwargs):
+ """
+ The object containing document metadata.
+
+ :param aggregates: An array of available aggregates.
+ :type aggregates: UsageAttributionAggregates, optional
+
+ :param pagination: The metadata for the current pagination.
+ :type pagination: MonthlyUsageAttributionPagination, optional
+ """
+ if aggregates is not unset:
+ kwargs["aggregates"] = aggregates
+ if pagination is not unset:
+ kwargs["pagination"] = pagination
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monthly_usage_attribution_pagination.py b/datadog_api_client/v1/model/monthly_usage_attribution_pagination.py
new file mode 100644
index 0000000000..c08c710391
--- /dev/null
+++ b/datadog_api_client/v1/model/monthly_usage_attribution_pagination.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonthlyUsageAttributionPagination(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "next_record_id": (str, none_type),
+ }
+ attribute_map = {
+ "next_record_id": "next_record_id",
+ }
+
+ def __init__(self_, next_record_id: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ The metadata for the current pagination.
+
+ :param next_record_id: The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of the ``next_record_id``.
+ :type next_record_id: str, none_type, optional
+ """
+ if next_record_id is not unset:
+ kwargs["next_record_id"] = next_record_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monthly_usage_attribution_response.py b/datadog_api_client/v1/model/monthly_usage_attribution_response.py
new file mode 100644
index 0000000000..5d60947e46
--- /dev/null
+++ b/datadog_api_client/v1/model/monthly_usage_attribution_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.monthly_usage_attribution_metadata import MonthlyUsageAttributionMetadata
+ from datadog_api_client.v1.model.monthly_usage_attribution_body import MonthlyUsageAttributionBody
+
+class MonthlyUsageAttributionResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.monthly_usage_attribution_metadata import MonthlyUsageAttributionMetadata
+ from datadog_api_client.v1.model.monthly_usage_attribution_body import MonthlyUsageAttributionBody
+ return {
+ "metadata": (MonthlyUsageAttributionMetadata,),
+ "usage": ([MonthlyUsageAttributionBody],),
+ }
+ attribute_map = {
+ "metadata": "metadata",
+ "usage": "usage",
+ }
+
+ def __init__(self_, metadata: Union[MonthlyUsageAttributionMetadata, UnsetType]=unset, usage: Union[List[MonthlyUsageAttributionBody], UnsetType]=unset, **kwargs):
+ """
+ Response containing the monthly Usage Summary by tag(s).
+
+ :param metadata: The object containing document metadata.
+ :type metadata: MonthlyUsageAttributionMetadata, optional
+
+ :param usage: Get usage summary by tag(s).
+ :type usage: [MonthlyUsageAttributionBody], optional
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py b/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py
new file mode 100644
index 0000000000..a079f73077
--- /dev/null
+++ b/datadog_api_client/v1/model/monthly_usage_attribution_supported_metrics.py
@@ -0,0 +1,556 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class MonthlyUsageAttributionSupportedMetrics(ModelSimple):
+ """
+ Supported metrics for monthly usage attribution requests. Usage types are in the format `_usage`.
+ To obtain the complete list of valid usage types, make a request to the [Get usage attribution types API](https://docs.datadoghq.com/api/latest/usage-metering/#get-usage-attribution-types).
+
+ :param value: Must be one of ["api_usage", "api_percentage", "apm_fargate_usage", "apm_fargate_percentage", "appsec_fargate_usage", "appsec_fargate_percentage", "apm_host_usage", "apm_host_percentage", "apm_usm_usage", "apm_usm_percentage", "appsec_usage", "appsec_percentage", "asm_serverless_traced_invocations_usage", "asm_serverless_traced_invocations_percentage", "bits_ai_investigations_usage", "bits_ai_investigations_percentage", "browser_usage", "browser_percentage", "ci_visibility_itr_usage", "ci_visibility_itr_percentage", "cloud_siem_usage", "cloud_siem_percentage", "code_security_host_usage", "code_security_host_percentage", "container_excl_agent_usage", "container_excl_agent_percentage", "container_usage", "container_percentage", "cspm_containers_percentage", "cspm_containers_usage", "cspm_hosts_percentage", "cspm_hosts_usage", "custom_timeseries_usage", "custom_timeseries_percentage", "custom_ingested_timeseries_usage", "custom_ingested_timeseries_percentage", "cws_containers_percentage", "cws_containers_usage", "cws_fargate_task_percentage", "cws_fargate_task_usage", "cws_hosts_percentage", "cws_hosts_usage", "data_jobs_monitoring_usage", "data_jobs_monitoring_percentage", "data_stream_monitoring_usage", "data_stream_monitoring_percentage", "dbm_hosts_percentage", "dbm_hosts_usage", "dbm_queries_percentage", "dbm_queries_usage", "error_tracking_usage", "error_tracking_percentage", "estimated_indexed_spans_usage", "estimated_indexed_spans_percentage", "estimated_ingested_spans_usage", "estimated_ingested_spans_percentage", "fargate_usage", "fargate_percentage", "flex_logs_starter_usage", "flex_logs_starter_percentage", "flex_stored_logs_usage", "flex_stored_logs_percentage", "functions_usage", "functions_percentage", "incident_management_monthly_active_users_usage", "incident_management_monthly_active_users_percentage", "infra_host_usage", "infra_host_percentage", "infra_host_basic_usage", "infra_host_basic_percentage", "invocations_usage", "invocations_percentage", "lambda_traced_invocations_usage", "lambda_traced_invocations_percentage", "llm_observability_usage", "llm_observability_percentage", "llm_spans_usage", "llm_spans_percentage", "mobile_app_testing_percentage", "mobile_app_testing_usage", "ndm_netflow_usage", "ndm_netflow_percentage", "network_device_wireless_usage", "network_device_wireless_percentage", "npm_host_usage", "npm_host_percentage", "obs_pipeline_bytes_usage", "obs_pipeline_bytes_percentage", "obs_pipelines_vcpu_usage", "obs_pipelines_vcpu_percentage", "online_archive_usage", "online_archive_percentage", "product_analytics_session_usage", "product_analytics_session_percentage", "profiled_container_usage", "profiled_container_percentage", "profiled_fargate_usage", "profiled_fargate_percentage", "profiled_host_usage", "profiled_host_percentage", "published_app_usage", "published_app_percentage", "serverless_apps_usage", "serverless_apps_percentage", "serverless_apps_apm_usage", "serverless_apps_apm_percentage", "snmp_usage", "snmp_percentage", "universal_service_monitoring_usage", "universal_service_monitoring_percentage", "vuln_management_hosts_usage", "vuln_management_hosts_percentage", "sds_scanned_bytes_usage", "sds_scanned_bytes_percentage", "ci_test_indexed_spans_usage", "ci_test_indexed_spans_percentage", "ingested_logs_bytes_usage", "ingested_logs_bytes_percentage", "ci_pipeline_indexed_spans_usage", "ci_pipeline_indexed_spans_percentage", "indexed_spans_usage", "indexed_spans_percentage", "custom_event_usage", "custom_event_percentage", "logs_indexed_custom_retention_usage", "logs_indexed_custom_retention_percentage", "logs_indexed_360day_usage", "logs_indexed_360day_percentage", "logs_indexed_180day_usage", "logs_indexed_180day_percentage", "logs_indexed_90day_usage", "logs_indexed_90day_percentage", "logs_indexed_60day_usage", "logs_indexed_60day_percentage", "logs_indexed_45day_usage", "logs_indexed_45day_percentage", "logs_indexed_30day_usage", "logs_indexed_30day_percentage", "logs_indexed_15day_usage", "logs_indexed_15day_percentage", "logs_indexed_7day_usage", "logs_indexed_7day_percentage", "logs_indexed_3day_usage", "logs_indexed_3day_percentage", "logs_indexed_1day_usage", "logs_indexed_1day_percentage", "rum_ingested_usage", "rum_ingested_percentage", "rum_investigate_usage", "rum_investigate_percentage", "rum_replay_sessions_usage", "rum_replay_sessions_percentage", "rum_session_replay_add_on_usage", "rum_session_replay_add_on_percentage", "rum_browser_mobile_sessions_usage", "rum_browser_mobile_sessions_percentage", "ingested_spans_bytes_usage", "ingested_spans_bytes_percentage", "siem_12mo_retention_usage", "siem_12mo_retention_percentage", "siem_6mo_retention_usage", "siem_6mo_retention_percentage", "siem_analyzed_logs_add_on_usage", "siem_analyzed_logs_add_on_percentage", "siem_ingested_bytes_usage", "siem_ingested_bytes_percentage", "workflow_executions_usage", "workflow_executions_percentage", "sca_fargate_usage", "sca_fargate_percentage", "*"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "api_usage",
+ "api_percentage",
+ "apm_fargate_usage",
+ "apm_fargate_percentage",
+ "appsec_fargate_usage",
+ "appsec_fargate_percentage",
+ "apm_host_usage",
+ "apm_host_percentage",
+ "apm_usm_usage",
+ "apm_usm_percentage",
+ "appsec_usage",
+ "appsec_percentage",
+ "asm_serverless_traced_invocations_usage",
+ "asm_serverless_traced_invocations_percentage",
+ "bits_ai_investigations_usage",
+ "bits_ai_investigations_percentage",
+ "browser_usage",
+ "browser_percentage",
+ "ci_visibility_itr_usage",
+ "ci_visibility_itr_percentage",
+ "cloud_siem_usage",
+ "cloud_siem_percentage",
+ "code_security_host_usage",
+ "code_security_host_percentage",
+ "container_excl_agent_usage",
+ "container_excl_agent_percentage",
+ "container_usage",
+ "container_percentage",
+ "cspm_containers_percentage",
+ "cspm_containers_usage",
+ "cspm_hosts_percentage",
+ "cspm_hosts_usage",
+ "custom_timeseries_usage",
+ "custom_timeseries_percentage",
+ "custom_ingested_timeseries_usage",
+ "custom_ingested_timeseries_percentage",
+ "cws_containers_percentage",
+ "cws_containers_usage",
+ "cws_fargate_task_percentage",
+ "cws_fargate_task_usage",
+ "cws_hosts_percentage",
+ "cws_hosts_usage",
+ "data_jobs_monitoring_usage",
+ "data_jobs_monitoring_percentage",
+ "data_stream_monitoring_usage",
+ "data_stream_monitoring_percentage",
+ "dbm_hosts_percentage",
+ "dbm_hosts_usage",
+ "dbm_queries_percentage",
+ "dbm_queries_usage",
+ "error_tracking_usage",
+ "error_tracking_percentage",
+ "estimated_indexed_spans_usage",
+ "estimated_indexed_spans_percentage",
+ "estimated_ingested_spans_usage",
+ "estimated_ingested_spans_percentage",
+ "fargate_usage",
+ "fargate_percentage",
+ "flex_logs_starter_usage",
+ "flex_logs_starter_percentage",
+ "flex_stored_logs_usage",
+ "flex_stored_logs_percentage",
+ "functions_usage",
+ "functions_percentage",
+ "incident_management_monthly_active_users_usage",
+ "incident_management_monthly_active_users_percentage",
+ "infra_host_usage",
+ "infra_host_percentage",
+ "infra_host_basic_usage",
+ "infra_host_basic_percentage",
+ "invocations_usage",
+ "invocations_percentage",
+ "lambda_traced_invocations_usage",
+ "lambda_traced_invocations_percentage",
+ "llm_observability_usage",
+ "llm_observability_percentage",
+ "llm_spans_usage",
+ "llm_spans_percentage",
+ "mobile_app_testing_percentage",
+ "mobile_app_testing_usage",
+ "ndm_netflow_usage",
+ "ndm_netflow_percentage",
+ "network_device_wireless_usage",
+ "network_device_wireless_percentage",
+ "npm_host_usage",
+ "npm_host_percentage",
+ "obs_pipeline_bytes_usage",
+ "obs_pipeline_bytes_percentage",
+ "obs_pipelines_vcpu_usage",
+ "obs_pipelines_vcpu_percentage",
+ "online_archive_usage",
+ "online_archive_percentage",
+ "product_analytics_session_usage",
+ "product_analytics_session_percentage",
+ "profiled_container_usage",
+ "profiled_container_percentage",
+ "profiled_fargate_usage",
+ "profiled_fargate_percentage",
+ "profiled_host_usage",
+ "profiled_host_percentage",
+ "published_app_usage",
+ "published_app_percentage",
+ "serverless_apps_usage",
+ "serverless_apps_percentage",
+ "serverless_apps_apm_usage",
+ "serverless_apps_apm_percentage",
+ "snmp_usage",
+ "snmp_percentage",
+ "universal_service_monitoring_usage",
+ "universal_service_monitoring_percentage",
+ "vuln_management_hosts_usage",
+ "vuln_management_hosts_percentage",
+ "sds_scanned_bytes_usage",
+ "sds_scanned_bytes_percentage",
+ "ci_test_indexed_spans_usage",
+ "ci_test_indexed_spans_percentage",
+ "ingested_logs_bytes_usage",
+ "ingested_logs_bytes_percentage",
+ "ci_pipeline_indexed_spans_usage",
+ "ci_pipeline_indexed_spans_percentage",
+ "indexed_spans_usage",
+ "indexed_spans_percentage",
+ "custom_event_usage",
+ "custom_event_percentage",
+ "logs_indexed_custom_retention_usage",
+ "logs_indexed_custom_retention_percentage",
+ "logs_indexed_360day_usage",
+ "logs_indexed_360day_percentage",
+ "logs_indexed_180day_usage",
+ "logs_indexed_180day_percentage",
+ "logs_indexed_90day_usage",
+ "logs_indexed_90day_percentage",
+ "logs_indexed_60day_usage",
+ "logs_indexed_60day_percentage",
+ "logs_indexed_45day_usage",
+ "logs_indexed_45day_percentage",
+ "logs_indexed_30day_usage",
+ "logs_indexed_30day_percentage",
+ "logs_indexed_15day_usage",
+ "logs_indexed_15day_percentage",
+ "logs_indexed_7day_usage",
+ "logs_indexed_7day_percentage",
+ "logs_indexed_3day_usage",
+ "logs_indexed_3day_percentage",
+ "logs_indexed_1day_usage",
+ "logs_indexed_1day_percentage",
+ "rum_ingested_usage",
+ "rum_ingested_percentage",
+ "rum_investigate_usage",
+ "rum_investigate_percentage",
+ "rum_replay_sessions_usage",
+ "rum_replay_sessions_percentage",
+ "rum_session_replay_add_on_usage",
+ "rum_session_replay_add_on_percentage",
+ "rum_browser_mobile_sessions_usage",
+ "rum_browser_mobile_sessions_percentage",
+ "ingested_spans_bytes_usage",
+ "ingested_spans_bytes_percentage",
+ "siem_12mo_retention_usage",
+ "siem_12mo_retention_percentage",
+ "siem_6mo_retention_usage",
+ "siem_6mo_retention_percentage",
+ "siem_analyzed_logs_add_on_usage",
+ "siem_analyzed_logs_add_on_percentage",
+ "siem_ingested_bytes_usage",
+ "siem_ingested_bytes_percentage",
+ "workflow_executions_usage",
+ "workflow_executions_percentage",
+ "sca_fargate_usage",
+ "sca_fargate_percentage",
+ "*",
+ }
+ API_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ API_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APM_FARGATE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APM_FARGATE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APPSEC_FARGATE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APPSEC_FARGATE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APM_HOST_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APM_HOST_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APM_USM_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APM_USM_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APPSEC_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ APPSEC_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ASM_SERVERLESS_TRACED_INVOCATIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ASM_SERVERLESS_TRACED_INVOCATIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ BITS_AI_INVESTIGATIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ BITS_AI_INVESTIGATIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ BROWSER_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ BROWSER_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CI_VISIBILITY_ITR_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CI_VISIBILITY_ITR_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CLOUD_SIEM_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CLOUD_SIEM_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CODE_SECURITY_HOST_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CODE_SECURITY_HOST_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CONTAINER_EXCL_AGENT_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CONTAINER_EXCL_AGENT_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CONTAINER_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CONTAINER_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CSPM_CONTAINERS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CSPM_CONTAINERS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CSPM_HOSTS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CSPM_HOSTS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CUSTOM_TIMESERIES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CUSTOM_TIMESERIES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CUSTOM_INGESTED_TIMESERIES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CUSTOM_INGESTED_TIMESERIES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CWS_CONTAINERS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CWS_CONTAINERS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CWS_FARGATE_TASK_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CWS_FARGATE_TASK_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CWS_HOSTS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CWS_HOSTS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DATA_JOBS_MONITORING_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DATA_JOBS_MONITORING_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DATA_STREAM_MONITORING_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DATA_STREAM_MONITORING_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DBM_HOSTS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DBM_HOSTS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DBM_QUERIES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ DBM_QUERIES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ERROR_TRACKING_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ERROR_TRACKING_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ESTIMATED_INDEXED_SPANS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ESTIMATED_INDEXED_SPANS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ESTIMATED_INGESTED_SPANS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ESTIMATED_INGESTED_SPANS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FARGATE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FARGATE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FLEX_LOGS_STARTER_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FLEX_LOGS_STARTER_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FLEX_STORED_LOGS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FLEX_STORED_LOGS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FUNCTIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ FUNCTIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INCIDENT_MANAGEMENT_MONTHLY_ACTIVE_USERS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INCIDENT_MANAGEMENT_MONTHLY_ACTIVE_USERS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INFRA_HOST_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INFRA_HOST_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INFRA_HOST_BASIC_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INFRA_HOST_BASIC_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INVOCATIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INVOCATIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LAMBDA_TRACED_INVOCATIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LAMBDA_TRACED_INVOCATIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LLM_OBSERVABILITY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LLM_OBSERVABILITY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LLM_SPANS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LLM_SPANS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ MOBILE_APP_TESTING_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ MOBILE_APP_TESTING_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ NDM_NETFLOW_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ NDM_NETFLOW_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ NETWORK_DEVICE_WIRELESS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ NETWORK_DEVICE_WIRELESS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ NPM_HOST_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ NPM_HOST_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ OBS_PIPELINE_BYTES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ OBS_PIPELINE_BYTES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ OBS_PIPELINES_VCPU_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ OBS_PIPELINES_VCPU_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ONLINE_ARCHIVE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ONLINE_ARCHIVE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PRODUCT_ANALYTICS_SESSION_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PRODUCT_ANALYTICS_SESSION_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PROFILED_CONTAINER_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PROFILED_CONTAINER_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PROFILED_FARGATE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PROFILED_FARGATE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PROFILED_HOST_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PROFILED_HOST_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PUBLISHED_APP_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ PUBLISHED_APP_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SERVERLESS_APPS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SERVERLESS_APPS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SERVERLESS_APPS_APM_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SERVERLESS_APPS_APM_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SNMP_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SNMP_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ UNIVERSAL_SERVICE_MONITORING_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ UNIVERSAL_SERVICE_MONITORING_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ VULN_MANAGEMENT_HOSTS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ VULN_MANAGEMENT_HOSTS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SDS_SCANNED_BYTES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SDS_SCANNED_BYTES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CI_TEST_INDEXED_SPANS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CI_TEST_INDEXED_SPANS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INGESTED_LOGS_BYTES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INGESTED_LOGS_BYTES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CI_PIPELINE_INDEXED_SPANS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CI_PIPELINE_INDEXED_SPANS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INDEXED_SPANS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INDEXED_SPANS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CUSTOM_EVENT_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ CUSTOM_EVENT_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_CUSTOM_RETENTION_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_CUSTOM_RETENTION_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_360DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_360DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_180DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_180DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_90DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_90DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_60DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_60DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_45DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_45DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_30DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_30DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_15DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_15DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_7DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_7DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_3DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_3DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_1DAY_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ LOGS_INDEXED_1DAY_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_INGESTED_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_INGESTED_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_INVESTIGATE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_INVESTIGATE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_REPLAY_SESSIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_REPLAY_SESSIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_SESSION_REPLAY_ADD_ON_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_SESSION_REPLAY_ADD_ON_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_BROWSER_MOBILE_SESSIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ RUM_BROWSER_MOBILE_SESSIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INGESTED_SPANS_BYTES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ INGESTED_SPANS_BYTES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_12MO_RETENTION_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_12MO_RETENTION_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_6MO_RETENTION_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_6MO_RETENTION_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_ANALYZED_LOGS_ADD_ON_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_ANALYZED_LOGS_ADD_ON_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_INGESTED_BYTES_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SIEM_INGESTED_BYTES_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ WORKFLOW_EXECUTIONS_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ WORKFLOW_EXECUTIONS_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SCA_FARGATE_USAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ SCA_FARGATE_PERCENTAGE: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+ ALL: ClassVar["MonthlyUsageAttributionSupportedMetrics"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+MonthlyUsageAttributionSupportedMetrics.API_USAGE = MonthlyUsageAttributionSupportedMetrics("api_usage")
+MonthlyUsageAttributionSupportedMetrics.API_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("api_percentage")
+MonthlyUsageAttributionSupportedMetrics.APM_FARGATE_USAGE = MonthlyUsageAttributionSupportedMetrics("apm_fargate_usage")
+MonthlyUsageAttributionSupportedMetrics.APM_FARGATE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("apm_fargate_percentage")
+MonthlyUsageAttributionSupportedMetrics.APPSEC_FARGATE_USAGE = MonthlyUsageAttributionSupportedMetrics("appsec_fargate_usage")
+MonthlyUsageAttributionSupportedMetrics.APPSEC_FARGATE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("appsec_fargate_percentage")
+MonthlyUsageAttributionSupportedMetrics.APM_HOST_USAGE = MonthlyUsageAttributionSupportedMetrics("apm_host_usage")
+MonthlyUsageAttributionSupportedMetrics.APM_HOST_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("apm_host_percentage")
+MonthlyUsageAttributionSupportedMetrics.APM_USM_USAGE = MonthlyUsageAttributionSupportedMetrics("apm_usm_usage")
+MonthlyUsageAttributionSupportedMetrics.APM_USM_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("apm_usm_percentage")
+MonthlyUsageAttributionSupportedMetrics.APPSEC_USAGE = MonthlyUsageAttributionSupportedMetrics("appsec_usage")
+MonthlyUsageAttributionSupportedMetrics.APPSEC_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("appsec_percentage")
+MonthlyUsageAttributionSupportedMetrics.ASM_SERVERLESS_TRACED_INVOCATIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("asm_serverless_traced_invocations_usage")
+MonthlyUsageAttributionSupportedMetrics.ASM_SERVERLESS_TRACED_INVOCATIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("asm_serverless_traced_invocations_percentage")
+MonthlyUsageAttributionSupportedMetrics.BITS_AI_INVESTIGATIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("bits_ai_investigations_usage")
+MonthlyUsageAttributionSupportedMetrics.BITS_AI_INVESTIGATIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("bits_ai_investigations_percentage")
+MonthlyUsageAttributionSupportedMetrics.BROWSER_USAGE = MonthlyUsageAttributionSupportedMetrics("browser_usage")
+MonthlyUsageAttributionSupportedMetrics.BROWSER_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("browser_percentage")
+MonthlyUsageAttributionSupportedMetrics.CI_VISIBILITY_ITR_USAGE = MonthlyUsageAttributionSupportedMetrics("ci_visibility_itr_usage")
+MonthlyUsageAttributionSupportedMetrics.CI_VISIBILITY_ITR_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("ci_visibility_itr_percentage")
+MonthlyUsageAttributionSupportedMetrics.CLOUD_SIEM_USAGE = MonthlyUsageAttributionSupportedMetrics("cloud_siem_usage")
+MonthlyUsageAttributionSupportedMetrics.CLOUD_SIEM_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("cloud_siem_percentage")
+MonthlyUsageAttributionSupportedMetrics.CODE_SECURITY_HOST_USAGE = MonthlyUsageAttributionSupportedMetrics("code_security_host_usage")
+MonthlyUsageAttributionSupportedMetrics.CODE_SECURITY_HOST_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("code_security_host_percentage")
+MonthlyUsageAttributionSupportedMetrics.CONTAINER_EXCL_AGENT_USAGE = MonthlyUsageAttributionSupportedMetrics("container_excl_agent_usage")
+MonthlyUsageAttributionSupportedMetrics.CONTAINER_EXCL_AGENT_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("container_excl_agent_percentage")
+MonthlyUsageAttributionSupportedMetrics.CONTAINER_USAGE = MonthlyUsageAttributionSupportedMetrics("container_usage")
+MonthlyUsageAttributionSupportedMetrics.CONTAINER_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("container_percentage")
+MonthlyUsageAttributionSupportedMetrics.CSPM_CONTAINERS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("cspm_containers_percentage")
+MonthlyUsageAttributionSupportedMetrics.CSPM_CONTAINERS_USAGE = MonthlyUsageAttributionSupportedMetrics("cspm_containers_usage")
+MonthlyUsageAttributionSupportedMetrics.CSPM_HOSTS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("cspm_hosts_percentage")
+MonthlyUsageAttributionSupportedMetrics.CSPM_HOSTS_USAGE = MonthlyUsageAttributionSupportedMetrics("cspm_hosts_usage")
+MonthlyUsageAttributionSupportedMetrics.CUSTOM_TIMESERIES_USAGE = MonthlyUsageAttributionSupportedMetrics("custom_timeseries_usage")
+MonthlyUsageAttributionSupportedMetrics.CUSTOM_TIMESERIES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("custom_timeseries_percentage")
+MonthlyUsageAttributionSupportedMetrics.CUSTOM_INGESTED_TIMESERIES_USAGE = MonthlyUsageAttributionSupportedMetrics("custom_ingested_timeseries_usage")
+MonthlyUsageAttributionSupportedMetrics.CUSTOM_INGESTED_TIMESERIES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("custom_ingested_timeseries_percentage")
+MonthlyUsageAttributionSupportedMetrics.CWS_CONTAINERS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("cws_containers_percentage")
+MonthlyUsageAttributionSupportedMetrics.CWS_CONTAINERS_USAGE = MonthlyUsageAttributionSupportedMetrics("cws_containers_usage")
+MonthlyUsageAttributionSupportedMetrics.CWS_FARGATE_TASK_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("cws_fargate_task_percentage")
+MonthlyUsageAttributionSupportedMetrics.CWS_FARGATE_TASK_USAGE = MonthlyUsageAttributionSupportedMetrics("cws_fargate_task_usage")
+MonthlyUsageAttributionSupportedMetrics.CWS_HOSTS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("cws_hosts_percentage")
+MonthlyUsageAttributionSupportedMetrics.CWS_HOSTS_USAGE = MonthlyUsageAttributionSupportedMetrics("cws_hosts_usage")
+MonthlyUsageAttributionSupportedMetrics.DATA_JOBS_MONITORING_USAGE = MonthlyUsageAttributionSupportedMetrics("data_jobs_monitoring_usage")
+MonthlyUsageAttributionSupportedMetrics.DATA_JOBS_MONITORING_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("data_jobs_monitoring_percentage")
+MonthlyUsageAttributionSupportedMetrics.DATA_STREAM_MONITORING_USAGE = MonthlyUsageAttributionSupportedMetrics("data_stream_monitoring_usage")
+MonthlyUsageAttributionSupportedMetrics.DATA_STREAM_MONITORING_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("data_stream_monitoring_percentage")
+MonthlyUsageAttributionSupportedMetrics.DBM_HOSTS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("dbm_hosts_percentage")
+MonthlyUsageAttributionSupportedMetrics.DBM_HOSTS_USAGE = MonthlyUsageAttributionSupportedMetrics("dbm_hosts_usage")
+MonthlyUsageAttributionSupportedMetrics.DBM_QUERIES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("dbm_queries_percentage")
+MonthlyUsageAttributionSupportedMetrics.DBM_QUERIES_USAGE = MonthlyUsageAttributionSupportedMetrics("dbm_queries_usage")
+MonthlyUsageAttributionSupportedMetrics.ERROR_TRACKING_USAGE = MonthlyUsageAttributionSupportedMetrics("error_tracking_usage")
+MonthlyUsageAttributionSupportedMetrics.ERROR_TRACKING_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("error_tracking_percentage")
+MonthlyUsageAttributionSupportedMetrics.ESTIMATED_INDEXED_SPANS_USAGE = MonthlyUsageAttributionSupportedMetrics("estimated_indexed_spans_usage")
+MonthlyUsageAttributionSupportedMetrics.ESTIMATED_INDEXED_SPANS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("estimated_indexed_spans_percentage")
+MonthlyUsageAttributionSupportedMetrics.ESTIMATED_INGESTED_SPANS_USAGE = MonthlyUsageAttributionSupportedMetrics("estimated_ingested_spans_usage")
+MonthlyUsageAttributionSupportedMetrics.ESTIMATED_INGESTED_SPANS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("estimated_ingested_spans_percentage")
+MonthlyUsageAttributionSupportedMetrics.FARGATE_USAGE = MonthlyUsageAttributionSupportedMetrics("fargate_usage")
+MonthlyUsageAttributionSupportedMetrics.FARGATE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("fargate_percentage")
+MonthlyUsageAttributionSupportedMetrics.FLEX_LOGS_STARTER_USAGE = MonthlyUsageAttributionSupportedMetrics("flex_logs_starter_usage")
+MonthlyUsageAttributionSupportedMetrics.FLEX_LOGS_STARTER_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("flex_logs_starter_percentage")
+MonthlyUsageAttributionSupportedMetrics.FLEX_STORED_LOGS_USAGE = MonthlyUsageAttributionSupportedMetrics("flex_stored_logs_usage")
+MonthlyUsageAttributionSupportedMetrics.FLEX_STORED_LOGS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("flex_stored_logs_percentage")
+MonthlyUsageAttributionSupportedMetrics.FUNCTIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("functions_usage")
+MonthlyUsageAttributionSupportedMetrics.FUNCTIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("functions_percentage")
+MonthlyUsageAttributionSupportedMetrics.INCIDENT_MANAGEMENT_MONTHLY_ACTIVE_USERS_USAGE = MonthlyUsageAttributionSupportedMetrics("incident_management_monthly_active_users_usage")
+MonthlyUsageAttributionSupportedMetrics.INCIDENT_MANAGEMENT_MONTHLY_ACTIVE_USERS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("incident_management_monthly_active_users_percentage")
+MonthlyUsageAttributionSupportedMetrics.INFRA_HOST_USAGE = MonthlyUsageAttributionSupportedMetrics("infra_host_usage")
+MonthlyUsageAttributionSupportedMetrics.INFRA_HOST_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("infra_host_percentage")
+MonthlyUsageAttributionSupportedMetrics.INFRA_HOST_BASIC_USAGE = MonthlyUsageAttributionSupportedMetrics("infra_host_basic_usage")
+MonthlyUsageAttributionSupportedMetrics.INFRA_HOST_BASIC_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("infra_host_basic_percentage")
+MonthlyUsageAttributionSupportedMetrics.INVOCATIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("invocations_usage")
+MonthlyUsageAttributionSupportedMetrics.INVOCATIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("invocations_percentage")
+MonthlyUsageAttributionSupportedMetrics.LAMBDA_TRACED_INVOCATIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("lambda_traced_invocations_usage")
+MonthlyUsageAttributionSupportedMetrics.LAMBDA_TRACED_INVOCATIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("lambda_traced_invocations_percentage")
+MonthlyUsageAttributionSupportedMetrics.LLM_OBSERVABILITY_USAGE = MonthlyUsageAttributionSupportedMetrics("llm_observability_usage")
+MonthlyUsageAttributionSupportedMetrics.LLM_OBSERVABILITY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("llm_observability_percentage")
+MonthlyUsageAttributionSupportedMetrics.LLM_SPANS_USAGE = MonthlyUsageAttributionSupportedMetrics("llm_spans_usage")
+MonthlyUsageAttributionSupportedMetrics.LLM_SPANS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("llm_spans_percentage")
+MonthlyUsageAttributionSupportedMetrics.MOBILE_APP_TESTING_USAGE = MonthlyUsageAttributionSupportedMetrics("mobile_app_testing_percentage")
+MonthlyUsageAttributionSupportedMetrics.MOBILE_APP_TESTING_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("mobile_app_testing_usage")
+MonthlyUsageAttributionSupportedMetrics.NDM_NETFLOW_USAGE = MonthlyUsageAttributionSupportedMetrics("ndm_netflow_usage")
+MonthlyUsageAttributionSupportedMetrics.NDM_NETFLOW_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("ndm_netflow_percentage")
+MonthlyUsageAttributionSupportedMetrics.NETWORK_DEVICE_WIRELESS_USAGE = MonthlyUsageAttributionSupportedMetrics("network_device_wireless_usage")
+MonthlyUsageAttributionSupportedMetrics.NETWORK_DEVICE_WIRELESS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("network_device_wireless_percentage")
+MonthlyUsageAttributionSupportedMetrics.NPM_HOST_USAGE = MonthlyUsageAttributionSupportedMetrics("npm_host_usage")
+MonthlyUsageAttributionSupportedMetrics.NPM_HOST_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("npm_host_percentage")
+MonthlyUsageAttributionSupportedMetrics.OBS_PIPELINE_BYTES_USAGE = MonthlyUsageAttributionSupportedMetrics("obs_pipeline_bytes_usage")
+MonthlyUsageAttributionSupportedMetrics.OBS_PIPELINE_BYTES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("obs_pipeline_bytes_percentage")
+MonthlyUsageAttributionSupportedMetrics.OBS_PIPELINES_VCPU_USAGE = MonthlyUsageAttributionSupportedMetrics("obs_pipelines_vcpu_usage")
+MonthlyUsageAttributionSupportedMetrics.OBS_PIPELINES_VCPU_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("obs_pipelines_vcpu_percentage")
+MonthlyUsageAttributionSupportedMetrics.ONLINE_ARCHIVE_USAGE = MonthlyUsageAttributionSupportedMetrics("online_archive_usage")
+MonthlyUsageAttributionSupportedMetrics.ONLINE_ARCHIVE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("online_archive_percentage")
+MonthlyUsageAttributionSupportedMetrics.PRODUCT_ANALYTICS_SESSION_USAGE = MonthlyUsageAttributionSupportedMetrics("product_analytics_session_usage")
+MonthlyUsageAttributionSupportedMetrics.PRODUCT_ANALYTICS_SESSION_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("product_analytics_session_percentage")
+MonthlyUsageAttributionSupportedMetrics.PROFILED_CONTAINER_USAGE = MonthlyUsageAttributionSupportedMetrics("profiled_container_usage")
+MonthlyUsageAttributionSupportedMetrics.PROFILED_CONTAINER_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("profiled_container_percentage")
+MonthlyUsageAttributionSupportedMetrics.PROFILED_FARGATE_USAGE = MonthlyUsageAttributionSupportedMetrics("profiled_fargate_usage")
+MonthlyUsageAttributionSupportedMetrics.PROFILED_FARGATE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("profiled_fargate_percentage")
+MonthlyUsageAttributionSupportedMetrics.PROFILED_HOST_USAGE = MonthlyUsageAttributionSupportedMetrics("profiled_host_usage")
+MonthlyUsageAttributionSupportedMetrics.PROFILED_HOST_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("profiled_host_percentage")
+MonthlyUsageAttributionSupportedMetrics.PUBLISHED_APP_USAGE = MonthlyUsageAttributionSupportedMetrics("published_app_usage")
+MonthlyUsageAttributionSupportedMetrics.PUBLISHED_APP_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("published_app_percentage")
+MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_USAGE = MonthlyUsageAttributionSupportedMetrics("serverless_apps_usage")
+MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("serverless_apps_percentage")
+MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_APM_USAGE = MonthlyUsageAttributionSupportedMetrics("serverless_apps_apm_usage")
+MonthlyUsageAttributionSupportedMetrics.SERVERLESS_APPS_APM_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("serverless_apps_apm_percentage")
+MonthlyUsageAttributionSupportedMetrics.SNMP_USAGE = MonthlyUsageAttributionSupportedMetrics("snmp_usage")
+MonthlyUsageAttributionSupportedMetrics.SNMP_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("snmp_percentage")
+MonthlyUsageAttributionSupportedMetrics.UNIVERSAL_SERVICE_MONITORING_USAGE = MonthlyUsageAttributionSupportedMetrics("universal_service_monitoring_usage")
+MonthlyUsageAttributionSupportedMetrics.UNIVERSAL_SERVICE_MONITORING_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("universal_service_monitoring_percentage")
+MonthlyUsageAttributionSupportedMetrics.VULN_MANAGEMENT_HOSTS_USAGE = MonthlyUsageAttributionSupportedMetrics("vuln_management_hosts_usage")
+MonthlyUsageAttributionSupportedMetrics.VULN_MANAGEMENT_HOSTS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("vuln_management_hosts_percentage")
+MonthlyUsageAttributionSupportedMetrics.SDS_SCANNED_BYTES_USAGE = MonthlyUsageAttributionSupportedMetrics("sds_scanned_bytes_usage")
+MonthlyUsageAttributionSupportedMetrics.SDS_SCANNED_BYTES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("sds_scanned_bytes_percentage")
+MonthlyUsageAttributionSupportedMetrics.CI_TEST_INDEXED_SPANS_USAGE = MonthlyUsageAttributionSupportedMetrics("ci_test_indexed_spans_usage")
+MonthlyUsageAttributionSupportedMetrics.CI_TEST_INDEXED_SPANS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("ci_test_indexed_spans_percentage")
+MonthlyUsageAttributionSupportedMetrics.INGESTED_LOGS_BYTES_USAGE = MonthlyUsageAttributionSupportedMetrics("ingested_logs_bytes_usage")
+MonthlyUsageAttributionSupportedMetrics.INGESTED_LOGS_BYTES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("ingested_logs_bytes_percentage")
+MonthlyUsageAttributionSupportedMetrics.CI_PIPELINE_INDEXED_SPANS_USAGE = MonthlyUsageAttributionSupportedMetrics("ci_pipeline_indexed_spans_usage")
+MonthlyUsageAttributionSupportedMetrics.CI_PIPELINE_INDEXED_SPANS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("ci_pipeline_indexed_spans_percentage")
+MonthlyUsageAttributionSupportedMetrics.INDEXED_SPANS_USAGE = MonthlyUsageAttributionSupportedMetrics("indexed_spans_usage")
+MonthlyUsageAttributionSupportedMetrics.INDEXED_SPANS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("indexed_spans_percentage")
+MonthlyUsageAttributionSupportedMetrics.CUSTOM_EVENT_USAGE = MonthlyUsageAttributionSupportedMetrics("custom_event_usage")
+MonthlyUsageAttributionSupportedMetrics.CUSTOM_EVENT_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("custom_event_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_CUSTOM_RETENTION_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_custom_retention_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_CUSTOM_RETENTION_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_custom_retention_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_360DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_360day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_360DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_360day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_180DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_180day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_180DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_180day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_90DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_90day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_90DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_90day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_60DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_60day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_60DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_60day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_45DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_45day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_45DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_45day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_30DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_30day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_30DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_30day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_15DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_15day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_15DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_15day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_7DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_7day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_7DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_7day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_3DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_3day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_3DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_3day_percentage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_1DAY_USAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_1day_usage")
+MonthlyUsageAttributionSupportedMetrics.LOGS_INDEXED_1DAY_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("logs_indexed_1day_percentage")
+MonthlyUsageAttributionSupportedMetrics.RUM_INGESTED_USAGE = MonthlyUsageAttributionSupportedMetrics("rum_ingested_usage")
+MonthlyUsageAttributionSupportedMetrics.RUM_INGESTED_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("rum_ingested_percentage")
+MonthlyUsageAttributionSupportedMetrics.RUM_INVESTIGATE_USAGE = MonthlyUsageAttributionSupportedMetrics("rum_investigate_usage")
+MonthlyUsageAttributionSupportedMetrics.RUM_INVESTIGATE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("rum_investigate_percentage")
+MonthlyUsageAttributionSupportedMetrics.RUM_REPLAY_SESSIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("rum_replay_sessions_usage")
+MonthlyUsageAttributionSupportedMetrics.RUM_REPLAY_SESSIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("rum_replay_sessions_percentage")
+MonthlyUsageAttributionSupportedMetrics.RUM_SESSION_REPLAY_ADD_ON_USAGE = MonthlyUsageAttributionSupportedMetrics("rum_session_replay_add_on_usage")
+MonthlyUsageAttributionSupportedMetrics.RUM_SESSION_REPLAY_ADD_ON_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("rum_session_replay_add_on_percentage")
+MonthlyUsageAttributionSupportedMetrics.RUM_BROWSER_MOBILE_SESSIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("rum_browser_mobile_sessions_usage")
+MonthlyUsageAttributionSupportedMetrics.RUM_BROWSER_MOBILE_SESSIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("rum_browser_mobile_sessions_percentage")
+MonthlyUsageAttributionSupportedMetrics.INGESTED_SPANS_BYTES_USAGE = MonthlyUsageAttributionSupportedMetrics("ingested_spans_bytes_usage")
+MonthlyUsageAttributionSupportedMetrics.INGESTED_SPANS_BYTES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("ingested_spans_bytes_percentage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_12MO_RETENTION_USAGE = MonthlyUsageAttributionSupportedMetrics("siem_12mo_retention_usage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_12MO_RETENTION_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("siem_12mo_retention_percentage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_6MO_RETENTION_USAGE = MonthlyUsageAttributionSupportedMetrics("siem_6mo_retention_usage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_6MO_RETENTION_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("siem_6mo_retention_percentage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_ANALYZED_LOGS_ADD_ON_USAGE = MonthlyUsageAttributionSupportedMetrics("siem_analyzed_logs_add_on_usage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_ANALYZED_LOGS_ADD_ON_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("siem_analyzed_logs_add_on_percentage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_INGESTED_BYTES_USAGE = MonthlyUsageAttributionSupportedMetrics("siem_ingested_bytes_usage")
+MonthlyUsageAttributionSupportedMetrics.SIEM_INGESTED_BYTES_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("siem_ingested_bytes_percentage")
+MonthlyUsageAttributionSupportedMetrics.WORKFLOW_EXECUTIONS_USAGE = MonthlyUsageAttributionSupportedMetrics("workflow_executions_usage")
+MonthlyUsageAttributionSupportedMetrics.WORKFLOW_EXECUTIONS_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("workflow_executions_percentage")
+MonthlyUsageAttributionSupportedMetrics.SCA_FARGATE_USAGE = MonthlyUsageAttributionSupportedMetrics("sca_fargate_usage")
+MonthlyUsageAttributionSupportedMetrics.SCA_FARGATE_PERCENTAGE = MonthlyUsageAttributionSupportedMetrics("sca_fargate_percentage")
+MonthlyUsageAttributionSupportedMetrics.ALL = MonthlyUsageAttributionSupportedMetrics("*")
diff --git a/datadog_api_client/v1/model/monthly_usage_attribution_values.py b/datadog_api_client/v1/model/monthly_usage_attribution_values.py
new file mode 100644
index 0000000000..f177f6aa46
--- /dev/null
+++ b/datadog_api_client/v1/model/monthly_usage_attribution_values.py
@@ -0,0 +1,1229 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class MonthlyUsageAttributionValues(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "api_percentage": (float,),
+ "api_usage": (float,),
+ "apm_fargate_percentage": (float,),
+ "apm_fargate_usage": (float,),
+ "apm_host_percentage": (float,),
+ "apm_host_usage": (float,),
+ "apm_usm_percentage": (float,),
+ "apm_usm_usage": (float,),
+ "appsec_fargate_percentage": (float,),
+ "appsec_fargate_usage": (float,),
+ "appsec_percentage": (float,),
+ "appsec_usage": (float,),
+ "asm_serverless_traced_invocations_percentage": (float,),
+ "asm_serverless_traced_invocations_usage": (float,),
+ "bits_ai_investigations_percentage": (float,),
+ "bits_ai_investigations_usage": (float,),
+ "browser_percentage": (float,),
+ "browser_usage": (float,),
+ "ci_code_coverage_committers_percentage": (float,),
+ "ci_code_coverage_committers_usage": (float,),
+ "ci_pipeline_indexed_spans_percentage": (float,),
+ "ci_pipeline_indexed_spans_usage": (float,),
+ "ci_test_indexed_spans_percentage": (float,),
+ "ci_test_indexed_spans_usage": (float,),
+ "ci_visibility_itr_percentage": (float,),
+ "ci_visibility_itr_usage": (float,),
+ "cloud_siem_percentage": (float,),
+ "cloud_siem_usage": (float,),
+ "code_security_host_percentage": (float,),
+ "code_security_host_usage": (float,),
+ "container_excl_agent_percentage": (float,),
+ "container_excl_agent_usage": (float,),
+ "container_percentage": (float,),
+ "container_usage": (float,),
+ "cspm_containers_percentage": (float,),
+ "cspm_containers_usage": (float,),
+ "cspm_hosts_percentage": (float,),
+ "cspm_hosts_usage": (float,),
+ "custom_event_percentage": (float,),
+ "custom_event_usage": (float,),
+ "custom_ingested_timeseries_percentage": (float,),
+ "custom_ingested_timeseries_usage": (float,),
+ "custom_timeseries_percentage": (float,),
+ "custom_timeseries_usage": (float,),
+ "cws_containers_percentage": (float,),
+ "cws_containers_usage": (float,),
+ "cws_fargate_task_percentage": (float,),
+ "cws_fargate_task_usage": (float,),
+ "cws_hosts_percentage": (float,),
+ "cws_hosts_usage": (float,),
+ "data_jobs_monitoring_usage": (float,),
+ "data_stream_monitoring_usage": (float,),
+ "dbm_hosts_percentage": (float,),
+ "dbm_hosts_usage": (float,),
+ "dbm_queries_percentage": (float,),
+ "dbm_queries_usage": (float,),
+ "error_tracking_percentage": (float,),
+ "error_tracking_usage": (float,),
+ "estimated_indexed_spans_percentage": (float,),
+ "estimated_indexed_spans_usage": (float,),
+ "estimated_ingested_spans_percentage": (float,),
+ "estimated_ingested_spans_usage": (float,),
+ "fargate_percentage": (float,),
+ "fargate_usage": (float,),
+ "flex_logs_starter_percentage": (float,),
+ "flex_logs_starter_usage": (float,),
+ "flex_stored_logs_percentage": (float,),
+ "flex_stored_logs_usage": (float,),
+ "functions_percentage": (float,),
+ "functions_usage": (float,),
+ "incident_management_monthly_active_users_percentage": (float,),
+ "incident_management_monthly_active_users_usage": (float,),
+ "indexed_spans_percentage": (float,),
+ "indexed_spans_usage": (float,),
+ "infra_host_basic_percentage": (float,),
+ "infra_host_basic_usage": (float,),
+ "infra_host_percentage": (float,),
+ "infra_host_usage": (float,),
+ "ingested_logs_bytes_percentage": (float,),
+ "ingested_logs_bytes_usage": (float,),
+ "ingested_spans_bytes_percentage": (float,),
+ "ingested_spans_bytes_usage": (float,),
+ "invocations_percentage": (float,),
+ "invocations_usage": (float,),
+ "lambda_traced_invocations_percentage": (float,),
+ "lambda_traced_invocations_usage": (float,),
+ "llm_observability_percentage": (float,),
+ "llm_observability_usage": (float,),
+ "llm_spans_percentage": (float,),
+ "llm_spans_usage": (float,),
+ "logs_indexed_15day_percentage": (float,),
+ "logs_indexed_15day_usage": (float,),
+ "logs_indexed_180day_percentage": (float,),
+ "logs_indexed_180day_usage": (float,),
+ "logs_indexed_1day_percentage": (float,),
+ "logs_indexed_1day_usage": (float,),
+ "logs_indexed_30day_percentage": (float,),
+ "logs_indexed_30day_usage": (float,),
+ "logs_indexed_360day_percentage": (float,),
+ "logs_indexed_360day_usage": (float,),
+ "logs_indexed_3day_percentage": (float,),
+ "logs_indexed_3day_usage": (float,),
+ "logs_indexed_45day_percentage": (float,),
+ "logs_indexed_45day_usage": (float,),
+ "logs_indexed_60day_percentage": (float,),
+ "logs_indexed_60day_usage": (float,),
+ "logs_indexed_7day_percentage": (float,),
+ "logs_indexed_7day_usage": (float,),
+ "logs_indexed_90day_percentage": (float,),
+ "logs_indexed_90day_usage": (float,),
+ "logs_indexed_custom_retention_percentage": (float,),
+ "logs_indexed_custom_retention_usage": (float,),
+ "mobile_app_testing_percentage": (float,),
+ "mobile_app_testing_usage": (float,),
+ "ndm_netflow_percentage": (float,),
+ "ndm_netflow_usage": (float,),
+ "network_device_wireless_percentage": (float,),
+ "network_device_wireless_usage": (float,),
+ "npm_host_percentage": (float,),
+ "npm_host_usage": (float,),
+ "obs_pipeline_bytes_percentage": (float,),
+ "obs_pipeline_bytes_usage": (float,),
+ "obs_pipelines_vcpu_percentage": (float,),
+ "obs_pipelines_vcpu_usage": (float,),
+ "online_archive_percentage": (float,),
+ "online_archive_usage": (float,),
+ "product_analytics_session_percentage": (float,),
+ "product_analytics_session_usage": (float,),
+ "profiled_container_percentage": (float,),
+ "profiled_container_usage": (float,),
+ "profiled_fargate_percentage": (float,),
+ "profiled_fargate_usage": (float,),
+ "profiled_host_percentage": (float,),
+ "profiled_host_usage": (float,),
+ "published_app_percentage": (float,),
+ "published_app_usage": (float,),
+ "rum_browser_mobile_sessions_percentage": (float,),
+ "rum_browser_mobile_sessions_usage": (float,),
+ "rum_ingested_percentage": (float,),
+ "rum_ingested_usage": (float,),
+ "rum_investigate_percentage": (float,),
+ "rum_investigate_usage": (float,),
+ "rum_replay_sessions_percentage": (float,),
+ "rum_replay_sessions_usage": (float,),
+ "rum_session_replay_add_on_percentage": (float,),
+ "rum_session_replay_add_on_usage": (float,),
+ "sca_fargate_percentage": (float,),
+ "sca_fargate_usage": (float,),
+ "sds_scanned_bytes_percentage": (float,),
+ "sds_scanned_bytes_usage": (float,),
+ "serverless_apps_apm_percentage": (float,),
+ "serverless_apps_apm_usage": (float,),
+ "serverless_apps_percentage": (float,),
+ "serverless_apps_usage": (float,),
+ "siem_12mo_retention_percentage": (float,),
+ "siem_12mo_retention_usage": (float,),
+ "siem_6mo_retention_percentage": (float,),
+ "siem_6mo_retention_usage": (float,),
+ "siem_analyzed_logs_add_on_percentage": (float,),
+ "siem_analyzed_logs_add_on_usage": (float,),
+ "siem_ingested_bytes_percentage": (float,),
+ "siem_ingested_bytes_usage": (float,),
+ "snmp_percentage": (float,),
+ "snmp_usage": (float,),
+ "universal_service_monitoring_percentage": (float,),
+ "universal_service_monitoring_usage": (float,),
+ "vuln_management_hosts_percentage": (float,),
+ "vuln_management_hosts_usage": (float,),
+ "workflow_executions_percentage": (float,),
+ "workflow_executions_usage": (float,),
+ }
+ attribute_map = {
+ "api_percentage": "api_percentage",
+ "api_usage": "api_usage",
+ "apm_fargate_percentage": "apm_fargate_percentage",
+ "apm_fargate_usage": "apm_fargate_usage",
+ "apm_host_percentage": "apm_host_percentage",
+ "apm_host_usage": "apm_host_usage",
+ "apm_usm_percentage": "apm_usm_percentage",
+ "apm_usm_usage": "apm_usm_usage",
+ "appsec_fargate_percentage": "appsec_fargate_percentage",
+ "appsec_fargate_usage": "appsec_fargate_usage",
+ "appsec_percentage": "appsec_percentage",
+ "appsec_usage": "appsec_usage",
+ "asm_serverless_traced_invocations_percentage": "asm_serverless_traced_invocations_percentage",
+ "asm_serverless_traced_invocations_usage": "asm_serverless_traced_invocations_usage",
+ "bits_ai_investigations_percentage": "bits_ai_investigations_percentage",
+ "bits_ai_investigations_usage": "bits_ai_investigations_usage",
+ "browser_percentage": "browser_percentage",
+ "browser_usage": "browser_usage",
+ "ci_code_coverage_committers_percentage": "ci_code_coverage_committers_percentage",
+ "ci_code_coverage_committers_usage": "ci_code_coverage_committers_usage",
+ "ci_pipeline_indexed_spans_percentage": "ci_pipeline_indexed_spans_percentage",
+ "ci_pipeline_indexed_spans_usage": "ci_pipeline_indexed_spans_usage",
+ "ci_test_indexed_spans_percentage": "ci_test_indexed_spans_percentage",
+ "ci_test_indexed_spans_usage": "ci_test_indexed_spans_usage",
+ "ci_visibility_itr_percentage": "ci_visibility_itr_percentage",
+ "ci_visibility_itr_usage": "ci_visibility_itr_usage",
+ "cloud_siem_percentage": "cloud_siem_percentage",
+ "cloud_siem_usage": "cloud_siem_usage",
+ "code_security_host_percentage": "code_security_host_percentage",
+ "code_security_host_usage": "code_security_host_usage",
+ "container_excl_agent_percentage": "container_excl_agent_percentage",
+ "container_excl_agent_usage": "container_excl_agent_usage",
+ "container_percentage": "container_percentage",
+ "container_usage": "container_usage",
+ "cspm_containers_percentage": "cspm_containers_percentage",
+ "cspm_containers_usage": "cspm_containers_usage",
+ "cspm_hosts_percentage": "cspm_hosts_percentage",
+ "cspm_hosts_usage": "cspm_hosts_usage",
+ "custom_event_percentage": "custom_event_percentage",
+ "custom_event_usage": "custom_event_usage",
+ "custom_ingested_timeseries_percentage": "custom_ingested_timeseries_percentage",
+ "custom_ingested_timeseries_usage": "custom_ingested_timeseries_usage",
+ "custom_timeseries_percentage": "custom_timeseries_percentage",
+ "custom_timeseries_usage": "custom_timeseries_usage",
+ "cws_containers_percentage": "cws_containers_percentage",
+ "cws_containers_usage": "cws_containers_usage",
+ "cws_fargate_task_percentage": "cws_fargate_task_percentage",
+ "cws_fargate_task_usage": "cws_fargate_task_usage",
+ "cws_hosts_percentage": "cws_hosts_percentage",
+ "cws_hosts_usage": "cws_hosts_usage",
+ "data_jobs_monitoring_usage": "data_jobs_monitoring_usage",
+ "data_stream_monitoring_usage": "data_stream_monitoring_usage",
+ "dbm_hosts_percentage": "dbm_hosts_percentage",
+ "dbm_hosts_usage": "dbm_hosts_usage",
+ "dbm_queries_percentage": "dbm_queries_percentage",
+ "dbm_queries_usage": "dbm_queries_usage",
+ "error_tracking_percentage": "error_tracking_percentage",
+ "error_tracking_usage": "error_tracking_usage",
+ "estimated_indexed_spans_percentage": "estimated_indexed_spans_percentage",
+ "estimated_indexed_spans_usage": "estimated_indexed_spans_usage",
+ "estimated_ingested_spans_percentage": "estimated_ingested_spans_percentage",
+ "estimated_ingested_spans_usage": "estimated_ingested_spans_usage",
+ "fargate_percentage": "fargate_percentage",
+ "fargate_usage": "fargate_usage",
+ "flex_logs_starter_percentage": "flex_logs_starter_percentage",
+ "flex_logs_starter_usage": "flex_logs_starter_usage",
+ "flex_stored_logs_percentage": "flex_stored_logs_percentage",
+ "flex_stored_logs_usage": "flex_stored_logs_usage",
+ "functions_percentage": "functions_percentage",
+ "functions_usage": "functions_usage",
+ "incident_management_monthly_active_users_percentage": "incident_management_monthly_active_users_percentage",
+ "incident_management_monthly_active_users_usage": "incident_management_monthly_active_users_usage",
+ "indexed_spans_percentage": "indexed_spans_percentage",
+ "indexed_spans_usage": "indexed_spans_usage",
+ "infra_host_basic_percentage": "infra_host_basic_percentage",
+ "infra_host_basic_usage": "infra_host_basic_usage",
+ "infra_host_percentage": "infra_host_percentage",
+ "infra_host_usage": "infra_host_usage",
+ "ingested_logs_bytes_percentage": "ingested_logs_bytes_percentage",
+ "ingested_logs_bytes_usage": "ingested_logs_bytes_usage",
+ "ingested_spans_bytes_percentage": "ingested_spans_bytes_percentage",
+ "ingested_spans_bytes_usage": "ingested_spans_bytes_usage",
+ "invocations_percentage": "invocations_percentage",
+ "invocations_usage": "invocations_usage",
+ "lambda_traced_invocations_percentage": "lambda_traced_invocations_percentage",
+ "lambda_traced_invocations_usage": "lambda_traced_invocations_usage",
+ "llm_observability_percentage": "llm_observability_percentage",
+ "llm_observability_usage": "llm_observability_usage",
+ "llm_spans_percentage": "llm_spans_percentage",
+ "llm_spans_usage": "llm_spans_usage",
+ "logs_indexed_15day_percentage": "logs_indexed_15day_percentage",
+ "logs_indexed_15day_usage": "logs_indexed_15day_usage",
+ "logs_indexed_180day_percentage": "logs_indexed_180day_percentage",
+ "logs_indexed_180day_usage": "logs_indexed_180day_usage",
+ "logs_indexed_1day_percentage": "logs_indexed_1day_percentage",
+ "logs_indexed_1day_usage": "logs_indexed_1day_usage",
+ "logs_indexed_30day_percentage": "logs_indexed_30day_percentage",
+ "logs_indexed_30day_usage": "logs_indexed_30day_usage",
+ "logs_indexed_360day_percentage": "logs_indexed_360day_percentage",
+ "logs_indexed_360day_usage": "logs_indexed_360day_usage",
+ "logs_indexed_3day_percentage": "logs_indexed_3day_percentage",
+ "logs_indexed_3day_usage": "logs_indexed_3day_usage",
+ "logs_indexed_45day_percentage": "logs_indexed_45day_percentage",
+ "logs_indexed_45day_usage": "logs_indexed_45day_usage",
+ "logs_indexed_60day_percentage": "logs_indexed_60day_percentage",
+ "logs_indexed_60day_usage": "logs_indexed_60day_usage",
+ "logs_indexed_7day_percentage": "logs_indexed_7day_percentage",
+ "logs_indexed_7day_usage": "logs_indexed_7day_usage",
+ "logs_indexed_90day_percentage": "logs_indexed_90day_percentage",
+ "logs_indexed_90day_usage": "logs_indexed_90day_usage",
+ "logs_indexed_custom_retention_percentage": "logs_indexed_custom_retention_percentage",
+ "logs_indexed_custom_retention_usage": "logs_indexed_custom_retention_usage",
+ "mobile_app_testing_percentage": "mobile_app_testing_percentage",
+ "mobile_app_testing_usage": "mobile_app_testing_usage",
+ "ndm_netflow_percentage": "ndm_netflow_percentage",
+ "ndm_netflow_usage": "ndm_netflow_usage",
+ "network_device_wireless_percentage": "network_device_wireless_percentage",
+ "network_device_wireless_usage": "network_device_wireless_usage",
+ "npm_host_percentage": "npm_host_percentage",
+ "npm_host_usage": "npm_host_usage",
+ "obs_pipeline_bytes_percentage": "obs_pipeline_bytes_percentage",
+ "obs_pipeline_bytes_usage": "obs_pipeline_bytes_usage",
+ "obs_pipelines_vcpu_percentage": "obs_pipelines_vcpu_percentage",
+ "obs_pipelines_vcpu_usage": "obs_pipelines_vcpu_usage",
+ "online_archive_percentage": "online_archive_percentage",
+ "online_archive_usage": "online_archive_usage",
+ "product_analytics_session_percentage": "product_analytics_session_percentage",
+ "product_analytics_session_usage": "product_analytics_session_usage",
+ "profiled_container_percentage": "profiled_container_percentage",
+ "profiled_container_usage": "profiled_container_usage",
+ "profiled_fargate_percentage": "profiled_fargate_percentage",
+ "profiled_fargate_usage": "profiled_fargate_usage",
+ "profiled_host_percentage": "profiled_host_percentage",
+ "profiled_host_usage": "profiled_host_usage",
+ "published_app_percentage": "published_app_percentage",
+ "published_app_usage": "published_app_usage",
+ "rum_browser_mobile_sessions_percentage": "rum_browser_mobile_sessions_percentage",
+ "rum_browser_mobile_sessions_usage": "rum_browser_mobile_sessions_usage",
+ "rum_ingested_percentage": "rum_ingested_percentage",
+ "rum_ingested_usage": "rum_ingested_usage",
+ "rum_investigate_percentage": "rum_investigate_percentage",
+ "rum_investigate_usage": "rum_investigate_usage",
+ "rum_replay_sessions_percentage": "rum_replay_sessions_percentage",
+ "rum_replay_sessions_usage": "rum_replay_sessions_usage",
+ "rum_session_replay_add_on_percentage": "rum_session_replay_add_on_percentage",
+ "rum_session_replay_add_on_usage": "rum_session_replay_add_on_usage",
+ "sca_fargate_percentage": "sca_fargate_percentage",
+ "sca_fargate_usage": "sca_fargate_usage",
+ "sds_scanned_bytes_percentage": "sds_scanned_bytes_percentage",
+ "sds_scanned_bytes_usage": "sds_scanned_bytes_usage",
+ "serverless_apps_apm_percentage": "serverless_apps_apm_percentage",
+ "serverless_apps_apm_usage": "serverless_apps_apm_usage",
+ "serverless_apps_percentage": "serverless_apps_percentage",
+ "serverless_apps_usage": "serverless_apps_usage",
+ "siem_12mo_retention_percentage": "siem_12mo_retention_percentage",
+ "siem_12mo_retention_usage": "siem_12mo_retention_usage",
+ "siem_6mo_retention_percentage": "siem_6mo_retention_percentage",
+ "siem_6mo_retention_usage": "siem_6mo_retention_usage",
+ "siem_analyzed_logs_add_on_percentage": "siem_analyzed_logs_add_on_percentage",
+ "siem_analyzed_logs_add_on_usage": "siem_analyzed_logs_add_on_usage",
+ "siem_ingested_bytes_percentage": "siem_ingested_bytes_percentage",
+ "siem_ingested_bytes_usage": "siem_ingested_bytes_usage",
+ "snmp_percentage": "snmp_percentage",
+ "snmp_usage": "snmp_usage",
+ "universal_service_monitoring_percentage": "universal_service_monitoring_percentage",
+ "universal_service_monitoring_usage": "universal_service_monitoring_usage",
+ "vuln_management_hosts_percentage": "vuln_management_hosts_percentage",
+ "vuln_management_hosts_usage": "vuln_management_hosts_usage",
+ "workflow_executions_percentage": "workflow_executions_percentage",
+ "workflow_executions_usage": "workflow_executions_usage",
+ }
+
+ def __init__(self_, api_percentage: Union[float, UnsetType]=unset, api_usage: Union[float, UnsetType]=unset, apm_fargate_percentage: Union[float, UnsetType]=unset, apm_fargate_usage: Union[float, UnsetType]=unset, apm_host_percentage: Union[float, UnsetType]=unset, apm_host_usage: Union[float, UnsetType]=unset, apm_usm_percentage: Union[float, UnsetType]=unset, apm_usm_usage: Union[float, UnsetType]=unset, appsec_fargate_percentage: Union[float, UnsetType]=unset, appsec_fargate_usage: Union[float, UnsetType]=unset, appsec_percentage: Union[float, UnsetType]=unset, appsec_usage: Union[float, UnsetType]=unset, asm_serverless_traced_invocations_percentage: Union[float, UnsetType]=unset, asm_serverless_traced_invocations_usage: Union[float, UnsetType]=unset, bits_ai_investigations_percentage: Union[float, UnsetType]=unset, bits_ai_investigations_usage: Union[float, UnsetType]=unset, browser_percentage: Union[float, UnsetType]=unset, browser_usage: Union[float, UnsetType]=unset, ci_code_coverage_committers_percentage: Union[float, UnsetType]=unset, ci_code_coverage_committers_usage: Union[float, UnsetType]=unset, ci_pipeline_indexed_spans_percentage: Union[float, UnsetType]=unset, ci_pipeline_indexed_spans_usage: Union[float, UnsetType]=unset, ci_test_indexed_spans_percentage: Union[float, UnsetType]=unset, ci_test_indexed_spans_usage: Union[float, UnsetType]=unset, ci_visibility_itr_percentage: Union[float, UnsetType]=unset, ci_visibility_itr_usage: Union[float, UnsetType]=unset, cloud_siem_percentage: Union[float, UnsetType]=unset, cloud_siem_usage: Union[float, UnsetType]=unset, code_security_host_percentage: Union[float, UnsetType]=unset, code_security_host_usage: Union[float, UnsetType]=unset, container_excl_agent_percentage: Union[float, UnsetType]=unset, container_excl_agent_usage: Union[float, UnsetType]=unset, container_percentage: Union[float, UnsetType]=unset, container_usage: Union[float, UnsetType]=unset, cspm_containers_percentage: Union[float, UnsetType]=unset, cspm_containers_usage: Union[float, UnsetType]=unset, cspm_hosts_percentage: Union[float, UnsetType]=unset, cspm_hosts_usage: Union[float, UnsetType]=unset, custom_event_percentage: Union[float, UnsetType]=unset, custom_event_usage: Union[float, UnsetType]=unset, custom_ingested_timeseries_percentage: Union[float, UnsetType]=unset, custom_ingested_timeseries_usage: Union[float, UnsetType]=unset, custom_timeseries_percentage: Union[float, UnsetType]=unset, custom_timeseries_usage: Union[float, UnsetType]=unset, cws_containers_percentage: Union[float, UnsetType]=unset, cws_containers_usage: Union[float, UnsetType]=unset, cws_fargate_task_percentage: Union[float, UnsetType]=unset, cws_fargate_task_usage: Union[float, UnsetType]=unset, cws_hosts_percentage: Union[float, UnsetType]=unset, cws_hosts_usage: Union[float, UnsetType]=unset, data_jobs_monitoring_usage: Union[float, UnsetType]=unset, data_stream_monitoring_usage: Union[float, UnsetType]=unset, dbm_hosts_percentage: Union[float, UnsetType]=unset, dbm_hosts_usage: Union[float, UnsetType]=unset, dbm_queries_percentage: Union[float, UnsetType]=unset, dbm_queries_usage: Union[float, UnsetType]=unset, error_tracking_percentage: Union[float, UnsetType]=unset, error_tracking_usage: Union[float, UnsetType]=unset, estimated_indexed_spans_percentage: Union[float, UnsetType]=unset, estimated_indexed_spans_usage: Union[float, UnsetType]=unset, estimated_ingested_spans_percentage: Union[float, UnsetType]=unset, estimated_ingested_spans_usage: Union[float, UnsetType]=unset, fargate_percentage: Union[float, UnsetType]=unset, fargate_usage: Union[float, UnsetType]=unset, flex_logs_starter_percentage: Union[float, UnsetType]=unset, flex_logs_starter_usage: Union[float, UnsetType]=unset, flex_stored_logs_percentage: Union[float, UnsetType]=unset, flex_stored_logs_usage: Union[float, UnsetType]=unset, functions_percentage: Union[float, UnsetType]=unset, functions_usage: Union[float, UnsetType]=unset, incident_management_monthly_active_users_percentage: Union[float, UnsetType]=unset, incident_management_monthly_active_users_usage: Union[float, UnsetType]=unset, indexed_spans_percentage: Union[float, UnsetType]=unset, indexed_spans_usage: Union[float, UnsetType]=unset, infra_host_basic_percentage: Union[float, UnsetType]=unset, infra_host_basic_usage: Union[float, UnsetType]=unset, infra_host_percentage: Union[float, UnsetType]=unset, infra_host_usage: Union[float, UnsetType]=unset, ingested_logs_bytes_percentage: Union[float, UnsetType]=unset, ingested_logs_bytes_usage: Union[float, UnsetType]=unset, ingested_spans_bytes_percentage: Union[float, UnsetType]=unset, ingested_spans_bytes_usage: Union[float, UnsetType]=unset, invocations_percentage: Union[float, UnsetType]=unset, invocations_usage: Union[float, UnsetType]=unset, lambda_traced_invocations_percentage: Union[float, UnsetType]=unset, lambda_traced_invocations_usage: Union[float, UnsetType]=unset, llm_observability_percentage: Union[float, UnsetType]=unset, llm_observability_usage: Union[float, UnsetType]=unset, llm_spans_percentage: Union[float, UnsetType]=unset, llm_spans_usage: Union[float, UnsetType]=unset, logs_indexed_15day_percentage: Union[float, UnsetType]=unset, logs_indexed_15day_usage: Union[float, UnsetType]=unset, logs_indexed_180day_percentage: Union[float, UnsetType]=unset, logs_indexed_180day_usage: Union[float, UnsetType]=unset, logs_indexed_1day_percentage: Union[float, UnsetType]=unset, logs_indexed_1day_usage: Union[float, UnsetType]=unset, logs_indexed_30day_percentage: Union[float, UnsetType]=unset, logs_indexed_30day_usage: Union[float, UnsetType]=unset, logs_indexed_360day_percentage: Union[float, UnsetType]=unset, logs_indexed_360day_usage: Union[float, UnsetType]=unset, logs_indexed_3day_percentage: Union[float, UnsetType]=unset, logs_indexed_3day_usage: Union[float, UnsetType]=unset, logs_indexed_45day_percentage: Union[float, UnsetType]=unset, logs_indexed_45day_usage: Union[float, UnsetType]=unset, logs_indexed_60day_percentage: Union[float, UnsetType]=unset, logs_indexed_60day_usage: Union[float, UnsetType]=unset, logs_indexed_7day_percentage: Union[float, UnsetType]=unset, logs_indexed_7day_usage: Union[float, UnsetType]=unset, logs_indexed_90day_percentage: Union[float, UnsetType]=unset, logs_indexed_90day_usage: Union[float, UnsetType]=unset, logs_indexed_custom_retention_percentage: Union[float, UnsetType]=unset, logs_indexed_custom_retention_usage: Union[float, UnsetType]=unset, mobile_app_testing_percentage: Union[float, UnsetType]=unset, mobile_app_testing_usage: Union[float, UnsetType]=unset, ndm_netflow_percentage: Union[float, UnsetType]=unset, ndm_netflow_usage: Union[float, UnsetType]=unset, network_device_wireless_percentage: Union[float, UnsetType]=unset, network_device_wireless_usage: Union[float, UnsetType]=unset, npm_host_percentage: Union[float, UnsetType]=unset, npm_host_usage: Union[float, UnsetType]=unset, obs_pipeline_bytes_percentage: Union[float, UnsetType]=unset, obs_pipeline_bytes_usage: Union[float, UnsetType]=unset, obs_pipelines_vcpu_percentage: Union[float, UnsetType]=unset, obs_pipelines_vcpu_usage: Union[float, UnsetType]=unset, online_archive_percentage: Union[float, UnsetType]=unset, online_archive_usage: Union[float, UnsetType]=unset, product_analytics_session_percentage: Union[float, UnsetType]=unset, product_analytics_session_usage: Union[float, UnsetType]=unset, profiled_container_percentage: Union[float, UnsetType]=unset, profiled_container_usage: Union[float, UnsetType]=unset, profiled_fargate_percentage: Union[float, UnsetType]=unset, profiled_fargate_usage: Union[float, UnsetType]=unset, profiled_host_percentage: Union[float, UnsetType]=unset, profiled_host_usage: Union[float, UnsetType]=unset, published_app_percentage: Union[float, UnsetType]=unset, published_app_usage: Union[float, UnsetType]=unset, rum_browser_mobile_sessions_percentage: Union[float, UnsetType]=unset, rum_browser_mobile_sessions_usage: Union[float, UnsetType]=unset, rum_ingested_percentage: Union[float, UnsetType]=unset, rum_ingested_usage: Union[float, UnsetType]=unset, rum_investigate_percentage: Union[float, UnsetType]=unset, rum_investigate_usage: Union[float, UnsetType]=unset, rum_replay_sessions_percentage: Union[float, UnsetType]=unset, rum_replay_sessions_usage: Union[float, UnsetType]=unset, rum_session_replay_add_on_percentage: Union[float, UnsetType]=unset, rum_session_replay_add_on_usage: Union[float, UnsetType]=unset, sca_fargate_percentage: Union[float, UnsetType]=unset, sca_fargate_usage: Union[float, UnsetType]=unset, sds_scanned_bytes_percentage: Union[float, UnsetType]=unset, sds_scanned_bytes_usage: Union[float, UnsetType]=unset, serverless_apps_apm_percentage: Union[float, UnsetType]=unset, serverless_apps_apm_usage: Union[float, UnsetType]=unset, serverless_apps_percentage: Union[float, UnsetType]=unset, serverless_apps_usage: Union[float, UnsetType]=unset, siem_12mo_retention_percentage: Union[float, UnsetType]=unset, siem_12mo_retention_usage: Union[float, UnsetType]=unset, siem_6mo_retention_percentage: Union[float, UnsetType]=unset, siem_6mo_retention_usage: Union[float, UnsetType]=unset, siem_analyzed_logs_add_on_percentage: Union[float, UnsetType]=unset, siem_analyzed_logs_add_on_usage: Union[float, UnsetType]=unset, siem_ingested_bytes_percentage: Union[float, UnsetType]=unset, siem_ingested_bytes_usage: Union[float, UnsetType]=unset, snmp_percentage: Union[float, UnsetType]=unset, snmp_usage: Union[float, UnsetType]=unset, universal_service_monitoring_percentage: Union[float, UnsetType]=unset, universal_service_monitoring_usage: Union[float, UnsetType]=unset, vuln_management_hosts_percentage: Union[float, UnsetType]=unset, vuln_management_hosts_usage: Union[float, UnsetType]=unset, workflow_executions_percentage: Union[float, UnsetType]=unset, workflow_executions_usage: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Fields in Usage Summary by tag(s).
+
+ :param api_percentage: The percentage of synthetic API test usage by tag(s).
+ :type api_percentage: float, optional
+
+ :param api_usage: The synthetic API test usage by tag(s).
+ :type api_usage: float, optional
+
+ :param apm_fargate_percentage: The percentage of APM ECS Fargate task usage by tag(s).
+ :type apm_fargate_percentage: float, optional
+
+ :param apm_fargate_usage: The APM ECS Fargate task usage by tag(s).
+ :type apm_fargate_usage: float, optional
+
+ :param apm_host_percentage: The percentage of APM host usage by tag(s).
+ :type apm_host_percentage: float, optional
+
+ :param apm_host_usage: The APM host usage by tag(s).
+ :type apm_host_usage: float, optional
+
+ :param apm_usm_percentage: The percentage of APM and Universal Service Monitoring host usage by tag(s).
+ :type apm_usm_percentage: float, optional
+
+ :param apm_usm_usage: The APM and Universal Service Monitoring host usage by tag(s).
+ :type apm_usm_usage: float, optional
+
+ :param appsec_fargate_percentage: The percentage of Application Security Monitoring ECS Fargate task usage by tag(s).
+ :type appsec_fargate_percentage: float, optional
+
+ :param appsec_fargate_usage: The Application Security Monitoring ECS Fargate task usage by tag(s).
+ :type appsec_fargate_usage: float, optional
+
+ :param appsec_percentage: The percentage of Application Security Monitoring host usage by tag(s).
+ :type appsec_percentage: float, optional
+
+ :param appsec_usage: The Application Security Monitoring host usage by tag(s).
+ :type appsec_usage: float, optional
+
+ :param asm_serverless_traced_invocations_percentage: The percentage of Application Security Monitoring Serverless traced invocations usage by tag(s).
+ :type asm_serverless_traced_invocations_percentage: float, optional
+
+ :param asm_serverless_traced_invocations_usage: The Application Security Monitoring Serverless traced invocations usage by tag(s).
+ :type asm_serverless_traced_invocations_usage: float, optional
+
+ :param bits_ai_investigations_percentage: The percentage of Bits AI ``SRE`` investigation usage by tag(s).
+ :type bits_ai_investigations_percentage: float, optional
+
+ :param bits_ai_investigations_usage: The Bits AI ``SRE`` investigation usage by tag(s).
+ :type bits_ai_investigations_usage: float, optional
+
+ :param browser_percentage: The percentage of synthetic browser test usage by tag(s).
+ :type browser_percentage: float, optional
+
+ :param browser_usage: The synthetic browser test usage by tag(s).
+ :type browser_usage: float, optional
+
+ :param ci_code_coverage_committers_percentage: The percentage of Code Coverage committers usage by tag(s).
+ :type ci_code_coverage_committers_percentage: float, optional
+
+ :param ci_code_coverage_committers_usage: The total Code Coverage committers usage by tag(s).
+ :type ci_code_coverage_committers_usage: float, optional
+
+ :param ci_pipeline_indexed_spans_percentage: The percentage of CI Pipeline Indexed Spans usage by tag(s).
+ :type ci_pipeline_indexed_spans_percentage: float, optional
+
+ :param ci_pipeline_indexed_spans_usage: The total CI Pipeline Indexed Spans usage by tag(s).
+ :type ci_pipeline_indexed_spans_usage: float, optional
+
+ :param ci_test_indexed_spans_percentage: The percentage of CI Test Indexed Spans usage by tag(s).
+ :type ci_test_indexed_spans_percentage: float, optional
+
+ :param ci_test_indexed_spans_usage: The total CI Test Indexed Spans usage by tag(s).
+ :type ci_test_indexed_spans_usage: float, optional
+
+ :param ci_visibility_itr_percentage: The percentage of Git committers for Intelligent Test Runner usage by tag(s).
+ :type ci_visibility_itr_percentage: float, optional
+
+ :param ci_visibility_itr_usage: The Git committers for Intelligent Test Runner usage by tag(s).
+ :type ci_visibility_itr_usage: float, optional
+
+ :param cloud_siem_percentage: The percentage of Cloud Security Information and Event Management usage by tag(s).
+ :type cloud_siem_percentage: float, optional
+
+ :param cloud_siem_usage: The Cloud Security Information and Event Management usage by tag(s).
+ :type cloud_siem_usage: float, optional
+
+ :param code_security_host_percentage: The percentage of Code Security host usage by tags.
+ :type code_security_host_percentage: float, optional
+
+ :param code_security_host_usage: The Code Security host usage by tags.
+ :type code_security_host_usage: float, optional
+
+ :param container_excl_agent_percentage: The percentage of container usage without the Datadog Agent by tag(s).
+ :type container_excl_agent_percentage: float, optional
+
+ :param container_excl_agent_usage: The container usage without the Datadog Agent by tag(s).
+ :type container_excl_agent_usage: float, optional
+
+ :param container_percentage: The percentage of container usage by tag(s).
+ :type container_percentage: float, optional
+
+ :param container_usage: The container usage by tag(s).
+ :type container_usage: float, optional
+
+ :param cspm_containers_percentage: The percentage of Cloud Security Management Pro container usage by tag(s).
+ :type cspm_containers_percentage: float, optional
+
+ :param cspm_containers_usage: The Cloud Security Management Pro container usage by tag(s).
+ :type cspm_containers_usage: float, optional
+
+ :param cspm_hosts_percentage: The percentage of Cloud Security Management Pro host usage by tag(s).
+ :type cspm_hosts_percentage: float, optional
+
+ :param cspm_hosts_usage: The Cloud Security Management Pro host usage by tag(s).
+ :type cspm_hosts_usage: float, optional
+
+ :param custom_event_percentage: The percentage of Custom Events usage by tag(s).
+ :type custom_event_percentage: float, optional
+
+ :param custom_event_usage: The total Custom Events usage by tag(s).
+ :type custom_event_usage: float, optional
+
+ :param custom_ingested_timeseries_percentage: The percentage of ingested custom metrics usage by tag(s).
+ :type custom_ingested_timeseries_percentage: float, optional
+
+ :param custom_ingested_timeseries_usage: The ingested custom metrics usage by tag(s).
+ :type custom_ingested_timeseries_usage: float, optional
+
+ :param custom_timeseries_percentage: The percentage of indexed custom metrics usage by tag(s).
+ :type custom_timeseries_percentage: float, optional
+
+ :param custom_timeseries_usage: The indexed custom metrics usage by tag(s).
+ :type custom_timeseries_usage: float, optional
+
+ :param cws_containers_percentage: The percentage of Cloud Workload Security container usage by tag(s).
+ :type cws_containers_percentage: float, optional
+
+ :param cws_containers_usage: The Cloud Workload Security container usage by tag(s).
+ :type cws_containers_usage: float, optional
+
+ :param cws_fargate_task_percentage: The percentage of Cloud Workload Security Fargate task usage by tag(s).
+ :type cws_fargate_task_percentage: float, optional
+
+ :param cws_fargate_task_usage: The Cloud Workload Security Fargate task usage by tag(s).
+ :type cws_fargate_task_usage: float, optional
+
+ :param cws_hosts_percentage: The percentage of Cloud Workload Security host usage by tag(s).
+ :type cws_hosts_percentage: float, optional
+
+ :param cws_hosts_usage: The Cloud Workload Security host usage by tag(s).
+ :type cws_hosts_usage: float, optional
+
+ :param data_jobs_monitoring_usage: The Data Jobs Monitoring usage by tag(s).
+ :type data_jobs_monitoring_usage: float, optional
+
+ :param data_stream_monitoring_usage: The Data Stream Monitoring usage by tag(s).
+ :type data_stream_monitoring_usage: float, optional
+
+ :param dbm_hosts_percentage: The percentage of Database Monitoring host usage by tag(s).
+ :type dbm_hosts_percentage: float, optional
+
+ :param dbm_hosts_usage: The Database Monitoring host usage by tag(s).
+ :type dbm_hosts_usage: float, optional
+
+ :param dbm_queries_percentage: The percentage of Database Monitoring queries usage by tag(s).
+ :type dbm_queries_percentage: float, optional
+
+ :param dbm_queries_usage: The Database Monitoring queries usage by tag(s).
+ :type dbm_queries_usage: float, optional
+
+ :param error_tracking_percentage: The percentage of error tracking events usage by tag(s).
+ :type error_tracking_percentage: float, optional
+
+ :param error_tracking_usage: The error tracking events usage by tag(s).
+ :type error_tracking_usage: float, optional
+
+ :param estimated_indexed_spans_percentage: The percentage of estimated indexed spans usage by tag(s).
+ :type estimated_indexed_spans_percentage: float, optional
+
+ :param estimated_indexed_spans_usage: The estimated indexed spans usage by tag(s).
+ :type estimated_indexed_spans_usage: float, optional
+
+ :param estimated_ingested_spans_percentage: The percentage of estimated ingested spans usage by tag(s).
+ :type estimated_ingested_spans_percentage: float, optional
+
+ :param estimated_ingested_spans_usage: The estimated ingested spans usage by tag(s).
+ :type estimated_ingested_spans_usage: float, optional
+
+ :param fargate_percentage: The percentage of Fargate usage by tags.
+ :type fargate_percentage: float, optional
+
+ :param fargate_usage: The Fargate usage by tags.
+ :type fargate_usage: float, optional
+
+ :param flex_logs_starter_percentage: The percentage of Flex Logs Starter usage by tags.
+ :type flex_logs_starter_percentage: float, optional
+
+ :param flex_logs_starter_usage: The Flex Logs Starter usage by tags.
+ :type flex_logs_starter_usage: float, optional
+
+ :param flex_stored_logs_percentage: The percentage of Flex Stored Logs usage by tags.
+ :type flex_stored_logs_percentage: float, optional
+
+ :param flex_stored_logs_usage: The Flex Stored Logs usage by tags.
+ :type flex_stored_logs_usage: float, optional
+
+ :param functions_percentage: The percentage of Lambda function usage by tag(s).
+ :type functions_percentage: float, optional
+
+ :param functions_usage: The Lambda function usage by tag(s).
+ :type functions_usage: float, optional
+
+ :param incident_management_monthly_active_users_percentage: The percentage of Incident Management monthly active users usage by tag(s).
+ :type incident_management_monthly_active_users_percentage: float, optional
+
+ :param incident_management_monthly_active_users_usage: The Incident Management monthly active users usage by tag(s).
+ :type incident_management_monthly_active_users_usage: float, optional
+
+ :param indexed_spans_percentage: The percentage of APM Indexed Spans usage by tag(s).
+ :type indexed_spans_percentage: float, optional
+
+ :param indexed_spans_usage: The total APM Indexed Spans usage by tag(s).
+ :type indexed_spans_usage: float, optional
+
+ :param infra_host_basic_percentage: The percentage of infrastructure host Basic tier usage by tag(s).
+ :type infra_host_basic_percentage: float, optional
+
+ :param infra_host_basic_usage: The infrastructure host Basic tier usage by tag(s).
+ :type infra_host_basic_usage: float, optional
+
+ :param infra_host_percentage: The percentage of infrastructure host usage by tag(s).
+ :type infra_host_percentage: float, optional
+
+ :param infra_host_usage: The infrastructure host usage by tag(s).
+ :type infra_host_usage: float, optional
+
+ :param ingested_logs_bytes_percentage: The percentage of Ingested Logs usage by tag(s).
+ :type ingested_logs_bytes_percentage: float, optional
+
+ :param ingested_logs_bytes_usage: The total Ingested Logs usage by tag(s).
+ :type ingested_logs_bytes_usage: float, optional
+
+ :param ingested_spans_bytes_percentage: The percentage of APM Ingested Spans usage by tag(s).
+ :type ingested_spans_bytes_percentage: float, optional
+
+ :param ingested_spans_bytes_usage: The total APM Ingested Spans usage by tag(s).
+ :type ingested_spans_bytes_usage: float, optional
+
+ :param invocations_percentage: The percentage of Lambda invocation usage by tag(s).
+ :type invocations_percentage: float, optional
+
+ :param invocations_usage: The Lambda invocation usage by tag(s).
+ :type invocations_usage: float, optional
+
+ :param lambda_traced_invocations_percentage: The percentage of Serverless APM usage by tag(s).
+ :type lambda_traced_invocations_percentage: float, optional
+
+ :param lambda_traced_invocations_usage: The Serverless APM usage by tag(s).
+ :type lambda_traced_invocations_usage: float, optional
+
+ :param llm_observability_percentage: The percentage of LLM Observability usage by tag(s).
+ :type llm_observability_percentage: float, optional
+
+ :param llm_observability_usage: The LLM Observability usage by tag(s).
+ :type llm_observability_usage: float, optional
+
+ :param llm_spans_percentage: The percentage of LLM Spans usage by tag(s).
+ :type llm_spans_percentage: float, optional
+
+ :param llm_spans_usage: The LLM Spans usage by tag(s).
+ :type llm_spans_usage: float, optional
+
+ :param logs_indexed_15day_percentage: The percentage of Indexed Logs (15-day Retention) usage by tag(s).
+ :type logs_indexed_15day_percentage: float, optional
+
+ :param logs_indexed_15day_usage: The total Indexed Logs (15-day Retention) usage by tag(s).
+ :type logs_indexed_15day_usage: float, optional
+
+ :param logs_indexed_180day_percentage: The percentage of Indexed Logs (180-day Retention) usage by tag(s).
+ :type logs_indexed_180day_percentage: float, optional
+
+ :param logs_indexed_180day_usage: The total Indexed Logs (180-day Retention) usage by tag(s).
+ :type logs_indexed_180day_usage: float, optional
+
+ :param logs_indexed_1day_percentage: The percentage of Indexed Logs (1-day Retention) usage by tag(s).
+ :type logs_indexed_1day_percentage: float, optional
+
+ :param logs_indexed_1day_usage: The total Indexed Logs (1-day Retention) usage by tag(s).
+ :type logs_indexed_1day_usage: float, optional
+
+ :param logs_indexed_30day_percentage: The percentage of Indexed Logs (30-day Retention) usage by tag(s).
+ :type logs_indexed_30day_percentage: float, optional
+
+ :param logs_indexed_30day_usage: The total Indexed Logs (30-day Retention) usage by tag(s).
+ :type logs_indexed_30day_usage: float, optional
+
+ :param logs_indexed_360day_percentage: The percentage of Indexed Logs (360-day Retention) usage by tag(s).
+ :type logs_indexed_360day_percentage: float, optional
+
+ :param logs_indexed_360day_usage: The total Indexed Logs (360-day Retention) usage by tag(s).
+ :type logs_indexed_360day_usage: float, optional
+
+ :param logs_indexed_3day_percentage: The percentage of Indexed Logs (3-day Retention) usage by tag(s).
+ :type logs_indexed_3day_percentage: float, optional
+
+ :param logs_indexed_3day_usage: The total Indexed Logs (3-day Retention) usage by tag(s).
+ :type logs_indexed_3day_usage: float, optional
+
+ :param logs_indexed_45day_percentage: The percentage of Indexed Logs (45-day Retention) usage by tag(s).
+ :type logs_indexed_45day_percentage: float, optional
+
+ :param logs_indexed_45day_usage: The total Indexed Logs (45-day Retention) usage by tag(s).
+ :type logs_indexed_45day_usage: float, optional
+
+ :param logs_indexed_60day_percentage: The percentage of Indexed Logs (60-day Retention) usage by tag(s).
+ :type logs_indexed_60day_percentage: float, optional
+
+ :param logs_indexed_60day_usage: The total Indexed Logs (60-day Retention) usage by tag(s).
+ :type logs_indexed_60day_usage: float, optional
+
+ :param logs_indexed_7day_percentage: The percentage of Indexed Logs (7-day Retention) usage by tag(s).
+ :type logs_indexed_7day_percentage: float, optional
+
+ :param logs_indexed_7day_usage: The total Indexed Logs (7-day Retention) usage by tag(s).
+ :type logs_indexed_7day_usage: float, optional
+
+ :param logs_indexed_90day_percentage: The percentage of Indexed Logs (90-day Retention) usage by tag(s).
+ :type logs_indexed_90day_percentage: float, optional
+
+ :param logs_indexed_90day_usage: The total Indexed Logs (90-day Retention) usage by tag(s).
+ :type logs_indexed_90day_usage: float, optional
+
+ :param logs_indexed_custom_retention_percentage: The percentage of Indexed Logs (Custom Retention) usage by tag(s).
+ :type logs_indexed_custom_retention_percentage: float, optional
+
+ :param logs_indexed_custom_retention_usage: The total Indexed Logs (Custom Retention) usage by tag(s).
+ :type logs_indexed_custom_retention_usage: float, optional
+
+ :param mobile_app_testing_percentage: The percentage of Synthetic mobile application test usage by tag(s).
+ :type mobile_app_testing_percentage: float, optional
+
+ :param mobile_app_testing_usage: The Synthetic mobile application test usage by tag(s).
+ :type mobile_app_testing_usage: float, optional
+
+ :param ndm_netflow_percentage: The percentage of Network Device Monitoring NetFlow usage by tag(s).
+ :type ndm_netflow_percentage: float, optional
+
+ :param ndm_netflow_usage: The Network Device Monitoring NetFlow usage by tag(s).
+ :type ndm_netflow_usage: float, optional
+
+ :param network_device_wireless_percentage: The percentage of network device wireless usage by tag(s).
+ :type network_device_wireless_percentage: float, optional
+
+ :param network_device_wireless_usage: The network device wireless usage by tag(s).
+ :type network_device_wireless_usage: float, optional
+
+ :param npm_host_percentage: The percentage of network host usage by tag(s).
+ :type npm_host_percentage: float, optional
+
+ :param npm_host_usage: The network host usage by tag(s).
+ :type npm_host_usage: float, optional
+
+ :param obs_pipeline_bytes_percentage: The percentage of observability pipeline bytes usage by tag(s).
+ :type obs_pipeline_bytes_percentage: float, optional
+
+ :param obs_pipeline_bytes_usage: The observability pipeline bytes usage by tag(s).
+ :type obs_pipeline_bytes_usage: float, optional
+
+ :param obs_pipelines_vcpu_percentage: The percentage of observability pipeline per core usage by tag(s).
+ :type obs_pipelines_vcpu_percentage: float, optional
+
+ :param obs_pipelines_vcpu_usage: The observability pipeline per core usage by tag(s).
+ :type obs_pipelines_vcpu_usage: float, optional
+
+ :param online_archive_percentage: The percentage of online archive usage by tag(s).
+ :type online_archive_percentage: float, optional
+
+ :param online_archive_usage: The online archive usage by tag(s).
+ :type online_archive_usage: float, optional
+
+ :param product_analytics_session_percentage: The percentage of Product Analytics session usage by tag(s).
+ :type product_analytics_session_percentage: float, optional
+
+ :param product_analytics_session_usage: The Product Analytics session usage by tag(s).
+ :type product_analytics_session_usage: float, optional
+
+ :param profiled_container_percentage: The percentage of profiled container usage by tag(s).
+ :type profiled_container_percentage: float, optional
+
+ :param profiled_container_usage: The profiled container usage by tag(s).
+ :type profiled_container_usage: float, optional
+
+ :param profiled_fargate_percentage: The percentage of profiled Fargate task usage by tag(s).
+ :type profiled_fargate_percentage: float, optional
+
+ :param profiled_fargate_usage: The profiled Fargate task usage by tag(s).
+ :type profiled_fargate_usage: float, optional
+
+ :param profiled_host_percentage: The percentage of profiled hosts usage by tag(s).
+ :type profiled_host_percentage: float, optional
+
+ :param profiled_host_usage: The profiled hosts usage by tag(s).
+ :type profiled_host_usage: float, optional
+
+ :param published_app_percentage: The percentage of published application usage by tag(s).
+ :type published_app_percentage: float, optional
+
+ :param published_app_usage: The published application usage by tag(s).
+ :type published_app_usage: float, optional
+
+ :param rum_browser_mobile_sessions_percentage: The percentage of RUM Browser and Mobile usage by tag(s).
+ :type rum_browser_mobile_sessions_percentage: float, optional
+
+ :param rum_browser_mobile_sessions_usage: The total RUM Browser and Mobile usage by tag(s).
+ :type rum_browser_mobile_sessions_usage: float, optional
+
+ :param rum_ingested_percentage: The percentage of RUM Ingested usage by tag(s).
+ :type rum_ingested_percentage: float, optional
+
+ :param rum_ingested_usage: The total RUM Ingested usage by tag(s).
+ :type rum_ingested_usage: float, optional
+
+ :param rum_investigate_percentage: The percentage of RUM Investigate usage by tag(s).
+ :type rum_investigate_percentage: float, optional
+
+ :param rum_investigate_usage: The total RUM Investigate usage by tag(s).
+ :type rum_investigate_usage: float, optional
+
+ :param rum_replay_sessions_percentage: The percentage of RUM Session Replay usage by tag(s).
+ :type rum_replay_sessions_percentage: float, optional
+
+ :param rum_replay_sessions_usage: The total RUM Session Replay usage by tag(s).
+ :type rum_replay_sessions_usage: float, optional
+
+ :param rum_session_replay_add_on_percentage: The percentage of RUM Session Replay Add-On usage by tag(s).
+ :type rum_session_replay_add_on_percentage: float, optional
+
+ :param rum_session_replay_add_on_usage: The total RUM Session Replay Add-On usage by tag(s).
+ :type rum_session_replay_add_on_usage: float, optional
+
+ :param sca_fargate_percentage: The percentage of Software Composition Analysis Fargate task usage by tag(s).
+ :type sca_fargate_percentage: float, optional
+
+ :param sca_fargate_usage: The total Software Composition Analysis Fargate task usage by tag(s).
+ :type sca_fargate_usage: float, optional
+
+ :param sds_scanned_bytes_percentage: The percentage of Sensitive Data Scanner usage by tag(s).
+ :type sds_scanned_bytes_percentage: float, optional
+
+ :param sds_scanned_bytes_usage: The total Sensitive Data Scanner usage by tag(s).
+ :type sds_scanned_bytes_usage: float, optional
+
+ :param serverless_apps_apm_percentage: The percentage of Serverless Apps APM usage by tag(s).
+ :type serverless_apps_apm_percentage: float, optional
+
+ :param serverless_apps_apm_usage: The total Serverless Apps APM usage by tag(s).
+ :type serverless_apps_apm_usage: float, optional
+
+ :param serverless_apps_percentage: The percentage of Serverless Apps usage by tag(s).
+ :type serverless_apps_percentage: float, optional
+
+ :param serverless_apps_usage: The total Serverless Apps usage by tag(s).
+ :type serverless_apps_usage: float, optional
+
+ :param siem_12mo_retention_percentage: The percentage of Cloud SIEM Indexed Logs (12-month retention) usage by tag(s).
+ :type siem_12mo_retention_percentage: float, optional
+
+ :param siem_12mo_retention_usage: The Cloud SIEM Indexed Logs (12-month retention) usage by tag(s).
+ :type siem_12mo_retention_usage: float, optional
+
+ :param siem_6mo_retention_percentage: The percentage of Cloud SIEM Indexed Logs (6-month retention) usage by tag(s).
+ :type siem_6mo_retention_percentage: float, optional
+
+ :param siem_6mo_retention_usage: The Cloud SIEM Indexed Logs (6-month retention) usage by tag(s).
+ :type siem_6mo_retention_usage: float, optional
+
+ :param siem_analyzed_logs_add_on_percentage: The percentage of log events analyzed by Cloud SIEM usage by tag(s).
+ :type siem_analyzed_logs_add_on_percentage: float, optional
+
+ :param siem_analyzed_logs_add_on_usage: The log events analyzed by Cloud SIEM usage by tag(s).
+ :type siem_analyzed_logs_add_on_usage: float, optional
+
+ :param siem_ingested_bytes_percentage: The percentage of SIEM usage by tag(s).
+ :type siem_ingested_bytes_percentage: float, optional
+
+ :param siem_ingested_bytes_usage: The total SIEM usage by tag(s).
+ :type siem_ingested_bytes_usage: float, optional
+
+ :param snmp_percentage: The percentage of network device usage by tag(s).
+ :type snmp_percentage: float, optional
+
+ :param snmp_usage: The network device usage by tag(s).
+ :type snmp_usage: float, optional
+
+ :param universal_service_monitoring_percentage: The percentage of universal service monitoring usage by tag(s).
+ :type universal_service_monitoring_percentage: float, optional
+
+ :param universal_service_monitoring_usage: The universal service monitoring usage by tag(s).
+ :type universal_service_monitoring_usage: float, optional
+
+ :param vuln_management_hosts_percentage: The percentage of Application Vulnerability Management usage by tag(s).
+ :type vuln_management_hosts_percentage: float, optional
+
+ :param vuln_management_hosts_usage: The Application Vulnerability Management usage by tag(s).
+ :type vuln_management_hosts_usage: float, optional
+
+ :param workflow_executions_percentage: The percentage of workflow executions usage by tag(s).
+ :type workflow_executions_percentage: float, optional
+
+ :param workflow_executions_usage: The total workflow executions usage by tag(s).
+ :type workflow_executions_usage: float, optional
+ """
+ if api_percentage is not unset:
+ kwargs["api_percentage"] = api_percentage
+ if api_usage is not unset:
+ kwargs["api_usage"] = api_usage
+ if apm_fargate_percentage is not unset:
+ kwargs["apm_fargate_percentage"] = apm_fargate_percentage
+ if apm_fargate_usage is not unset:
+ kwargs["apm_fargate_usage"] = apm_fargate_usage
+ if apm_host_percentage is not unset:
+ kwargs["apm_host_percentage"] = apm_host_percentage
+ if apm_host_usage is not unset:
+ kwargs["apm_host_usage"] = apm_host_usage
+ if apm_usm_percentage is not unset:
+ kwargs["apm_usm_percentage"] = apm_usm_percentage
+ if apm_usm_usage is not unset:
+ kwargs["apm_usm_usage"] = apm_usm_usage
+ if appsec_fargate_percentage is not unset:
+ kwargs["appsec_fargate_percentage"] = appsec_fargate_percentage
+ if appsec_fargate_usage is not unset:
+ kwargs["appsec_fargate_usage"] = appsec_fargate_usage
+ if appsec_percentage is not unset:
+ kwargs["appsec_percentage"] = appsec_percentage
+ if appsec_usage is not unset:
+ kwargs["appsec_usage"] = appsec_usage
+ if asm_serverless_traced_invocations_percentage is not unset:
+ kwargs["asm_serverless_traced_invocations_percentage"] = asm_serverless_traced_invocations_percentage
+ if asm_serverless_traced_invocations_usage is not unset:
+ kwargs["asm_serverless_traced_invocations_usage"] = asm_serverless_traced_invocations_usage
+ if bits_ai_investigations_percentage is not unset:
+ kwargs["bits_ai_investigations_percentage"] = bits_ai_investigations_percentage
+ if bits_ai_investigations_usage is not unset:
+ kwargs["bits_ai_investigations_usage"] = bits_ai_investigations_usage
+ if browser_percentage is not unset:
+ kwargs["browser_percentage"] = browser_percentage
+ if browser_usage is not unset:
+ kwargs["browser_usage"] = browser_usage
+ if ci_code_coverage_committers_percentage is not unset:
+ kwargs["ci_code_coverage_committers_percentage"] = ci_code_coverage_committers_percentage
+ if ci_code_coverage_committers_usage is not unset:
+ kwargs["ci_code_coverage_committers_usage"] = ci_code_coverage_committers_usage
+ if ci_pipeline_indexed_spans_percentage is not unset:
+ kwargs["ci_pipeline_indexed_spans_percentage"] = ci_pipeline_indexed_spans_percentage
+ if ci_pipeline_indexed_spans_usage is not unset:
+ kwargs["ci_pipeline_indexed_spans_usage"] = ci_pipeline_indexed_spans_usage
+ if ci_test_indexed_spans_percentage is not unset:
+ kwargs["ci_test_indexed_spans_percentage"] = ci_test_indexed_spans_percentage
+ if ci_test_indexed_spans_usage is not unset:
+ kwargs["ci_test_indexed_spans_usage"] = ci_test_indexed_spans_usage
+ if ci_visibility_itr_percentage is not unset:
+ kwargs["ci_visibility_itr_percentage"] = ci_visibility_itr_percentage
+ if ci_visibility_itr_usage is not unset:
+ kwargs["ci_visibility_itr_usage"] = ci_visibility_itr_usage
+ if cloud_siem_percentage is not unset:
+ kwargs["cloud_siem_percentage"] = cloud_siem_percentage
+ if cloud_siem_usage is not unset:
+ kwargs["cloud_siem_usage"] = cloud_siem_usage
+ if code_security_host_percentage is not unset:
+ kwargs["code_security_host_percentage"] = code_security_host_percentage
+ if code_security_host_usage is not unset:
+ kwargs["code_security_host_usage"] = code_security_host_usage
+ if container_excl_agent_percentage is not unset:
+ kwargs["container_excl_agent_percentage"] = container_excl_agent_percentage
+ if container_excl_agent_usage is not unset:
+ kwargs["container_excl_agent_usage"] = container_excl_agent_usage
+ if container_percentage is not unset:
+ kwargs["container_percentage"] = container_percentage
+ if container_usage is not unset:
+ kwargs["container_usage"] = container_usage
+ if cspm_containers_percentage is not unset:
+ kwargs["cspm_containers_percentage"] = cspm_containers_percentage
+ if cspm_containers_usage is not unset:
+ kwargs["cspm_containers_usage"] = cspm_containers_usage
+ if cspm_hosts_percentage is not unset:
+ kwargs["cspm_hosts_percentage"] = cspm_hosts_percentage
+ if cspm_hosts_usage is not unset:
+ kwargs["cspm_hosts_usage"] = cspm_hosts_usage
+ if custom_event_percentage is not unset:
+ kwargs["custom_event_percentage"] = custom_event_percentage
+ if custom_event_usage is not unset:
+ kwargs["custom_event_usage"] = custom_event_usage
+ if custom_ingested_timeseries_percentage is not unset:
+ kwargs["custom_ingested_timeseries_percentage"] = custom_ingested_timeseries_percentage
+ if custom_ingested_timeseries_usage is not unset:
+ kwargs["custom_ingested_timeseries_usage"] = custom_ingested_timeseries_usage
+ if custom_timeseries_percentage is not unset:
+ kwargs["custom_timeseries_percentage"] = custom_timeseries_percentage
+ if custom_timeseries_usage is not unset:
+ kwargs["custom_timeseries_usage"] = custom_timeseries_usage
+ if cws_containers_percentage is not unset:
+ kwargs["cws_containers_percentage"] = cws_containers_percentage
+ if cws_containers_usage is not unset:
+ kwargs["cws_containers_usage"] = cws_containers_usage
+ if cws_fargate_task_percentage is not unset:
+ kwargs["cws_fargate_task_percentage"] = cws_fargate_task_percentage
+ if cws_fargate_task_usage is not unset:
+ kwargs["cws_fargate_task_usage"] = cws_fargate_task_usage
+ if cws_hosts_percentage is not unset:
+ kwargs["cws_hosts_percentage"] = cws_hosts_percentage
+ if cws_hosts_usage is not unset:
+ kwargs["cws_hosts_usage"] = cws_hosts_usage
+ if data_jobs_monitoring_usage is not unset:
+ kwargs["data_jobs_monitoring_usage"] = data_jobs_monitoring_usage
+ if data_stream_monitoring_usage is not unset:
+ kwargs["data_stream_monitoring_usage"] = data_stream_monitoring_usage
+ if dbm_hosts_percentage is not unset:
+ kwargs["dbm_hosts_percentage"] = dbm_hosts_percentage
+ if dbm_hosts_usage is not unset:
+ kwargs["dbm_hosts_usage"] = dbm_hosts_usage
+ if dbm_queries_percentage is not unset:
+ kwargs["dbm_queries_percentage"] = dbm_queries_percentage
+ if dbm_queries_usage is not unset:
+ kwargs["dbm_queries_usage"] = dbm_queries_usage
+ if error_tracking_percentage is not unset:
+ kwargs["error_tracking_percentage"] = error_tracking_percentage
+ if error_tracking_usage is not unset:
+ kwargs["error_tracking_usage"] = error_tracking_usage
+ if estimated_indexed_spans_percentage is not unset:
+ kwargs["estimated_indexed_spans_percentage"] = estimated_indexed_spans_percentage
+ if estimated_indexed_spans_usage is not unset:
+ kwargs["estimated_indexed_spans_usage"] = estimated_indexed_spans_usage
+ if estimated_ingested_spans_percentage is not unset:
+ kwargs["estimated_ingested_spans_percentage"] = estimated_ingested_spans_percentage
+ if estimated_ingested_spans_usage is not unset:
+ kwargs["estimated_ingested_spans_usage"] = estimated_ingested_spans_usage
+ if fargate_percentage is not unset:
+ kwargs["fargate_percentage"] = fargate_percentage
+ if fargate_usage is not unset:
+ kwargs["fargate_usage"] = fargate_usage
+ if flex_logs_starter_percentage is not unset:
+ kwargs["flex_logs_starter_percentage"] = flex_logs_starter_percentage
+ if flex_logs_starter_usage is not unset:
+ kwargs["flex_logs_starter_usage"] = flex_logs_starter_usage
+ if flex_stored_logs_percentage is not unset:
+ kwargs["flex_stored_logs_percentage"] = flex_stored_logs_percentage
+ if flex_stored_logs_usage is not unset:
+ kwargs["flex_stored_logs_usage"] = flex_stored_logs_usage
+ if functions_percentage is not unset:
+ kwargs["functions_percentage"] = functions_percentage
+ if functions_usage is not unset:
+ kwargs["functions_usage"] = functions_usage
+ if incident_management_monthly_active_users_percentage is not unset:
+ kwargs["incident_management_monthly_active_users_percentage"] = incident_management_monthly_active_users_percentage
+ if incident_management_monthly_active_users_usage is not unset:
+ kwargs["incident_management_monthly_active_users_usage"] = incident_management_monthly_active_users_usage
+ if indexed_spans_percentage is not unset:
+ kwargs["indexed_spans_percentage"] = indexed_spans_percentage
+ if indexed_spans_usage is not unset:
+ kwargs["indexed_spans_usage"] = indexed_spans_usage
+ if infra_host_basic_percentage is not unset:
+ kwargs["infra_host_basic_percentage"] = infra_host_basic_percentage
+ if infra_host_basic_usage is not unset:
+ kwargs["infra_host_basic_usage"] = infra_host_basic_usage
+ if infra_host_percentage is not unset:
+ kwargs["infra_host_percentage"] = infra_host_percentage
+ if infra_host_usage is not unset:
+ kwargs["infra_host_usage"] = infra_host_usage
+ if ingested_logs_bytes_percentage is not unset:
+ kwargs["ingested_logs_bytes_percentage"] = ingested_logs_bytes_percentage
+ if ingested_logs_bytes_usage is not unset:
+ kwargs["ingested_logs_bytes_usage"] = ingested_logs_bytes_usage
+ if ingested_spans_bytes_percentage is not unset:
+ kwargs["ingested_spans_bytes_percentage"] = ingested_spans_bytes_percentage
+ if ingested_spans_bytes_usage is not unset:
+ kwargs["ingested_spans_bytes_usage"] = ingested_spans_bytes_usage
+ if invocations_percentage is not unset:
+ kwargs["invocations_percentage"] = invocations_percentage
+ if invocations_usage is not unset:
+ kwargs["invocations_usage"] = invocations_usage
+ if lambda_traced_invocations_percentage is not unset:
+ kwargs["lambda_traced_invocations_percentage"] = lambda_traced_invocations_percentage
+ if lambda_traced_invocations_usage is not unset:
+ kwargs["lambda_traced_invocations_usage"] = lambda_traced_invocations_usage
+ if llm_observability_percentage is not unset:
+ kwargs["llm_observability_percentage"] = llm_observability_percentage
+ if llm_observability_usage is not unset:
+ kwargs["llm_observability_usage"] = llm_observability_usage
+ if llm_spans_percentage is not unset:
+ kwargs["llm_spans_percentage"] = llm_spans_percentage
+ if llm_spans_usage is not unset:
+ kwargs["llm_spans_usage"] = llm_spans_usage
+ if logs_indexed_15day_percentage is not unset:
+ kwargs["logs_indexed_15day_percentage"] = logs_indexed_15day_percentage
+ if logs_indexed_15day_usage is not unset:
+ kwargs["logs_indexed_15day_usage"] = logs_indexed_15day_usage
+ if logs_indexed_180day_percentage is not unset:
+ kwargs["logs_indexed_180day_percentage"] = logs_indexed_180day_percentage
+ if logs_indexed_180day_usage is not unset:
+ kwargs["logs_indexed_180day_usage"] = logs_indexed_180day_usage
+ if logs_indexed_1day_percentage is not unset:
+ kwargs["logs_indexed_1day_percentage"] = logs_indexed_1day_percentage
+ if logs_indexed_1day_usage is not unset:
+ kwargs["logs_indexed_1day_usage"] = logs_indexed_1day_usage
+ if logs_indexed_30day_percentage is not unset:
+ kwargs["logs_indexed_30day_percentage"] = logs_indexed_30day_percentage
+ if logs_indexed_30day_usage is not unset:
+ kwargs["logs_indexed_30day_usage"] = logs_indexed_30day_usage
+ if logs_indexed_360day_percentage is not unset:
+ kwargs["logs_indexed_360day_percentage"] = logs_indexed_360day_percentage
+ if logs_indexed_360day_usage is not unset:
+ kwargs["logs_indexed_360day_usage"] = logs_indexed_360day_usage
+ if logs_indexed_3day_percentage is not unset:
+ kwargs["logs_indexed_3day_percentage"] = logs_indexed_3day_percentage
+ if logs_indexed_3day_usage is not unset:
+ kwargs["logs_indexed_3day_usage"] = logs_indexed_3day_usage
+ if logs_indexed_45day_percentage is not unset:
+ kwargs["logs_indexed_45day_percentage"] = logs_indexed_45day_percentage
+ if logs_indexed_45day_usage is not unset:
+ kwargs["logs_indexed_45day_usage"] = logs_indexed_45day_usage
+ if logs_indexed_60day_percentage is not unset:
+ kwargs["logs_indexed_60day_percentage"] = logs_indexed_60day_percentage
+ if logs_indexed_60day_usage is not unset:
+ kwargs["logs_indexed_60day_usage"] = logs_indexed_60day_usage
+ if logs_indexed_7day_percentage is not unset:
+ kwargs["logs_indexed_7day_percentage"] = logs_indexed_7day_percentage
+ if logs_indexed_7day_usage is not unset:
+ kwargs["logs_indexed_7day_usage"] = logs_indexed_7day_usage
+ if logs_indexed_90day_percentage is not unset:
+ kwargs["logs_indexed_90day_percentage"] = logs_indexed_90day_percentage
+ if logs_indexed_90day_usage is not unset:
+ kwargs["logs_indexed_90day_usage"] = logs_indexed_90day_usage
+ if logs_indexed_custom_retention_percentage is not unset:
+ kwargs["logs_indexed_custom_retention_percentage"] = logs_indexed_custom_retention_percentage
+ if logs_indexed_custom_retention_usage is not unset:
+ kwargs["logs_indexed_custom_retention_usage"] = logs_indexed_custom_retention_usage
+ if mobile_app_testing_percentage is not unset:
+ kwargs["mobile_app_testing_percentage"] = mobile_app_testing_percentage
+ if mobile_app_testing_usage is not unset:
+ kwargs["mobile_app_testing_usage"] = mobile_app_testing_usage
+ if ndm_netflow_percentage is not unset:
+ kwargs["ndm_netflow_percentage"] = ndm_netflow_percentage
+ if ndm_netflow_usage is not unset:
+ kwargs["ndm_netflow_usage"] = ndm_netflow_usage
+ if network_device_wireless_percentage is not unset:
+ kwargs["network_device_wireless_percentage"] = network_device_wireless_percentage
+ if network_device_wireless_usage is not unset:
+ kwargs["network_device_wireless_usage"] = network_device_wireless_usage
+ if npm_host_percentage is not unset:
+ kwargs["npm_host_percentage"] = npm_host_percentage
+ if npm_host_usage is not unset:
+ kwargs["npm_host_usage"] = npm_host_usage
+ if obs_pipeline_bytes_percentage is not unset:
+ kwargs["obs_pipeline_bytes_percentage"] = obs_pipeline_bytes_percentage
+ if obs_pipeline_bytes_usage is not unset:
+ kwargs["obs_pipeline_bytes_usage"] = obs_pipeline_bytes_usage
+ if obs_pipelines_vcpu_percentage is not unset:
+ kwargs["obs_pipelines_vcpu_percentage"] = obs_pipelines_vcpu_percentage
+ if obs_pipelines_vcpu_usage is not unset:
+ kwargs["obs_pipelines_vcpu_usage"] = obs_pipelines_vcpu_usage
+ if online_archive_percentage is not unset:
+ kwargs["online_archive_percentage"] = online_archive_percentage
+ if online_archive_usage is not unset:
+ kwargs["online_archive_usage"] = online_archive_usage
+ if product_analytics_session_percentage is not unset:
+ kwargs["product_analytics_session_percentage"] = product_analytics_session_percentage
+ if product_analytics_session_usage is not unset:
+ kwargs["product_analytics_session_usage"] = product_analytics_session_usage
+ if profiled_container_percentage is not unset:
+ kwargs["profiled_container_percentage"] = profiled_container_percentage
+ if profiled_container_usage is not unset:
+ kwargs["profiled_container_usage"] = profiled_container_usage
+ if profiled_fargate_percentage is not unset:
+ kwargs["profiled_fargate_percentage"] = profiled_fargate_percentage
+ if profiled_fargate_usage is not unset:
+ kwargs["profiled_fargate_usage"] = profiled_fargate_usage
+ if profiled_host_percentage is not unset:
+ kwargs["profiled_host_percentage"] = profiled_host_percentage
+ if profiled_host_usage is not unset:
+ kwargs["profiled_host_usage"] = profiled_host_usage
+ if published_app_percentage is not unset:
+ kwargs["published_app_percentage"] = published_app_percentage
+ if published_app_usage is not unset:
+ kwargs["published_app_usage"] = published_app_usage
+ if rum_browser_mobile_sessions_percentage is not unset:
+ kwargs["rum_browser_mobile_sessions_percentage"] = rum_browser_mobile_sessions_percentage
+ if rum_browser_mobile_sessions_usage is not unset:
+ kwargs["rum_browser_mobile_sessions_usage"] = rum_browser_mobile_sessions_usage
+ if rum_ingested_percentage is not unset:
+ kwargs["rum_ingested_percentage"] = rum_ingested_percentage
+ if rum_ingested_usage is not unset:
+ kwargs["rum_ingested_usage"] = rum_ingested_usage
+ if rum_investigate_percentage is not unset:
+ kwargs["rum_investigate_percentage"] = rum_investigate_percentage
+ if rum_investigate_usage is not unset:
+ kwargs["rum_investigate_usage"] = rum_investigate_usage
+ if rum_replay_sessions_percentage is not unset:
+ kwargs["rum_replay_sessions_percentage"] = rum_replay_sessions_percentage
+ if rum_replay_sessions_usage is not unset:
+ kwargs["rum_replay_sessions_usage"] = rum_replay_sessions_usage
+ if rum_session_replay_add_on_percentage is not unset:
+ kwargs["rum_session_replay_add_on_percentage"] = rum_session_replay_add_on_percentage
+ if rum_session_replay_add_on_usage is not unset:
+ kwargs["rum_session_replay_add_on_usage"] = rum_session_replay_add_on_usage
+ if sca_fargate_percentage is not unset:
+ kwargs["sca_fargate_percentage"] = sca_fargate_percentage
+ if sca_fargate_usage is not unset:
+ kwargs["sca_fargate_usage"] = sca_fargate_usage
+ if sds_scanned_bytes_percentage is not unset:
+ kwargs["sds_scanned_bytes_percentage"] = sds_scanned_bytes_percentage
+ if sds_scanned_bytes_usage is not unset:
+ kwargs["sds_scanned_bytes_usage"] = sds_scanned_bytes_usage
+ if serverless_apps_apm_percentage is not unset:
+ kwargs["serverless_apps_apm_percentage"] = serverless_apps_apm_percentage
+ if serverless_apps_apm_usage is not unset:
+ kwargs["serverless_apps_apm_usage"] = serverless_apps_apm_usage
+ if serverless_apps_percentage is not unset:
+ kwargs["serverless_apps_percentage"] = serverless_apps_percentage
+ if serverless_apps_usage is not unset:
+ kwargs["serverless_apps_usage"] = serverless_apps_usage
+ if siem_12mo_retention_percentage is not unset:
+ kwargs["siem_12mo_retention_percentage"] = siem_12mo_retention_percentage
+ if siem_12mo_retention_usage is not unset:
+ kwargs["siem_12mo_retention_usage"] = siem_12mo_retention_usage
+ if siem_6mo_retention_percentage is not unset:
+ kwargs["siem_6mo_retention_percentage"] = siem_6mo_retention_percentage
+ if siem_6mo_retention_usage is not unset:
+ kwargs["siem_6mo_retention_usage"] = siem_6mo_retention_usage
+ if siem_analyzed_logs_add_on_percentage is not unset:
+ kwargs["siem_analyzed_logs_add_on_percentage"] = siem_analyzed_logs_add_on_percentage
+ if siem_analyzed_logs_add_on_usage is not unset:
+ kwargs["siem_analyzed_logs_add_on_usage"] = siem_analyzed_logs_add_on_usage
+ if siem_ingested_bytes_percentage is not unset:
+ kwargs["siem_ingested_bytes_percentage"] = siem_ingested_bytes_percentage
+ if siem_ingested_bytes_usage is not unset:
+ kwargs["siem_ingested_bytes_usage"] = siem_ingested_bytes_usage
+ if snmp_percentage is not unset:
+ kwargs["snmp_percentage"] = snmp_percentage
+ if snmp_usage is not unset:
+ kwargs["snmp_usage"] = snmp_usage
+ if universal_service_monitoring_percentage is not unset:
+ kwargs["universal_service_monitoring_percentage"] = universal_service_monitoring_percentage
+ if universal_service_monitoring_usage is not unset:
+ kwargs["universal_service_monitoring_usage"] = universal_service_monitoring_usage
+ if vuln_management_hosts_percentage is not unset:
+ kwargs["vuln_management_hosts_percentage"] = vuln_management_hosts_percentage
+ if vuln_management_hosts_usage is not unset:
+ kwargs["vuln_management_hosts_usage"] = vuln_management_hosts_usage
+ if workflow_executions_percentage is not unset:
+ kwargs["workflow_executions_percentage"] = workflow_executions_percentage
+ if workflow_executions_usage is not unset:
+ kwargs["workflow_executions_usage"] = workflow_executions_usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/note_widget_definition.py b/datadog_api_client/v1/model/note_widget_definition.py
new file mode 100644
index 0000000000..5cd9ba6735
--- /dev/null
+++ b/datadog_api_client/v1/model/note_widget_definition.py
@@ -0,0 +1,116 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.widget_tick_edge import WidgetTickEdge
+ from datadog_api_client.v1.model.note_widget_definition_type import NoteWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_vertical_align import WidgetVerticalAlign
+
+class NoteWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.widget_tick_edge import WidgetTickEdge
+ from datadog_api_client.v1.model.note_widget_definition_type import NoteWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_vertical_align import WidgetVerticalAlign
+ return {
+ "background_color": (str,),
+ "content": (str,),
+ "font_size": (str,),
+ "has_padding": (bool,),
+ "show_tick": (bool,),
+ "text_align": (WidgetTextAlign,),
+ "tick_edge": (WidgetTickEdge,),
+ "tick_pos": (str,),
+ "type": (NoteWidgetDefinitionType,),
+ "vertical_align": (WidgetVerticalAlign,),
+ }
+ attribute_map = {
+ "background_color": "background_color",
+ "content": "content",
+ "font_size": "font_size",
+ "has_padding": "has_padding",
+ "show_tick": "show_tick",
+ "text_align": "text_align",
+ "tick_edge": "tick_edge",
+ "tick_pos": "tick_pos",
+ "type": "type",
+ "vertical_align": "vertical_align",
+ }
+
+ def __init__(self_, content: str, type: NoteWidgetDefinitionType, background_color: Union[str, UnsetType]=unset, font_size: Union[str, UnsetType]=unset, has_padding: Union[bool, UnsetType]=unset, show_tick: Union[bool, UnsetType]=unset, text_align: Union[WidgetTextAlign, UnsetType]=unset, tick_edge: Union[WidgetTickEdge, UnsetType]=unset, tick_pos: Union[str, UnsetType]=unset, vertical_align: Union[WidgetVerticalAlign, UnsetType]=unset, **kwargs):
+ """
+ The notes and links widget is similar to free text widget, but allows for more formatting options.
+
+ :param background_color: Background color of the note.
+ :type background_color: str, optional
+
+ :param content: Content of the note.
+ :type content: str
+
+ :param font_size: Size of the text.
+ :type font_size: str, optional
+
+ :param has_padding: Whether to add padding or not.
+ :type has_padding: bool, optional
+
+ :param show_tick: Whether to show a tick or not.
+ :type show_tick: bool, optional
+
+ :param text_align: How to align the text on the widget.
+ :type text_align: WidgetTextAlign, optional
+
+ :param tick_edge: Define how you want to align the text on the widget.
+ :type tick_edge: WidgetTickEdge, optional
+
+ :param tick_pos: Where to position the tick on an edge.
+ :type tick_pos: str, optional
+
+ :param type: Type of the note widget.
+ :type type: NoteWidgetDefinitionType
+
+ :param vertical_align: Vertical alignment.
+ :type vertical_align: WidgetVerticalAlign, optional
+ """
+ if background_color is not unset:
+ kwargs["background_color"] = background_color
+ if font_size is not unset:
+ kwargs["font_size"] = font_size
+ if has_padding is not unset:
+ kwargs["has_padding"] = has_padding
+ if show_tick is not unset:
+ kwargs["show_tick"] = show_tick
+ if text_align is not unset:
+ kwargs["text_align"] = text_align
+ if tick_edge is not unset:
+ kwargs["tick_edge"] = tick_edge
+ if tick_pos is not unset:
+ kwargs["tick_pos"] = tick_pos
+ if vertical_align is not unset:
+ kwargs["vertical_align"] = vertical_align
+ super().__init__(kwargs)
+
+
+ self_.content = content
+ self_.type = type
diff --git a/datadog_api_client/v1/model/note_widget_definition_type.py b/datadog_api_client/v1/model/note_widget_definition_type.py
new file mode 100644
index 0000000000..012a6a5616
--- /dev/null
+++ b/datadog_api_client/v1/model/note_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NoteWidgetDefinitionType(ModelSimple):
+ """
+ Type of the note widget.
+
+ :param value: If omitted defaults to "note". Must be one of ["note"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "note",
+ }
+ NOTE: ClassVar["NoteWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NoteWidgetDefinitionType.NOTE = NoteWidgetDefinitionType("note")
diff --git a/datadog_api_client/v1/model/notebook_absolute_time.py b/datadog_api_client/v1/model/notebook_absolute_time.py
new file mode 100644
index 0000000000..ad0adec77d
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_absolute_time.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookAbsoluteTime(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "end": (datetime,),
+ "live": (bool,),
+ "start": (datetime,),
+ }
+ attribute_map = {
+ "end": "end",
+ "live": "live",
+ "start": "start",
+ }
+
+ def __init__(self_, end: datetime, start: datetime, live: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Absolute timeframe.
+
+ :param end: The end time.
+ :type end: datetime
+
+ :param live: Indicates whether the timeframe should be shifted to end at the current time.
+ :type live: bool, optional
+
+ :param start: The start time.
+ :type start: datetime
+ """
+ if live is not unset:
+ kwargs["live"] = live
+ super().__init__(kwargs)
+
+
+ self_.end = end
+ self_.start = start
diff --git a/datadog_api_client/v1/model/notebook_author.py b/datadog_api_client/v1/model/notebook_author.py
new file mode 100644
index 0000000000..1a4581727d
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_author.py
@@ -0,0 +1,102 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookAuthor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "created_at": (datetime,),
+ "disabled": (bool,),
+ "email": (str,),
+ "handle": (str,),
+ "icon": (str,),
+ "name": (str, none_type),
+ "status": (str,),
+ "title": (str, none_type),
+ "verified": (bool,),
+ }
+ attribute_map = {
+ "created_at": "created_at",
+ "disabled": "disabled",
+ "email": "email",
+ "handle": "handle",
+ "icon": "icon",
+ "name": "name",
+ "status": "status",
+ "title": "title",
+ "verified": "verified",
+ }
+
+ def __init__(self_, created_at: Union[datetime, UnsetType]=unset, disabled: Union[bool, UnsetType]=unset, email: Union[str, UnsetType]=unset, handle: Union[str, UnsetType]=unset, icon: Union[str, UnsetType]=unset, name: Union[str, none_type, UnsetType]=unset, status: Union[str, UnsetType]=unset, title: Union[str, none_type, UnsetType]=unset, verified: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Attributes of user object returned by the API.
+
+ :param created_at: Creation time of the user.
+ :type created_at: datetime, optional
+
+ :param disabled: Whether the user is disabled.
+ :type disabled: bool, optional
+
+ :param email: Email of the user.
+ :type email: str, optional
+
+ :param handle: Handle of the user.
+ :type handle: str, optional
+
+ :param icon: URL of the user's icon.
+ :type icon: str, optional
+
+ :param name: Name of the user.
+ :type name: str, none_type, optional
+
+ :param status: Status of the user.
+ :type status: str, optional
+
+ :param title: Title of the user.
+ :type title: str, none_type, optional
+
+ :param verified: Whether the user is verified.
+ :type verified: bool, optional
+ """
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if disabled is not unset:
+ kwargs["disabled"] = disabled
+ if email is not unset:
+ kwargs["email"] = email
+ if handle is not unset:
+ kwargs["handle"] = handle
+ if icon is not unset:
+ kwargs["icon"] = icon
+ if name is not unset:
+ kwargs["name"] = name
+ if status is not unset:
+ kwargs["status"] = status
+ if title is not unset:
+ kwargs["title"] = title
+ if verified is not unset:
+ kwargs["verified"] = verified
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/notebook_cell_create_request.py b/datadog_api_client/v1/model/notebook_cell_create_request.py
new file mode 100644
index 0000000000..76effc04a7
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_create_request.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_cell_create_request_attributes import NotebookCellCreateRequestAttributes
+ from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+
+class NotebookCellCreateRequest(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_cell_create_request_attributes import NotebookCellCreateRequestAttributes
+ from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+ return {
+ "attributes": (NotebookCellCreateRequestAttributes,),
+ "type": (NotebookCellResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[NotebookCellCreateRequestAttributes, NotebookMarkdownCellAttributes, NotebookTimeseriesCellAttributes, NotebookToplistCellAttributes, NotebookHeatMapCellAttributes, NotebookDistributionCellAttributes, NotebookLogStreamCellAttributes], type: NotebookCellResourceType, **kwargs):
+ """
+ The description of a notebook cell create request.
+
+ :param attributes: The attributes of a notebook cell in create cell request. Valid cell types are ``markdown`` , ``timeseries`` , ``toplist`` , ``heatmap`` , ``distribution`` ,
+ ``log_stream``. `More information on each graph visualization type. `_
+ :type attributes: NotebookCellCreateRequestAttributes
+
+ :param type: Type of the Notebook Cell resource.
+ :type type: NotebookCellResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_cell_create_request_attributes.py b/datadog_api_client/v1/model/notebook_cell_create_request_attributes.py
new file mode 100644
index 0000000000..56cea2694a
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_create_request_attributes.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookCellCreateRequestAttributes(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The attributes of a notebook cell in create cell request. Valid cell types are ``markdown`` , ``timeseries`` , ``toplist`` , ``heatmap`` , ``distribution`` ,
+ ``log_stream``. `More information on each graph visualization type. `_
+
+ :param definition: Text in a notebook is formatted with [Markdown](https://daringfireball.net/projects/markdown/), which enables the use of headings, subheadings, links, images, lists, and code blocks.
+ :type definition: NotebookMarkdownCellDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ return {
+ "oneOf": [
+ NotebookMarkdownCellAttributes,
+ NotebookTimeseriesCellAttributes,
+ NotebookToplistCellAttributes,
+ NotebookHeatMapCellAttributes,
+ NotebookDistributionCellAttributes,
+ NotebookLogStreamCellAttributes,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_cell_resource_type.py b/datadog_api_client/v1/model/notebook_cell_resource_type.py
new file mode 100644
index 0000000000..eadd652999
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_resource_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotebookCellResourceType(ModelSimple):
+ """
+ Type of the Notebook Cell resource.
+
+ :param value: If omitted defaults to "notebook_cells". Must be one of ["notebook_cells"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "notebook_cells",
+ }
+ NOTEBOOK_CELLS: ClassVar["NotebookCellResourceType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotebookCellResourceType.NOTEBOOK_CELLS = NotebookCellResourceType("notebook_cells")
diff --git a/datadog_api_client/v1/model/notebook_cell_response.py b/datadog_api_client/v1/model/notebook_cell_response.py
new file mode 100644
index 0000000000..215f6666a4
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_response.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_cell_response_attributes import NotebookCellResponseAttributes
+ from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+
+class NotebookCellResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_cell_response_attributes import NotebookCellResponseAttributes
+ from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+ return {
+ "attributes": (NotebookCellResponseAttributes,),
+ "id": (str,),
+ "type": (NotebookCellResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[NotebookCellResponseAttributes, NotebookMarkdownCellAttributes, NotebookTimeseriesCellAttributes, NotebookToplistCellAttributes, NotebookHeatMapCellAttributes, NotebookDistributionCellAttributes, NotebookLogStreamCellAttributes], id: str, type: NotebookCellResourceType, **kwargs):
+ """
+ The description of a notebook cell response.
+
+ :param attributes: The attributes of a notebook cell response. Valid cell types are ``markdown`` , ``timeseries`` , ``toplist`` , ``heatmap`` , ``distribution`` ,
+ ``log_stream``. `More information on each graph visualization type. `_
+ :type attributes: NotebookCellResponseAttributes
+
+ :param id: Notebook cell ID.
+ :type id: str
+
+ :param type: Type of the Notebook Cell resource.
+ :type type: NotebookCellResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.id = id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_cell_response_attributes.py b/datadog_api_client/v1/model/notebook_cell_response_attributes.py
new file mode 100644
index 0000000000..6add49642f
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_response_attributes.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookCellResponseAttributes(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The attributes of a notebook cell response. Valid cell types are ``markdown`` , ``timeseries`` , ``toplist`` , ``heatmap`` , ``distribution`` ,
+ ``log_stream``. `More information on each graph visualization type. `_
+
+ :param definition: Text in a notebook is formatted with [Markdown](https://daringfireball.net/projects/markdown/), which enables the use of headings, subheadings, links, images, lists, and code blocks.
+ :type definition: NotebookMarkdownCellDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ return {
+ "oneOf": [
+ NotebookMarkdownCellAttributes,
+ NotebookTimeseriesCellAttributes,
+ NotebookToplistCellAttributes,
+ NotebookHeatMapCellAttributes,
+ NotebookDistributionCellAttributes,
+ NotebookLogStreamCellAttributes,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_cell_time.py b/datadog_api_client/v1/model/notebook_cell_time.py
new file mode 100644
index 0000000000..163f0dc7c6
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_time.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookCellTime(ModelComposed):
+
+
+ _nullable = True
+
+ def __init__(self, **kwargs):
+ """
+ Timeframe for the notebook cell. When 'null', the notebook global time is used.
+
+ :param live_span: The available timeframes depend on the widget you are using.
+ :type live_span: WidgetLiveSpan
+
+ :param end: The end time.
+ :type end: datetime
+
+ :param live: Indicates whether the timeframe should be shifted to end at the current time.
+ :type live: bool, optional
+
+ :param start: The start time.
+ :type start: datetime
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+ return {
+ "oneOf": [
+ NotebookRelativeTime,
+ NotebookAbsoluteTime,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_cell_update_request.py b/datadog_api_client/v1/model/notebook_cell_update_request.py
new file mode 100644
index 0000000000..0565ca6393
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_update_request.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_cell_update_request_attributes import NotebookCellUpdateRequestAttributes
+ from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+
+class NotebookCellUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_cell_update_request_attributes import NotebookCellUpdateRequestAttributes
+ from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+ return {
+ "attributes": (NotebookCellUpdateRequestAttributes,),
+ "id": (str,),
+ "type": (NotebookCellResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[NotebookCellUpdateRequestAttributes, NotebookMarkdownCellAttributes, NotebookTimeseriesCellAttributes, NotebookToplistCellAttributes, NotebookHeatMapCellAttributes, NotebookDistributionCellAttributes, NotebookLogStreamCellAttributes], id: str, type: NotebookCellResourceType, **kwargs):
+ """
+ The description of a notebook cell update request.
+
+ :param attributes: The attributes of a notebook cell in update cell request. Valid cell types are ``markdown`` , ``timeseries`` , ``toplist`` , ``heatmap`` , ``distribution`` ,
+ ``log_stream``. `More information on each graph visualization type. `_
+ :type attributes: NotebookCellUpdateRequestAttributes
+
+ :param id: Notebook cell ID.
+ :type id: str
+
+ :param type: Type of the Notebook Cell resource.
+ :type type: NotebookCellResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.id = id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_cell_update_request_attributes.py b/datadog_api_client/v1/model/notebook_cell_update_request_attributes.py
new file mode 100644
index 0000000000..5887c93073
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_cell_update_request_attributes.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookCellUpdateRequestAttributes(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The attributes of a notebook cell in update cell request. Valid cell types are ``markdown`` , ``timeseries`` , ``toplist`` , ``heatmap`` , ``distribution`` ,
+ ``log_stream``. `More information on each graph visualization type. `_
+
+ :param definition: Text in a notebook is formatted with [Markdown](https://daringfireball.net/projects/markdown/), which enables the use of headings, subheadings, links, images, lists, and code blocks.
+ :type definition: NotebookMarkdownCellDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ return {
+ "oneOf": [
+ NotebookMarkdownCellAttributes,
+ NotebookTimeseriesCellAttributes,
+ NotebookToplistCellAttributes,
+ NotebookHeatMapCellAttributes,
+ NotebookDistributionCellAttributes,
+ NotebookLogStreamCellAttributes,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_create_data.py b/datadog_api_client/v1/model/notebook_create_data.py
new file mode 100644
index 0000000000..bf38e9163c
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_create_data.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_create_data_attributes import NotebookCreateDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookCreateData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_create_data_attributes import NotebookCreateDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ return {
+ "attributes": (NotebookCreateDataAttributes,),
+ "type": (NotebookResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: NotebookCreateDataAttributes, type: NotebookResourceType, **kwargs):
+ """
+ The data for a notebook create request.
+
+ :param attributes: The data attributes of a notebook.
+ :type attributes: NotebookCreateDataAttributes
+
+ :param type: Type of the Notebook resource.
+ :type type: NotebookResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_create_data_attributes.py b/datadog_api_client/v1/model/notebook_create_data_attributes.py
new file mode 100644
index 0000000000..9faafcb35a
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_create_data_attributes.py
@@ -0,0 +1,105 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookCreateDataAttributes(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 80,
+ "min_length": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ return {
+ "cells": ([NotebookCellCreateRequest],),
+ "metadata": (NotebookMetadata,),
+ "name": (str,),
+ "status": (NotebookStatus,),
+ "template_variables": ([NotebookTemplateVariable], none_type),
+ "time": (NotebookGlobalTime,),
+ }
+ attribute_map = {
+ "cells": "cells",
+ "metadata": "metadata",
+ "name": "name",
+ "status": "status",
+ "template_variables": "template_variables",
+ "time": "time",
+ }
+
+ def __init__(self_, cells: List[NotebookCellCreateRequest], name: str, time: Union[NotebookGlobalTime, NotebookRelativeTime, NotebookAbsoluteTime], metadata: Union[NotebookMetadata, UnsetType]=unset, status: Union[NotebookStatus, UnsetType]=unset, template_variables: Union[List[NotebookTemplateVariable], none_type, UnsetType]=unset, **kwargs):
+ """
+ The data attributes of a notebook.
+
+ :param cells: List of cells to display in the notebook.
+ :type cells: [NotebookCellCreateRequest]
+
+ :param metadata: Metadata associated with the notebook.
+ :type metadata: NotebookMetadata, optional
+
+ :param name: The name of the notebook.
+ :type name: str
+
+ :param status: Publication status of the notebook. For now, always "published".
+ :type status: NotebookStatus, optional
+
+ :param template_variables: List of template variables for this notebook.
+ :type template_variables: [NotebookTemplateVariable], none_type, optional
+
+ :param time: Notebook global timeframe.
+ :type time: NotebookGlobalTime
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if status is not unset:
+ kwargs["status"] = status
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ super().__init__(kwargs)
+
+
+ self_.cells = cells
+ self_.name = name
+ self_.time = time
diff --git a/datadog_api_client/v1/model/notebook_create_request.py b/datadog_api_client/v1/model/notebook_create_request.py
new file mode 100644
index 0000000000..86a8945cb9
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_create_request.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_create_data import NotebookCreateData
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookCreateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_create_data import NotebookCreateData
+ return {
+ "data": (NotebookCreateData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: NotebookCreateData, **kwargs):
+ """
+ The description of a notebook create request.
+
+ :param data: The data for a notebook create request.
+ :type data: NotebookCreateData
+ """
+ super().__init__(kwargs)
+
+
+ self_.data = data
diff --git a/datadog_api_client/v1/model/notebook_distribution_cell_attributes.py b/datadog_api_client/v1/model/notebook_distribution_cell_attributes.py
new file mode 100644
index 0000000000..05ede86814
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_distribution_cell_attributes.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookDistributionCellAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ return {
+ "definition": (DistributionWidgetDefinition,),
+ "graph_size": (NotebookGraphSize,),
+ "split_by": (NotebookSplitBy,),
+ "time": (NotebookCellTime,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ "graph_size": "graph_size",
+ "split_by": "split_by",
+ "time": "time",
+ }
+
+ def __init__(self_, definition: DistributionWidgetDefinition, graph_size: Union[NotebookGraphSize, UnsetType]=unset, split_by: Union[NotebookSplitBy, UnsetType]=unset, time: Union[Union[NotebookCellTime, NotebookRelativeTime, NotebookAbsoluteTime], none_type, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook ``distribution`` cell.
+
+ :param definition: The Distribution visualization is another way of showing metrics
+ aggregated across one or several tags, such as hosts.
+ Unlike the heat map, a distribution graph’s x-axis is quantity rather than time.
+ :type definition: DistributionWidgetDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ if graph_size is not unset:
+ kwargs["graph_size"] = graph_size
+ if split_by is not unset:
+ kwargs["split_by"] = split_by
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/notebook_global_time.py b/datadog_api_client/v1/model/notebook_global_time.py
new file mode 100644
index 0000000000..837380001b
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_global_time.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookGlobalTime(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Notebook global timeframe.
+
+ :param live_span: The available timeframes depend on the widget you are using.
+ :type live_span: WidgetLiveSpan
+
+ :param end: The end time.
+ :type end: datetime
+
+ :param live: Indicates whether the timeframe should be shifted to end at the current time.
+ :type live: bool, optional
+
+ :param start: The start time.
+ :type start: datetime
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+ return {
+ "oneOf": [
+ NotebookRelativeTime,
+ NotebookAbsoluteTime,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_graph_size.py b/datadog_api_client/v1/model/notebook_graph_size.py
new file mode 100644
index 0000000000..850cde646c
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_graph_size.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotebookGraphSize(ModelSimple):
+ """
+ The size of the graph.
+
+ :param value: Must be one of ["xs", "s", "m", "l", "xl"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "xs",
+ "s",
+ "m",
+ "l",
+ "xl",
+ }
+ EXTRA_SMALL: ClassVar["NotebookGraphSize"]
+ SMALL: ClassVar["NotebookGraphSize"]
+ MEDIUM: ClassVar["NotebookGraphSize"]
+ LARGE: ClassVar["NotebookGraphSize"]
+ EXTRA_LARGE: ClassVar["NotebookGraphSize"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotebookGraphSize.EXTRA_SMALL = NotebookGraphSize("xs")
+NotebookGraphSize.SMALL = NotebookGraphSize("s")
+NotebookGraphSize.MEDIUM = NotebookGraphSize("m")
+NotebookGraphSize.LARGE = NotebookGraphSize("l")
+NotebookGraphSize.EXTRA_LARGE = NotebookGraphSize("xl")
diff --git a/datadog_api_client/v1/model/notebook_heat_map_cell_attributes.py b/datadog_api_client/v1/model/notebook_heat_map_cell_attributes.py
new file mode 100644
index 0000000000..fe12b578fa
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_heat_map_cell_attributes.py
@@ -0,0 +1,93 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookHeatMapCellAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ return {
+ "definition": (HeatMapWidgetDefinition,),
+ "graph_size": (NotebookGraphSize,),
+ "split_by": (NotebookSplitBy,),
+ "time": (NotebookCellTime,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ "graph_size": "graph_size",
+ "split_by": "split_by",
+ "time": "time",
+ }
+
+ def __init__(self_, definition: HeatMapWidgetDefinition, graph_size: Union[NotebookGraphSize, UnsetType]=unset, split_by: Union[NotebookSplitBy, UnsetType]=unset, time: Union[Union[NotebookCellTime, NotebookRelativeTime, NotebookAbsoluteTime], none_type, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook ``heatmap`` cell.
+
+ :param definition: The heat map visualization shows metrics aggregated across many tags, such as hosts. The more hosts that have a particular value, the darker that square is.
+ :type definition: HeatMapWidgetDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ if graph_size is not unset:
+ kwargs["graph_size"] = graph_size
+ if split_by is not unset:
+ kwargs["split_by"] = split_by
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/notebook_log_stream_cell_attributes.py b/datadog_api_client/v1/model/notebook_log_stream_cell_attributes.py
new file mode 100644
index 0000000000..fe7b619ec7
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_log_stream_cell_attributes.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookLogStreamCellAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ return {
+ "definition": (LogStreamWidgetDefinition,),
+ "graph_size": (NotebookGraphSize,),
+ "time": (NotebookCellTime,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ "graph_size": "graph_size",
+ "time": "time",
+ }
+
+ def __init__(self_, definition: LogStreamWidgetDefinition, graph_size: Union[NotebookGraphSize, UnsetType]=unset, time: Union[Union[NotebookCellTime, NotebookRelativeTime, NotebookAbsoluteTime], none_type, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook ``log_stream`` cell.
+
+ :param definition: The Log Stream displays a log flow matching the defined query.
+ :type definition: LogStreamWidgetDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ if graph_size is not unset:
+ kwargs["graph_size"] = graph_size
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/notebook_markdown_cell_attributes.py b/datadog_api_client/v1/model/notebook_markdown_cell_attributes.py
new file mode 100644
index 0000000000..c074989dbb
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_markdown_cell_attributes.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_markdown_cell_definition import NotebookMarkdownCellDefinition
+
+class NotebookMarkdownCellAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_markdown_cell_definition import NotebookMarkdownCellDefinition
+ return {
+ "definition": (NotebookMarkdownCellDefinition,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ }
+
+ def __init__(self_, definition: NotebookMarkdownCellDefinition, **kwargs):
+ """
+ The attributes of a notebook ``markdown`` cell.
+
+ :param definition: Text in a notebook is formatted with `Markdown `_ , which enables the use of headings, subheadings, links, images, lists, and code blocks.
+ :type definition: NotebookMarkdownCellDefinition
+ """
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/notebook_markdown_cell_definition.py b/datadog_api_client/v1/model/notebook_markdown_cell_definition.py
new file mode 100644
index 0000000000..6735038107
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_markdown_cell_definition.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_markdown_cell_definition_type import NotebookMarkdownCellDefinitionType
+
+class NotebookMarkdownCellDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_markdown_cell_definition_type import NotebookMarkdownCellDefinitionType
+ return {
+ "text": (str,),
+ "type": (NotebookMarkdownCellDefinitionType,),
+ }
+ attribute_map = {
+ "text": "text",
+ "type": "type",
+ }
+
+ def __init__(self_, text: str, type: NotebookMarkdownCellDefinitionType, **kwargs):
+ """
+ Text in a notebook is formatted with `Markdown `_ , which enables the use of headings, subheadings, links, images, lists, and code blocks.
+
+ :param text: The markdown content.
+ :type text: str
+
+ :param type: Type of the markdown cell.
+ :type type: NotebookMarkdownCellDefinitionType
+ """
+ super().__init__(kwargs)
+
+
+ self_.text = text
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_markdown_cell_definition_type.py b/datadog_api_client/v1/model/notebook_markdown_cell_definition_type.py
new file mode 100644
index 0000000000..b5ee16c6cd
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_markdown_cell_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotebookMarkdownCellDefinitionType(ModelSimple):
+ """
+ Type of the markdown cell.
+
+ :param value: If omitted defaults to "markdown". Must be one of ["markdown"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "markdown",
+ }
+ MARKDOWN: ClassVar["NotebookMarkdownCellDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotebookMarkdownCellDefinitionType.MARKDOWN = NotebookMarkdownCellDefinitionType("markdown")
diff --git a/datadog_api_client/v1/model/notebook_metadata.py b/datadog_api_client/v1/model/notebook_metadata.py
new file mode 100644
index 0000000000..b5e60ad32b
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_metadata.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_metadata_type import NotebookMetadataType
+
+class NotebookMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_metadata_type import NotebookMetadataType
+ return {
+ "is_template": (bool,),
+ "take_snapshots": (bool,),
+ "type": (NotebookMetadataType,),
+ }
+ attribute_map = {
+ "is_template": "is_template",
+ "take_snapshots": "take_snapshots",
+ "type": "type",
+ }
+
+ def __init__(self_, is_template: Union[bool, UnsetType]=unset, take_snapshots: Union[bool, UnsetType]=unset, type: Union[NotebookMetadataType, none_type, UnsetType]=unset, **kwargs):
+ """
+ Metadata associated with the notebook.
+
+ :param is_template: Whether or not the notebook is a template.
+ :type is_template: bool, optional
+
+ :param take_snapshots: Whether or not the notebook takes snapshot image backups of the notebook's fixed-time graphs.
+ :type take_snapshots: bool, optional
+
+ :param type: Metadata type of the notebook.
+ :type type: NotebookMetadataType, none_type, optional
+ """
+ if is_template is not unset:
+ kwargs["is_template"] = is_template
+ if take_snapshots is not unset:
+ kwargs["take_snapshots"] = take_snapshots
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/notebook_metadata_type.py b/datadog_api_client/v1/model/notebook_metadata_type.py
new file mode 100644
index 0000000000..bed16ce6d7
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_metadata_type.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotebookMetadataType(ModelSimple):
+ """
+ Metadata type of the notebook.
+
+ :param value: Must be one of ["postmortem", "runbook", "investigation", "documentation", "report"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "postmortem",
+ "runbook",
+ "investigation",
+ "documentation",
+ "report",
+ }
+ POSTMORTEM: ClassVar["NotebookMetadataType"]
+ RUNBOOK: ClassVar["NotebookMetadataType"]
+ INVESTIGATION: ClassVar["NotebookMetadataType"]
+ DOCUMENTATION: ClassVar["NotebookMetadataType"]
+ REPORT: ClassVar["NotebookMetadataType"]
+
+
+ _nullable = True
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotebookMetadataType.POSTMORTEM = NotebookMetadataType("postmortem")
+NotebookMetadataType.RUNBOOK = NotebookMetadataType("runbook")
+NotebookMetadataType.INVESTIGATION = NotebookMetadataType("investigation")
+NotebookMetadataType.DOCUMENTATION = NotebookMetadataType("documentation")
+NotebookMetadataType.REPORT = NotebookMetadataType("report")
diff --git a/datadog_api_client/v1/model/notebook_relative_time.py b/datadog_api_client/v1/model/notebook_relative_time.py
new file mode 100644
index 0000000000..a49e3db5f1
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_relative_time.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_live_span import WidgetLiveSpan
+
+class NotebookRelativeTime(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_live_span import WidgetLiveSpan
+ return {
+ "live_span": (WidgetLiveSpan,),
+ }
+ attribute_map = {
+ "live_span": "live_span",
+ }
+
+ def __init__(self_, live_span: WidgetLiveSpan, **kwargs):
+ """
+ Relative timeframe.
+
+ :param live_span: The available timeframes depend on the widget you are using.
+ :type live_span: WidgetLiveSpan
+ """
+ super().__init__(kwargs)
+
+
+ self_.live_span = live_span
diff --git a/datadog_api_client/v1/model/notebook_resource_type.py b/datadog_api_client/v1/model/notebook_resource_type.py
new file mode 100644
index 0000000000..60ce1002af
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_resource_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotebookResourceType(ModelSimple):
+ """
+ Type of the Notebook resource.
+
+ :param value: If omitted defaults to "notebooks". Must be one of ["notebooks"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "notebooks",
+ }
+ NOTEBOOKS: ClassVar["NotebookResourceType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotebookResourceType.NOTEBOOKS = NotebookResourceType("notebooks")
diff --git a/datadog_api_client/v1/model/notebook_response.py b/datadog_api_client/v1/model/notebook_response.py
new file mode 100644
index 0000000000..6edcf4c8a3
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_response.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_response_data import NotebookResponseData
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_response_data import NotebookResponseData
+ return {
+ "data": (NotebookResponseData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[NotebookResponseData, UnsetType]=unset, **kwargs):
+ """
+ The description of a notebook response.
+
+ :param data: The data for a notebook.
+ :type data: NotebookResponseData, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/notebook_response_data.py b/datadog_api_client/v1/model/notebook_response_data.py
new file mode 100644
index 0000000000..2b962ab3c5
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_response_data.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_response_data_attributes import NotebookResponseDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_response_data_attributes import NotebookResponseDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ return {
+ "attributes": (NotebookResponseDataAttributes,),
+ "id": (int,),
+ "type": (NotebookResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, attributes: NotebookResponseDataAttributes, id: int, type: NotebookResourceType, **kwargs):
+ """
+ The data for a notebook.
+
+ :param attributes: The attributes of a notebook.
+ :type attributes: NotebookResponseDataAttributes
+
+ :param id: Unique notebook ID, assigned when you create the notebook.
+ :type id: int
+
+ :param type: Type of the Notebook resource.
+ :type type: NotebookResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.id = id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_response_data_attributes.py b/datadog_api_client/v1/model/notebook_response_data_attributes.py
new file mode 100644
index 0000000000..5d4d13e7a9
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_response_data_attributes.py
@@ -0,0 +1,132 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_author import NotebookAuthor
+ from datadog_api_client.v1.model.notebook_cell_response import NotebookCellResponse
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookResponseDataAttributes(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 80,
+ "min_length": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_author import NotebookAuthor
+ from datadog_api_client.v1.model.notebook_cell_response import NotebookCellResponse
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ return {
+ "author": (NotebookAuthor,),
+ "cells": ([NotebookCellResponse],),
+ "created": (datetime,),
+ "metadata": (NotebookMetadata,),
+ "modified": (datetime,),
+ "name": (str,),
+ "status": (NotebookStatus,),
+ "template_variables": ([NotebookTemplateVariable], none_type),
+ "time": (NotebookGlobalTime,),
+ }
+ attribute_map = {
+ "author": "author",
+ "cells": "cells",
+ "created": "created",
+ "metadata": "metadata",
+ "modified": "modified",
+ "name": "name",
+ "status": "status",
+ "template_variables": "template_variables",
+ "time": "time",
+ }
+ read_only_vars = {
+ "created",
+ "modified",
+ }
+
+ def __init__(self_, cells: List[NotebookCellResponse], name: str, time: Union[NotebookGlobalTime, NotebookRelativeTime, NotebookAbsoluteTime], author: Union[NotebookAuthor, UnsetType]=unset, created: Union[datetime, UnsetType]=unset, metadata: Union[NotebookMetadata, UnsetType]=unset, modified: Union[datetime, UnsetType]=unset, status: Union[NotebookStatus, UnsetType]=unset, template_variables: Union[List[NotebookTemplateVariable], none_type, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook.
+
+ :param author: Attributes of user object returned by the API.
+ :type author: NotebookAuthor, optional
+
+ :param cells: List of cells to display in the notebook.
+ :type cells: [NotebookCellResponse]
+
+ :param created: UTC time stamp for when the notebook was created.
+ :type created: datetime, optional
+
+ :param metadata: Metadata associated with the notebook.
+ :type metadata: NotebookMetadata, optional
+
+ :param modified: UTC time stamp for when the notebook was last modified.
+ :type modified: datetime, optional
+
+ :param name: The name of the notebook.
+ :type name: str
+
+ :param status: Publication status of the notebook. For now, always "published".
+ :type status: NotebookStatus, optional
+
+ :param template_variables: List of template variables for this notebook.
+ :type template_variables: [NotebookTemplateVariable], none_type, optional
+
+ :param time: Notebook global timeframe.
+ :type time: NotebookGlobalTime
+ """
+ if author is not unset:
+ kwargs["author"] = author
+ if created is not unset:
+ kwargs["created"] = created
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if modified is not unset:
+ kwargs["modified"] = modified
+ if status is not unset:
+ kwargs["status"] = status
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ super().__init__(kwargs)
+
+
+ self_.cells = cells
+ self_.name = name
+ self_.time = time
diff --git a/datadog_api_client/v1/model/notebook_split_by.py b/datadog_api_client/v1/model/notebook_split_by.py
new file mode 100644
index 0000000000..5489d3352e
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_split_by.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookSplitBy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "keys": ([str],),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "keys": "keys",
+ "tags": "tags",
+ }
+
+ def __init__(self_, keys: List[str], tags: List[str], **kwargs):
+ """
+ Object describing how to split the graph to display multiple visualizations per request.
+
+ :param keys: Keys to split on.
+ :type keys: [str]
+
+ :param tags: Tags to split on.
+ :type tags: [str]
+ """
+ super().__init__(kwargs)
+
+
+ self_.keys = keys
+ self_.tags = tags
diff --git a/datadog_api_client/v1/model/notebook_status.py b/datadog_api_client/v1/model/notebook_status.py
new file mode 100644
index 0000000000..0eeb317870
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_status.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotebookStatus(ModelSimple):
+ """
+ Publication status of the notebook. For now, always "published".
+
+ :param value: If omitted defaults to "published". Must be one of ["published"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "published",
+ }
+ PUBLISHED: ClassVar["NotebookStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotebookStatus.PUBLISHED = NotebookStatus("published")
diff --git a/datadog_api_client/v1/model/notebook_template_variable.py b/datadog_api_client/v1/model/notebook_template_variable.py
new file mode 100644
index 0000000000..20f1d9e612
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_template_variable.py
@@ -0,0 +1,110 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query import NotebookTemplateVariableAvailableValuesQuery
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+
+class NotebookTemplateVariable(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query import NotebookTemplateVariableAvailableValuesQuery
+ return {
+ "available_values": ([str], none_type),
+ "available_values_query": (NotebookTemplateVariableAvailableValuesQuery,),
+ "data_source_mappings": ({str: (str,)},),
+ "default": (str, none_type),
+ "defaults": ([str],),
+ "name": (str,),
+ "placement": (str,),
+ "prefix": (str, none_type),
+ "type": (str,),
+ }
+ attribute_map = {
+ "available_values": "available_values",
+ "available_values_query": "available_values_query",
+ "data_source_mappings": "data_source_mappings",
+ "default": "default",
+ "defaults": "defaults",
+ "name": "name",
+ "placement": "placement",
+ "prefix": "prefix",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, available_values: Union[List[str], none_type, UnsetType]=unset, available_values_query: Union[NotebookTemplateVariableAvailableValuesQuery, NotebookTemplateVariableAvailableValuesQueryLogRumSpans, NotebookTemplateVariableAvailableValuesQueryMetrics, UnsetType]=unset, data_source_mappings: Union[Dict[str, str], UnsetType]=unset, default: Union[str, none_type, UnsetType]=unset, defaults: Union[List[str], UnsetType]=unset, placement: Union[str, UnsetType]=unset, prefix: Union[str, none_type, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Notebook template variable.
+
+ :param available_values: The list of values that the template variable drop-down is limited to.
+ :type available_values: [str], none_type, optional
+
+ :param available_values_query: Query used to dynamically populate the list of available values for the template variable.
+ :type available_values_query: NotebookTemplateVariableAvailableValuesQuery, optional
+
+ :param data_source_mappings: Mapping of data source names to template variable values.
+ :type data_source_mappings: {str: (str,)}, optional
+
+ :param default: (deprecated) The default value for the template variable on notebook load.
+ Cannot be used in conjunction with ``defaults``. **Deprecated**.
+ :type default: str, none_type, optional
+
+ :param defaults: One or many default values for the template variable. Cannot be used in conjunction with ``default``.
+ :type defaults: [str], optional
+
+ :param name: The name of the variable.
+ :type name: str
+
+ :param placement: The placement of the template variable in the notebook.
+ :type placement: str, optional
+
+ :param prefix: The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down.
+ :type prefix: str, none_type, optional
+
+ :param type: The type of the template variable.
+ :type type: str, optional
+ """
+ if available_values is not unset:
+ kwargs["available_values"] = available_values
+ if available_values_query is not unset:
+ kwargs["available_values_query"] = available_values_query
+ if data_source_mappings is not unset:
+ kwargs["data_source_mappings"] = data_source_mappings
+ if default is not unset:
+ kwargs["default"] = default
+ if defaults is not unset:
+ kwargs["defaults"] = defaults
+ if placement is not unset:
+ kwargs["placement"] = placement
+ if prefix is not unset:
+ kwargs["prefix"] = prefix
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/notebook_template_variable_available_values_query.py b/datadog_api_client/v1/model/notebook_template_variable_available_values_query.py
new file mode 100644
index 0000000000..96fe3edf52
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_template_variable_available_values_query.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookTemplateVariableAvailableValuesQuery(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Query used to dynamically populate the list of available values for the template variable.
+
+ :param data_source: The data source for the query. Must be one of `logs`, `rum`, or `spans`.
+ :type data_source: str
+
+ :param group_by: Group-by fields for the query.
+ :type group_by: [NotebookTemplateVariableAvailableValuesQueryGroupBy]
+
+ :param search: Search parameters for an available values query.
+ :type search: NotebookTemplateVariableAvailableValuesQuerySearch
+
+ :param query: The metrics query string.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ return {
+ "oneOf": [
+ NotebookTemplateVariableAvailableValuesQueryLogRumSpans,
+ NotebookTemplateVariableAvailableValuesQueryMetrics,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_template_variable_available_values_query_group_by.py b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_group_by.py
new file mode 100644
index 0000000000..3ce3c03aec
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_group_by.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookTemplateVariableAvailableValuesQueryGroupBy(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "facet": (str,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ }
+
+ def __init__(self_, facet: str, **kwargs):
+ """
+ A group-by facet for an available values query.
+
+ :param facet: The facet name to group by.
+ :type facet: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/notebook_template_variable_available_values_query_log_rum_spans.py b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_log_rum_spans.py
new file mode 100644
index 0000000000..c790b7d3dd
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_log_rum_spans.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_group_by import NotebookTemplateVariableAvailableValuesQueryGroupBy
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_search import NotebookTemplateVariableAvailableValuesQuerySearch
+
+class NotebookTemplateVariableAvailableValuesQueryLogRumSpans(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_group_by import NotebookTemplateVariableAvailableValuesQueryGroupBy
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_search import NotebookTemplateVariableAvailableValuesQuerySearch
+ return {
+ "data_source": (str,),
+ "group_by": ([NotebookTemplateVariableAvailableValuesQueryGroupBy],),
+ "search": (NotebookTemplateVariableAvailableValuesQuerySearch,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "search": "search",
+ }
+
+ def __init__(self_, data_source: str, group_by: List[NotebookTemplateVariableAvailableValuesQueryGroupBy], search: NotebookTemplateVariableAvailableValuesQuerySearch, **kwargs):
+ """
+ Available values query for logs, RUM, or spans data sources.
+
+ :param data_source: The data source for the query. Must be one of ``logs`` , ``rum`` , or ``spans``.
+ :type data_source: str
+
+ :param group_by: Group-by fields for the query.
+ :type group_by: [NotebookTemplateVariableAvailableValuesQueryGroupBy]
+
+ :param search: Search parameters for an available values query.
+ :type search: NotebookTemplateVariableAvailableValuesQuerySearch
+ """
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.group_by = group_by
+ self_.search = search
diff --git a/datadog_api_client/v1/model/notebook_template_variable_available_values_query_metrics.py b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_metrics.py
new file mode 100644
index 0000000000..8cd9589da0
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_metrics.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookTemplateVariableAvailableValuesQueryMetrics(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "data_source": (str,),
+ "query": (str,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "query": "query",
+ }
+
+ def __init__(self_, data_source: str, query: str, **kwargs):
+ """
+ Available values query for the metrics data source.
+
+ :param data_source: The data source for the query. Must be ``metrics``.
+ :type data_source: str
+
+ :param query: The metrics query string.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.query = query
diff --git a/datadog_api_client/v1/model/notebook_template_variable_available_values_query_search.py b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_search.py
new file mode 100644
index 0000000000..9a0a188fd5
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_template_variable_available_values_query_search.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookTemplateVariableAvailableValuesQuerySearch(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ }
+ attribute_map = {
+ "query": "query",
+ }
+
+ def __init__(self_, query: str, **kwargs):
+ """
+ Search parameters for an available values query.
+
+ :param query: The search query string.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
diff --git a/datadog_api_client/v1/model/notebook_timeseries_cell_attributes.py b/datadog_api_client/v1/model/notebook_timeseries_cell_attributes.py
new file mode 100644
index 0000000000..48765f21b6
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_timeseries_cell_attributes.py
@@ -0,0 +1,93 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookTimeseriesCellAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ return {
+ "definition": (TimeseriesWidgetDefinition,),
+ "graph_size": (NotebookGraphSize,),
+ "split_by": (NotebookSplitBy,),
+ "time": (NotebookCellTime,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ "graph_size": "graph_size",
+ "split_by": "split_by",
+ "time": "time",
+ }
+
+ def __init__(self_, definition: TimeseriesWidgetDefinition, graph_size: Union[NotebookGraphSize, UnsetType]=unset, split_by: Union[NotebookSplitBy, UnsetType]=unset, time: Union[Union[NotebookCellTime, NotebookRelativeTime, NotebookAbsoluteTime], none_type, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook ``timeseries`` cell.
+
+ :param definition: The timeseries visualization allows you to display the evolution of one or more metrics, log events, or Indexed Spans over time.
+ :type definition: TimeseriesWidgetDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ if graph_size is not unset:
+ kwargs["graph_size"] = graph_size
+ if split_by is not unset:
+ kwargs["split_by"] = split_by
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/notebook_toplist_cell_attributes.py b/datadog_api_client/v1/model/notebook_toplist_cell_attributes.py
new file mode 100644
index 0000000000..72e3402d8b
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_toplist_cell_attributes.py
@@ -0,0 +1,97 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.toplist_widget_stacked import ToplistWidgetStacked
+ from datadog_api_client.v1.model.toplist_widget_flat import ToplistWidgetFlat
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookToplistCellAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+ from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+ from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+ return {
+ "definition": (ToplistWidgetDefinition,),
+ "graph_size": (NotebookGraphSize,),
+ "split_by": (NotebookSplitBy,),
+ "time": (NotebookCellTime,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ "graph_size": "graph_size",
+ "split_by": "split_by",
+ "time": "time",
+ }
+
+ def __init__(self_, definition: ToplistWidgetDefinition, graph_size: Union[NotebookGraphSize, UnsetType]=unset, split_by: Union[NotebookSplitBy, UnsetType]=unset, time: Union[Union[NotebookCellTime, NotebookRelativeTime, NotebookAbsoluteTime], none_type, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook ``toplist`` cell.
+
+ :param definition: The top list visualization enables you to display a list of Tag value like hostname or service with the most or least of any metric value, such as highest consumers of CPU, hosts with the least disk space, etc.
+ :type definition: ToplistWidgetDefinition
+
+ :param graph_size: The size of the graph.
+ :type graph_size: NotebookGraphSize, optional
+
+ :param split_by: Object describing how to split the graph to display multiple visualizations per request.
+ :type split_by: NotebookSplitBy, optional
+
+ :param time: Timeframe for the notebook cell. When 'null', the notebook global time is used.
+ :type time: NotebookCellTime, none_type, optional
+ """
+ if graph_size is not unset:
+ kwargs["graph_size"] = graph_size
+ if split_by is not unset:
+ kwargs["split_by"] = split_by
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/notebook_update_cell.py b/datadog_api_client/v1/model/notebook_update_cell.py
new file mode 100644
index 0000000000..4187cb972b
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_update_cell.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebookUpdateCell(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Updating a notebook can either insert new cell(s) or update existing cell(s) by including the cell ``id``.
+ To delete existing cell(s), simply omit it from the list of cells.
+
+ :param attributes: The attributes of a notebook cell in create cell request. Valid cell types are `markdown`, `timeseries`, `toplist`, `heatmap`, `distribution`,
+ `log_stream`. [More information on each graph visualization type.](https://docs.datadoghq.com/dashboards/widgets/)
+ :type attributes: NotebookCellCreateRequestAttributes
+
+ :param type: Type of the Notebook Cell resource.
+ :type type: NotebookCellResourceType
+
+ :param id: Notebook cell ID.
+ :type id: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+ from datadog_api_client.v1.model.notebook_cell_update_request import NotebookCellUpdateRequest
+ return {
+ "oneOf": [
+ NotebookCellCreateRequest,
+ NotebookCellUpdateRequest,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/notebook_update_data.py b/datadog_api_client/v1/model/notebook_update_data.py
new file mode 100644
index 0000000000..bec2d12003
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_update_data.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_update_data_attributes import NotebookUpdateDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+ from datadog_api_client.v1.model.notebook_cell_update_request import NotebookCellUpdateRequest
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookUpdateData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_update_data_attributes import NotebookUpdateDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ return {
+ "attributes": (NotebookUpdateDataAttributes,),
+ "type": (NotebookResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: NotebookUpdateDataAttributes, type: NotebookResourceType, **kwargs):
+ """
+ The data for a notebook update request.
+
+ :param attributes: The data attributes of a notebook.
+ :type attributes: NotebookUpdateDataAttributes
+
+ :param type: Type of the Notebook resource.
+ :type type: NotebookResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebook_update_data_attributes.py b/datadog_api_client/v1/model/notebook_update_data_attributes.py
new file mode 100644
index 0000000000..e517c255c1
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_update_data_attributes.py
@@ -0,0 +1,101 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_update_cell import NotebookUpdateCell
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+ from datadog_api_client.v1.model.notebook_cell_update_request import NotebookCellUpdateRequest
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookUpdateDataAttributes(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 80,
+ "min_length": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_update_cell import NotebookUpdateCell
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ return {
+ "cells": ([NotebookUpdateCell],),
+ "metadata": (NotebookMetadata,),
+ "name": (str,),
+ "status": (NotebookStatus,),
+ "template_variables": ([NotebookTemplateVariable], none_type),
+ "time": (NotebookGlobalTime,),
+ }
+ attribute_map = {
+ "cells": "cells",
+ "metadata": "metadata",
+ "name": "name",
+ "status": "status",
+ "template_variables": "template_variables",
+ "time": "time",
+ }
+
+ def __init__(self_, cells: List[Union[NotebookUpdateCell, NotebookCellCreateRequest, NotebookCellUpdateRequest]], name: str, time: Union[NotebookGlobalTime, NotebookRelativeTime, NotebookAbsoluteTime], metadata: Union[NotebookMetadata, UnsetType]=unset, status: Union[NotebookStatus, UnsetType]=unset, template_variables: Union[List[NotebookTemplateVariable], none_type, UnsetType]=unset, **kwargs):
+ """
+ The data attributes of a notebook.
+
+ :param cells: List of cells to display in the notebook.
+ :type cells: [NotebookUpdateCell]
+
+ :param metadata: Metadata associated with the notebook.
+ :type metadata: NotebookMetadata, optional
+
+ :param name: The name of the notebook.
+ :type name: str
+
+ :param status: Publication status of the notebook. For now, always "published".
+ :type status: NotebookStatus, optional
+
+ :param template_variables: List of template variables for this notebook.
+ :type template_variables: [NotebookTemplateVariable], none_type, optional
+
+ :param time: Notebook global timeframe.
+ :type time: NotebookGlobalTime
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if status is not unset:
+ kwargs["status"] = status
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ super().__init__(kwargs)
+
+
+ self_.cells = cells
+ self_.name = name
+ self_.time = time
diff --git a/datadog_api_client/v1/model/notebook_update_request.py b/datadog_api_client/v1/model/notebook_update_request.py
new file mode 100644
index 0000000000..f994c13f03
--- /dev/null
+++ b/datadog_api_client/v1/model/notebook_update_request.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_update_data import NotebookUpdateData
+ from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+ from datadog_api_client.v1.model.notebook_cell_update_request import NotebookCellUpdateRequest
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebookUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_update_data import NotebookUpdateData
+ return {
+ "data": (NotebookUpdateData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: NotebookUpdateData, **kwargs):
+ """
+ The description of a notebook update request.
+
+ :param data: The data for a notebook update request.
+ :type data: NotebookUpdateData
+ """
+ super().__init__(kwargs)
+
+
+ self_.data = data
diff --git a/datadog_api_client/v1/model/notebooks_response.py b/datadog_api_client/v1/model/notebooks_response.py
new file mode 100644
index 0000000000..246319a601
--- /dev/null
+++ b/datadog_api_client/v1/model/notebooks_response.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebooks_response_data import NotebooksResponseData
+ from datadog_api_client.v1.model.notebooks_response_meta import NotebooksResponseMeta
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebooksResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebooks_response_data import NotebooksResponseData
+ from datadog_api_client.v1.model.notebooks_response_meta import NotebooksResponseMeta
+ return {
+ "data": ([NotebooksResponseData],),
+ "meta": (NotebooksResponseMeta,),
+ }
+ attribute_map = {
+ "data": "data",
+ "meta": "meta",
+ }
+
+ def __init__(self_, data: Union[List[NotebooksResponseData], UnsetType]=unset, meta: Union[NotebooksResponseMeta, UnsetType]=unset, **kwargs):
+ """
+ Notebooks get all response.
+
+ :param data: List of notebook definitions.
+ :type data: [NotebooksResponseData], optional
+
+ :param meta: Searches metadata returned by the API.
+ :type meta: NotebooksResponseMeta, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if meta is not unset:
+ kwargs["meta"] = meta
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/notebooks_response_data.py b/datadog_api_client/v1/model/notebooks_response_data.py
new file mode 100644
index 0000000000..a56cb2acbd
--- /dev/null
+++ b/datadog_api_client/v1/model/notebooks_response_data.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebooks_response_data_attributes import NotebooksResponseDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebooksResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebooks_response_data_attributes import NotebooksResponseDataAttributes
+ from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+ return {
+ "attributes": (NotebooksResponseDataAttributes,),
+ "id": (int,),
+ "type": (NotebookResourceType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, attributes: NotebooksResponseDataAttributes, id: int, type: NotebookResourceType, **kwargs):
+ """
+ The data for a notebook in get all response.
+
+ :param attributes: The attributes of a notebook in get all response.
+ :type attributes: NotebooksResponseDataAttributes
+
+ :param id: Unique notebook ID, assigned when you create the notebook.
+ :type id: int
+
+ :param type: Type of the Notebook resource.
+ :type type: NotebookResourceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.id = id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/notebooks_response_data_attributes.py b/datadog_api_client/v1/model/notebooks_response_data_attributes.py
new file mode 100644
index 0000000000..50af8d1369
--- /dev/null
+++ b/datadog_api_client/v1/model/notebooks_response_data_attributes.py
@@ -0,0 +1,134 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebook_author import NotebookAuthor
+ from datadog_api_client.v1.model.notebook_cell_response import NotebookCellResponse
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+ from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+ from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+ from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+ from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+ from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+ from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+ from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+ from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+
+class NotebooksResponseDataAttributes(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 80,
+ "min_length": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebook_author import NotebookAuthor
+ from datadog_api_client.v1.model.notebook_cell_response import NotebookCellResponse
+ from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+ from datadog_api_client.v1.model.notebook_status import NotebookStatus
+ from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+ from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+ return {
+ "author": (NotebookAuthor,),
+ "cells": ([NotebookCellResponse],),
+ "created": (datetime,),
+ "metadata": (NotebookMetadata,),
+ "modified": (datetime,),
+ "name": (str,),
+ "status": (NotebookStatus,),
+ "template_variables": ([NotebookTemplateVariable], none_type),
+ "time": (NotebookGlobalTime,),
+ }
+ attribute_map = {
+ "author": "author",
+ "cells": "cells",
+ "created": "created",
+ "metadata": "metadata",
+ "modified": "modified",
+ "name": "name",
+ "status": "status",
+ "template_variables": "template_variables",
+ "time": "time",
+ }
+ read_only_vars = {
+ "created",
+ "modified",
+ }
+
+ def __init__(self_, name: str, author: Union[NotebookAuthor, UnsetType]=unset, cells: Union[List[NotebookCellResponse], UnsetType]=unset, created: Union[datetime, UnsetType]=unset, metadata: Union[NotebookMetadata, UnsetType]=unset, modified: Union[datetime, UnsetType]=unset, status: Union[NotebookStatus, UnsetType]=unset, template_variables: Union[List[NotebookTemplateVariable], none_type, UnsetType]=unset, time: Union[NotebookGlobalTime, NotebookRelativeTime, NotebookAbsoluteTime, UnsetType]=unset, **kwargs):
+ """
+ The attributes of a notebook in get all response.
+
+ :param author: Attributes of user object returned by the API.
+ :type author: NotebookAuthor, optional
+
+ :param cells: List of cells to display in the notebook.
+ :type cells: [NotebookCellResponse], optional
+
+ :param created: UTC time stamp for when the notebook was created.
+ :type created: datetime, optional
+
+ :param metadata: Metadata associated with the notebook.
+ :type metadata: NotebookMetadata, optional
+
+ :param modified: UTC time stamp for when the notebook was last modified.
+ :type modified: datetime, optional
+
+ :param name: The name of the notebook.
+ :type name: str
+
+ :param status: Publication status of the notebook. For now, always "published".
+ :type status: NotebookStatus, optional
+
+ :param template_variables: List of template variables for this notebook.
+ :type template_variables: [NotebookTemplateVariable], none_type, optional
+
+ :param time: Notebook global timeframe.
+ :type time: NotebookGlobalTime, optional
+ """
+ if author is not unset:
+ kwargs["author"] = author
+ if cells is not unset:
+ kwargs["cells"] = cells
+ if created is not unset:
+ kwargs["created"] = created
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if modified is not unset:
+ kwargs["modified"] = modified
+ if status is not unset:
+ kwargs["status"] = status
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/notebooks_response_meta.py b/datadog_api_client/v1/model/notebooks_response_meta.py
new file mode 100644
index 0000000000..c3654f90c4
--- /dev/null
+++ b/datadog_api_client/v1/model/notebooks_response_meta.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.notebooks_response_page import NotebooksResponsePage
+
+class NotebooksResponseMeta(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.notebooks_response_page import NotebooksResponsePage
+ return {
+ "page": (NotebooksResponsePage,),
+ }
+ attribute_map = {
+ "page": "page",
+ }
+
+ def __init__(self_, page: Union[NotebooksResponsePage, UnsetType]=unset, **kwargs):
+ """
+ Searches metadata returned by the API.
+
+ :param page: Pagination metadata returned by the API.
+ :type page: NotebooksResponsePage, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/notebooks_response_page.py b/datadog_api_client/v1/model/notebooks_response_page.py
new file mode 100644
index 0000000000..6fdef04281
--- /dev/null
+++ b/datadog_api_client/v1/model/notebooks_response_page.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NotebooksResponsePage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_count": (int,),
+ "total_filtered_count": (int,),
+ }
+ attribute_map = {
+ "total_count": "total_count",
+ "total_filtered_count": "total_filtered_count",
+ }
+
+ def __init__(self_, total_count: Union[int, UnsetType]=unset, total_filtered_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Pagination metadata returned by the API.
+
+ :param total_count: The total number of notebooks that would be returned if the request was not filtered by ``start`` and ``count`` parameters.
+ :type total_count: int, optional
+
+ :param total_filtered_count: The total number of notebooks returned.
+ :type total_filtered_count: int, optional
+ """
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ if total_filtered_count is not unset:
+ kwargs["total_filtered_count"] = total_filtered_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/notify_end_state.py b/datadog_api_client/v1/model/notify_end_state.py
new file mode 100644
index 0000000000..f91d1c01e2
--- /dev/null
+++ b/datadog_api_client/v1/model/notify_end_state.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotifyEndState(ModelSimple):
+ """
+ A notification end state.
+
+ :param value: Must be one of ["alert", "no data", "warn"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "alert",
+ "no data",
+ "warn",
+ }
+ ALERT: ClassVar["NotifyEndState"]
+ NO_DATA: ClassVar["NotifyEndState"]
+ WARN: ClassVar["NotifyEndState"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotifyEndState.ALERT = NotifyEndState("alert")
+NotifyEndState.NO_DATA = NotifyEndState("no data")
+NotifyEndState.WARN = NotifyEndState("warn")
diff --git a/datadog_api_client/v1/model/notify_end_type.py b/datadog_api_client/v1/model/notify_end_type.py
new file mode 100644
index 0000000000..7e20e41869
--- /dev/null
+++ b/datadog_api_client/v1/model/notify_end_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NotifyEndType(ModelSimple):
+ """
+ A notification end type.
+
+ :param value: Must be one of ["canceled", "expired"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "canceled",
+ "expired",
+ }
+ CANCELED: ClassVar["NotifyEndType"]
+ EXPIRED: ClassVar["NotifyEndType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NotifyEndType.CANCELED = NotifyEndType("canceled")
+NotifyEndType.EXPIRED = NotifyEndType("expired")
diff --git a/datadog_api_client/v1/model/number_format_unit.py b/datadog_api_client/v1/model/number_format_unit.py
new file mode 100644
index 0000000000..bb6cf335f8
--- /dev/null
+++ b/datadog_api_client/v1/model/number_format_unit.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class NumberFormatUnit(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Number format unit.
+
+ :param per_unit_name: The name of the unit per item.
+ :type per_unit_name: str, optional
+
+ :param type: The type of unit scale.
+ :type type: NumberFormatUnitScaleType, optional
+
+ :param unit_name: The name of the unit.
+ :type unit_name: str, optional
+
+ :param label: The label for the custom unit.
+ :type label: str, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ return {
+ "oneOf": [
+ NumberFormatUnitCanonical,
+ NumberFormatUnitCustom,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/number_format_unit_canonical.py b/datadog_api_client/v1/model/number_format_unit_canonical.py
new file mode 100644
index 0000000000..b742c9fcc8
--- /dev/null
+++ b/datadog_api_client/v1/model/number_format_unit_canonical.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.number_format_unit_scale_type import NumberFormatUnitScaleType
+
+class NumberFormatUnitCanonical(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.number_format_unit_scale_type import NumberFormatUnitScaleType
+ return {
+ "per_unit_name": (str,),
+ "type": (NumberFormatUnitScaleType,),
+ "unit_name": (str,),
+ }
+ attribute_map = {
+ "per_unit_name": "per_unit_name",
+ "type": "type",
+ "unit_name": "unit_name",
+ }
+
+ def __init__(self_, per_unit_name: Union[str, UnsetType]=unset, type: Union[NumberFormatUnitScaleType, UnsetType]=unset, unit_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Canonical unit.
+
+ :param per_unit_name: The name of the unit per item.
+ :type per_unit_name: str, optional
+
+ :param type: The type of unit scale.
+ :type type: NumberFormatUnitScaleType, optional
+
+ :param unit_name: The name of the unit.
+ :type unit_name: str, optional
+ """
+ if per_unit_name is not unset:
+ kwargs["per_unit_name"] = per_unit_name
+ if type is not unset:
+ kwargs["type"] = type
+ if unit_name is not unset:
+ kwargs["unit_name"] = unit_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/number_format_unit_custom.py b/datadog_api_client/v1/model/number_format_unit_custom.py
new file mode 100644
index 0000000000..e5efeec1e4
--- /dev/null
+++ b/datadog_api_client/v1/model/number_format_unit_custom.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.number_format_unit_custom_type import NumberFormatUnitCustomType
+
+class NumberFormatUnitCustom(ModelNormal):
+ validations = {
+ "label": {
+ "max_length": 12,
+ "min_length": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.number_format_unit_custom_type import NumberFormatUnitCustomType
+ return {
+ "label": (str,),
+ "type": (NumberFormatUnitCustomType,),
+ }
+ attribute_map = {
+ "label": "label",
+ "type": "type",
+ }
+
+ def __init__(self_, label: Union[str, UnsetType]=unset, type: Union[NumberFormatUnitCustomType, UnsetType]=unset, **kwargs):
+ """
+ Custom unit.
+
+ :param label: The label for the custom unit.
+ :type label: str, optional
+
+ :param type: The type of custom unit.
+ :type type: NumberFormatUnitCustomType, optional
+ """
+ if label is not unset:
+ kwargs["label"] = label
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/number_format_unit_custom_type.py b/datadog_api_client/v1/model/number_format_unit_custom_type.py
new file mode 100644
index 0000000000..2edbf0634e
--- /dev/null
+++ b/datadog_api_client/v1/model/number_format_unit_custom_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NumberFormatUnitCustomType(ModelSimple):
+ """
+ The type of custom unit.
+
+ :param value: If omitted defaults to "custom_unit_label". Must be one of ["custom_unit_label"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "custom_unit_label",
+ }
+ CUSTOM_UNIT_LABEL: ClassVar["NumberFormatUnitCustomType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NumberFormatUnitCustomType.CUSTOM_UNIT_LABEL = NumberFormatUnitCustomType("custom_unit_label")
diff --git a/datadog_api_client/v1/model/number_format_unit_scale.py b/datadog_api_client/v1/model/number_format_unit_scale.py
new file mode 100644
index 0000000000..15fadd6565
--- /dev/null
+++ b/datadog_api_client/v1/model/number_format_unit_scale.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.number_format_unit_scale_type import NumberFormatUnitScaleType
+
+class NumberFormatUnitScale(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.number_format_unit_scale_type import NumberFormatUnitScaleType
+ return {
+ "type": (NumberFormatUnitScaleType,),
+ "unit_name": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ "unit_name": "unit_name",
+ }
+
+ def __init__(self_, type: Union[NumberFormatUnitScaleType, UnsetType]=unset, unit_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The definition of ``NumberFormatUnitScale`` object.
+
+ :param type: The type of unit scale.
+ :type type: NumberFormatUnitScaleType, optional
+
+ :param unit_name: The name of the unit.
+ :type unit_name: str, optional
+ """
+ if type is not unset:
+ kwargs["type"] = type
+ if unit_name is not unset:
+ kwargs["unit_name"] = unit_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/number_format_unit_scale_type.py b/datadog_api_client/v1/model/number_format_unit_scale_type.py
new file mode 100644
index 0000000000..7438d59266
--- /dev/null
+++ b/datadog_api_client/v1/model/number_format_unit_scale_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class NumberFormatUnitScaleType(ModelSimple):
+ """
+ The type of unit scale.
+
+ :param value: If omitted defaults to "canonical_unit". Must be one of ["canonical_unit"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "canonical_unit",
+ }
+ CANONICAL_UNIT: ClassVar["NumberFormatUnitScaleType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+NumberFormatUnitScaleType.CANONICAL_UNIT = NumberFormatUnitScaleType("canonical_unit")
diff --git a/datadog_api_client/v1/model/on_missing_data_option.py b/datadog_api_client/v1/model/on_missing_data_option.py
new file mode 100644
index 0000000000..bc446a8d37
--- /dev/null
+++ b/datadog_api_client/v1/model/on_missing_data_option.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class OnMissingDataOption(ModelSimple):
+ """
+ Controls how groups or monitors are treated if an evaluation does not return any data points.
+ The default option results in different behavior depending on the monitor query type.
+ For monitors using Count queries, an empty monitor evaluation is treated as 0 and is compared to the threshold conditions.
+ For monitors using any query type other than Count, for example Gauge, Measure, or Rate, the monitor shows the last known status.
+ This option is available for APM Trace Analytics, Audit Trail, CI, Error Tracking, Event, Logs, and RUM monitors.
+ It is also required for metric monitors that use `scheduling_options.custom_schedule`.
+
+ :param value: Must be one of ["default", "show_no_data", "show_and_notify_no_data", "resolve"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "default",
+ "show_no_data",
+ "show_and_notify_no_data",
+ "resolve",
+ }
+ DEFAULT: ClassVar["OnMissingDataOption"]
+ SHOW_NO_DATA: ClassVar["OnMissingDataOption"]
+ SHOW_AND_NOTIFY_NO_DATA: ClassVar["OnMissingDataOption"]
+ RESOLVE: ClassVar["OnMissingDataOption"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+OnMissingDataOption.DEFAULT = OnMissingDataOption("default")
+OnMissingDataOption.SHOW_NO_DATA = OnMissingDataOption("show_no_data")
+OnMissingDataOption.SHOW_AND_NOTIFY_NO_DATA = OnMissingDataOption("show_and_notify_no_data")
+OnMissingDataOption.RESOLVE = OnMissingDataOption("resolve")
diff --git a/datadog_api_client/v1/model/org_downgraded_response.py b/datadog_api_client/v1/model/org_downgraded_response.py
new file mode 100644
index 0000000000..9dc3249ef1
--- /dev/null
+++ b/datadog_api_client/v1/model/org_downgraded_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrgDowngradedResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "message": (str,),
+ }
+ attribute_map = {
+ "message": "message",
+ }
+
+ def __init__(self_, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Status of downgrade
+
+ :param message: Information pertaining to the downgraded child organization.
+ :type message: str, optional
+ """
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization.py b/datadog_api_client/v1/model/organization.py
new file mode 100644
index 0000000000..e18ac56444
--- /dev/null
+++ b/datadog_api_client/v1/model/organization.py
@@ -0,0 +1,110 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.organization_billing import OrganizationBilling
+ from datadog_api_client.v1.model.organization_settings import OrganizationSettings
+ from datadog_api_client.v1.model.organization_subscription import OrganizationSubscription
+
+class Organization(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 32,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.organization_billing import OrganizationBilling
+ from datadog_api_client.v1.model.organization_settings import OrganizationSettings
+ from datadog_api_client.v1.model.organization_subscription import OrganizationSubscription
+ return {
+ "billing": (OrganizationBilling,),
+ "created": (str,),
+ "description": (str,),
+ "name": (str,),
+ "public_id": (str,),
+ "settings": (OrganizationSettings,),
+ "subscription": (OrganizationSubscription,),
+ "trial": (bool,),
+ }
+ attribute_map = {
+ "billing": "billing",
+ "created": "created",
+ "description": "description",
+ "name": "name",
+ "public_id": "public_id",
+ "settings": "settings",
+ "subscription": "subscription",
+ "trial": "trial",
+ }
+ read_only_vars = {
+ "created",
+ }
+
+ def __init__(self_, billing: Union[OrganizationBilling, UnsetType]=unset, created: Union[str, UnsetType]=unset, description: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, settings: Union[OrganizationSettings, UnsetType]=unset, subscription: Union[OrganizationSubscription, UnsetType]=unset, trial: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Create, edit, and manage organizations.
+
+ :param billing: A JSON array of billing type. **Deprecated**.
+ :type billing: OrganizationBilling, optional
+
+ :param created: Date of the organization creation.
+ :type created: str, optional
+
+ :param description: Description of the organization.
+ :type description: str, optional
+
+ :param name: The name of the child organization, limited to 32 characters.
+ :type name: str, optional
+
+ :param public_id: The ``public_id`` of the organization you are operating within.
+ :type public_id: str, optional
+
+ :param settings: A JSON array of settings.
+ :type settings: OrganizationSettings, optional
+
+ :param subscription: Subscription definition. **Deprecated**.
+ :type subscription: OrganizationSubscription, optional
+
+ :param trial: Only available for MSP customers. Allows child organizations to be created on a trial plan.
+ :type trial: bool, optional
+ """
+ if billing is not unset:
+ kwargs["billing"] = billing
+ if created is not unset:
+ kwargs["created"] = created
+ if description is not unset:
+ kwargs["description"] = description
+ if name is not unset:
+ kwargs["name"] = name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if settings is not unset:
+ kwargs["settings"] = settings
+ if subscription is not unset:
+ kwargs["subscription"] = subscription
+ if trial is not unset:
+ kwargs["trial"] = trial
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_billing.py b/datadog_api_client/v1/model/organization_billing.py
new file mode 100644
index 0000000000..a14c982c51
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_billing.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrganizationBilling(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "type": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A JSON array of billing type.
+
+ :param type: The type of billing. Only ``parent_billing`` is supported.
+ :type type: str, optional
+ """
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_create_body.py b/datadog_api_client/v1/model/organization_create_body.py
new file mode 100644
index 0000000000..6d9072c7b8
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_create_body.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.organization_billing import OrganizationBilling
+ from datadog_api_client.v1.model.organization_subscription import OrganizationSubscription
+
+class OrganizationCreateBody(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 32,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.organization_billing import OrganizationBilling
+ from datadog_api_client.v1.model.organization_subscription import OrganizationSubscription
+ return {
+ "billing": (OrganizationBilling,),
+ "name": (str,),
+ "subscription": (OrganizationSubscription,),
+ }
+ attribute_map = {
+ "billing": "billing",
+ "name": "name",
+ "subscription": "subscription",
+ }
+
+ def __init__(self_, name: str, billing: Union[OrganizationBilling, UnsetType]=unset, subscription: Union[OrganizationSubscription, UnsetType]=unset, **kwargs):
+ """
+ Object describing an organization to create.
+
+ :param billing: A JSON array of billing type. **Deprecated**.
+ :type billing: OrganizationBilling, optional
+
+ :param name: The name of the new child-organization, limited to 32 characters.
+ :type name: str
+
+ :param subscription: Subscription definition. **Deprecated**.
+ :type subscription: OrganizationSubscription, optional
+ """
+ if billing is not unset:
+ kwargs["billing"] = billing
+ if subscription is not unset:
+ kwargs["subscription"] = subscription
+ super().__init__(kwargs)
+
+
+ self_.name = name
diff --git a/datadog_api_client/v1/model/organization_create_response.py b/datadog_api_client/v1/model/organization_create_response.py
new file mode 100644
index 0000000000..0db80ae0ec
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_create_response.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.api_key import ApiKey
+ from datadog_api_client.v1.model.application_key import ApplicationKey
+ from datadog_api_client.v1.model.organization import Organization
+ from datadog_api_client.v1.model.user import User
+
+class OrganizationCreateResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.api_key import ApiKey
+ from datadog_api_client.v1.model.application_key import ApplicationKey
+ from datadog_api_client.v1.model.organization import Organization
+ from datadog_api_client.v1.model.user import User
+ return {
+ "api_key": (ApiKey,),
+ "application_key": (ApplicationKey,),
+ "org": (Organization,),
+ "user": (User,),
+ }
+ attribute_map = {
+ "api_key": "api_key",
+ "application_key": "application_key",
+ "org": "org",
+ "user": "user",
+ }
+
+ def __init__(self_, api_key: Union[ApiKey, UnsetType]=unset, application_key: Union[ApplicationKey, UnsetType]=unset, org: Union[Organization, UnsetType]=unset, user: Union[User, UnsetType]=unset, **kwargs):
+ """
+ Response object for an organization creation.
+
+ :param api_key: Datadog API key.
+ :type api_key: ApiKey, optional
+
+ :param application_key: An application key with its associated metadata.
+ :type application_key: ApplicationKey, optional
+
+ :param org: Create, edit, and manage organizations.
+ :type org: Organization, optional
+
+ :param user: Create, edit, and disable users.
+ :type user: User, optional
+ """
+ if api_key is not unset:
+ kwargs["api_key"] = api_key
+ if application_key is not unset:
+ kwargs["application_key"] = application_key
+ if org is not unset:
+ kwargs["org"] = org
+ if user is not unset:
+ kwargs["user"] = user
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_list_response.py b/datadog_api_client/v1/model/organization_list_response.py
new file mode 100644
index 0000000000..0de05c9894
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.organization import Organization
+
+class OrganizationListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.organization import Organization
+ return {
+ "orgs": ([Organization],),
+ }
+ attribute_map = {
+ "orgs": "orgs",
+ }
+
+ def __init__(self_, orgs: Union[List[Organization], UnsetType]=unset, **kwargs):
+ """
+ Response with the list of organizations.
+
+ :param orgs: Array of organization objects.
+ :type orgs: [Organization], optional
+ """
+ if orgs is not unset:
+ kwargs["orgs"] = orgs
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_response.py b/datadog_api_client/v1/model/organization_response.py
new file mode 100644
index 0000000000..dc49220e61
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.organization import Organization
+
+class OrganizationResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.organization import Organization
+ return {
+ "org": (Organization,),
+ }
+ attribute_map = {
+ "org": "org",
+ }
+
+ def __init__(self_, org: Union[Organization, UnsetType]=unset, **kwargs):
+ """
+ Response with an organization.
+
+ :param org: Create, edit, and manage organizations.
+ :type org: Organization, optional
+ """
+ if org is not unset:
+ kwargs["org"] = org
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_settings.py b/datadog_api_client/v1/model/organization_settings.py
new file mode 100644
index 0000000000..5a368967e1
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_settings.py
@@ -0,0 +1,121 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.organization_settings_saml import OrganizationSettingsSaml
+ from datadog_api_client.v1.model.access_role import AccessRole
+ from datadog_api_client.v1.model.organization_settings_saml_autocreate_users_domains import OrganizationSettingsSamlAutocreateUsersDomains
+ from datadog_api_client.v1.model.organization_settings_saml_idp_initiated_login import OrganizationSettingsSamlIdpInitiatedLogin
+ from datadog_api_client.v1.model.organization_settings_saml_strict_mode import OrganizationSettingsSamlStrictMode
+
+class OrganizationSettings(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.organization_settings_saml import OrganizationSettingsSaml
+ from datadog_api_client.v1.model.access_role import AccessRole
+ from datadog_api_client.v1.model.organization_settings_saml_autocreate_users_domains import OrganizationSettingsSamlAutocreateUsersDomains
+ from datadog_api_client.v1.model.organization_settings_saml_idp_initiated_login import OrganizationSettingsSamlIdpInitiatedLogin
+ from datadog_api_client.v1.model.organization_settings_saml_strict_mode import OrganizationSettingsSamlStrictMode
+ return {
+ "private_widget_share": (bool,),
+ "saml": (OrganizationSettingsSaml,),
+ "saml_autocreate_access_role": (AccessRole,),
+ "saml_autocreate_users_domains": (OrganizationSettingsSamlAutocreateUsersDomains,),
+ "saml_can_be_enabled": (bool,),
+ "saml_idp_endpoint": (str,),
+ "saml_idp_initiated_login": (OrganizationSettingsSamlIdpInitiatedLogin,),
+ "saml_idp_metadata_uploaded": (bool,),
+ "saml_login_url": (str,),
+ "saml_strict_mode": (OrganizationSettingsSamlStrictMode,),
+ }
+ attribute_map = {
+ "private_widget_share": "private_widget_share",
+ "saml": "saml",
+ "saml_autocreate_access_role": "saml_autocreate_access_role",
+ "saml_autocreate_users_domains": "saml_autocreate_users_domains",
+ "saml_can_be_enabled": "saml_can_be_enabled",
+ "saml_idp_endpoint": "saml_idp_endpoint",
+ "saml_idp_initiated_login": "saml_idp_initiated_login",
+ "saml_idp_metadata_uploaded": "saml_idp_metadata_uploaded",
+ "saml_login_url": "saml_login_url",
+ "saml_strict_mode": "saml_strict_mode",
+ }
+
+ def __init__(self_, private_widget_share: Union[bool, UnsetType]=unset, saml: Union[OrganizationSettingsSaml, UnsetType]=unset, saml_autocreate_access_role: Union[AccessRole, none_type, UnsetType]=unset, saml_autocreate_users_domains: Union[OrganizationSettingsSamlAutocreateUsersDomains, UnsetType]=unset, saml_can_be_enabled: Union[bool, UnsetType]=unset, saml_idp_endpoint: Union[str, UnsetType]=unset, saml_idp_initiated_login: Union[OrganizationSettingsSamlIdpInitiatedLogin, UnsetType]=unset, saml_idp_metadata_uploaded: Union[bool, UnsetType]=unset, saml_login_url: Union[str, UnsetType]=unset, saml_strict_mode: Union[OrganizationSettingsSamlStrictMode, UnsetType]=unset, **kwargs):
+ """
+ A JSON array of settings.
+
+ :param private_widget_share: Whether or not the organization users can share widgets outside of Datadog.
+ :type private_widget_share: bool, optional
+
+ :param saml: Set the boolean property enabled to enable or disable single sign on with SAML.
+ See the SAML documentation for more information about all SAML settings.
+ :type saml: OrganizationSettingsSaml, optional
+
+ :param saml_autocreate_access_role: The access role of the user. Options are **st** (standard user), **adm** (admin user), or **ro** (read-only user).
+ :type saml_autocreate_access_role: AccessRole, none_type, optional
+
+ :param saml_autocreate_users_domains: Has two properties, ``enabled`` (boolean) and ``domains`` , which is a list of domains without the @ symbol.
+ :type saml_autocreate_users_domains: OrganizationSettingsSamlAutocreateUsersDomains, optional
+
+ :param saml_can_be_enabled: Whether or not SAML can be enabled for this organization.
+ :type saml_can_be_enabled: bool, optional
+
+ :param saml_idp_endpoint: Identity provider endpoint for SAML authentication.
+ :type saml_idp_endpoint: str, optional
+
+ :param saml_idp_initiated_login: Has one property enabled (boolean).
+ :type saml_idp_initiated_login: OrganizationSettingsSamlIdpInitiatedLogin, optional
+
+ :param saml_idp_metadata_uploaded: Whether or not a SAML identity provider metadata file was provided to the Datadog organization.
+ :type saml_idp_metadata_uploaded: bool, optional
+
+ :param saml_login_url: URL for SAML logging.
+ :type saml_login_url: str, optional
+
+ :param saml_strict_mode: Has one property enabled (boolean).
+ :type saml_strict_mode: OrganizationSettingsSamlStrictMode, optional
+ """
+ if private_widget_share is not unset:
+ kwargs["private_widget_share"] = private_widget_share
+ if saml is not unset:
+ kwargs["saml"] = saml
+ if saml_autocreate_access_role is not unset:
+ kwargs["saml_autocreate_access_role"] = saml_autocreate_access_role
+ if saml_autocreate_users_domains is not unset:
+ kwargs["saml_autocreate_users_domains"] = saml_autocreate_users_domains
+ if saml_can_be_enabled is not unset:
+ kwargs["saml_can_be_enabled"] = saml_can_be_enabled
+ if saml_idp_endpoint is not unset:
+ kwargs["saml_idp_endpoint"] = saml_idp_endpoint
+ if saml_idp_initiated_login is not unset:
+ kwargs["saml_idp_initiated_login"] = saml_idp_initiated_login
+ if saml_idp_metadata_uploaded is not unset:
+ kwargs["saml_idp_metadata_uploaded"] = saml_idp_metadata_uploaded
+ if saml_login_url is not unset:
+ kwargs["saml_login_url"] = saml_login_url
+ if saml_strict_mode is not unset:
+ kwargs["saml_strict_mode"] = saml_strict_mode
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_settings_saml.py b/datadog_api_client/v1/model/organization_settings_saml.py
new file mode 100644
index 0000000000..3dfd9ab079
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_settings_saml.py
@@ -0,0 +1,47 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrganizationSettingsSaml(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "enabled": (bool,),
+ }
+ attribute_map = {
+ "enabled": "enabled",
+ }
+
+ def __init__(self_, enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Set the boolean property enabled to enable or disable single sign on with SAML.
+ See the SAML documentation for more information about all SAML settings.
+
+ :param enabled: Whether or not SAML is enabled for this organization.
+ :type enabled: bool, optional
+ """
+ if enabled is not unset:
+ kwargs["enabled"] = enabled
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_settings_saml_autocreate_users_domains.py b/datadog_api_client/v1/model/organization_settings_saml_autocreate_users_domains.py
new file mode 100644
index 0000000000..e68b71fdcc
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_settings_saml_autocreate_users_domains.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrganizationSettingsSamlAutocreateUsersDomains(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "domains": ([str],),
+ "enabled": (bool,),
+ }
+ attribute_map = {
+ "domains": "domains",
+ "enabled": "enabled",
+ }
+
+ def __init__(self_, domains: Union[List[str], UnsetType]=unset, enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Has two properties, ``enabled`` (boolean) and ``domains`` , which is a list of domains without the @ symbol.
+
+ :param domains: List of domains where the SAML automated user creation is enabled.
+ :type domains: [str], optional
+
+ :param enabled: Whether or not the automated user creation based on SAML domain is enabled.
+ :type enabled: bool, optional
+ """
+ if domains is not unset:
+ kwargs["domains"] = domains
+ if enabled is not unset:
+ kwargs["enabled"] = enabled
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_settings_saml_idp_initiated_login.py b/datadog_api_client/v1/model/organization_settings_saml_idp_initiated_login.py
new file mode 100644
index 0000000000..724c60f0da
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_settings_saml_idp_initiated_login.py
@@ -0,0 +1,47 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrganizationSettingsSamlIdpInitiatedLogin(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "enabled": (bool,),
+ }
+ attribute_map = {
+ "enabled": "enabled",
+ }
+
+ def __init__(self_, enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Has one property enabled (boolean).
+
+ :param enabled: Whether SAML IdP initiated login is enabled, learn more
+ in the `SAML documentation `_.
+ :type enabled: bool, optional
+ """
+ if enabled is not unset:
+ kwargs["enabled"] = enabled
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_settings_saml_strict_mode.py b/datadog_api_client/v1/model/organization_settings_saml_strict_mode.py
new file mode 100644
index 0000000000..a85e12847b
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_settings_saml_strict_mode.py
@@ -0,0 +1,47 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrganizationSettingsSamlStrictMode(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "enabled": (bool,),
+ }
+ attribute_map = {
+ "enabled": "enabled",
+ }
+
+ def __init__(self_, enabled: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Has one property enabled (boolean).
+
+ :param enabled: Whether or not the SAML strict mode is enabled. If true, all users must log in with SAML.
+ Learn more on the `SAML Strict documentation `_.
+ :type enabled: bool, optional
+ """
+ if enabled is not unset:
+ kwargs["enabled"] = enabled
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/organization_subscription.py b/datadog_api_client/v1/model/organization_subscription.py
new file mode 100644
index 0000000000..6a338a41bb
--- /dev/null
+++ b/datadog_api_client/v1/model/organization_subscription.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class OrganizationSubscription(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "type": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Subscription definition.
+
+ :param type: The subscription type. Types available are ``trial`` , ``free`` , and ``pro``.
+ :type type: str, optional
+ """
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/pager_duty_service.py b/datadog_api_client/v1/model/pager_duty_service.py
new file mode 100644
index 0000000000..0cfa4e928e
--- /dev/null
+++ b/datadog_api_client/v1/model/pager_duty_service.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class PagerDutyService(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "service_key": (str,),
+ "service_name": (str,),
+ }
+ attribute_map = {
+ "service_key": "service_key",
+ "service_name": "service_name",
+ }
+
+ def __init__(self_, service_key: str, service_name: str, **kwargs):
+ """
+ The PagerDuty service that is available for integration with Datadog.
+
+ :param service_key: Your service key in PagerDuty.
+ :type service_key: str
+
+ :param service_name: Your service name associated with a service key in PagerDuty.
+ :type service_name: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.service_key = service_key
+ self_.service_name = service_name
diff --git a/datadog_api_client/v1/model/pager_duty_service_key.py b/datadog_api_client/v1/model/pager_duty_service_key.py
new file mode 100644
index 0000000000..ace91cb31c
--- /dev/null
+++ b/datadog_api_client/v1/model/pager_duty_service_key.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class PagerDutyServiceKey(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "service_key": (str,),
+ }
+ attribute_map = {
+ "service_key": "service_key",
+ }
+
+ def __init__(self_, service_key: str, **kwargs):
+ """
+ PagerDuty service object key.
+
+ :param service_key: Your service key in PagerDuty.
+ :type service_key: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.service_key = service_key
diff --git a/datadog_api_client/v1/model/pager_duty_service_name.py b/datadog_api_client/v1/model/pager_duty_service_name.py
new file mode 100644
index 0000000000..d410d6c506
--- /dev/null
+++ b/datadog_api_client/v1/model/pager_duty_service_name.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class PagerDutyServiceName(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "service_name": (str,),
+ }
+ attribute_map = {
+ "service_name": "service_name",
+ }
+
+ def __init__(self_, service_name: str, **kwargs):
+ """
+ PagerDuty service object name.
+
+ :param service_name: Your service name associated service key in PagerDuty.
+ :type service_name: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.service_name = service_name
diff --git a/datadog_api_client/v1/model/pagination.py b/datadog_api_client/v1/model/pagination.py
new file mode 100644
index 0000000000..748b085872
--- /dev/null
+++ b/datadog_api_client/v1/model/pagination.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class Pagination(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_count": (int,),
+ "total_filtered_count": (int,),
+ }
+ attribute_map = {
+ "total_count": "total_count",
+ "total_filtered_count": "total_filtered_count",
+ }
+
+ def __init__(self_, total_count: Union[int, UnsetType]=unset, total_filtered_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Pagination object.
+
+ :param total_count: Total count.
+ :type total_count: int, optional
+
+ :param total_filtered_count: Total count of elements matched by the filter.
+ :type total_filtered_count: int, optional
+ """
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ if total_filtered_count is not unset:
+ kwargs["total_filtered_count"] = total_filtered_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/point.py b/datadog_api_client/v1/model/point.py
new file mode 100644
index 0000000000..d221b8daab
--- /dev/null
+++ b/datadog_api_client/v1/model/point.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class Point(ModelSimple):
+ """
+ Array of timeseries points.
+
+
+ :type value: [float, none_type]
+ """
+
+
+ validations = {
+ "value": {
+ "max_items": 2,
+ "min_items": 2,
+ },
+ }
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": ([float, none_type],),
+ }
diff --git a/datadog_api_client/v1/model/point_plot_dimension.py b/datadog_api_client/v1/model/point_plot_dimension.py
new file mode 100644
index 0000000000..eafdc5843e
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_dimension.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class PointPlotDimension(ModelSimple):
+ """
+ Dimension of the point plot.
+
+ :param value: Must be one of ["group", "time", "y", "radius"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "group",
+ "time",
+ "y",
+ "radius",
+ }
+ GROUP: ClassVar["PointPlotDimension"]
+ TIME: ClassVar["PointPlotDimension"]
+ Y: ClassVar["PointPlotDimension"]
+ RADIUS: ClassVar["PointPlotDimension"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+PointPlotDimension.GROUP = PointPlotDimension("group")
+PointPlotDimension.TIME = PointPlotDimension("time")
+PointPlotDimension.Y = PointPlotDimension("y")
+PointPlotDimension.RADIUS = PointPlotDimension("radius")
diff --git a/datadog_api_client/v1/model/point_plot_projection.py b/datadog_api_client/v1/model/point_plot_projection.py
new file mode 100644
index 0000000000..9f2121a687
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_projection.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.point_plot_projection_dimension import PointPlotProjectionDimension
+ from datadog_api_client.v1.model.point_plot_projection_type import PointPlotProjectionType
+
+class PointPlotProjection(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.point_plot_projection_dimension import PointPlotProjectionDimension
+ from datadog_api_client.v1.model.point_plot_projection_type import PointPlotProjectionType
+ return {
+ "dimensions": ([PointPlotProjectionDimension],),
+ "extra_columns": ([str],),
+ "type": (PointPlotProjectionType,),
+ }
+ attribute_map = {
+ "dimensions": "dimensions",
+ "extra_columns": "extra_columns",
+ "type": "type",
+ }
+
+ def __init__(self_, dimensions: List[PointPlotProjectionDimension], type: PointPlotProjectionType, extra_columns: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Projection configuration for the point plot widget.
+
+ :param dimensions: List of dimension mappings for the projection.
+ :type dimensions: [PointPlotProjectionDimension]
+
+ :param extra_columns: Additional columns to include in the projection.
+ :type extra_columns: [str], optional
+
+ :param type: Type of the projection.
+ :type type: PointPlotProjectionType
+ """
+ if extra_columns is not unset:
+ kwargs["extra_columns"] = extra_columns
+ super().__init__(kwargs)
+
+
+ self_.dimensions = dimensions
+ self_.type = type
diff --git a/datadog_api_client/v1/model/point_plot_projection_dimension.py b/datadog_api_client/v1/model/point_plot_projection_dimension.py
new file mode 100644
index 0000000000..920229a30f
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_projection_dimension.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.point_plot_dimension import PointPlotDimension
+
+class PointPlotProjectionDimension(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.point_plot_dimension import PointPlotDimension
+ return {
+ "alias": (str,),
+ "column": (str,),
+ "dimension": (PointPlotDimension,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "column": "column",
+ "dimension": "dimension",
+ }
+
+ def __init__(self_, column: str, dimension: PointPlotDimension, alias: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Dimension mapping for the point plot projection.
+
+ :param alias: Alias for the column.
+ :type alias: str, optional
+
+ :param column: Source column name from the dataset.
+ :type column: str
+
+ :param dimension: Dimension of the point plot.
+ :type dimension: PointPlotDimension
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ super().__init__(kwargs)
+
+
+ self_.column = column
+ self_.dimension = dimension
diff --git a/datadog_api_client/v1/model/point_plot_projection_type.py b/datadog_api_client/v1/model/point_plot_projection_type.py
new file mode 100644
index 0000000000..2b7e12f8d2
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_projection_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class PointPlotProjectionType(ModelSimple):
+ """
+ Type of the projection.
+
+ :param value: If omitted defaults to "point_plot". Must be one of ["point_plot"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "point_plot",
+ }
+ POINT_PLOT: ClassVar["PointPlotProjectionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+PointPlotProjectionType.POINT_PLOT = PointPlotProjectionType("point_plot")
diff --git a/datadog_api_client/v1/model/point_plot_widget_definition.py b/datadog_api_client/v1/model/point_plot_widget_definition.py
new file mode 100644
index 0000000000..6b0cb349e2
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_widget_definition.py
@@ -0,0 +1,134 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.point_plot_widget_legend import PointPlotWidgetLegend
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.point_plot_widget_request import PointPlotWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.point_plot_widget_definition_type import PointPlotWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class PointPlotWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.point_plot_widget_legend import PointPlotWidgetLegend
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.point_plot_widget_request import PointPlotWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.point_plot_widget_definition_type import PointPlotWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "legend": (PointPlotWidgetLegend,),
+ "markers": ([WidgetMarker],),
+ "requests": ([PointPlotWidgetRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (PointPlotWidgetDefinitionType,),
+ "yaxis": (WidgetAxis,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "legend": "legend",
+ "markers": "markers",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "yaxis": "yaxis",
+ }
+
+ def __init__(self_, requests: List[PointPlotWidgetRequest], type: PointPlotWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, legend: Union[PointPlotWidgetLegend, UnsetType]=unset, markers: Union[List[WidgetMarker], UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, yaxis: Union[WidgetAxis, UnsetType]=unset, **kwargs):
+ """
+ The point plot displays individual data points over time.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param legend: Legend configuration for the point plot widget.
+ :type legend: PointPlotWidgetLegend, optional
+
+ :param markers: List of markers for the widget.
+ :type markers: [WidgetMarker], optional
+
+ :param requests: List of request configurations for the widget.
+ :type requests: [PointPlotWidgetRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the point plot widget.
+ :type type: PointPlotWidgetDefinitionType
+
+ :param yaxis: Axis controls for the widget.
+ :type yaxis: WidgetAxis, optional
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if legend is not unset:
+ kwargs["legend"] = legend
+ if markers is not unset:
+ kwargs["markers"] = markers
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if yaxis is not unset:
+ kwargs["yaxis"] = yaxis
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/point_plot_widget_definition_type.py b/datadog_api_client/v1/model/point_plot_widget_definition_type.py
new file mode 100644
index 0000000000..327cb01519
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class PointPlotWidgetDefinitionType(ModelSimple):
+ """
+ Type of the point plot widget.
+
+ :param value: If omitted defaults to "point_plot". Must be one of ["point_plot"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "point_plot",
+ }
+ POINT_PLOT: ClassVar["PointPlotWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+PointPlotWidgetDefinitionType.POINT_PLOT = PointPlotWidgetDefinitionType("point_plot")
diff --git a/datadog_api_client/v1/model/point_plot_widget_legend.py b/datadog_api_client/v1/model/point_plot_widget_legend.py
new file mode 100644
index 0000000000..65851261bc
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_widget_legend.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.point_plot_widget_legend_type import PointPlotWidgetLegendType
+
+class PointPlotWidgetLegend(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.point_plot_widget_legend_type import PointPlotWidgetLegendType
+ return {
+ "type": (PointPlotWidgetLegendType,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: PointPlotWidgetLegendType, **kwargs):
+ """
+ Legend configuration for the point plot widget.
+
+ :param type: Type of legend to show for the point plot widget.
+ :type type: PointPlotWidgetLegendType
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/point_plot_widget_legend_type.py b/datadog_api_client/v1/model/point_plot_widget_legend_type.py
new file mode 100644
index 0000000000..180a33ee04
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_widget_legend_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class PointPlotWidgetLegendType(ModelSimple):
+ """
+ Type of legend to show for the point plot widget.
+
+ :param value: Must be one of ["automatic", "none"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "automatic",
+ "none",
+ }
+ AUTOMATIC: ClassVar["PointPlotWidgetLegendType"]
+ NONE: ClassVar["PointPlotWidgetLegendType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+PointPlotWidgetLegendType.AUTOMATIC = PointPlotWidgetLegendType("automatic")
+PointPlotWidgetLegendType.NONE = PointPlotWidgetLegendType("none")
diff --git a/datadog_api_client/v1/model/point_plot_widget_request.py b/datadog_api_client/v1/model/point_plot_widget_request.py
new file mode 100644
index 0000000000..5a05a55ad7
--- /dev/null
+++ b/datadog_api_client/v1/model/point_plot_widget_request.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.point_plot_projection import PointPlotProjection
+ from datadog_api_client.v1.model.data_projection_query import DataProjectionQuery
+ from datadog_api_client.v1.model.data_projection_request_type import DataProjectionRequestType
+
+class PointPlotWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.point_plot_projection import PointPlotProjection
+ from datadog_api_client.v1.model.data_projection_query import DataProjectionQuery
+ from datadog_api_client.v1.model.data_projection_request_type import DataProjectionRequestType
+ return {
+ "limit": (int,),
+ "projection": (PointPlotProjection,),
+ "query": (DataProjectionQuery,),
+ "request_type": (DataProjectionRequestType,),
+ }
+ attribute_map = {
+ "limit": "limit",
+ "projection": "projection",
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, projection: PointPlotProjection, query: DataProjectionQuery, request_type: DataProjectionRequestType, limit: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Request configuration for the point plot widget.
+
+ :param limit: Maximum number of data points to return.
+ :type limit: int, optional
+
+ :param projection: Projection configuration for the point plot widget.
+ :type projection: PointPlotProjection
+
+ :param query: Query configuration for a data projection request.
+ :type query: DataProjectionQuery
+
+ :param request_type: Type of a data projection request.
+ :type request_type: DataProjectionRequestType
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ super().__init__(kwargs)
+
+
+ self_.projection = projection
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/powerpack_template_variable_contents.py b/datadog_api_client/v1/model/powerpack_template_variable_contents.py
new file mode 100644
index 0000000000..657a8e850d
--- /dev/null
+++ b/datadog_api_client/v1/model/powerpack_template_variable_contents.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class PowerpackTemplateVariableContents(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "prefix": (str,),
+ "values": ([str],),
+ }
+ attribute_map = {
+ "name": "name",
+ "prefix": "prefix",
+ "values": "values",
+ }
+
+ def __init__(self_, name: str, values: List[str], prefix: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Powerpack template variable contents.
+
+ :param name: The name of the variable.
+ :type name: str
+
+ :param prefix: The tag prefix associated with the variable.
+ :type prefix: str, optional
+
+ :param values: One or many template variable values within the saved view, which will be unioned together using ``OR`` if more than one is specified.
+ :type values: [str]
+ """
+ if prefix is not unset:
+ kwargs["prefix"] = prefix
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.values = values
diff --git a/datadog_api_client/v1/model/powerpack_template_variables.py b/datadog_api_client/v1/model/powerpack_template_variables.py
new file mode 100644
index 0000000000..a84d5c1223
--- /dev/null
+++ b/datadog_api_client/v1/model/powerpack_template_variables.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.powerpack_template_variable_contents import PowerpackTemplateVariableContents
+
+class PowerpackTemplateVariables(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.powerpack_template_variable_contents import PowerpackTemplateVariableContents
+ return {
+ "controlled_by_powerpack": ([PowerpackTemplateVariableContents],),
+ "controlled_externally": ([PowerpackTemplateVariableContents],),
+ }
+ attribute_map = {
+ "controlled_by_powerpack": "controlled_by_powerpack",
+ "controlled_externally": "controlled_externally",
+ }
+
+ def __init__(self_, controlled_by_powerpack: Union[List[PowerpackTemplateVariableContents], UnsetType]=unset, controlled_externally: Union[List[PowerpackTemplateVariableContents], UnsetType]=unset, **kwargs):
+ """
+ Powerpack template variables.
+
+ :param controlled_by_powerpack: Template variables controlled at the powerpack level.
+ :type controlled_by_powerpack: [PowerpackTemplateVariableContents], optional
+
+ :param controlled_externally: Template variables controlled by the external resource, such as the dashboard this powerpack is on.
+ :type controlled_externally: [PowerpackTemplateVariableContents], optional
+ """
+ if controlled_by_powerpack is not unset:
+ kwargs["controlled_by_powerpack"] = controlled_by_powerpack
+ if controlled_externally is not unset:
+ kwargs["controlled_externally"] = controlled_externally
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/powerpack_widget_definition.py b/datadog_api_client/v1/model/powerpack_widget_definition.py
new file mode 100644
index 0000000000..cef7258db7
--- /dev/null
+++ b/datadog_api_client/v1/model/powerpack_widget_definition.py
@@ -0,0 +1,91 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.powerpack_template_variables import PowerpackTemplateVariables
+ from datadog_api_client.v1.model.powerpack_widget_definition_type import PowerpackWidgetDefinitionType
+
+class PowerpackWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.powerpack_template_variables import PowerpackTemplateVariables
+ from datadog_api_client.v1.model.powerpack_widget_definition_type import PowerpackWidgetDefinitionType
+ return {
+ "background_color": (str,),
+ "banner_img": (str,),
+ "powerpack_id": (str,),
+ "show_title": (bool,),
+ "template_variables": (PowerpackTemplateVariables,),
+ "title": (str,),
+ "type": (PowerpackWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "background_color": "background_color",
+ "banner_img": "banner_img",
+ "powerpack_id": "powerpack_id",
+ "show_title": "show_title",
+ "template_variables": "template_variables",
+ "title": "title",
+ "type": "type",
+ }
+
+ def __init__(self_, powerpack_id: str, type: PowerpackWidgetDefinitionType, background_color: Union[str, UnsetType]=unset, banner_img: Union[str, UnsetType]=unset, show_title: Union[bool, UnsetType]=unset, template_variables: Union[PowerpackTemplateVariables, UnsetType]=unset, title: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The powerpack widget allows you to keep similar graphs together on your timeboard. Each group has a custom header, can hold one to many graphs, and is collapsible.
+
+ :param background_color: Background color of the powerpack title.
+ :type background_color: str, optional
+
+ :param banner_img: URL of image to display as a banner for the powerpack.
+ :type banner_img: str, optional
+
+ :param powerpack_id: UUID of the associated powerpack.
+ :type powerpack_id: str
+
+ :param show_title: Whether to show the title or not.
+ :type show_title: bool, optional
+
+ :param template_variables: Powerpack template variables.
+ :type template_variables: PowerpackTemplateVariables, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param type: Type of the powerpack widget.
+ :type type: PowerpackWidgetDefinitionType
+ """
+ if background_color is not unset:
+ kwargs["background_color"] = background_color
+ if banner_img is not unset:
+ kwargs["banner_img"] = banner_img
+ if show_title is not unset:
+ kwargs["show_title"] = show_title
+ if template_variables is not unset:
+ kwargs["template_variables"] = template_variables
+ if title is not unset:
+ kwargs["title"] = title
+ super().__init__(kwargs)
+
+
+ self_.powerpack_id = powerpack_id
+ self_.type = type
diff --git a/datadog_api_client/v1/model/powerpack_widget_definition_type.py b/datadog_api_client/v1/model/powerpack_widget_definition_type.py
new file mode 100644
index 0000000000..8d86c4b579
--- /dev/null
+++ b/datadog_api_client/v1/model/powerpack_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class PowerpackWidgetDefinitionType(ModelSimple):
+ """
+ Type of the powerpack widget.
+
+ :param value: If omitted defaults to "powerpack". Must be one of ["powerpack"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "powerpack",
+ }
+ POWERPACK: ClassVar["PowerpackWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+PowerpackWidgetDefinitionType.POWERPACK = PowerpackWidgetDefinitionType("powerpack")
diff --git a/datadog_api_client/v1/model/process_query_definition.py b/datadog_api_client/v1/model/process_query_definition.py
new file mode 100644
index 0000000000..2a24a8d779
--- /dev/null
+++ b/datadog_api_client/v1/model/process_query_definition.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ProcessQueryDefinition(ModelNormal):
+ validations = {
+ "limit": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "filter_by": ([str],),
+ "limit": (int,),
+ "metric": (str,),
+ "search_by": (str,),
+ }
+ attribute_map = {
+ "filter_by": "filter_by",
+ "limit": "limit",
+ "metric": "metric",
+ "search_by": "search_by",
+ }
+
+ def __init__(self_, metric: str, filter_by: Union[List[str], UnsetType]=unset, limit: Union[int, UnsetType]=unset, search_by: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The process query to use in the widget.
+
+ :param filter_by: List of processes.
+ :type filter_by: [str], optional
+
+ :param limit: Max number of items in the filter list.
+ :type limit: int, optional
+
+ :param metric: Your chosen metric.
+ :type metric: str
+
+ :param search_by: Your chosen search term.
+ :type search_by: str, optional
+ """
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if search_by is not unset:
+ kwargs["search_by"] = search_by
+ super().__init__(kwargs)
+
+
+ self_.metric = metric
diff --git a/datadog_api_client/v1/model/product_analytics_audience_account_subquery.py b/datadog_api_client/v1/model/product_analytics_audience_account_subquery.py
new file mode 100644
index 0000000000..69c8689b9a
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_audience_account_subquery.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ProductAnalyticsAudienceAccountSubquery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "query": (str,),
+ }
+ attribute_map = {
+ "name": "name",
+ "query": "query",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Product Analytics audience account subquery.
+
+ :param name: The name of the account subquery.
+ :type name: str, optional
+
+ :param query: The query string for the account subquery.
+ :type query: str, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if query is not unset:
+ kwargs["query"] = query
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/product_analytics_audience_filters.py b/datadog_api_client/v1/model/product_analytics_audience_filters.py
new file mode 100644
index 0000000000..a4c0f8ba5a
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_audience_filters.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_audience_account_subquery import ProductAnalyticsAudienceAccountSubquery
+ from datadog_api_client.v1.model.product_analytics_audience_segment_subquery import ProductAnalyticsAudienceSegmentSubquery
+ from datadog_api_client.v1.model.product_analytics_audience_user_subquery import ProductAnalyticsAudienceUserSubquery
+
+class ProductAnalyticsAudienceFilters(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_audience_account_subquery import ProductAnalyticsAudienceAccountSubquery
+ from datadog_api_client.v1.model.product_analytics_audience_segment_subquery import ProductAnalyticsAudienceSegmentSubquery
+ from datadog_api_client.v1.model.product_analytics_audience_user_subquery import ProductAnalyticsAudienceUserSubquery
+ return {
+ "accounts": ([ProductAnalyticsAudienceAccountSubquery],),
+ "filter_condition": (str,),
+ "segments": ([ProductAnalyticsAudienceSegmentSubquery],),
+ "users": ([ProductAnalyticsAudienceUserSubquery],),
+ }
+ attribute_map = {
+ "accounts": "accounts",
+ "filter_condition": "filter_condition",
+ "segments": "segments",
+ "users": "users",
+ }
+
+ def __init__(self_, accounts: Union[List[ProductAnalyticsAudienceAccountSubquery], UnsetType]=unset, filter_condition: Union[str, UnsetType]=unset, segments: Union[List[ProductAnalyticsAudienceSegmentSubquery], UnsetType]=unset, users: Union[List[ProductAnalyticsAudienceUserSubquery], UnsetType]=unset, **kwargs):
+ """
+ Product Analytics/RUM audience filters.
+
+ :param accounts:
+ :type accounts: [ProductAnalyticsAudienceAccountSubquery], optional
+
+ :param filter_condition: An optional filter condition applied to the audience subquery.
+ :type filter_condition: str, optional
+
+ :param segments:
+ :type segments: [ProductAnalyticsAudienceSegmentSubquery], optional
+
+ :param users:
+ :type users: [ProductAnalyticsAudienceUserSubquery], optional
+ """
+ if accounts is not unset:
+ kwargs["accounts"] = accounts
+ if filter_condition is not unset:
+ kwargs["filter_condition"] = filter_condition
+ if segments is not unset:
+ kwargs["segments"] = segments
+ if users is not unset:
+ kwargs["users"] = users
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/product_analytics_audience_occurrence_filter.py b/datadog_api_client/v1/model/product_analytics_audience_occurrence_filter.py
new file mode 100644
index 0000000000..f18bd6ad0f
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_audience_occurrence_filter.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ProductAnalyticsAudienceOccurrenceFilter(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "operator": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "value": "value",
+ }
+
+ def __init__(self_, operator: Union[str, UnsetType]=unset, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Filter applied to occurrence counts when building a Product Analytics audience.
+
+ :param operator: The comparison operator used for the occurrence filter (for example: ``gt`` , ``lt`` , ``eq`` ).
+ :type operator: str, optional
+
+ :param value: The threshold value to compare occurrence counts against.
+ :type value: str, optional
+ """
+ if operator is not unset:
+ kwargs["operator"] = operator
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/product_analytics_audience_segment_subquery.py b/datadog_api_client/v1/model/product_analytics_audience_segment_subquery.py
new file mode 100644
index 0000000000..979550d24e
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_audience_segment_subquery.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ProductAnalyticsAudienceSegmentSubquery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "segment_id": (str,),
+ }
+ attribute_map = {
+ "name": "name",
+ "segment_id": "segment_id",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, segment_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Product Analytics audience segment subquery.
+
+ :param name: The name of the segment subquery.
+ :type name: str, optional
+
+ :param segment_id: The unique identifier of the segment.
+ :type segment_id: str, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if segment_id is not unset:
+ kwargs["segment_id"] = segment_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/product_analytics_audience_user_subquery.py b/datadog_api_client/v1/model/product_analytics_audience_user_subquery.py
new file mode 100644
index 0000000000..20a1cc94b0
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_audience_user_subquery.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ProductAnalyticsAudienceUserSubquery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "query": (str,),
+ }
+ attribute_map = {
+ "name": "name",
+ "query": "query",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Product Analytics audience user subquery.
+
+ :param name: The name of the user subquery.
+ :type name: str, optional
+
+ :param query: The query string for the user subquery.
+ :type query: str, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if query is not unset:
+ kwargs["query"] = query
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/product_analytics_base_query.py b/datadog_api_client/v1/model/product_analytics_base_query.py
new file mode 100644
index 0000000000..375b5bd6db
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_base_query.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_event_data_source import ProductAnalyticsEventDataSource
+ from datadog_api_client.v1.model.product_analytics_event_query_search import ProductAnalyticsEventQuerySearch
+
+class ProductAnalyticsBaseQuery(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_event_data_source import ProductAnalyticsEventDataSource
+ from datadog_api_client.v1.model.product_analytics_event_query_search import ProductAnalyticsEventQuerySearch
+ return {
+ "data_source": (ProductAnalyticsEventDataSource,),
+ "search": (ProductAnalyticsEventQuerySearch,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "search": "search",
+ }
+
+ def __init__(self_, data_source: ProductAnalyticsEventDataSource, search: ProductAnalyticsEventQuerySearch, **kwargs):
+ """
+ Product Analytics event query.
+
+ :param data_source: Data source for Product Analytics event queries.
+ :type data_source: ProductAnalyticsEventDataSource
+
+ :param search: Search configuration for Product Analytics event query.
+ :type search: ProductAnalyticsEventQuerySearch
+ """
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.search = search
diff --git a/datadog_api_client/v1/model/product_analytics_event_data_source.py b/datadog_api_client/v1/model/product_analytics_event_data_source.py
new file mode 100644
index 0000000000..1d3d0d8900
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_event_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ProductAnalyticsEventDataSource(ModelSimple):
+ """
+ Data source for Product Analytics event queries.
+
+ :param value: If omitted defaults to "product_analytics". Must be one of ["product_analytics"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "product_analytics",
+ }
+ PRODUCT_ANALYTICS: ClassVar["ProductAnalyticsEventDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ProductAnalyticsEventDataSource.PRODUCT_ANALYTICS = ProductAnalyticsEventDataSource("product_analytics")
diff --git a/datadog_api_client/v1/model/product_analytics_event_query_search.py b/datadog_api_client/v1/model/product_analytics_event_query_search.py
new file mode 100644
index 0000000000..ff276d8678
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_event_query_search.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ProductAnalyticsEventQuerySearch(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "query": (str,),
+ }
+ attribute_map = {
+ "query": "query",
+ }
+
+ def __init__(self_, query: str, **kwargs):
+ """
+ Search configuration for Product Analytics event query.
+
+ :param query: RUM event search query used to filter views or actions.
+ :type query: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
diff --git a/datadog_api_client/v1/model/product_analytics_extended_compute.py b/datadog_api_client/v1/model/product_analytics_extended_compute.py
new file mode 100644
index 0000000000..ab1e632aa0
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_extended_compute.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.calendar_interval import CalendarInterval
+
+class ProductAnalyticsExtendedCompute(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.calendar_interval import CalendarInterval
+ return {
+ "aggregation": (FormulaAndFunctionEventAggregation,),
+ "interval": (float,),
+ "metric": (str,),
+ "name": (str,),
+ "rollup": (CalendarInterval,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "interval": "interval",
+ "metric": "metric",
+ "name": "name",
+ "rollup": "rollup",
+ }
+
+ def __init__(self_, aggregation: FormulaAndFunctionEventAggregation, interval: Union[float, UnsetType]=unset, metric: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, rollup: Union[CalendarInterval, UnsetType]=unset, **kwargs):
+ """
+ Compute configuration for Product Analytics Extended queries.
+
+ :param aggregation: Aggregation methods for event platform queries.
+ :type aggregation: FormulaAndFunctionEventAggregation
+
+ :param interval: Fixed-width time bucket interval in milliseconds for time series queries. Mutually exclusive with ``rollup``.
+ :type interval: float, optional
+
+ :param metric: Measurable attribute to compute.
+ :type metric: str, optional
+
+ :param name: Name of the compute for use in formulas.
+ :type name: str, optional
+
+ :param rollup: Calendar interval definition.
+ :type rollup: CalendarInterval, optional
+ """
+ if interval is not unset:
+ kwargs["interval"] = interval
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if name is not unset:
+ kwargs["name"] = name
+ if rollup is not unset:
+ kwargs["rollup"] = rollup
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/product_analytics_extended_group_by.py b/datadog_api_client/v1/model/product_analytics_extended_group_by.py
new file mode 100644
index 0000000000..f74cb9689e
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_extended_group_by.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+
+class ProductAnalyticsExtendedGroupBy(ModelNormal):
+ validations = {
+ "limit": {
+ "inclusive_maximum": 10000,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "should_exclude_missing": (bool,),
+ "sort": (FormulaAndFunctionEventQueryGroupBySort,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "should_exclude_missing": "should_exclude_missing",
+ "sort": "sort",
+ }
+
+ def __init__(self_, facet: str, limit: Union[int, UnsetType]=unset, should_exclude_missing: Union[bool, UnsetType]=unset, sort: Union[FormulaAndFunctionEventQueryGroupBySort, UnsetType]=unset, **kwargs):
+ """
+ Group by configuration for Product Analytics Extended queries.
+
+ :param facet: Facet name to group by.
+ :type facet: str
+
+ :param limit: Maximum number of groups to return.
+ :type limit: int, optional
+
+ :param should_exclude_missing: Whether to exclude events missing the group-by facet.
+ :type should_exclude_missing: bool, optional
+
+ :param sort: Options for sorting group by results.
+ :type sort: FormulaAndFunctionEventQueryGroupBySort, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if should_exclude_missing is not unset:
+ kwargs["should_exclude_missing"] = should_exclude_missing
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_compute.py b/datadog_api_client/v1/model/product_analytics_funnel_compute.py
new file mode 100644
index 0000000000..c0031646e8
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_compute.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_funnel_compute_aggregation import ProductAnalyticsFunnelComputeAggregation
+ from datadog_api_client.v1.model.product_analytics_funnel_compute_metric import ProductAnalyticsFunnelComputeMetric
+
+class ProductAnalyticsFunnelCompute(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_funnel_compute_aggregation import ProductAnalyticsFunnelComputeAggregation
+ from datadog_api_client.v1.model.product_analytics_funnel_compute_metric import ProductAnalyticsFunnelComputeMetric
+ return {
+ "aggregation": (ProductAnalyticsFunnelComputeAggregation,),
+ "metric": (ProductAnalyticsFunnelComputeMetric,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ }
+
+ def __init__(self_, aggregation: ProductAnalyticsFunnelComputeAggregation, metric: ProductAnalyticsFunnelComputeMetric, **kwargs):
+ """
+ Compute configuration for user journey funnel.
+
+ :param aggregation: Aggregation type for user journey funnel compute.
+ :type aggregation: ProductAnalyticsFunnelComputeAggregation
+
+ :param metric: Metric for user journey funnel compute. ``__dd.conversion`` and ``__dd.conversion_rate`` accept ``count`` (unique users/sessions) and ``cardinality`` (total users/sessions) as aggregations.
+ :type metric: ProductAnalyticsFunnelComputeMetric
+ """
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
+ self_.metric = metric
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_compute_aggregation.py b/datadog_api_client/v1/model/product_analytics_funnel_compute_aggregation.py
new file mode 100644
index 0000000000..aad40a0431
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_compute_aggregation.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ProductAnalyticsFunnelComputeAggregation(ModelSimple):
+ """
+ Aggregation type for user journey funnel compute.
+
+ :param value: Must be one of ["cardinality", "count"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "cardinality",
+ "count",
+ }
+ CARDINALITY: ClassVar["ProductAnalyticsFunnelComputeAggregation"]
+ COUNT: ClassVar["ProductAnalyticsFunnelComputeAggregation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ProductAnalyticsFunnelComputeAggregation.CARDINALITY = ProductAnalyticsFunnelComputeAggregation("cardinality")
+ProductAnalyticsFunnelComputeAggregation.COUNT = ProductAnalyticsFunnelComputeAggregation("count")
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_compute_metric.py b/datadog_api_client/v1/model/product_analytics_funnel_compute_metric.py
new file mode 100644
index 0000000000..ca5d6a5864
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_compute_metric.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ProductAnalyticsFunnelComputeMetric(ModelSimple):
+ """
+ Metric for user journey funnel compute. `__dd.conversion` and `__dd.conversion_rate` accept `count` (unique users/sessions) and `cardinality` (total users/sessions) as aggregations.
+
+ :param value: Must be one of ["__dd.conversion", "__dd.conversion_rate"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "__dd.conversion",
+ "__dd.conversion_rate",
+ }
+ CONVERSION: ClassVar["ProductAnalyticsFunnelComputeMetric"]
+ CONVERSION_RATE: ClassVar["ProductAnalyticsFunnelComputeMetric"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ProductAnalyticsFunnelComputeMetric.CONVERSION = ProductAnalyticsFunnelComputeMetric("__dd.conversion")
+ProductAnalyticsFunnelComputeMetric.CONVERSION_RATE = ProductAnalyticsFunnelComputeMetric("__dd.conversion_rate")
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_data_source.py b/datadog_api_client/v1/model/product_analytics_funnel_data_source.py
new file mode 100644
index 0000000000..e7979a98fd
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ProductAnalyticsFunnelDataSource(ModelSimple):
+ """
+ Data source for user journey funnel queries.
+
+ :param value: If omitted defaults to "product_analytics_journey". Must be one of ["product_analytics_journey"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "product_analytics_journey",
+ }
+ PRODUCT_ANALYTICS_JOURNEY: ClassVar["ProductAnalyticsFunnelDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ProductAnalyticsFunnelDataSource.PRODUCT_ANALYTICS_JOURNEY = ProductAnalyticsFunnelDataSource("product_analytics_journey")
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_group_by.py b/datadog_api_client/v1/model/product_analytics_funnel_group_by.py
new file mode 100644
index 0000000000..b8dad3c482
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_group_by.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_funnel_group_by_sort import ProductAnalyticsFunnelGroupBySort
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+
+class ProductAnalyticsFunnelGroupBy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_funnel_group_by_sort import ProductAnalyticsFunnelGroupBySort
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "should_exclude_missing": (bool,),
+ "sort": (ProductAnalyticsFunnelGroupBySort,),
+ "target": (UserJourneySearchTarget,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "should_exclude_missing": "should_exclude_missing",
+ "sort": "sort",
+ "target": "target",
+ }
+
+ def __init__(self_, facet: str, limit: Union[int, UnsetType]=unset, should_exclude_missing: Union[bool, UnsetType]=unset, sort: Union[ProductAnalyticsFunnelGroupBySort, UnsetType]=unset, target: Union[UserJourneySearchTarget, UnsetType]=unset, **kwargs):
+ """
+ Group by configuration for user journey funnel.
+
+ :param facet: Facet to group by.
+ :type facet: str
+
+ :param limit: Maximum number of groups.
+ :type limit: int, optional
+
+ :param should_exclude_missing: Whether to exclude missing values.
+ :type should_exclude_missing: bool, optional
+
+ :param sort: Sort configuration for user journey funnel group by.
+ :type sort: ProductAnalyticsFunnelGroupBySort, optional
+
+ :param target: Target for user journey search.
+ :type target: UserJourneySearchTarget, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if should_exclude_missing is not unset:
+ kwargs["should_exclude_missing"] = should_exclude_missing
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_group_by_sort.py b/datadog_api_client/v1/model/product_analytics_funnel_group_by_sort.py
new file mode 100644
index 0000000000..a219fbe082
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_group_by_sort.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class ProductAnalyticsFunnelGroupBySort(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "aggregation": (str,),
+ "metric": (str,),
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ "order": "order",
+ }
+
+ def __init__(self_, aggregation: str, metric: Union[str, UnsetType]=unset, order: Union[WidgetSort, UnsetType]=unset, **kwargs):
+ """
+ Sort configuration for user journey funnel group by.
+
+ :param aggregation: Aggregation type.
+ :type aggregation: str
+
+ :param metric: Metric to sort by.
+ :type metric: str, optional
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort, optional
+ """
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_query.py b/datadog_api_client/v1/model/product_analytics_funnel_query.py
new file mode 100644
index 0000000000..1376330b7e
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_query.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_funnel_compute import ProductAnalyticsFunnelCompute
+ from datadog_api_client.v1.model.product_analytics_funnel_data_source import ProductAnalyticsFunnelDataSource
+ from datadog_api_client.v1.model.product_analytics_funnel_group_by import ProductAnalyticsFunnelGroupBy
+ from datadog_api_client.v1.model.user_journey_search import UserJourneySearch
+
+class ProductAnalyticsFunnelQuery(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_funnel_compute import ProductAnalyticsFunnelCompute
+ from datadog_api_client.v1.model.product_analytics_funnel_data_source import ProductAnalyticsFunnelDataSource
+ from datadog_api_client.v1.model.product_analytics_funnel_group_by import ProductAnalyticsFunnelGroupBy
+ from datadog_api_client.v1.model.user_journey_search import UserJourneySearch
+ return {
+ "compute": (ProductAnalyticsFunnelCompute,),
+ "data_source": (ProductAnalyticsFunnelDataSource,),
+ "group_by": ([ProductAnalyticsFunnelGroupBy],),
+ "search": (UserJourneySearch,),
+ "subquery_id": (str,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "search": "search",
+ "subquery_id": "subquery_id",
+ }
+
+ def __init__(self_, data_source: ProductAnalyticsFunnelDataSource, search: UserJourneySearch, compute: Union[ProductAnalyticsFunnelCompute, UnsetType]=unset, group_by: Union[List[ProductAnalyticsFunnelGroupBy], UnsetType]=unset, subquery_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ User journey funnel query definition.
+
+ :param compute: Compute configuration for user journey funnel.
+ :type compute: ProductAnalyticsFunnelCompute, optional
+
+ :param data_source: Data source for user journey funnel queries.
+ :type data_source: ProductAnalyticsFunnelDataSource
+
+ :param group_by: Group by configuration.
+ :type group_by: [ProductAnalyticsFunnelGroupBy], optional
+
+ :param search: User journey search configuration.
+ :type search: UserJourneySearch
+
+ :param subquery_id: Subquery ID.
+ :type subquery_id: str, optional
+ """
+ if compute is not unset:
+ kwargs["compute"] = compute
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if subquery_id is not unset:
+ kwargs["subquery_id"] = subquery_id
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.search = search
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_request.py b/datadog_api_client/v1/model/product_analytics_funnel_request.py
new file mode 100644
index 0000000000..5ce4713649
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_request.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.funnel_comparison_duration import FunnelComparisonDuration
+ from datadog_api_client.v1.model.product_analytics_funnel_query import ProductAnalyticsFunnelQuery
+ from datadog_api_client.v1.model.product_analytics_funnel_request_type import ProductAnalyticsFunnelRequestType
+
+class ProductAnalyticsFunnelRequest(ModelNormal):
+ validations = {
+ "comparison_segments": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.funnel_comparison_duration import FunnelComparisonDuration
+ from datadog_api_client.v1.model.product_analytics_funnel_query import ProductAnalyticsFunnelQuery
+ from datadog_api_client.v1.model.product_analytics_funnel_request_type import ProductAnalyticsFunnelRequestType
+ return {
+ "comparison_segments": ([str],),
+ "comparison_time": (FunnelComparisonDuration,),
+ "query": (ProductAnalyticsFunnelQuery,),
+ "request_type": (ProductAnalyticsFunnelRequestType,),
+ }
+ attribute_map = {
+ "comparison_segments": "comparison_segments",
+ "comparison_time": "comparison_time",
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: ProductAnalyticsFunnelQuery, request_type: ProductAnalyticsFunnelRequestType, comparison_segments: Union[List[str], UnsetType]=unset, comparison_time: Union[FunnelComparisonDuration, UnsetType]=unset, **kwargs):
+ """
+ User journey funnel widget request.
+
+ :param comparison_segments: Comparison segments.
+ :type comparison_segments: [str], optional
+
+ :param comparison_time: Comparison time configuration for funnel widgets.
+ :type comparison_time: FunnelComparisonDuration, optional
+
+ :param query: User journey funnel query definition.
+ :type query: ProductAnalyticsFunnelQuery
+
+ :param request_type: Request type for user journey funnel widget.
+ :type request_type: ProductAnalyticsFunnelRequestType
+ """
+ if comparison_segments is not unset:
+ kwargs["comparison_segments"] = comparison_segments
+ if comparison_time is not unset:
+ kwargs["comparison_time"] = comparison_time
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_request_type.py b/datadog_api_client/v1/model/product_analytics_funnel_request_type.py
new file mode 100644
index 0000000000..56fbc514ca
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ProductAnalyticsFunnelRequestType(ModelSimple):
+ """
+ Request type for user journey funnel widget.
+
+ :param value: If omitted defaults to "user_journey_funnel". Must be one of ["user_journey_funnel"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "user_journey_funnel",
+ }
+ USER_JOURNEY_FUNNEL: ClassVar["ProductAnalyticsFunnelRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ProductAnalyticsFunnelRequestType.USER_JOURNEY_FUNNEL = ProductAnalyticsFunnelRequestType("user_journey_funnel")
diff --git a/datadog_api_client/v1/model/product_analytics_funnel_widget_definition.py b/datadog_api_client/v1/model/product_analytics_funnel_widget_definition.py
new file mode 100644
index 0000000000..6e43e5b8bd
--- /dev/null
+++ b/datadog_api_client/v1/model/product_analytics_funnel_widget_definition.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.funnel_grouped_display import FunnelGroupedDisplay
+ from datadog_api_client.v1.model.product_analytics_funnel_request import ProductAnalyticsFunnelRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.funnel_widget_definition_type import FunnelWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class ProductAnalyticsFunnelWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.funnel_grouped_display import FunnelGroupedDisplay
+ from datadog_api_client.v1.model.product_analytics_funnel_request import ProductAnalyticsFunnelRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.funnel_widget_definition_type import FunnelWidgetDefinitionType
+ return {
+ "description": (str,),
+ "grouped_display": (FunnelGroupedDisplay,),
+ "requests": ([ProductAnalyticsFunnelRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (FunnelWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "grouped_display": "grouped_display",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[ProductAnalyticsFunnelRequest], type: FunnelWidgetDefinitionType, description: Union[str, UnsetType]=unset, grouped_display: Union[FunnelGroupedDisplay, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The user journey funnel visualization displays conversion funnels based on user journey data from Product Analytics.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param grouped_display: Display mode for grouped funnel results.
+ :type grouped_display: FunnelGroupedDisplay, optional
+
+ :param requests: Request payload used to query items.
+ :type requests: [ProductAnalyticsFunnelRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: The title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: The size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of funnel widget.
+ :type type: FunnelWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if grouped_display is not unset:
+ kwargs["grouped_display"] = grouped_display
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/published_dataset_provider.py b/datadog_api_client/v1/model/published_dataset_provider.py
new file mode 100644
index 0000000000..703586e335
--- /dev/null
+++ b/datadog_api_client/v1/model/published_dataset_provider.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class PublishedDatasetProvider(ModelSimple):
+ """
+ Product page that published the dataset queried by a `DatasetListQuery`. `ddsql_query` is the only provider currently supported for host map widgets.
+
+ :param value: If omitted defaults to "ddsql_query". Must be one of ["ddsql_query"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "ddsql_query",
+ }
+ DDSQL_QUERY: ClassVar["PublishedDatasetProvider"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+PublishedDatasetProvider.DDSQL_QUERY = PublishedDatasetProvider("ddsql_query")
diff --git a/datadog_api_client/v1/model/query_sort_order.py b/datadog_api_client/v1/model/query_sort_order.py
new file mode 100644
index 0000000000..977a1fd408
--- /dev/null
+++ b/datadog_api_client/v1/model/query_sort_order.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class QuerySortOrder(ModelSimple):
+ """
+ Direction of sort.
+
+ :param value: If omitted defaults to "desc". Must be one of ["asc", "desc"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "asc",
+ "desc",
+ }
+ ASC: ClassVar["QuerySortOrder"]
+ DESC: ClassVar["QuerySortOrder"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+QuerySortOrder.ASC = QuerySortOrder("asc")
+QuerySortOrder.DESC = QuerySortOrder("desc")
diff --git a/datadog_api_client/v1/model/query_value_widget_comparison.py b/datadog_api_client/v1/model/query_value_widget_comparison.py
new file mode 100644
index 0000000000..475e9df5d6
--- /dev/null
+++ b/datadog_api_client/v1/model/query_value_widget_comparison.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.query_value_widget_comparison_directionality import QueryValueWidgetComparisonDirectionality
+ from datadog_api_client.v1.model.comparison_duration import ComparisonDuration
+ from datadog_api_client.v1.model.query_value_widget_comparison_type import QueryValueWidgetComparisonType
+
+class QueryValueWidgetComparison(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.query_value_widget_comparison_directionality import QueryValueWidgetComparisonDirectionality
+ from datadog_api_client.v1.model.comparison_duration import ComparisonDuration
+ from datadog_api_client.v1.model.query_value_widget_comparison_type import QueryValueWidgetComparisonType
+ return {
+ "directionality": (QueryValueWidgetComparisonDirectionality,),
+ "duration": (ComparisonDuration,),
+ "type": (QueryValueWidgetComparisonType,),
+ }
+ attribute_map = {
+ "directionality": "directionality",
+ "duration": "duration",
+ "type": "type",
+ }
+
+ def __init__(self_, duration: ComparisonDuration, directionality: Union[QueryValueWidgetComparisonDirectionality, UnsetType]=unset, type: Union[QueryValueWidgetComparisonType, UnsetType]=unset, **kwargs):
+ """
+ A change indicator that compares the current value to a historical period.
+
+ :param directionality: Color-coding direction: ``increase_better`` (green on rise), ``decrease_better`` (green on drop), or ``neutral`` (no color).
+ :type directionality: QueryValueWidgetComparisonDirectionality, optional
+
+ :param duration: The comparison period. Use a preset ``type`` value or set ``type`` to ``custom_timeframe`` and provide ``custom_timeframe`` with explicit millisecond epoch bounds.
+ :type duration: ComparisonDuration
+
+ :param type: How the delta is expressed: ``absolute`` (raw difference), ``relative`` (percentage), or ``both``.
+ :type type: QueryValueWidgetComparisonType, optional
+ """
+ if directionality is not unset:
+ kwargs["directionality"] = directionality
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.duration = duration
diff --git a/datadog_api_client/v1/model/query_value_widget_comparison_directionality.py b/datadog_api_client/v1/model/query_value_widget_comparison_directionality.py
new file mode 100644
index 0000000000..51f1b21278
--- /dev/null
+++ b/datadog_api_client/v1/model/query_value_widget_comparison_directionality.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class QueryValueWidgetComparisonDirectionality(ModelSimple):
+ """
+ Color-coding direction: `increase_better` (green on rise), `decrease_better` (green on drop), or `neutral` (no color).
+
+ :param value: If omitted defaults to "neutral". Must be one of ["increase_better", "decrease_better", "neutral"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "increase_better",
+ "decrease_better",
+ "neutral",
+ }
+ INCREASE_BETTER: ClassVar["QueryValueWidgetComparisonDirectionality"]
+ DECREASE_BETTER: ClassVar["QueryValueWidgetComparisonDirectionality"]
+ NEUTRAL: ClassVar["QueryValueWidgetComparisonDirectionality"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+QueryValueWidgetComparisonDirectionality.INCREASE_BETTER = QueryValueWidgetComparisonDirectionality("increase_better")
+QueryValueWidgetComparisonDirectionality.DECREASE_BETTER = QueryValueWidgetComparisonDirectionality("decrease_better")
+QueryValueWidgetComparisonDirectionality.NEUTRAL = QueryValueWidgetComparisonDirectionality("neutral")
diff --git a/datadog_api_client/v1/model/query_value_widget_comparison_type.py b/datadog_api_client/v1/model/query_value_widget_comparison_type.py
new file mode 100644
index 0000000000..28419f0aba
--- /dev/null
+++ b/datadog_api_client/v1/model/query_value_widget_comparison_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class QueryValueWidgetComparisonType(ModelSimple):
+ """
+ How the delta is expressed: `absolute` (raw difference), `relative` (percentage), or `both`.
+
+ :param value: If omitted defaults to "absolute". Must be one of ["absolute", "relative", "both"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "absolute",
+ "relative",
+ "both",
+ }
+ ABSOLUTE: ClassVar["QueryValueWidgetComparisonType"]
+ RELATIVE: ClassVar["QueryValueWidgetComparisonType"]
+ BOTH: ClassVar["QueryValueWidgetComparisonType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+QueryValueWidgetComparisonType.ABSOLUTE = QueryValueWidgetComparisonType("absolute")
+QueryValueWidgetComparisonType.RELATIVE = QueryValueWidgetComparisonType("relative")
+QueryValueWidgetComparisonType.BOTH = QueryValueWidgetComparisonType("both")
diff --git a/datadog_api_client/v1/model/query_value_widget_definition.py b/datadog_api_client/v1/model/query_value_widget_definition.py
new file mode 100644
index 0000000000..e8fe63ef32
--- /dev/null
+++ b/datadog_api_client/v1/model/query_value_widget_definition.py
@@ -0,0 +1,163 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.query_value_widget_request import QueryValueWidgetRequest
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.timeseries_background import TimeseriesBackground
+ from datadog_api_client.v1.model.query_value_widget_definition_type import QueryValueWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class QueryValueWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.query_value_widget_request import QueryValueWidgetRequest
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.timeseries_background import TimeseriesBackground
+ from datadog_api_client.v1.model.query_value_widget_definition_type import QueryValueWidgetDefinitionType
+ return {
+ "autoscale": (bool,),
+ "custom_links": ([WidgetCustomLink],),
+ "custom_unit": (str,),
+ "description": (str,),
+ "precision": (int,),
+ "requests": ([QueryValueWidgetRequest],),
+ "text_align": (WidgetTextAlign,),
+ "time": (WidgetTime,),
+ "timeseries_background": (TimeseriesBackground,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (QueryValueWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "autoscale": "autoscale",
+ "custom_links": "custom_links",
+ "custom_unit": "custom_unit",
+ "description": "description",
+ "precision": "precision",
+ "requests": "requests",
+ "text_align": "text_align",
+ "time": "time",
+ "timeseries_background": "timeseries_background",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[QueryValueWidgetRequest], type: QueryValueWidgetDefinitionType, autoscale: Union[bool, UnsetType]=unset, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, custom_unit: Union[str, UnsetType]=unset, description: Union[str, UnsetType]=unset, precision: Union[int, UnsetType]=unset, text_align: Union[WidgetTextAlign, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, timeseries_background: Union[TimeseriesBackground, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Query values display the current value of a given metric, APM, or log query.
+
+ :param autoscale: Whether to use auto-scaling or not.
+ :type autoscale: bool, optional
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param custom_unit: Display a unit of your choice on the widget.
+ :type custom_unit: str, optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param precision: Number of decimals to show. If not defined, the widget uses the raw value.
+ :type precision: int, optional
+
+ :param requests: Widget definition.
+ :type requests: [QueryValueWidgetRequest]
+
+ :param text_align: How to align the text on the widget.
+ :type text_align: WidgetTextAlign, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param timeseries_background: Set a timeseries on the widget background.
+ :type timeseries_background: TimeseriesBackground, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the query value widget.
+ :type type: QueryValueWidgetDefinitionType
+ """
+ if autoscale is not unset:
+ kwargs["autoscale"] = autoscale
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if custom_unit is not unset:
+ kwargs["custom_unit"] = custom_unit
+ if description is not unset:
+ kwargs["description"] = description
+ if precision is not unset:
+ kwargs["precision"] = precision
+ if text_align is not unset:
+ kwargs["text_align"] = text_align
+ if time is not unset:
+ kwargs["time"] = time
+ if timeseries_background is not unset:
+ kwargs["timeseries_background"] = timeseries_background
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/query_value_widget_definition_type.py b/datadog_api_client/v1/model/query_value_widget_definition_type.py
new file mode 100644
index 0000000000..00bb3b5934
--- /dev/null
+++ b/datadog_api_client/v1/model/query_value_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class QueryValueWidgetDefinitionType(ModelSimple):
+ """
+ Type of the query value widget.
+
+ :param value: If omitted defaults to "query_value". Must be one of ["query_value"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "query_value",
+ }
+ QUERY_VALUE: ClassVar["QueryValueWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+QueryValueWidgetDefinitionType.QUERY_VALUE = QueryValueWidgetDefinitionType("query_value")
diff --git a/datadog_api_client/v1/model/query_value_widget_request.py b/datadog_api_client/v1/model/query_value_widget_request.py
new file mode 100644
index 0000000000..4a5dcdf57e
--- /dev/null
+++ b/datadog_api_client/v1/model/query_value_widget_request.py
@@ -0,0 +1,181 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.query_value_widget_comparison import QueryValueWidgetComparison
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class QueryValueWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.query_value_widget_comparison import QueryValueWidgetComparison
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ return {
+ "aggregator": (WidgetAggregator,),
+ "apm_query": (LogQueryDefinition,),
+ "audit_query": (LogQueryDefinition,),
+ "comparison": (QueryValueWidgetComparison,),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "apm_query": "apm_query",
+ "audit_query": "audit_query",
+ "comparison": "comparison",
+ "conditional_formats": "conditional_formats",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ }
+
+ def __init__(self_, aggregator: Union[WidgetAggregator, UnsetType]=unset, apm_query: Union[LogQueryDefinition, UnsetType]=unset, audit_query: Union[LogQueryDefinition, UnsetType]=unset, comparison: Union[QueryValueWidgetComparison, UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, **kwargs):
+ """
+ Updated query value widget.
+
+ :param aggregator: Aggregator used for the request.
+ :type aggregator: WidgetAggregator, optional
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param audit_query: The log query.
+ :type audit_query: LogQueryDefinition, optional
+
+ :param comparison: A change indicator that compares the current value to a historical period.
+ :type comparison: QueryValueWidgetComparison, optional
+
+ :param conditional_formats: List of conditional formats.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if audit_query is not unset:
+ kwargs["audit_query"] = audit_query
+ if comparison is not unset:
+ kwargs["comparison"] = comparison
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/reference_table_logs_lookup_processor.py b/datadog_api_client/v1/model/reference_table_logs_lookup_processor.py
new file mode 100644
index 0000000000..e9be7385c7
--- /dev/null
+++ b/datadog_api_client/v1/model/reference_table_logs_lookup_processor.py
@@ -0,0 +1,86 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_lookup_processor_type import LogsLookupProcessorType
+
+class ReferenceTableLogsLookupProcessor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_lookup_processor_type import LogsLookupProcessorType
+ return {
+ "is_enabled": (bool,),
+ "lookup_enrichment_table": (str,),
+ "name": (str,),
+ "source": (str,),
+ "target": (str,),
+ "type": (LogsLookupProcessorType,),
+ }
+ attribute_map = {
+ "is_enabled": "is_enabled",
+ "lookup_enrichment_table": "lookup_enrichment_table",
+ "name": "name",
+ "source": "source",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, lookup_enrichment_table: str, source: str, target: str, type: LogsLookupProcessorType, is_enabled: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ **Note** : Reference Tables are in public beta.
+ Use the Lookup Processor to define a mapping between a log attribute
+ and a human readable value saved in a Reference Table.
+ For example, you can use the Lookup Processor to map an internal service ID
+ into a human readable service name. Alternatively, you could also use it to check
+ if the MAC address that just attempted to connect to the production
+ environment belongs to your list of stolen machines.
+
+ :param is_enabled: Whether or not the processor is enabled.
+ :type is_enabled: bool, optional
+
+ :param lookup_enrichment_table: Name of the Reference Table for the source attribute and their associated target attribute values.
+ :type lookup_enrichment_table: str
+
+ :param name: Name of the processor.
+ :type name: str, optional
+
+ :param source: Source attribute used to perform the lookup.
+ :type source: str
+
+ :param target: Name of the attribute that contains the corresponding value in the mapping list.
+ :type target: str
+
+ :param type: Type of logs lookup processor.
+ :type type: LogsLookupProcessorType
+ """
+ if is_enabled is not unset:
+ kwargs["is_enabled"] = is_enabled
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.lookup_enrichment_table = lookup_enrichment_table
+ self_.source = source
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/resource_provider_config.py b/datadog_api_client/v1/model/resource_provider_config.py
new file mode 100644
index 0000000000..08e4a91fc0
--- /dev/null
+++ b/datadog_api_client/v1/model/resource_provider_config.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ResourceProviderConfig(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "metrics_enabled": (bool,),
+ "namespace": (str,),
+ }
+ attribute_map = {
+ "metrics_enabled": "metrics_enabled",
+ "namespace": "namespace",
+ }
+
+ def __init__(self_, metrics_enabled: Union[bool, UnsetType]=unset, namespace: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Configuration settings applied to resources from the specified Azure resource provider.
+
+ :param metrics_enabled: Collect metrics for resources from this provider.
+ :type metrics_enabled: bool, optional
+
+ :param namespace: The provider namespace to apply this configuration to.
+ :type namespace: str, optional
+ """
+ if metrics_enabled is not unset:
+ kwargs["metrics_enabled"] = metrics_enabled
+ if namespace is not unset:
+ kwargs["namespace"] = namespace
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/response_meta_attributes.py b/datadog_api_client/v1/model/response_meta_attributes.py
new file mode 100644
index 0000000000..7799079be8
--- /dev/null
+++ b/datadog_api_client/v1/model/response_meta_attributes.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.pagination import Pagination
+
+class ResponseMetaAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.pagination import Pagination
+ return {
+ "page": (Pagination,),
+ }
+ attribute_map = {
+ "page": "page",
+ }
+
+ def __init__(self_, page: Union[Pagination, UnsetType]=unset, **kwargs):
+ """
+ Object describing meta attributes of response.
+
+ :param page: Pagination object.
+ :type page: Pagination, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/retention_cohort_criteria.py b/datadog_api_client/v1/model/retention_cohort_criteria.py
new file mode 100644
index 0000000000..145cc9bdf5
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_cohort_criteria.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+ from datadog_api_client.v1.model.retention_cohort_criteria_time_interval import RetentionCohortCriteriaTimeInterval
+
+class RetentionCohortCriteria(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+ from datadog_api_client.v1.model.retention_cohort_criteria_time_interval import RetentionCohortCriteriaTimeInterval
+ return {
+ "base_query": (ProductAnalyticsBaseQuery,),
+ "time_interval": (RetentionCohortCriteriaTimeInterval,),
+ }
+ attribute_map = {
+ "base_query": "base_query",
+ "time_interval": "time_interval",
+ }
+
+ def __init__(self_, base_query: ProductAnalyticsBaseQuery, time_interval: RetentionCohortCriteriaTimeInterval, **kwargs):
+ """
+ Cohort criteria for retention queries.
+
+ :param base_query: Product Analytics event query.
+ :type base_query: ProductAnalyticsBaseQuery
+
+ :param time_interval: Time interval for cohort criteria.
+ :type time_interval: RetentionCohortCriteriaTimeInterval
+ """
+ super().__init__(kwargs)
+
+
+ self_.base_query = base_query
+ self_.time_interval = time_interval
diff --git a/datadog_api_client/v1/model/retention_cohort_criteria_time_interval.py b/datadog_api_client/v1/model/retention_cohort_criteria_time_interval.py
new file mode 100644
index 0000000000..da18fd0e3c
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_cohort_criteria_time_interval.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_cohort_criteria_time_interval_type import RetentionCohortCriteriaTimeIntervalType
+ from datadog_api_client.v1.model.calendar_interval import CalendarInterval
+
+class RetentionCohortCriteriaTimeInterval(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_cohort_criteria_time_interval_type import RetentionCohortCriteriaTimeIntervalType
+ from datadog_api_client.v1.model.calendar_interval import CalendarInterval
+ return {
+ "type": (RetentionCohortCriteriaTimeIntervalType,),
+ "value": (CalendarInterval,),
+ }
+ attribute_map = {
+ "type": "type",
+ "value": "value",
+ }
+
+ def __init__(self_, type: RetentionCohortCriteriaTimeIntervalType, value: CalendarInterval, **kwargs):
+ """
+ Time interval for cohort criteria.
+
+ :param type: Type of time interval for cohort criteria.
+ :type type: RetentionCohortCriteriaTimeIntervalType
+
+ :param value: Calendar interval definition.
+ :type value: CalendarInterval
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.value = value
diff --git a/datadog_api_client/v1/model/retention_cohort_criteria_time_interval_type.py b/datadog_api_client/v1/model/retention_cohort_criteria_time_interval_type.py
new file mode 100644
index 0000000000..268e00131f
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_cohort_criteria_time_interval_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionCohortCriteriaTimeIntervalType(ModelSimple):
+ """
+ Type of time interval for cohort criteria.
+
+ :param value: If omitted defaults to "calendar". Must be one of ["calendar"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "calendar",
+ }
+ CALENDAR: ClassVar["RetentionCohortCriteriaTimeIntervalType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionCohortCriteriaTimeIntervalType.CALENDAR = RetentionCohortCriteriaTimeIntervalType("calendar")
diff --git a/datadog_api_client/v1/model/retention_compute.py b/datadog_api_client/v1/model/retention_compute.py
new file mode 100644
index 0000000000..27dd5d5dec
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_compute.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.events_aggregation import EventsAggregation
+ from datadog_api_client.v1.model.retention_compute_metric import RetentionComputeMetric
+
+class RetentionCompute(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.events_aggregation import EventsAggregation
+ from datadog_api_client.v1.model.retention_compute_metric import RetentionComputeMetric
+ return {
+ "aggregation": (EventsAggregation,),
+ "metric": (RetentionComputeMetric,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ }
+
+ def __init__(self_, aggregation: Union[EventsAggregation, str, str], metric: RetentionComputeMetric, **kwargs):
+ """
+ Compute configuration for retention queries.
+
+ :param aggregation: The type of aggregation that can be performed on events-based queries.
+ :type aggregation: EventsAggregation
+
+ :param metric: Metric for retention compute.
+ :type metric: RetentionComputeMetric
+ """
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
+ self_.metric = metric
diff --git a/datadog_api_client/v1/model/retention_compute_metric.py b/datadog_api_client/v1/model/retention_compute_metric.py
new file mode 100644
index 0000000000..67d70ecc2d
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_compute_metric.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionComputeMetric(ModelSimple):
+ """
+ Metric for retention compute.
+
+ :param value: Must be one of ["__dd.retention", "__dd.retention_rate"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "__dd.retention",
+ "__dd.retention_rate",
+ }
+ RETENTION: ClassVar["RetentionComputeMetric"]
+ RETENTION_RATE: ClassVar["RetentionComputeMetric"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionComputeMetric.RETENTION = RetentionComputeMetric("__dd.retention")
+RetentionComputeMetric.RETENTION_RATE = RetentionComputeMetric("__dd.retention_rate")
diff --git a/datadog_api_client/v1/model/retention_curve_request_type.py b/datadog_api_client/v1/model/retention_curve_request_type.py
new file mode 100644
index 0000000000..39abd5b8e5
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_curve_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionCurveRequestType(ModelSimple):
+ """
+ Request type for retention curve widget.
+
+ :param value: If omitted defaults to "retention_curve". Must be one of ["retention_curve"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "retention_curve",
+ }
+ RETENTION_CURVE: ClassVar["RetentionCurveRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionCurveRequestType.RETENTION_CURVE = RetentionCurveRequestType("retention_curve")
diff --git a/datadog_api_client/v1/model/retention_curve_style.py b/datadog_api_client/v1/model/retention_curve_style.py
new file mode 100644
index 0000000000..693567c4e3
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_curve_style.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class RetentionCurveStyle(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "palette": (str,),
+ }
+ attribute_map = {
+ "palette": "palette",
+ }
+
+ def __init__(self_, palette: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Style configuration for retention curve.
+
+ :param palette: Color palette for the retention curve.
+ :type palette: str, optional
+ """
+ if palette is not unset:
+ kwargs["palette"] = palette
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/retention_curve_widget_definition.py b/datadog_api_client/v1/model/retention_curve_widget_definition.py
new file mode 100644
index 0000000000..2dc5bf938b
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_curve_widget_definition.py
@@ -0,0 +1,106 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_curve_widget_request import RetentionCurveWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.retention_curve_widget_definition_type import RetentionCurveWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class RetentionCurveWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_curve_widget_request import RetentionCurveWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.retention_curve_widget_definition_type import RetentionCurveWidgetDefinitionType
+ return {
+ "description": (str,),
+ "requests": ([RetentionCurveWidgetRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (RetentionCurveWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[RetentionCurveWidgetRequest], type: RetentionCurveWidgetDefinitionType, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The retention curve widget visualizes user retention rates over time.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: List of Retention Curve widget requests.
+ :type requests: [RetentionCurveWidgetRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the Retention Curve widget.
+ :type type: RetentionCurveWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/retention_curve_widget_definition_type.py b/datadog_api_client/v1/model/retention_curve_widget_definition_type.py
new file mode 100644
index 0000000000..5a417d978c
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_curve_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionCurveWidgetDefinitionType(ModelSimple):
+ """
+ Type of the Retention Curve widget.
+
+ :param value: If omitted defaults to "retention_curve". Must be one of ["retention_curve"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "retention_curve",
+ }
+ RETENTION_CURVE: ClassVar["RetentionCurveWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionCurveWidgetDefinitionType.RETENTION_CURVE = RetentionCurveWidgetDefinitionType("retention_curve")
diff --git a/datadog_api_client/v1/model/retention_curve_widget_request.py b/datadog_api_client/v1/model/retention_curve_widget_request.py
new file mode 100644
index 0000000000..b77fd8efae
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_curve_widget_request.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_query import RetentionQuery
+ from datadog_api_client.v1.model.retention_curve_request_type import RetentionCurveRequestType
+ from datadog_api_client.v1.model.retention_curve_style import RetentionCurveStyle
+
+class RetentionCurveWidgetRequest(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_query import RetentionQuery
+ from datadog_api_client.v1.model.retention_curve_request_type import RetentionCurveRequestType
+ from datadog_api_client.v1.model.retention_curve_style import RetentionCurveStyle
+ return {
+ "query": (RetentionQuery,),
+ "request_type": (RetentionCurveRequestType,),
+ "style": (RetentionCurveStyle,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ "style": "style",
+ }
+
+ def __init__(self_, query: RetentionQuery, request_type: RetentionCurveRequestType, style: Union[RetentionCurveStyle, UnsetType]=unset, **kwargs):
+ """
+ Retention curve widget request.
+
+ :param query: Retention query definition.
+ :type query: RetentionQuery
+
+ :param request_type: Request type for retention curve widget.
+ :type request_type: RetentionCurveRequestType
+
+ :param style: Style configuration for retention curve.
+ :type style: RetentionCurveStyle, optional
+ """
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/retention_data_source.py b/datadog_api_client/v1/model/retention_data_source.py
new file mode 100644
index 0000000000..acb8338f6f
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionDataSource(ModelSimple):
+ """
+ Data source for retention queries.
+
+ :param value: If omitted defaults to "product_analytics_retention". Must be one of ["product_analytics_retention"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "product_analytics_retention",
+ }
+ PRODUCT_ANALYTICS_RETENTION: ClassVar["RetentionDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionDataSource.PRODUCT_ANALYTICS_RETENTION = RetentionDataSource("product_analytics_retention")
diff --git a/datadog_api_client/v1/model/retention_entity.py b/datadog_api_client/v1/model/retention_entity.py
new file mode 100644
index 0000000000..7897a03e4b
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_entity.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionEntity(ModelSimple):
+ """
+ Entity to track for retention.
+
+ :param value: Must be one of ["@usr.id", "@account.id"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "@usr.id",
+ "@account.id",
+ }
+ USER_ID: ClassVar["RetentionEntity"]
+ ACCOUNT_ID: ClassVar["RetentionEntity"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionEntity.USER_ID = RetentionEntity("@usr.id")
+RetentionEntity.ACCOUNT_ID = RetentionEntity("@account.id")
diff --git a/datadog_api_client/v1/model/retention_filters.py b/datadog_api_client/v1/model/retention_filters.py
new file mode 100644
index 0000000000..dbe040e499
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_filters.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+
+class RetentionFilters(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ return {
+ "audience_filters": (ProductAnalyticsAudienceFilters,),
+ "string_filter": (str,),
+ }
+ attribute_map = {
+ "audience_filters": "audience_filters",
+ "string_filter": "string_filter",
+ }
+
+ def __init__(self_, audience_filters: Union[ProductAnalyticsAudienceFilters, UnsetType]=unset, string_filter: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Filters for retention queries.
+
+ :param audience_filters: Product Analytics/RUM audience filters.
+ :type audience_filters: ProductAnalyticsAudienceFilters, optional
+
+ :param string_filter: String filter.
+ :type string_filter: str, optional
+ """
+ if audience_filters is not unset:
+ kwargs["audience_filters"] = audience_filters
+ if string_filter is not unset:
+ kwargs["string_filter"] = string_filter
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/retention_grid_request.py b/datadog_api_client/v1/model/retention_grid_request.py
new file mode 100644
index 0000000000..e472b8d3c8
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_grid_request.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_query import RetentionQuery
+ from datadog_api_client.v1.model.retention_grid_request_type import RetentionGridRequestType
+
+class RetentionGridRequest(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_query import RetentionQuery
+ from datadog_api_client.v1.model.retention_grid_request_type import RetentionGridRequestType
+ return {
+ "query": (RetentionQuery,),
+ "request_type": (RetentionGridRequestType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: RetentionQuery, request_type: RetentionGridRequestType, **kwargs):
+ """
+ Retention grid widget request.
+
+ :param query: Retention query definition.
+ :type query: RetentionQuery
+
+ :param request_type: Request type for retention grid widget.
+ :type request_type: RetentionGridRequestType
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/retention_grid_request_type.py b/datadog_api_client/v1/model/retention_grid_request_type.py
new file mode 100644
index 0000000000..80533750ad
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_grid_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionGridRequestType(ModelSimple):
+ """
+ Request type for retention grid widget.
+
+ :param value: If omitted defaults to "retention_grid". Must be one of ["retention_grid"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "retention_grid",
+ }
+ RETENTION_GRID: ClassVar["RetentionGridRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionGridRequestType.RETENTION_GRID = RetentionGridRequestType("retention_grid")
diff --git a/datadog_api_client/v1/model/retention_group_by.py b/datadog_api_client/v1/model/retention_group_by.py
new file mode 100644
index 0000000000..03af44146d
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_group_by.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_group_by_sort import RetentionGroupBySort
+ from datadog_api_client.v1.model.retention_group_by_target import RetentionGroupByTarget
+
+class RetentionGroupBy(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_group_by_sort import RetentionGroupBySort
+ from datadog_api_client.v1.model.retention_group_by_target import RetentionGroupByTarget
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "should_exclude_missing": (bool,),
+ "sort": (RetentionGroupBySort,),
+ "source": (str,),
+ "target": (RetentionGroupByTarget,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "should_exclude_missing": "should_exclude_missing",
+ "sort": "sort",
+ "source": "source",
+ "target": "target",
+ }
+
+ def __init__(self_, facet: str, target: RetentionGroupByTarget, limit: Union[int, UnsetType]=unset, should_exclude_missing: Union[bool, UnsetType]=unset, sort: Union[RetentionGroupBySort, UnsetType]=unset, source: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Group by configuration for retention queries.
+
+ :param facet: Facet to group by.
+ :type facet: str
+
+ :param limit: Maximum number of groups.
+ :type limit: int, optional
+
+ :param should_exclude_missing: Whether to exclude missing values.
+ :type should_exclude_missing: bool, optional
+
+ :param sort: Sort configuration for retention group by.
+ :type sort: RetentionGroupBySort, optional
+
+ :param source: Source field.
+ :type source: str, optional
+
+ :param target: Target for retention group by.
+ :type target: RetentionGroupByTarget
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if should_exclude_missing is not unset:
+ kwargs["should_exclude_missing"] = should_exclude_missing
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if source is not unset:
+ kwargs["source"] = source
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
+ self_.target = target
diff --git a/datadog_api_client/v1/model/retention_group_by_sort.py b/datadog_api_client/v1/model/retention_group_by_sort.py
new file mode 100644
index 0000000000..063c7b72f6
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_group_by_sort.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class RetentionGroupBySort(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "order": "order",
+ }
+
+ def __init__(self_, order: Union[WidgetSort, UnsetType]=unset, **kwargs):
+ """
+ Sort configuration for retention group by.
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort, optional
+ """
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/retention_group_by_target.py b/datadog_api_client/v1/model/retention_group_by_target.py
new file mode 100644
index 0000000000..22e21b78b5
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_group_by_target.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionGroupByTarget(ModelSimple):
+ """
+ Target for retention group by.
+
+ :param value: Must be one of ["cohort", "return_period"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "cohort",
+ "return_period",
+ }
+ COHORT: ClassVar["RetentionGroupByTarget"]
+ RETURN_PERIOD: ClassVar["RetentionGroupByTarget"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionGroupByTarget.COHORT = RetentionGroupByTarget("cohort")
+RetentionGroupByTarget.RETURN_PERIOD = RetentionGroupByTarget("return_period")
diff --git a/datadog_api_client/v1/model/retention_query.py b/datadog_api_client/v1/model/retention_query.py
new file mode 100644
index 0000000000..ee031aa076
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_query.py
@@ -0,0 +1,92 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_compute import RetentionCompute
+ from datadog_api_client.v1.model.retention_data_source import RetentionDataSource
+ from datadog_api_client.v1.model.retention_filters import RetentionFilters
+ from datadog_api_client.v1.model.retention_group_by import RetentionGroupBy
+ from datadog_api_client.v1.model.retention_search import RetentionSearch
+
+class RetentionQuery(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_compute import RetentionCompute
+ from datadog_api_client.v1.model.retention_data_source import RetentionDataSource
+ from datadog_api_client.v1.model.retention_filters import RetentionFilters
+ from datadog_api_client.v1.model.retention_group_by import RetentionGroupBy
+ from datadog_api_client.v1.model.retention_search import RetentionSearch
+ return {
+ "compute": (RetentionCompute,),
+ "data_source": (RetentionDataSource,),
+ "filters": (RetentionFilters,),
+ "group_by": ([RetentionGroupBy],),
+ "name": (str,),
+ "search": (RetentionSearch,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "data_source": "data_source",
+ "filters": "filters",
+ "group_by": "group_by",
+ "name": "name",
+ "search": "search",
+ }
+
+ def __init__(self_, compute: RetentionCompute, data_source: RetentionDataSource, search: RetentionSearch, filters: Union[RetentionFilters, UnsetType]=unset, group_by: Union[List[RetentionGroupBy], UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Retention query definition.
+
+ :param compute: Compute configuration for retention queries.
+ :type compute: RetentionCompute
+
+ :param data_source: Data source for retention queries.
+ :type data_source: RetentionDataSource
+
+ :param filters: Filters for retention queries.
+ :type filters: RetentionFilters, optional
+
+ :param group_by: Group by configuration.
+ :type group_by: [RetentionGroupBy], optional
+
+ :param name: Name of the query.
+ :type name: str, optional
+
+ :param search: Search configuration for retention queries.
+ :type search: RetentionSearch
+ """
+ if filters is not unset:
+ kwargs["filters"] = filters
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
+ self_.compute = compute
+ self_.data_source = data_source
+ self_.search = search
diff --git a/datadog_api_client/v1/model/retention_return_condition.py b/datadog_api_client/v1/model/retention_return_condition.py
new file mode 100644
index 0000000000..d088ce1243
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_return_condition.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionReturnCondition(ModelSimple):
+ """
+ Condition for counting user return.
+
+ :param value: Must be one of ["conversion_on", "conversion_on_or_after"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "conversion_on",
+ "conversion_on_or_after",
+ }
+ CONVERSION_ON: ClassVar["RetentionReturnCondition"]
+ CONVERSION_ON_OR_AFTER: ClassVar["RetentionReturnCondition"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionReturnCondition.CONVERSION_ON = RetentionReturnCondition("conversion_on")
+RetentionReturnCondition.CONVERSION_ON_OR_AFTER = RetentionReturnCondition("conversion_on_or_after")
diff --git a/datadog_api_client/v1/model/retention_return_criteria.py b/datadog_api_client/v1/model/retention_return_criteria.py
new file mode 100644
index 0000000000..f541fa0d3e
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_return_criteria.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+ from datadog_api_client.v1.model.retention_return_criteria_time_interval import RetentionReturnCriteriaTimeInterval
+
+class RetentionReturnCriteria(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+ from datadog_api_client.v1.model.retention_return_criteria_time_interval import RetentionReturnCriteriaTimeInterval
+ return {
+ "base_query": (ProductAnalyticsBaseQuery,),
+ "time_interval": (RetentionReturnCriteriaTimeInterval,),
+ }
+ attribute_map = {
+ "base_query": "base_query",
+ "time_interval": "time_interval",
+ }
+
+ def __init__(self_, base_query: ProductAnalyticsBaseQuery, time_interval: Union[RetentionReturnCriteriaTimeInterval, UnsetType]=unset, **kwargs):
+ """
+ Return criteria for retention queries.
+
+ :param base_query: Product Analytics event query.
+ :type base_query: ProductAnalyticsBaseQuery
+
+ :param time_interval: Time interval for return criteria.
+ :type time_interval: RetentionReturnCriteriaTimeInterval, optional
+ """
+ if time_interval is not unset:
+ kwargs["time_interval"] = time_interval
+ super().__init__(kwargs)
+
+
+ self_.base_query = base_query
diff --git a/datadog_api_client/v1/model/retention_return_criteria_time_interval.py b/datadog_api_client/v1/model/retention_return_criteria_time_interval.py
new file mode 100644
index 0000000000..3137544d8c
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_return_criteria_time_interval.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_return_criteria_time_interval_type import RetentionReturnCriteriaTimeIntervalType
+ from datadog_api_client.v1.model.retention_return_criteria_time_interval_unit import RetentionReturnCriteriaTimeIntervalUnit
+
+class RetentionReturnCriteriaTimeInterval(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_return_criteria_time_interval_type import RetentionReturnCriteriaTimeIntervalType
+ from datadog_api_client.v1.model.retention_return_criteria_time_interval_unit import RetentionReturnCriteriaTimeIntervalUnit
+ return {
+ "type": (RetentionReturnCriteriaTimeIntervalType,),
+ "unit": (RetentionReturnCriteriaTimeIntervalUnit,),
+ "value": (float,),
+ }
+ attribute_map = {
+ "type": "type",
+ "unit": "unit",
+ "value": "value",
+ }
+
+ def __init__(self_, type: RetentionReturnCriteriaTimeIntervalType, unit: RetentionReturnCriteriaTimeIntervalUnit, value: float, **kwargs):
+ """
+ Time interval for return criteria.
+
+ :param type: Type of time interval for return criteria.
+ :type type: RetentionReturnCriteriaTimeIntervalType
+
+ :param unit: Unit of time for retention return criteria interval.
+ :type unit: RetentionReturnCriteriaTimeIntervalUnit
+
+ :param value: Value of the time interval.
+ :type value: float
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.unit = unit
+ self_.value = value
diff --git a/datadog_api_client/v1/model/retention_return_criteria_time_interval_type.py b/datadog_api_client/v1/model/retention_return_criteria_time_interval_type.py
new file mode 100644
index 0000000000..f31b0dbe79
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_return_criteria_time_interval_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionReturnCriteriaTimeIntervalType(ModelSimple):
+ """
+ Type of time interval for return criteria.
+
+ :param value: If omitted defaults to "fixed". Must be one of ["fixed"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "fixed",
+ }
+ FIXED: ClassVar["RetentionReturnCriteriaTimeIntervalType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionReturnCriteriaTimeIntervalType.FIXED = RetentionReturnCriteriaTimeIntervalType("fixed")
diff --git a/datadog_api_client/v1/model/retention_return_criteria_time_interval_unit.py b/datadog_api_client/v1/model/retention_return_criteria_time_interval_unit.py
new file mode 100644
index 0000000000..b0ca364ba3
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_return_criteria_time_interval_unit.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RetentionReturnCriteriaTimeIntervalUnit(ModelSimple):
+ """
+ Unit of time for retention return criteria interval.
+
+ :param value: Must be one of ["day", "week", "month"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "day",
+ "week",
+ "month",
+ }
+ DAY: ClassVar["RetentionReturnCriteriaTimeIntervalUnit"]
+ WEEK: ClassVar["RetentionReturnCriteriaTimeIntervalUnit"]
+ MONTH: ClassVar["RetentionReturnCriteriaTimeIntervalUnit"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RetentionReturnCriteriaTimeIntervalUnit.DAY = RetentionReturnCriteriaTimeIntervalUnit("day")
+RetentionReturnCriteriaTimeIntervalUnit.WEEK = RetentionReturnCriteriaTimeIntervalUnit("week")
+RetentionReturnCriteriaTimeIntervalUnit.MONTH = RetentionReturnCriteriaTimeIntervalUnit("month")
diff --git a/datadog_api_client/v1/model/retention_search.py b/datadog_api_client/v1/model/retention_search.py
new file mode 100644
index 0000000000..b86ded8928
--- /dev/null
+++ b/datadog_api_client/v1/model/retention_search.py
@@ -0,0 +1,85 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.retention_cohort_criteria import RetentionCohortCriteria
+ from datadog_api_client.v1.model.retention_filters import RetentionFilters
+ from datadog_api_client.v1.model.retention_entity import RetentionEntity
+ from datadog_api_client.v1.model.retention_return_condition import RetentionReturnCondition
+ from datadog_api_client.v1.model.retention_return_criteria import RetentionReturnCriteria
+
+class RetentionSearch(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.retention_cohort_criteria import RetentionCohortCriteria
+ from datadog_api_client.v1.model.retention_filters import RetentionFilters
+ from datadog_api_client.v1.model.retention_entity import RetentionEntity
+ from datadog_api_client.v1.model.retention_return_condition import RetentionReturnCondition
+ from datadog_api_client.v1.model.retention_return_criteria import RetentionReturnCriteria
+ return {
+ "cohort_criteria": (RetentionCohortCriteria,),
+ "filters": (RetentionFilters,),
+ "retention_entity": (RetentionEntity,),
+ "return_condition": (RetentionReturnCondition,),
+ "return_criteria": (RetentionReturnCriteria,),
+ }
+ attribute_map = {
+ "cohort_criteria": "cohort_criteria",
+ "filters": "filters",
+ "retention_entity": "retention_entity",
+ "return_condition": "return_condition",
+ "return_criteria": "return_criteria",
+ }
+
+ def __init__(self_, cohort_criteria: RetentionCohortCriteria, retention_entity: RetentionEntity, return_condition: RetentionReturnCondition, filters: Union[RetentionFilters, UnsetType]=unset, return_criteria: Union[RetentionReturnCriteria, UnsetType]=unset, **kwargs):
+ """
+ Search configuration for retention queries.
+
+ :param cohort_criteria: Cohort criteria for retention queries.
+ :type cohort_criteria: RetentionCohortCriteria
+
+ :param filters: Filters for retention queries.
+ :type filters: RetentionFilters, optional
+
+ :param retention_entity: Entity to track for retention.
+ :type retention_entity: RetentionEntity
+
+ :param return_condition: Condition for counting user return.
+ :type return_condition: RetentionReturnCondition
+
+ :param return_criteria: Return criteria for retention queries.
+ :type return_criteria: RetentionReturnCriteria, optional
+ """
+ if filters is not unset:
+ kwargs["filters"] = filters
+ if return_criteria is not unset:
+ kwargs["return_criteria"] = return_criteria
+ super().__init__(kwargs)
+
+
+ self_.cohort_criteria = cohort_criteria
+ self_.retention_entity = retention_entity
+ self_.return_condition = return_condition
diff --git a/datadog_api_client/v1/model/run_workflow_widget_definition.py b/datadog_api_client/v1/model/run_workflow_widget_definition.py
new file mode 100644
index 0000000000..09700593f5
--- /dev/null
+++ b/datadog_api_client/v1/model/run_workflow_widget_definition.py
@@ -0,0 +1,114 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.run_workflow_widget_input import RunWorkflowWidgetInput
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.run_workflow_widget_definition_type import RunWorkflowWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class RunWorkflowWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.run_workflow_widget_input import RunWorkflowWidgetInput
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.run_workflow_widget_definition_type import RunWorkflowWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "inputs": ([RunWorkflowWidgetInput],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (RunWorkflowWidgetDefinitionType,),
+ "workflow_id": (str,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "inputs": "inputs",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "workflow_id": "workflow_id",
+ }
+
+ def __init__(self_, type: RunWorkflowWidgetDefinitionType, workflow_id: str, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, inputs: Union[List[RunWorkflowWidgetInput], UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Run workflow is widget that allows you to run a workflow from a dashboard.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param inputs: Array of workflow inputs to map to dashboard template variables.
+ :type inputs: [RunWorkflowWidgetInput], optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the run workflow widget.
+ :type type: RunWorkflowWidgetDefinitionType
+
+ :param workflow_id: Workflow id.
+ :type workflow_id: str
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if inputs is not unset:
+ kwargs["inputs"] = inputs
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.workflow_id = workflow_id
diff --git a/datadog_api_client/v1/model/run_workflow_widget_definition_type.py b/datadog_api_client/v1/model/run_workflow_widget_definition_type.py
new file mode 100644
index 0000000000..86ddaee4d8
--- /dev/null
+++ b/datadog_api_client/v1/model/run_workflow_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class RunWorkflowWidgetDefinitionType(ModelSimple):
+ """
+ Type of the run workflow widget.
+
+ :param value: If omitted defaults to "run_workflow". Must be one of ["run_workflow"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "run_workflow",
+ }
+ RUN_WORKFLOW: ClassVar["RunWorkflowWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+RunWorkflowWidgetDefinitionType.RUN_WORKFLOW = RunWorkflowWidgetDefinitionType("run_workflow")
diff --git a/datadog_api_client/v1/model/run_workflow_widget_input.py b/datadog_api_client/v1/model/run_workflow_widget_input.py
new file mode 100644
index 0000000000..fc757c9d8f
--- /dev/null
+++ b/datadog_api_client/v1/model/run_workflow_widget_input.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class RunWorkflowWidgetInput(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "name": "name",
+ "value": "value",
+ }
+
+ def __init__(self_, name: str, value: str, **kwargs):
+ """
+ Object to map a dashboard template variable to a workflow input.
+
+ :param name: Name of the workflow input.
+ :type name: str
+
+ :param value: Dashboard template variable. Can be suffixed with '.value' or '.key'.
+ :type value: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.value = value
diff --git a/datadog_api_client/v1/model/sankey_join_keys.py b/datadog_api_client/v1/model/sankey_join_keys.py
new file mode 100644
index 0000000000..d748ea3f57
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_join_keys.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SankeyJoinKeys(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ return {
+ "primary": (str,),
+ "secondary": ([str],),
+ }
+ attribute_map = {
+ "primary": "primary",
+ "secondary": "secondary",
+ }
+
+ def __init__(self_, primary: str, secondary: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Join keys.
+
+ :param primary: Primary join key.
+ :type primary: str
+
+ :param secondary: Secondary join keys.
+ :type secondary: [str], optional
+ """
+ if secondary is not unset:
+ kwargs["secondary"] = secondary
+ super().__init__(kwargs)
+
+
+ self_.primary = primary
diff --git a/datadog_api_client/v1/model/sankey_network_data_source.py b/datadog_api_client/v1/model/sankey_network_data_source.py
new file mode 100644
index 0000000000..1a7f08fc3f
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_data_source.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SankeyNetworkDataSource(ModelSimple):
+ """
+ Network data source type.
+
+ :param value: If omitted defaults to "network". Must be one of ["network_device_flows", "network"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "network_device_flows",
+ "network",
+ }
+ NETWORK_DEVICE_FLOWS: ClassVar["SankeyNetworkDataSource"]
+ NETWORK: ClassVar["SankeyNetworkDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SankeyNetworkDataSource.NETWORK_DEVICE_FLOWS = SankeyNetworkDataSource("network_device_flows")
+SankeyNetworkDataSource.NETWORK = SankeyNetworkDataSource("network")
diff --git a/datadog_api_client/v1/model/sankey_network_query.py b/datadog_api_client/v1/model/sankey_network_query.py
new file mode 100644
index 0000000000..9eb59c3be2
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_query.py
@@ -0,0 +1,103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.sankey_network_query_compute import SankeyNetworkQueryCompute
+ from datadog_api_client.v1.model.sankey_network_data_source import SankeyNetworkDataSource
+ from datadog_api_client.v1.model.sankey_network_query_mode import SankeyNetworkQueryMode
+ from datadog_api_client.v1.model.sankey_network_query_sort import SankeyNetworkQuerySort
+
+class SankeyNetworkQuery(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.sankey_network_query_compute import SankeyNetworkQueryCompute
+ from datadog_api_client.v1.model.sankey_network_data_source import SankeyNetworkDataSource
+ from datadog_api_client.v1.model.sankey_network_query_mode import SankeyNetworkQueryMode
+ from datadog_api_client.v1.model.sankey_network_query_sort import SankeyNetworkQuerySort
+ return {
+ "compute": (SankeyNetworkQueryCompute,),
+ "data_source": (SankeyNetworkDataSource,),
+ "group_by": ([str],),
+ "limit": (int,),
+ "mode": (SankeyNetworkQueryMode,),
+ "query_string": (str,),
+ "should_exclude_missing": (bool,),
+ "sort": (SankeyNetworkQuerySort,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "data_source": "data_source",
+ "group_by": "group_by",
+ "limit": "limit",
+ "mode": "mode",
+ "query_string": "query_string",
+ "should_exclude_missing": "should_exclude_missing",
+ "sort": "sort",
+ }
+
+ def __init__(self_, data_source: SankeyNetworkDataSource, group_by: List[str], limit: int, query_string: str, compute: Union[SankeyNetworkQueryCompute, UnsetType]=unset, mode: Union[SankeyNetworkQueryMode, UnsetType]=unset, should_exclude_missing: Union[bool, UnsetType]=unset, sort: Union[SankeyNetworkQuerySort, UnsetType]=unset, **kwargs):
+ """
+ Query configuration for Sankey network widget.
+
+ :param compute: Compute aggregation for network queries.
+ :type compute: SankeyNetworkQueryCompute, optional
+
+ :param data_source: Network data source type.
+ :type data_source: SankeyNetworkDataSource
+
+ :param group_by: Fields to group by.
+ :type group_by: [str]
+
+ :param limit: Maximum number of results.
+ :type limit: int
+
+ :param mode: Sankey mode for network queries.
+ :type mode: SankeyNetworkQueryMode, optional
+
+ :param query_string: Query string for filtering network data.
+ :type query_string: str
+
+ :param should_exclude_missing: Whether to exclude missing values.
+ :type should_exclude_missing: bool, optional
+
+ :param sort: Sort configuration for network queries.
+ :type sort: SankeyNetworkQuerySort, optional
+ """
+ if compute is not unset:
+ kwargs["compute"] = compute
+ if mode is not unset:
+ kwargs["mode"] = mode
+ if should_exclude_missing is not unset:
+ kwargs["should_exclude_missing"] = should_exclude_missing
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.group_by = group_by
+ self_.limit = limit
+ self_.query_string = query_string
diff --git a/datadog_api_client/v1/model/sankey_network_query_compute.py b/datadog_api_client/v1/model/sankey_network_query_compute.py
new file mode 100644
index 0000000000..62ed93f935
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_query_compute.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.events_aggregation import EventsAggregation
+
+class SankeyNetworkQueryCompute(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.events_aggregation import EventsAggregation
+ return {
+ "aggregation": (EventsAggregation,),
+ "metric": (str,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ }
+
+ def __init__(self_, aggregation: Union[EventsAggregation, str, str], metric: str, **kwargs):
+ """
+ Compute aggregation for network queries.
+
+ :param aggregation: The type of aggregation that can be performed on events-based queries.
+ :type aggregation: EventsAggregation
+
+ :param metric: Metric to aggregate.
+ :type metric: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
+ self_.metric = metric
diff --git a/datadog_api_client/v1/model/sankey_network_query_mode.py b/datadog_api_client/v1/model/sankey_network_query_mode.py
new file mode 100644
index 0000000000..674504f215
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_query_mode.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SankeyNetworkQueryMode(ModelSimple):
+ """
+ Sankey mode for network queries.
+
+ :param value: If omitted defaults to "target". Must be one of ["target"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "target",
+ }
+ TARGET: ClassVar["SankeyNetworkQueryMode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SankeyNetworkQueryMode.TARGET = SankeyNetworkQueryMode("target")
diff --git a/datadog_api_client/v1/model/sankey_network_query_sort.py b/datadog_api_client/v1/model/sankey_network_query_sort.py
new file mode 100644
index 0000000000..e71a8e55db
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_query_sort.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class SankeyNetworkQuerySort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "field": (str,),
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "field": "field",
+ "order": "order",
+ }
+
+ def __init__(self_, field: Union[str, UnsetType]=unset, order: Union[WidgetSort, UnsetType]=unset, **kwargs):
+ """
+ Sort configuration for network queries.
+
+ :param field: Field to sort by.
+ :type field: str, optional
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort, optional
+ """
+ if field is not unset:
+ kwargs["field"] = field
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/sankey_network_request.py b/datadog_api_client/v1/model/sankey_network_request.py
new file mode 100644
index 0000000000..5765531ac0
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_request.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.sankey_network_query import SankeyNetworkQuery
+ from datadog_api_client.v1.model.sankey_network_request_type import SankeyNetworkRequestType
+
+class SankeyNetworkRequest(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.sankey_network_query import SankeyNetworkQuery
+ from datadog_api_client.v1.model.sankey_network_request_type import SankeyNetworkRequestType
+ return {
+ "query": (SankeyNetworkQuery,),
+ "request_type": (SankeyNetworkRequestType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: SankeyNetworkQuery, request_type: SankeyNetworkRequestType, **kwargs):
+ """
+ Sankey widget request for network data source.
+
+ :param query: Query configuration for Sankey network widget.
+ :type query: SankeyNetworkQuery
+
+ :param request_type: Type of request for network Sankey widget.
+ :type request_type: SankeyNetworkRequestType
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/sankey_network_request_type.py b/datadog_api_client/v1/model/sankey_network_request_type.py
new file mode 100644
index 0000000000..52d0f243cf
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_network_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SankeyNetworkRequestType(ModelSimple):
+ """
+ Type of request for network Sankey widget.
+
+ :param value: If omitted defaults to "netflow_sankey". Must be one of ["netflow_sankey"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "netflow_sankey",
+ }
+ NETFLOW_SANKEY: ClassVar["SankeyNetworkRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SankeyNetworkRequestType.NETFLOW_SANKEY = SankeyNetworkRequestType("netflow_sankey")
diff --git a/datadog_api_client/v1/model/sankey_rum_data_source.py b/datadog_api_client/v1/model/sankey_rum_data_source.py
new file mode 100644
index 0000000000..ec191e8635
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_rum_data_source.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SankeyRumDataSource(ModelSimple):
+ """
+ Product Analytics or RUM data source type.
+
+ :param value: If omitted defaults to "product_analytics". Must be one of ["rum", "product_analytics"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "rum",
+ "product_analytics",
+ }
+ RUM: ClassVar["SankeyRumDataSource"]
+ PRODUCT_ANALYTICS: ClassVar["SankeyRumDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SankeyRumDataSource.RUM = SankeyRumDataSource("rum")
+SankeyRumDataSource.PRODUCT_ANALYTICS = SankeyRumDataSource("product_analytics")
diff --git a/datadog_api_client/v1/model/sankey_rum_query.py b/datadog_api_client/v1/model/sankey_rum_query.py
new file mode 100644
index 0000000000..6fc1c18be7
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_rum_query.py
@@ -0,0 +1,127 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ from datadog_api_client.v1.model.sankey_rum_data_source import SankeyRumDataSource
+ from datadog_api_client.v1.model.sankey_join_keys import SankeyJoinKeys
+ from datadog_api_client.v1.model.sankey_rum_query_mode import SankeyRumQueryMode
+ from datadog_api_client.v1.model.product_analytics_audience_occurrence_filter import ProductAnalyticsAudienceOccurrenceFilter
+
+class SankeyRumQuery(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ from datadog_api_client.v1.model.sankey_rum_data_source import SankeyRumDataSource
+ from datadog_api_client.v1.model.sankey_join_keys import SankeyJoinKeys
+ from datadog_api_client.v1.model.sankey_rum_query_mode import SankeyRumQueryMode
+ from datadog_api_client.v1.model.product_analytics_audience_occurrence_filter import ProductAnalyticsAudienceOccurrenceFilter
+ return {
+ "audience_filters": (ProductAnalyticsAudienceFilters,),
+ "data_source": (SankeyRumDataSource,),
+ "entries_per_step": (int,),
+ "join_keys": (SankeyJoinKeys,),
+ "mode": (SankeyRumQueryMode,),
+ "number_of_steps": (int,),
+ "occurrences": (ProductAnalyticsAudienceOccurrenceFilter,),
+ "query_string": (str,),
+ "source": (str,),
+ "subquery_id": (str,),
+ "target": (str,),
+ }
+ attribute_map = {
+ "audience_filters": "audience_filters",
+ "data_source": "data_source",
+ "entries_per_step": "entries_per_step",
+ "join_keys": "join_keys",
+ "mode": "mode",
+ "number_of_steps": "number_of_steps",
+ "occurrences": "occurrences",
+ "query_string": "query_string",
+ "source": "source",
+ "subquery_id": "subquery_id",
+ "target": "target",
+ }
+
+ def __init__(self_, data_source: SankeyRumDataSource, mode: SankeyRumQueryMode, query_string: str, audience_filters: Union[ProductAnalyticsAudienceFilters, UnsetType]=unset, entries_per_step: Union[int, UnsetType]=unset, join_keys: Union[SankeyJoinKeys, UnsetType]=unset, number_of_steps: Union[int, UnsetType]=unset, occurrences: Union[ProductAnalyticsAudienceOccurrenceFilter, UnsetType]=unset, source: Union[str, UnsetType]=unset, subquery_id: Union[str, UnsetType]=unset, target: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Query configuration for Product Analytics or RUM Sankey widget.
+
+ :param audience_filters: Product Analytics/RUM audience filters.
+ :type audience_filters: ProductAnalyticsAudienceFilters, optional
+
+ :param data_source: Product Analytics or RUM data source type.
+ :type data_source: SankeyRumDataSource
+
+ :param entries_per_step: Entries per step.
+ :type entries_per_step: int, optional
+
+ :param join_keys: Join keys.
+ :type join_keys: SankeyJoinKeys, optional
+
+ :param mode: Sankey mode for Product Analytics or RUM queries.
+ :type mode: SankeyRumQueryMode
+
+ :param number_of_steps: Number of steps.
+ :type number_of_steps: int, optional
+
+ :param occurrences: Filter applied to occurrence counts when building a Product Analytics audience.
+ :type occurrences: ProductAnalyticsAudienceOccurrenceFilter, optional
+
+ :param query_string: RUM event search query used to filter views or actions.
+ :type query_string: str
+
+ :param source: Source.
+ :type source: str, optional
+
+ :param subquery_id: Subquery ID.
+ :type subquery_id: str, optional
+
+ :param target: Target.
+ :type target: str, optional
+ """
+ if audience_filters is not unset:
+ kwargs["audience_filters"] = audience_filters
+ if entries_per_step is not unset:
+ kwargs["entries_per_step"] = entries_per_step
+ if join_keys is not unset:
+ kwargs["join_keys"] = join_keys
+ if number_of_steps is not unset:
+ kwargs["number_of_steps"] = number_of_steps
+ if occurrences is not unset:
+ kwargs["occurrences"] = occurrences
+ if source is not unset:
+ kwargs["source"] = source
+ if subquery_id is not unset:
+ kwargs["subquery_id"] = subquery_id
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.mode = mode
+ self_.query_string = query_string
diff --git a/datadog_api_client/v1/model/sankey_rum_query_mode.py b/datadog_api_client/v1/model/sankey_rum_query_mode.py
new file mode 100644
index 0000000000..23b2f5e681
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_rum_query_mode.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SankeyRumQueryMode(ModelSimple):
+ """
+ Sankey mode for Product Analytics or RUM queries.
+
+ :param value: If omitted defaults to "source". Must be one of ["source", "target"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "source",
+ "target",
+ }
+ SOURCE: ClassVar["SankeyRumQueryMode"]
+ TARGET: ClassVar["SankeyRumQueryMode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SankeyRumQueryMode.SOURCE = SankeyRumQueryMode("source")
+SankeyRumQueryMode.TARGET = SankeyRumQueryMode("target")
diff --git a/datadog_api_client/v1/model/sankey_rum_request.py b/datadog_api_client/v1/model/sankey_rum_request.py
new file mode 100644
index 0000000000..104943da79
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_rum_request.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.sankey_rum_query import SankeyRumQuery
+ from datadog_api_client.v1.model.sankey_widget_definition_type import SankeyWidgetDefinitionType
+
+class SankeyRumRequest(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.sankey_rum_query import SankeyRumQuery
+ from datadog_api_client.v1.model.sankey_widget_definition_type import SankeyWidgetDefinitionType
+ return {
+ "query": (SankeyRumQuery,),
+ "request_type": (SankeyWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: SankeyRumQuery, request_type: SankeyWidgetDefinitionType, **kwargs):
+ """
+ Sankey widget request for Product Analytics or RUM data source.
+
+ :param query: Query configuration for Product Analytics or RUM Sankey widget.
+ :type query: SankeyRumQuery
+
+ :param request_type: Type of the Sankey widget.
+ :type request_type: SankeyWidgetDefinitionType
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/sankey_widget_definition.py b/datadog_api_client/v1/model/sankey_widget_definition.py
new file mode 100644
index 0000000000..9efa699596
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_widget_definition.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.sankey_widget_request import SankeyWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.sankey_widget_definition_type import SankeyWidgetDefinitionType
+ from datadog_api_client.v1.model.sankey_rum_request import SankeyRumRequest
+ from datadog_api_client.v1.model.sankey_network_request import SankeyNetworkRequest
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class SankeyWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.sankey_widget_request import SankeyWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.sankey_widget_definition_type import SankeyWidgetDefinitionType
+ return {
+ "requests": ([SankeyWidgetRequest],),
+ "show_other_links": (bool,),
+ "sort_nodes": (bool,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (SankeyWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "requests": "requests",
+ "show_other_links": "show_other_links",
+ "sort_nodes": "sort_nodes",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[Union[SankeyWidgetRequest, SankeyRumRequest, SankeyNetworkRequest]], type: SankeyWidgetDefinitionType, show_other_links: Union[bool, UnsetType]=unset, sort_nodes: Union[bool, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The Sankey diagram visualizes the flow of data between categories, stages or sets of values.
+
+ :param requests: List of Sankey widget requests.
+ :type requests: [SankeyWidgetRequest]
+
+ :param show_other_links: Whether to show links for "other" category.
+ :type show_other_links: bool, optional
+
+ :param sort_nodes: Whether to sort nodes in the Sankey diagram.
+ :type sort_nodes: bool, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the Sankey widget.
+ :type type: SankeyWidgetDefinitionType
+ """
+ if show_other_links is not unset:
+ kwargs["show_other_links"] = show_other_links
+ if sort_nodes is not unset:
+ kwargs["sort_nodes"] = sort_nodes
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/sankey_widget_definition_type.py b/datadog_api_client/v1/model/sankey_widget_definition_type.py
new file mode 100644
index 0000000000..98eb34b486
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SankeyWidgetDefinitionType(ModelSimple):
+ """
+ Type of the Sankey widget.
+
+ :param value: If omitted defaults to "sankey". Must be one of ["sankey"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "sankey",
+ }
+ SANKEY: ClassVar["SankeyWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SankeyWidgetDefinitionType.SANKEY = SankeyWidgetDefinitionType("sankey")
diff --git a/datadog_api_client/v1/model/sankey_widget_request.py b/datadog_api_client/v1/model/sankey_widget_request.py
new file mode 100644
index 0000000000..ddfc9e38f5
--- /dev/null
+++ b/datadog_api_client/v1/model/sankey_widget_request.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SankeyWidgetRequest(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Request definition for Sankey widget.
+
+ :param query: Query configuration for Product Analytics or RUM Sankey widget.
+ :type query: SankeyRumQuery
+
+ :param request_type: Type of the Sankey widget.
+ :type request_type: SankeyWidgetDefinitionType
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.sankey_rum_request import SankeyRumRequest
+ from datadog_api_client.v1.model.sankey_network_request import SankeyNetworkRequest
+ return {
+ "oneOf": [
+ SankeyRumRequest,
+ SankeyNetworkRequest,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/scatter_plot_request.py b/datadog_api_client/v1/model/scatter_plot_request.py
new file mode 100644
index 0000000000..7a943a1f71
--- /dev/null
+++ b/datadog_api_client/v1/model/scatter_plot_request.py
@@ -0,0 +1,116 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.scatterplot_widget_aggregator import ScatterplotWidgetAggregator
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+
+class ScatterPlotRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.scatterplot_widget_aggregator import ScatterplotWidgetAggregator
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ return {
+ "aggregator": (ScatterplotWidgetAggregator,),
+ "apm_query": (LogQueryDefinition,),
+ "event_query": (LogQueryDefinition,),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "apm_query": "apm_query",
+ "event_query": "event_query",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ }
+
+ def __init__(self_, aggregator: Union[ScatterplotWidgetAggregator, UnsetType]=unset, apm_query: Union[LogQueryDefinition, UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, **kwargs):
+ """
+ Updated scatter plot.
+
+ :param aggregator: Aggregator used for the request.
+ :type aggregator: ScatterplotWidgetAggregator, optional
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Query definition.
+ :type q: str, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/scatter_plot_widget_definition.py b/datadog_api_client/v1/model/scatter_plot_widget_definition.py
new file mode 100644
index 0000000000..afae575f10
--- /dev/null
+++ b/datadog_api_client/v1/model/scatter_plot_widget_definition.py
@@ -0,0 +1,141 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.scatter_plot_widget_definition_requests import ScatterPlotWidgetDefinitionRequests
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.scatter_plot_widget_definition_type import ScatterPlotWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class ScatterPlotWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.scatter_plot_widget_definition_requests import ScatterPlotWidgetDefinitionRequests
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.scatter_plot_widget_definition_type import ScatterPlotWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ return {
+ "color_by_groups": ([str],),
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": (ScatterPlotWidgetDefinitionRequests,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (ScatterPlotWidgetDefinitionType,),
+ "xaxis": (WidgetAxis,),
+ "yaxis": (WidgetAxis,),
+ }
+ attribute_map = {
+ "color_by_groups": "color_by_groups",
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "xaxis": "xaxis",
+ "yaxis": "yaxis",
+ }
+
+ def __init__(self_, requests: ScatterPlotWidgetDefinitionRequests, type: ScatterPlotWidgetDefinitionType, color_by_groups: Union[List[str], UnsetType]=unset, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, xaxis: Union[WidgetAxis, UnsetType]=unset, yaxis: Union[WidgetAxis, UnsetType]=unset, **kwargs):
+ """
+ The scatter plot visualization allows you to graph a chosen scope over two different metrics with their respective aggregation.
+
+ :param color_by_groups: List of groups used for colors.
+ :type color_by_groups: [str], optional
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: Widget definition.
+ :type requests: ScatterPlotWidgetDefinitionRequests
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the scatter plot widget.
+ :type type: ScatterPlotWidgetDefinitionType
+
+ :param xaxis: Axis controls for the widget.
+ :type xaxis: WidgetAxis, optional
+
+ :param yaxis: Axis controls for the widget.
+ :type yaxis: WidgetAxis, optional
+ """
+ if color_by_groups is not unset:
+ kwargs["color_by_groups"] = color_by_groups
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if xaxis is not unset:
+ kwargs["xaxis"] = xaxis
+ if yaxis is not unset:
+ kwargs["yaxis"] = yaxis
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/scatter_plot_widget_definition_requests.py b/datadog_api_client/v1/model/scatter_plot_widget_definition_requests.py
new file mode 100644
index 0000000000..bc21941601
--- /dev/null
+++ b/datadog_api_client/v1/model/scatter_plot_widget_definition_requests.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.scatterplot_table_request import ScatterplotTableRequest
+ from datadog_api_client.v1.model.scatter_plot_request import ScatterPlotRequest
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class ScatterPlotWidgetDefinitionRequests(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.scatterplot_table_request import ScatterplotTableRequest
+ from datadog_api_client.v1.model.scatter_plot_request import ScatterPlotRequest
+ return {
+ "table": (ScatterplotTableRequest,),
+ "x": (ScatterPlotRequest,),
+ "y": (ScatterPlotRequest,),
+ }
+ attribute_map = {
+ "table": "table",
+ "x": "x",
+ "y": "y",
+ }
+
+ def __init__(self_, table: Union[ScatterplotTableRequest, UnsetType]=unset, x: Union[ScatterPlotRequest, UnsetType]=unset, y: Union[ScatterPlotRequest, UnsetType]=unset, **kwargs):
+ """
+ Widget definition.
+
+ :param table: Scatterplot request containing formulas and functions.
+ :type table: ScatterplotTableRequest, optional
+
+ :param x: Updated scatter plot.
+ :type x: ScatterPlotRequest, optional
+
+ :param y: Updated scatter plot.
+ :type y: ScatterPlotRequest, optional
+ """
+ if table is not unset:
+ kwargs["table"] = table
+ if x is not unset:
+ kwargs["x"] = x
+ if y is not unset:
+ kwargs["y"] = y
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/scatter_plot_widget_definition_type.py b/datadog_api_client/v1/model/scatter_plot_widget_definition_type.py
new file mode 100644
index 0000000000..a1234e53fc
--- /dev/null
+++ b/datadog_api_client/v1/model/scatter_plot_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ScatterPlotWidgetDefinitionType(ModelSimple):
+ """
+ Type of the scatter plot widget.
+
+ :param value: If omitted defaults to "scatterplot". Must be one of ["scatterplot"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "scatterplot",
+ }
+ SCATTERPLOT: ClassVar["ScatterPlotWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ScatterPlotWidgetDefinitionType.SCATTERPLOT = ScatterPlotWidgetDefinitionType("scatterplot")
diff --git a/datadog_api_client/v1/model/scatterplot_dimension.py b/datadog_api_client/v1/model/scatterplot_dimension.py
new file mode 100644
index 0000000000..bf322d9148
--- /dev/null
+++ b/datadog_api_client/v1/model/scatterplot_dimension.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ScatterplotDimension(ModelSimple):
+ """
+ Dimension of the Scatterplot.
+
+ :param value: Must be one of ["x", "y", "radius", "color"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "x",
+ "y",
+ "radius",
+ "color",
+ }
+ X: ClassVar["ScatterplotDimension"]
+ Y: ClassVar["ScatterplotDimension"]
+ RADIUS: ClassVar["ScatterplotDimension"]
+ COLOR: ClassVar["ScatterplotDimension"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ScatterplotDimension.X = ScatterplotDimension("x")
+ScatterplotDimension.Y = ScatterplotDimension("y")
+ScatterplotDimension.RADIUS = ScatterplotDimension("radius")
+ScatterplotDimension.COLOR = ScatterplotDimension("color")
diff --git a/datadog_api_client/v1/model/scatterplot_table_request.py b/datadog_api_client/v1/model/scatterplot_table_request.py
new file mode 100644
index 0000000000..abb280469b
--- /dev/null
+++ b/datadog_api_client/v1/model/scatterplot_table_request.py
@@ -0,0 +1,78 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.scatterplot_widget_formula import ScatterplotWidgetFormula
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class ScatterplotTableRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.scatterplot_widget_formula import ScatterplotWidgetFormula
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ return {
+ "formulas": ([ScatterplotWidgetFormula],),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ }
+ attribute_map = {
+ "formulas": "formulas",
+ "queries": "queries",
+ "response_format": "response_format",
+ }
+
+ def __init__(self_, formulas: Union[List[ScatterplotWidgetFormula], UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, **kwargs):
+ """
+ Scatterplot request containing formulas and functions.
+
+ :param formulas: List of Scatterplot formulas that operate on queries.
+ :type formulas: [ScatterplotWidgetFormula], optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+ """
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/scatterplot_widget_aggregator.py b/datadog_api_client/v1/model/scatterplot_widget_aggregator.py
new file mode 100644
index 0000000000..b493e5b186
--- /dev/null
+++ b/datadog_api_client/v1/model/scatterplot_widget_aggregator.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ScatterplotWidgetAggregator(ModelSimple):
+ """
+ Aggregator used for the request.
+
+ :param value: Must be one of ["avg", "last", "max", "min", "sum"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg",
+ "last",
+ "max",
+ "min",
+ "sum",
+ }
+ AVERAGE: ClassVar["ScatterplotWidgetAggregator"]
+ LAST: ClassVar["ScatterplotWidgetAggregator"]
+ MAXIMUM: ClassVar["ScatterplotWidgetAggregator"]
+ MINIMUM: ClassVar["ScatterplotWidgetAggregator"]
+ SUM: ClassVar["ScatterplotWidgetAggregator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ScatterplotWidgetAggregator.AVERAGE = ScatterplotWidgetAggregator("avg")
+ScatterplotWidgetAggregator.LAST = ScatterplotWidgetAggregator("last")
+ScatterplotWidgetAggregator.MAXIMUM = ScatterplotWidgetAggregator("max")
+ScatterplotWidgetAggregator.MINIMUM = ScatterplotWidgetAggregator("min")
+ScatterplotWidgetAggregator.SUM = ScatterplotWidgetAggregator("sum")
diff --git a/datadog_api_client/v1/model/scatterplot_widget_formula.py b/datadog_api_client/v1/model/scatterplot_widget_formula.py
new file mode 100644
index 0000000000..7a1400cb8d
--- /dev/null
+++ b/datadog_api_client/v1/model/scatterplot_widget_formula.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.scatterplot_dimension import ScatterplotDimension
+
+class ScatterplotWidgetFormula(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.scatterplot_dimension import ScatterplotDimension
+ return {
+ "alias": (str,),
+ "dimension": (ScatterplotDimension,),
+ "formula": (str,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "dimension": "dimension",
+ "formula": "formula",
+ }
+
+ def __init__(self_, dimension: ScatterplotDimension, formula: str, alias: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Formula to be used in a Scatterplot widget query.
+
+ :param alias: Expression alias.
+ :type alias: str, optional
+
+ :param dimension: Dimension of the Scatterplot.
+ :type dimension: ScatterplotDimension
+
+ :param formula: String expression built from queries, formulas, and functions.
+ :type formula: str
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ super().__init__(kwargs)
+
+
+ self_.dimension = dimension
+ self_.formula = formula
diff --git a/datadog_api_client/v1/model/search_service_level_objective.py b/datadog_api_client/v1/model/search_service_level_objective.py
new file mode 100644
index 0000000000..04fe32a056
--- /dev/null
+++ b/datadog_api_client/v1/model/search_service_level_objective.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_service_level_objective_data import SearchServiceLevelObjectiveData
+
+class SearchServiceLevelObjective(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_service_level_objective_data import SearchServiceLevelObjectiveData
+ return {
+ "data": (SearchServiceLevelObjectiveData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[SearchServiceLevelObjectiveData, UnsetType]=unset, **kwargs):
+ """
+ A service level objective data container.
+
+ :param data: A service level objective ID and attributes.
+ :type data: SearchServiceLevelObjectiveData, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_service_level_objective_attributes.py b/datadog_api_client/v1/model/search_service_level_objective_attributes.py
new file mode 100644
index 0000000000..de2bd920e4
--- /dev/null
+++ b/datadog_api_client/v1/model/search_service_level_objective_attributes.py
@@ -0,0 +1,182 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_creator import SLOCreator
+ from datadog_api_client.v1.model.slo_overall_statuses import SLOOverallStatuses
+ from datadog_api_client.v1.model.search_slo_query import SearchSLOQuery
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_status import SLOStatus
+ from datadog_api_client.v1.model.search_slo_threshold import SearchSLOThreshold
+
+class SearchServiceLevelObjectiveAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_creator import SLOCreator
+ from datadog_api_client.v1.model.slo_overall_statuses import SLOOverallStatuses
+ from datadog_api_client.v1.model.search_slo_query import SearchSLOQuery
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_status import SLOStatus
+ from datadog_api_client.v1.model.search_slo_threshold import SearchSLOThreshold
+ return {
+ "all_tags": ([str],),
+ "created_at": (int,),
+ "creator": (SLOCreator,),
+ "description": (str, none_type),
+ "env_tags": ([str],),
+ "groups": ([str], none_type),
+ "modified_at": (int,),
+ "monitor_ids": ([int], none_type),
+ "name": (str,),
+ "overall_status": ([SLOOverallStatuses],),
+ "query": (SearchSLOQuery,),
+ "service_tags": ([str],),
+ "slo_type": (SLOType,),
+ "status": (SLOStatus,),
+ "team_tags": ([str],),
+ "thresholds": ([SearchSLOThreshold],),
+ }
+ attribute_map = {
+ "all_tags": "all_tags",
+ "created_at": "created_at",
+ "creator": "creator",
+ "description": "description",
+ "env_tags": "env_tags",
+ "groups": "groups",
+ "modified_at": "modified_at",
+ "monitor_ids": "monitor_ids",
+ "name": "name",
+ "overall_status": "overall_status",
+ "query": "query",
+ "service_tags": "service_tags",
+ "slo_type": "slo_type",
+ "status": "status",
+ "team_tags": "team_tags",
+ "thresholds": "thresholds",
+ }
+ read_only_vars = {
+ "created_at",
+ "modified_at",
+ }
+
+ def __init__(self_, all_tags: Union[List[str], UnsetType]=unset, created_at: Union[int, UnsetType]=unset, creator: Union[SLOCreator, none_type, UnsetType]=unset, description: Union[str, none_type, UnsetType]=unset, env_tags: Union[List[str], UnsetType]=unset, groups: Union[List[str], none_type, UnsetType]=unset, modified_at: Union[int, UnsetType]=unset, monitor_ids: Union[List[int], none_type, UnsetType]=unset, name: Union[str, UnsetType]=unset, overall_status: Union[List[SLOOverallStatuses], UnsetType]=unset, query: Union[SearchSLOQuery, none_type, UnsetType]=unset, service_tags: Union[List[str], UnsetType]=unset, slo_type: Union[SLOType, UnsetType]=unset, status: Union[SLOStatus, UnsetType]=unset, team_tags: Union[List[str], UnsetType]=unset, thresholds: Union[List[SearchSLOThreshold], UnsetType]=unset, **kwargs):
+ """
+ A service level objective object includes a service level indicator, thresholds
+ for one or more timeframes, and metadata ( ``name`` , ``description`` , and ``tags`` ).
+
+ :param all_tags: A list of tags associated with this service level objective.
+ Always included in service level objective responses (but may be empty).
+ :type all_tags: [str], optional
+
+ :param created_at: Creation timestamp (UNIX time in seconds)
+
+ Always included in service level objective responses.
+ :type created_at: int, optional
+
+ :param creator: The creator of the SLO
+ :type creator: SLOCreator, none_type, optional
+
+ :param description: A user-defined description of the service level objective.
+
+ Always included in service level objective responses (but may be ``null`` ).
+ Optional in create/update requests.
+ :type description: str, none_type, optional
+
+ :param env_tags: Tags with the ``env`` tag key.
+ :type env_tags: [str], optional
+
+ :param groups: A list of (up to 100) monitor groups that narrow the scope of a monitor service level objective.
+ Included in service level objective responses if it is not empty.
+ :type groups: [str], none_type, optional
+
+ :param modified_at: Modification timestamp (UNIX time in seconds)
+
+ Always included in service level objective responses.
+ :type modified_at: int, optional
+
+ :param monitor_ids: A list of monitor ids that defines the scope of a monitor service level
+ objective.
+ :type monitor_ids: [int], none_type, optional
+
+ :param name: The name of the service level objective object.
+ :type name: str, optional
+
+ :param overall_status: calculated status and error budget remaining.
+ :type overall_status: [SLOOverallStatuses], optional
+
+ :param query: A metric-based SLO. **Required if type is metric**. Note that Datadog only allows the sum by aggregator
+ to be used because this will sum up all request counts instead of averaging them, or taking the max or
+ min of all of those requests.
+ :type query: SearchSLOQuery, none_type, optional
+
+ :param service_tags: Tags with the ``service`` tag key.
+ :type service_tags: [str], optional
+
+ :param slo_type: The type of the service level objective.
+ :type slo_type: SLOType, optional
+
+ :param status: Status of the SLO's primary timeframe.
+ :type status: SLOStatus, optional
+
+ :param team_tags: Tags with the ``team`` tag key.
+ :type team_tags: [str], optional
+
+ :param thresholds: The thresholds (timeframes and associated targets) for this service level
+ objective object.
+ :type thresholds: [SearchSLOThreshold], optional
+ """
+ if all_tags is not unset:
+ kwargs["all_tags"] = all_tags
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if description is not unset:
+ kwargs["description"] = description
+ if env_tags is not unset:
+ kwargs["env_tags"] = env_tags
+ if groups is not unset:
+ kwargs["groups"] = groups
+ if modified_at is not unset:
+ kwargs["modified_at"] = modified_at
+ if monitor_ids is not unset:
+ kwargs["monitor_ids"] = monitor_ids
+ if name is not unset:
+ kwargs["name"] = name
+ if overall_status is not unset:
+ kwargs["overall_status"] = overall_status
+ if query is not unset:
+ kwargs["query"] = query
+ if service_tags is not unset:
+ kwargs["service_tags"] = service_tags
+ if slo_type is not unset:
+ kwargs["slo_type"] = slo_type
+ if status is not unset:
+ kwargs["status"] = status
+ if team_tags is not unset:
+ kwargs["team_tags"] = team_tags
+ if thresholds is not unset:
+ kwargs["thresholds"] = thresholds
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_service_level_objective_data.py b/datadog_api_client/v1/model/search_service_level_objective_data.py
new file mode 100644
index 0000000000..b97eab4b3e
--- /dev/null
+++ b/datadog_api_client/v1/model/search_service_level_objective_data.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_service_level_objective_attributes import SearchServiceLevelObjectiveAttributes
+
+class SearchServiceLevelObjectiveData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_service_level_objective_attributes import SearchServiceLevelObjectiveAttributes
+ return {
+ "attributes": (SearchServiceLevelObjectiveAttributes,),
+ "id": (str,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, attributes: Union[SearchServiceLevelObjectiveAttributes, UnsetType]=unset, id: Union[str, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A service level objective ID and attributes.
+
+ :param attributes: A service level objective object includes a service level indicator, thresholds
+ for one or more timeframes, and metadata ( ``name`` , ``description`` , and ``tags`` ).
+ :type attributes: SearchServiceLevelObjectiveAttributes, optional
+
+ :param id: A unique identifier for the service level objective object.
+
+ Always included in service level objective responses.
+ :type id: str, optional
+
+ :param type: The type of the object, must be ``slo``.
+ :type type: str, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if id is not unset:
+ kwargs["id"] = id
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_query.py b/datadog_api_client/v1/model/search_slo_query.py
new file mode 100644
index 0000000000..9a309ce9e1
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_query.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SearchSLOQuery(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "denominator": (str,),
+ "metrics": ([str], none_type),
+ "numerator": (str,),
+ }
+ attribute_map = {
+ "denominator": "denominator",
+ "metrics": "metrics",
+ "numerator": "numerator",
+ }
+
+ def __init__(self_, denominator: Union[str, UnsetType]=unset, metrics: Union[List[str], none_type, UnsetType]=unset, numerator: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A metric-based SLO. **Required if type is metric**. Note that Datadog only allows the sum by aggregator
+ to be used because this will sum up all request counts instead of averaging them, or taking the max or
+ min of all of those requests.
+
+ :param denominator: A Datadog metric query for total (valid) events.
+ :type denominator: str, optional
+
+ :param metrics: Metric names used in the query's numerator and denominator.
+ This field will return null and will be implemented in the next version of this endpoint.
+ :type metrics: [str], none_type, optional
+
+ :param numerator: A Datadog metric query for good events.
+ :type numerator: str, optional
+ """
+ if denominator is not unset:
+ kwargs["denominator"] = denominator
+ if metrics is not unset:
+ kwargs["metrics"] = metrics
+ if numerator is not unset:
+ kwargs["numerator"] = numerator
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response.py b/datadog_api_client/v1/model/search_slo_response.py
new file mode 100644
index 0000000000..5fa4779ace
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_slo_response_data import SearchSLOResponseData
+ from datadog_api_client.v1.model.search_slo_response_links import SearchSLOResponseLinks
+ from datadog_api_client.v1.model.search_slo_response_meta import SearchSLOResponseMeta
+
+class SearchSLOResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_slo_response_data import SearchSLOResponseData
+ from datadog_api_client.v1.model.search_slo_response_links import SearchSLOResponseLinks
+ from datadog_api_client.v1.model.search_slo_response_meta import SearchSLOResponseMeta
+ return {
+ "data": (SearchSLOResponseData,),
+ "links": (SearchSLOResponseLinks,),
+ "meta": (SearchSLOResponseMeta,),
+ }
+ attribute_map = {
+ "data": "data",
+ "links": "links",
+ "meta": "meta",
+ }
+
+ def __init__(self_, data: Union[SearchSLOResponseData, UnsetType]=unset, links: Union[SearchSLOResponseLinks, UnsetType]=unset, meta: Union[SearchSLOResponseMeta, UnsetType]=unset, **kwargs):
+ """
+ A search SLO response containing results from the search query.
+
+ :param data: Data from search SLO response.
+ :type data: SearchSLOResponseData, optional
+
+ :param links: Pagination links.
+ :type links: SearchSLOResponseLinks, optional
+
+ :param meta: Searches metadata returned by the API.
+ :type meta: SearchSLOResponseMeta, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if links is not unset:
+ kwargs["links"] = links
+ if meta is not unset:
+ kwargs["meta"] = meta
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_data.py b/datadog_api_client/v1/model/search_slo_response_data.py
new file mode 100644
index 0000000000..cb74d59839
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_data.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_slo_response_data_attributes import SearchSLOResponseDataAttributes
+
+class SearchSLOResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_slo_response_data_attributes import SearchSLOResponseDataAttributes
+ return {
+ "attributes": (SearchSLOResponseDataAttributes,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[SearchSLOResponseDataAttributes, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Data from search SLO response.
+
+ :param attributes: Attributes
+ :type attributes: SearchSLOResponseDataAttributes, optional
+
+ :param type: Type of service level objective result.
+ :type type: str, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_data_attributes.py b/datadog_api_client/v1/model/search_slo_response_data_attributes.py
new file mode 100644
index 0000000000..cb99dcab8a
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_data_attributes.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_slo_response_data_attributes_facets import SearchSLOResponseDataAttributesFacets
+ from datadog_api_client.v1.model.search_service_level_objective import SearchServiceLevelObjective
+
+class SearchSLOResponseDataAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_slo_response_data_attributes_facets import SearchSLOResponseDataAttributesFacets
+ from datadog_api_client.v1.model.search_service_level_objective import SearchServiceLevelObjective
+ return {
+ "facets": (SearchSLOResponseDataAttributesFacets,),
+ "slos": ([SearchServiceLevelObjective],),
+ }
+ attribute_map = {
+ "facets": "facets",
+ "slos": "slos",
+ }
+
+ def __init__(self_, facets: Union[SearchSLOResponseDataAttributesFacets, UnsetType]=unset, slos: Union[List[SearchServiceLevelObjective], UnsetType]=unset, **kwargs):
+ """
+ Attributes
+
+ :param facets: Facets
+ :type facets: SearchSLOResponseDataAttributesFacets, optional
+
+ :param slos: SLOs
+ :type slos: [SearchServiceLevelObjective], optional
+ """
+ if facets is not unset:
+ kwargs["facets"] = facets
+ if slos is not unset:
+ kwargs["slos"] = slos
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_data_attributes_facets.py b/datadog_api_client/v1/model/search_slo_response_data_attributes_facets.py
new file mode 100644
index 0000000000..06942f78bc
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_data_attributes_facets.py
@@ -0,0 +1,100 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_slo_response_data_attributes_facets_object_string import SearchSLOResponseDataAttributesFacetsObjectString
+ from datadog_api_client.v1.model.search_slo_response_data_attributes_facets_object_int import SearchSLOResponseDataAttributesFacetsObjectInt
+
+class SearchSLOResponseDataAttributesFacets(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_slo_response_data_attributes_facets_object_string import SearchSLOResponseDataAttributesFacetsObjectString
+ from datadog_api_client.v1.model.search_slo_response_data_attributes_facets_object_int import SearchSLOResponseDataAttributesFacetsObjectInt
+ return {
+ "all_tags": ([SearchSLOResponseDataAttributesFacetsObjectString],),
+ "creator_name": ([SearchSLOResponseDataAttributesFacetsObjectString],),
+ "env_tags": ([SearchSLOResponseDataAttributesFacetsObjectString],),
+ "service_tags": ([SearchSLOResponseDataAttributesFacetsObjectString],),
+ "slo_type": ([SearchSLOResponseDataAttributesFacetsObjectInt],),
+ "target": ([SearchSLOResponseDataAttributesFacetsObjectInt],),
+ "team_tags": ([SearchSLOResponseDataAttributesFacetsObjectString],),
+ "timeframe": ([SearchSLOResponseDataAttributesFacetsObjectString],),
+ }
+ attribute_map = {
+ "all_tags": "all_tags",
+ "creator_name": "creator_name",
+ "env_tags": "env_tags",
+ "service_tags": "service_tags",
+ "slo_type": "slo_type",
+ "target": "target",
+ "team_tags": "team_tags",
+ "timeframe": "timeframe",
+ }
+
+ def __init__(self_, all_tags: Union[List[SearchSLOResponseDataAttributesFacetsObjectString], UnsetType]=unset, creator_name: Union[List[SearchSLOResponseDataAttributesFacetsObjectString], UnsetType]=unset, env_tags: Union[List[SearchSLOResponseDataAttributesFacetsObjectString], UnsetType]=unset, service_tags: Union[List[SearchSLOResponseDataAttributesFacetsObjectString], UnsetType]=unset, slo_type: Union[List[SearchSLOResponseDataAttributesFacetsObjectInt], UnsetType]=unset, target: Union[List[SearchSLOResponseDataAttributesFacetsObjectInt], UnsetType]=unset, team_tags: Union[List[SearchSLOResponseDataAttributesFacetsObjectString], UnsetType]=unset, timeframe: Union[List[SearchSLOResponseDataAttributesFacetsObjectString], UnsetType]=unset, **kwargs):
+ """
+ Facets
+
+ :param all_tags: All tags associated with an SLO.
+ :type all_tags: [SearchSLOResponseDataAttributesFacetsObjectString], optional
+
+ :param creator_name: Creator of an SLO.
+ :type creator_name: [SearchSLOResponseDataAttributesFacetsObjectString], optional
+
+ :param env_tags: Tags with the ``env`` tag key.
+ :type env_tags: [SearchSLOResponseDataAttributesFacetsObjectString], optional
+
+ :param service_tags: Tags with the ``service`` tag key.
+ :type service_tags: [SearchSLOResponseDataAttributesFacetsObjectString], optional
+
+ :param slo_type: Type of SLO.
+ :type slo_type: [SearchSLOResponseDataAttributesFacetsObjectInt], optional
+
+ :param target: SLO Target
+ :type target: [SearchSLOResponseDataAttributesFacetsObjectInt], optional
+
+ :param team_tags: Tags with the ``team`` tag key.
+ :type team_tags: [SearchSLOResponseDataAttributesFacetsObjectString], optional
+
+ :param timeframe: Timeframes of SLOs.
+ :type timeframe: [SearchSLOResponseDataAttributesFacetsObjectString], optional
+ """
+ if all_tags is not unset:
+ kwargs["all_tags"] = all_tags
+ if creator_name is not unset:
+ kwargs["creator_name"] = creator_name
+ if env_tags is not unset:
+ kwargs["env_tags"] = env_tags
+ if service_tags is not unset:
+ kwargs["service_tags"] = service_tags
+ if slo_type is not unset:
+ kwargs["slo_type"] = slo_type
+ if target is not unset:
+ kwargs["target"] = target
+ if team_tags is not unset:
+ kwargs["team_tags"] = team_tags
+ if timeframe is not unset:
+ kwargs["timeframe"] = timeframe
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_data_attributes_facets_object_int.py b/datadog_api_client/v1/model/search_slo_response_data_attributes_facets_object_int.py
new file mode 100644
index 0000000000..02bf0c7e31
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_data_attributes_facets_object_int.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SearchSLOResponseDataAttributesFacetsObjectInt(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "count": (int,),
+ "name": (float,),
+ }
+ attribute_map = {
+ "count": "count",
+ "name": "name",
+ }
+
+ def __init__(self_, count: Union[int, UnsetType]=unset, name: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Facet
+
+ :param count: Count
+ :type count: int, optional
+
+ :param name: Facet
+ :type name: float, optional
+ """
+ if count is not unset:
+ kwargs["count"] = count
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_data_attributes_facets_object_string.py b/datadog_api_client/v1/model/search_slo_response_data_attributes_facets_object_string.py
new file mode 100644
index 0000000000..d0af77a298
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_data_attributes_facets_object_string.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SearchSLOResponseDataAttributesFacetsObjectString(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "count": (int,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "count": "count",
+ "name": "name",
+ }
+
+ def __init__(self_, count: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Facet
+
+ :param count: Count
+ :type count: int, optional
+
+ :param name: Facet
+ :type name: str, optional
+ """
+ if count is not unset:
+ kwargs["count"] = count
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_links.py b/datadog_api_client/v1/model/search_slo_response_links.py
new file mode 100644
index 0000000000..02ffe1e1d7
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_links.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SearchSLOResponseLinks(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "first": (str,),
+ "last": (str, none_type),
+ "next": (str,),
+ "prev": (str, none_type),
+ "self": (str,),
+ }
+ attribute_map = {
+ "first": "first",
+ "last": "last",
+ "next": "next",
+ "prev": "prev",
+ "self": "self",
+ }
+
+ def __init__(self_, first: Union[str, UnsetType]=unset, last: Union[str, none_type, UnsetType]=unset, next: Union[str, UnsetType]=unset, prev: Union[str, none_type, UnsetType]=unset, self: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Pagination links.
+
+ :param first: Link to last page.
+ :type first: str, optional
+
+ :param last: Link to first page.
+ :type last: str, none_type, optional
+
+ :param next: Link to the next page.
+ :type next: str, optional
+
+ :param prev: Link to previous page.
+ :type prev: str, none_type, optional
+
+ :param self: Link to current page.
+ :type self: str, optional
+ """
+ if first is not unset:
+ kwargs["first"] = first
+ if last is not unset:
+ kwargs["last"] = last
+ if next is not unset:
+ kwargs["next"] = next
+ if prev is not unset:
+ kwargs["prev"] = prev
+ if self is not unset:
+ kwargs["self"] = self
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_meta.py b/datadog_api_client/v1/model/search_slo_response_meta.py
new file mode 100644
index 0000000000..2b3ef75ae1
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_meta.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_slo_response_meta_page import SearchSLOResponseMetaPage
+
+class SearchSLOResponseMeta(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_slo_response_meta_page import SearchSLOResponseMetaPage
+ return {
+ "pagination": (SearchSLOResponseMetaPage,),
+ }
+ attribute_map = {
+ "pagination": "pagination",
+ }
+
+ def __init__(self_, pagination: Union[SearchSLOResponseMetaPage, UnsetType]=unset, **kwargs):
+ """
+ Searches metadata returned by the API.
+
+ :param pagination: Pagination metadata returned by the API.
+ :type pagination: SearchSLOResponseMetaPage, optional
+ """
+ if pagination is not unset:
+ kwargs["pagination"] = pagination
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_response_meta_page.py b/datadog_api_client/v1/model/search_slo_response_meta_page.py
new file mode 100644
index 0000000000..687d9ba30f
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_response_meta_page.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SearchSLOResponseMetaPage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "first_number": (int,),
+ "last_number": (int,),
+ "next_number": (int,),
+ "number": (int,),
+ "prev_number": (int,),
+ "size": (int,),
+ "total": (int,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "first_number": "first_number",
+ "last_number": "last_number",
+ "next_number": "next_number",
+ "number": "number",
+ "prev_number": "prev_number",
+ "size": "size",
+ "total": "total",
+ "type": "type",
+ }
+
+ def __init__(self_, first_number: Union[int, UnsetType]=unset, last_number: Union[int, UnsetType]=unset, next_number: Union[int, UnsetType]=unset, number: Union[int, UnsetType]=unset, prev_number: Union[int, UnsetType]=unset, size: Union[int, UnsetType]=unset, total: Union[int, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Pagination metadata returned by the API.
+
+ :param first_number: The first number.
+ :type first_number: int, optional
+
+ :param last_number: The last number.
+ :type last_number: int, optional
+
+ :param next_number: The next number.
+ :type next_number: int, optional
+
+ :param number: The page number.
+ :type number: int, optional
+
+ :param prev_number: The previous page number.
+ :type prev_number: int, optional
+
+ :param size: The size of the response.
+ :type size: int, optional
+
+ :param total: The total number of SLOs in the response.
+ :type total: int, optional
+
+ :param type: Type of pagination.
+ :type type: str, optional
+ """
+ if first_number is not unset:
+ kwargs["first_number"] = first_number
+ if last_number is not unset:
+ kwargs["last_number"] = last_number
+ if next_number is not unset:
+ kwargs["next_number"] = next_number
+ if number is not unset:
+ kwargs["number"] = number
+ if prev_number is not unset:
+ kwargs["prev_number"] = prev_number
+ if size is not unset:
+ kwargs["size"] = size
+ if total is not unset:
+ kwargs["total"] = total
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/search_slo_threshold.py b/datadog_api_client/v1/model/search_slo_threshold.py
new file mode 100644
index 0000000000..2fd57e9eff
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_threshold.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.search_slo_timeframe import SearchSLOTimeframe
+
+class SearchSLOThreshold(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.search_slo_timeframe import SearchSLOTimeframe
+ return {
+ "target": (float,),
+ "target_display": (str,),
+ "timeframe": (SearchSLOTimeframe,),
+ "warning": (float, none_type),
+ "warning_display": (str, none_type),
+ }
+ attribute_map = {
+ "target": "target",
+ "target_display": "target_display",
+ "timeframe": "timeframe",
+ "warning": "warning",
+ "warning_display": "warning_display",
+ }
+
+ def __init__(self_, target: float, timeframe: SearchSLOTimeframe, target_display: Union[str, UnsetType]=unset, warning: Union[float, none_type, UnsetType]=unset, warning_display: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ SLO thresholds (target and optionally warning) for a single time window.
+
+ :param target: The target value for the service level indicator within the corresponding
+ timeframe.
+ :type target: float
+
+ :param target_display: A string representation of the target that indicates its precision.
+ It uses trailing zeros to show significant decimal places (for example ``98.00`` ).
+
+ Always included in service level objective responses. Ignored in
+ create/update requests.
+ :type target_display: str, optional
+
+ :param timeframe: The SLO time window options.
+ :type timeframe: SearchSLOTimeframe
+
+ :param warning: The warning value for the service level objective.
+ :type warning: float, none_type, optional
+
+ :param warning_display: A string representation of the warning target (see the description of
+ the ``target_display`` field for details).
+
+ Included in service level objective responses if a warning target exists.
+ Ignored in create/update requests.
+ :type warning_display: str, none_type, optional
+ """
+ if target_display is not unset:
+ kwargs["target_display"] = target_display
+ if warning is not unset:
+ kwargs["warning"] = warning
+ if warning_display is not unset:
+ kwargs["warning_display"] = warning_display
+ super().__init__(kwargs)
+
+
+ self_.target = target
+ self_.timeframe = timeframe
diff --git a/datadog_api_client/v1/model/search_slo_timeframe.py b/datadog_api_client/v1/model/search_slo_timeframe.py
new file mode 100644
index 0000000000..ca0f67d55b
--- /dev/null
+++ b/datadog_api_client/v1/model/search_slo_timeframe.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SearchSLOTimeframe(ModelSimple):
+ """
+ The SLO time window options.
+
+ :param value: Must be one of ["7d", "30d", "90d"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "7d",
+ "30d",
+ "90d",
+ }
+ SEVEN_DAYS: ClassVar["SearchSLOTimeframe"]
+ THIRTY_DAYS: ClassVar["SearchSLOTimeframe"]
+ NINETY_DAYS: ClassVar["SearchSLOTimeframe"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SearchSLOTimeframe.SEVEN_DAYS = SearchSLOTimeframe("7d")
+SearchSLOTimeframe.THIRTY_DAYS = SearchSLOTimeframe("30d")
+SearchSLOTimeframe.NINETY_DAYS = SearchSLOTimeframe("90d")
diff --git a/datadog_api_client/v1/model/selectable_template_variable_items.py b/datadog_api_client/v1/model/selectable_template_variable_items.py
new file mode 100644
index 0000000000..4bcfc8b4b5
--- /dev/null
+++ b/datadog_api_client/v1/model/selectable_template_variable_items.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SelectableTemplateVariableItems(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "default_value": (str,),
+ "name": (str,),
+ "prefix": (str,),
+ "type": (str, none_type),
+ "visible_tags": ([str], none_type),
+ }
+ attribute_map = {
+ "default_value": "default_value",
+ "name": "name",
+ "prefix": "prefix",
+ "type": "type",
+ "visible_tags": "visible_tags",
+ }
+
+ def __init__(self_, default_value: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, prefix: Union[str, UnsetType]=unset, type: Union[str, none_type, UnsetType]=unset, visible_tags: Union[List[str], none_type, UnsetType]=unset, **kwargs):
+ """
+ Object containing the template variable's name, associated tag/attribute, default value and selectable values.
+
+ :param default_value: The default value of the template variable.
+ :type default_value: str, optional
+
+ :param name: Name of the template variable.
+ :type name: str, optional
+
+ :param prefix: The tag/attribute key associated with the template variable.
+ :type prefix: str, optional
+
+ :param type: The type of variable. This is to differentiate between filter variables (interpolated in query) and group by variables (interpolated into group by).
+ :type type: str, none_type, optional
+
+ :param visible_tags: List of visible tag values on the shared dashboard.
+ :type visible_tags: [str], none_type, optional
+ """
+ if default_value is not unset:
+ kwargs["default_value"] = default_value
+ if name is not unset:
+ kwargs["name"] = name
+ if prefix is not unset:
+ kwargs["prefix"] = prefix
+ if type is not unset:
+ kwargs["type"] = type
+ if visible_tags is not unset:
+ kwargs["visible_tags"] = visible_tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/series.py b/datadog_api_client/v1/model/series.py
new file mode 100644
index 0000000000..b6f10efe04
--- /dev/null
+++ b/datadog_api_client/v1/model/series.py
@@ -0,0 +1,83 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.point import Point
+
+class Series(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.point import Point
+ return {
+ "host": (str,),
+ "interval": (int, none_type),
+ "metric": (str,),
+ "points": ([Point],),
+ "tags": ([str],),
+ "type": (str,),
+ }
+ attribute_map = {
+ "host": "host",
+ "interval": "interval",
+ "metric": "metric",
+ "points": "points",
+ "tags": "tags",
+ "type": "type",
+ }
+
+ def __init__(self_, metric: str, points: List[Point], host: Union[str, UnsetType]=unset, interval: Union[int, none_type, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A metric to submit to Datadog.
+ See `Datadog metrics `_.
+
+ :param host: The name of the host that produced the metric.
+ :type host: str, optional
+
+ :param interval: If the type of the metric is rate or count, define the corresponding interval in seconds.
+ :type interval: int, none_type, optional
+
+ :param metric: The name of the timeseries.
+ :type metric: str
+
+ :param points: Points relating to a metric. All points must be tuples with timestamp and a scalar value (cannot be a string). Timestamps should be in POSIX time in seconds, and cannot be more than ten minutes in the future or more than one hour in the past.
+ :type points: [Point]
+
+ :param tags: A list of tags associated with the metric.
+ :type tags: [str], optional
+
+ :param type: The type of the metric. Valid types are "", ``count`` , ``gauge`` , and ``rate``.
+ :type type: str, optional
+ """
+ if host is not unset:
+ kwargs["host"] = host
+ if interval is not unset:
+ kwargs["interval"] = interval
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
+ self_.metric = metric
+ self_.points = points
diff --git a/datadog_api_client/v1/model/service_check.py b/datadog_api_client/v1/model/service_check.py
new file mode 100644
index 0000000000..460ae27b1b
--- /dev/null
+++ b/datadog_api_client/v1/model/service_check.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.service_check_status import ServiceCheckStatus
+
+class ServiceCheck(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.service_check_status import ServiceCheckStatus
+ return {
+ "check": (str,),
+ "host_name": (str,),
+ "message": (str,),
+ "status": (ServiceCheckStatus,),
+ "tags": ([str],),
+ "timestamp": (int,),
+ }
+ attribute_map = {
+ "check": "check",
+ "host_name": "host_name",
+ "message": "message",
+ "status": "status",
+ "tags": "tags",
+ "timestamp": "timestamp",
+ }
+
+ def __init__(self_, check: str, host_name: str, status: ServiceCheckStatus, tags: List[str], message: Union[str, UnsetType]=unset, timestamp: Union[int, UnsetType]=unset, **kwargs):
+ """
+ An object containing service check and status.
+
+ :param check: The check.
+ :type check: str
+
+ :param host_name: The host name correlated with the check.
+ :type host_name: str
+
+ :param message: Message containing check status.
+ :type message: str, optional
+
+ :param status: The status of a service check. Set to ``0`` for OK, ``1`` for warning, ``2`` for critical, and ``3`` for unknown.
+ :type status: ServiceCheckStatus
+
+ :param tags: Tags related to a check.
+ :type tags: [str]
+
+ :param timestamp: Time of check.
+ :type timestamp: int, optional
+ """
+ if message is not unset:
+ kwargs["message"] = message
+ if timestamp is not unset:
+ kwargs["timestamp"] = timestamp
+ super().__init__(kwargs)
+
+
+ self_.check = check
+ self_.host_name = host_name
+ self_.status = status
+ self_.tags = tags
diff --git a/datadog_api_client/v1/model/service_check_status.py b/datadog_api_client/v1/model/service_check_status.py
new file mode 100644
index 0000000000..db0513965e
--- /dev/null
+++ b/datadog_api_client/v1/model/service_check_status.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ServiceCheckStatus(ModelSimple):
+ """
+ The status of a service check. Set to `0` for OK, `1` for warning, `2` for critical, and `3` for unknown.
+
+ :param value: Must be one of [0, 1, 2, 3].
+ :type value: int
+ """
+
+ allowed_values = {
+ 0,
+ 1,
+ 2,
+ 3,
+ }
+ OK: ClassVar["ServiceCheckStatus"]
+ WARNING: ClassVar["ServiceCheckStatus"]
+ CRITICAL: ClassVar["ServiceCheckStatus"]
+ UNKNOWN: ClassVar["ServiceCheckStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (int,),
+ }
+ServiceCheckStatus.OK = ServiceCheckStatus(0)
+ServiceCheckStatus.WARNING = ServiceCheckStatus(1)
+ServiceCheckStatus.CRITICAL = ServiceCheckStatus(2)
+ServiceCheckStatus.UNKNOWN = ServiceCheckStatus(3)
diff --git a/datadog_api_client/v1/model/service_checks.py b/datadog_api_client/v1/model/service_checks.py
new file mode 100644
index 0000000000..a33919e8d8
--- /dev/null
+++ b/datadog_api_client/v1/model/service_checks.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ServiceChecks(ModelSimple):
+ """
+ The service checks.
+
+
+ :type value: [ServiceCheck]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.service_check import ServiceCheck
+ return {
+ "value": ([ServiceCheck],),
+ }
diff --git a/datadog_api_client/v1/model/service_level_objective.py b/datadog_api_client/v1/model/service_level_objective.py
new file mode 100644
index 0000000000..e1d32a855c
--- /dev/null
+++ b/datadog_api_client/v1/model/service_level_objective.py
@@ -0,0 +1,206 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+ from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+ from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+
+class ServiceLevelObjective(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+ from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ from datadog_api_client.v1.model.slo_type import SLOType
+ return {
+ "created_at": (int,),
+ "creator": (Creator,),
+ "description": (str, none_type),
+ "groups": ([str],),
+ "id": (str,),
+ "modified_at": (int,),
+ "monitor_ids": ([int],),
+ "monitor_tags": ([str],),
+ "name": (str,),
+ "query": (ServiceLevelObjectiveQuery,),
+ "sli_specification": (SLOSliSpec,),
+ "tags": ([str],),
+ "target_threshold": (float,),
+ "thresholds": ([SLOThreshold],),
+ "timeframe": (SLOTimeframe,),
+ "type": (SLOType,),
+ "warning_threshold": (float,),
+ }
+ attribute_map = {
+ "created_at": "created_at",
+ "creator": "creator",
+ "description": "description",
+ "groups": "groups",
+ "id": "id",
+ "modified_at": "modified_at",
+ "monitor_ids": "monitor_ids",
+ "monitor_tags": "monitor_tags",
+ "name": "name",
+ "query": "query",
+ "sli_specification": "sli_specification",
+ "tags": "tags",
+ "target_threshold": "target_threshold",
+ "thresholds": "thresholds",
+ "timeframe": "timeframe",
+ "type": "type",
+ "warning_threshold": "warning_threshold",
+ }
+ read_only_vars = {
+ "created_at",
+ "creator",
+ "id",
+ "modified_at",
+ }
+
+ def __init__(self_, name: str, thresholds: List[SLOThreshold], type: SLOType, created_at: Union[int, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, description: Union[str, none_type, UnsetType]=unset, groups: Union[List[str], UnsetType]=unset, id: Union[str, UnsetType]=unset, modified_at: Union[int, UnsetType]=unset, monitor_ids: Union[List[int], UnsetType]=unset, monitor_tags: Union[List[str], UnsetType]=unset, query: Union[ServiceLevelObjectiveQuery, UnsetType]=unset, sli_specification: Union[SLOSliSpec, SLOTimeSliceSpec, SLOCountSpec, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, target_threshold: Union[float, UnsetType]=unset, timeframe: Union[SLOTimeframe, UnsetType]=unset, warning_threshold: Union[float, UnsetType]=unset, **kwargs):
+ """
+ A service level objective object includes a service level indicator, thresholds
+ for one or more timeframes, and metadata ( ``name`` , ``description`` , ``tags`` , etc.).
+
+ :param created_at: Creation timestamp (UNIX time in seconds)
+
+ Always included in service level objective responses.
+ :type created_at: int, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param description: A user-defined description of the service level objective.
+
+ Always included in service level objective responses (but may be ``null`` ).
+ Optional in create/update requests.
+ :type description: str, none_type, optional
+
+ :param groups: A list of (up to 100) monitor groups that narrow the scope of a monitor service level objective.
+
+ Included in service level objective responses if it is not empty. Optional in
+ create/update requests for monitor service level objectives, but may only be
+ used when then length of the ``monitor_ids`` field is one.
+ :type groups: [str], optional
+
+ :param id: A unique identifier for the service level objective object.
+
+ Always included in service level objective responses.
+ :type id: str, optional
+
+ :param modified_at: Modification timestamp (UNIX time in seconds)
+
+ Always included in service level objective responses.
+ :type modified_at: int, optional
+
+ :param monitor_ids: A list of monitor ids that defines the scope of a monitor service level
+ objective. **Required if type is monitor**.
+ :type monitor_ids: [int], optional
+
+ :param monitor_tags: The union of monitor tags for all monitors referenced by the ``monitor_ids``
+ field.
+ Always included in service level objective responses for monitor-based service level
+ objectives (but may be empty). Ignored in create/update requests. Does not
+ affect which monitors are included in the service level objective (that is
+ determined entirely by the ``monitor_ids`` field).
+ :type monitor_tags: [str], optional
+
+ :param name: The name of the service level objective object.
+ :type name: str
+
+ :param query: A count-based (metric) SLO query. This field is superseded by ``sli_specification`` but is retained for backwards compatibility. Note that Datadog only allows the sum by aggregator
+ to be used because this will sum up all request counts instead of averaging them, or taking the max or
+ min of all of those requests.
+ :type query: ServiceLevelObjectiveQuery, optional
+
+ :param sli_specification: A generic SLI specification. This is used for time-slice and count-based (metric) SLOs only.
+ :type sli_specification: SLOSliSpec, optional
+
+ :param tags: A list of tags associated with this service level objective.
+ Always included in service level objective responses (but may be empty).
+ Optional in create/update requests.
+ :type tags: [str], optional
+
+ :param target_threshold: The target threshold such that when the service level indicator is above this
+ threshold over the given timeframe, the objective is being met.
+ :type target_threshold: float, optional
+
+ :param thresholds: The thresholds (timeframes and associated targets) for this service level
+ objective object.
+ :type thresholds: [SLOThreshold]
+
+ :param timeframe: The SLO time window options. Note that "custom" is not a valid option for creating
+ or updating SLOs. It is only used when querying SLO history over custom timeframes.
+ :type timeframe: SLOTimeframe, optional
+
+ :param type: The type of the service level objective.
+ :type type: SLOType
+
+ :param warning_threshold: The optional warning threshold such that when the service level indicator is
+ below this value for the given threshold, but above the target threshold, the
+ objective appears in a "warning" state. This value must be greater than the target
+ threshold.
+ :type warning_threshold: float, optional
+ """
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if description is not unset:
+ kwargs["description"] = description
+ if groups is not unset:
+ kwargs["groups"] = groups
+ if id is not unset:
+ kwargs["id"] = id
+ if modified_at is not unset:
+ kwargs["modified_at"] = modified_at
+ if monitor_ids is not unset:
+ kwargs["monitor_ids"] = monitor_ids
+ if monitor_tags is not unset:
+ kwargs["monitor_tags"] = monitor_tags
+ if query is not unset:
+ kwargs["query"] = query
+ if sli_specification is not unset:
+ kwargs["sli_specification"] = sli_specification
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if target_threshold is not unset:
+ kwargs["target_threshold"] = target_threshold
+ if timeframe is not unset:
+ kwargs["timeframe"] = timeframe
+ if warning_threshold is not unset:
+ kwargs["warning_threshold"] = warning_threshold
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.thresholds = thresholds
+ self_.type = type
diff --git a/datadog_api_client/v1/model/service_level_objective_query.py b/datadog_api_client/v1/model/service_level_objective_query.py
new file mode 100644
index 0000000000..218610b2fd
--- /dev/null
+++ b/datadog_api_client/v1/model/service_level_objective_query.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ServiceLevelObjectiveQuery(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "denominator": (str,),
+ "numerator": (str,),
+ }
+ attribute_map = {
+ "denominator": "denominator",
+ "numerator": "numerator",
+ }
+
+ def __init__(self_, denominator: str, numerator: str, **kwargs):
+ """
+ A count-based (metric) SLO query. This field is superseded by ``sli_specification`` but is retained for backwards compatibility. Note that Datadog only allows the sum by aggregator
+ to be used because this will sum up all request counts instead of averaging them, or taking the max or
+ min of all of those requests.
+
+ :param denominator: A Datadog metric query for total (valid) events.
+ :type denominator: str
+
+ :param numerator: A Datadog metric query for good events.
+ :type numerator: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.denominator = denominator
+ self_.numerator = numerator
diff --git a/datadog_api_client/v1/model/service_level_objective_request.py b/datadog_api_client/v1/model/service_level_objective_request.py
new file mode 100644
index 0000000000..eb992974f2
--- /dev/null
+++ b/datadog_api_client/v1/model/service_level_objective_request.py
@@ -0,0 +1,152 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+ from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+ from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+
+class ServiceLevelObjectiveRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+ from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ from datadog_api_client.v1.model.slo_type import SLOType
+ return {
+ "description": (str, none_type),
+ "groups": ([str],),
+ "monitor_ids": ([int],),
+ "name": (str,),
+ "query": (ServiceLevelObjectiveQuery,),
+ "sli_specification": (SLOSliSpec,),
+ "tags": ([str],),
+ "target_threshold": (float,),
+ "thresholds": ([SLOThreshold],),
+ "timeframe": (SLOTimeframe,),
+ "type": (SLOType,),
+ "warning_threshold": (float,),
+ }
+ attribute_map = {
+ "description": "description",
+ "groups": "groups",
+ "monitor_ids": "monitor_ids",
+ "name": "name",
+ "query": "query",
+ "sli_specification": "sli_specification",
+ "tags": "tags",
+ "target_threshold": "target_threshold",
+ "thresholds": "thresholds",
+ "timeframe": "timeframe",
+ "type": "type",
+ "warning_threshold": "warning_threshold",
+ }
+
+ def __init__(self_, name: str, thresholds: List[SLOThreshold], type: SLOType, description: Union[str, none_type, UnsetType]=unset, groups: Union[List[str], UnsetType]=unset, monitor_ids: Union[List[int], UnsetType]=unset, query: Union[ServiceLevelObjectiveQuery, UnsetType]=unset, sli_specification: Union[SLOSliSpec, SLOTimeSliceSpec, SLOCountSpec, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, target_threshold: Union[float, UnsetType]=unset, timeframe: Union[SLOTimeframe, UnsetType]=unset, warning_threshold: Union[float, UnsetType]=unset, **kwargs):
+ """
+ A service level objective object includes a service level indicator, thresholds
+ for one or more timeframes, and metadata ( ``name`` , ``description`` , ``tags`` , etc.).
+
+ :param description: A user-defined description of the service level objective.
+
+ Always included in service level objective responses (but may be ``null`` ).
+ Optional in create/update requests.
+ :type description: str, none_type, optional
+
+ :param groups: A list of (up to 100) monitor groups that narrow the scope of a monitor service level objective.
+
+ Included in service level objective responses if it is not empty. Optional in
+ create/update requests for monitor service level objectives, but may only be
+ used when then length of the ``monitor_ids`` field is one.
+ :type groups: [str], optional
+
+ :param monitor_ids: A list of monitor IDs that defines the scope of a monitor service level
+ objective. **Required if type is monitor**.
+ :type monitor_ids: [int], optional
+
+ :param name: The name of the service level objective object.
+ :type name: str
+
+ :param query: A count-based (metric) SLO query. This field is superseded by ``sli_specification`` but is retained for backwards compatibility. Note that Datadog only allows the sum by aggregator
+ to be used because this will sum up all request counts instead of averaging them, or taking the max or
+ min of all of those requests.
+ :type query: ServiceLevelObjectiveQuery, optional
+
+ :param sli_specification: A generic SLI specification. This is used for time-slice and count-based (metric) SLOs only.
+ :type sli_specification: SLOSliSpec, optional
+
+ :param tags: A list of tags associated with this service level objective.
+ Always included in service level objective responses (but may be empty).
+ Optional in create/update requests.
+ :type tags: [str], optional
+
+ :param target_threshold: The target threshold such that when the service level indicator is above this
+ threshold over the given timeframe, the objective is being met.
+ :type target_threshold: float, optional
+
+ :param thresholds: The thresholds (timeframes and associated targets) for this service level
+ objective object.
+ :type thresholds: [SLOThreshold]
+
+ :param timeframe: The SLO time window options. Note that "custom" is not a valid option for creating
+ or updating SLOs. It is only used when querying SLO history over custom timeframes.
+ :type timeframe: SLOTimeframe, optional
+
+ :param type: The type of the service level objective.
+ :type type: SLOType
+
+ :param warning_threshold: The optional warning threshold such that when the service level indicator is
+ below this value for the given threshold, but above the target threshold, the
+ objective appears in a "warning" state. This value must be greater than the target
+ threshold.
+ :type warning_threshold: float, optional
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if groups is not unset:
+ kwargs["groups"] = groups
+ if monitor_ids is not unset:
+ kwargs["monitor_ids"] = monitor_ids
+ if query is not unset:
+ kwargs["query"] = query
+ if sli_specification is not unset:
+ kwargs["sli_specification"] = sli_specification
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if target_threshold is not unset:
+ kwargs["target_threshold"] = target_threshold
+ if timeframe is not unset:
+ kwargs["timeframe"] = timeframe
+ if warning_threshold is not unset:
+ kwargs["warning_threshold"] = warning_threshold
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.thresholds = thresholds
+ self_.type = type
diff --git a/datadog_api_client/v1/model/service_map_widget_definition.py b/datadog_api_client/v1/model/service_map_widget_definition.py
new file mode 100644
index 0000000000..c565e7b45a
--- /dev/null
+++ b/datadog_api_client/v1/model/service_map_widget_definition.py
@@ -0,0 +1,104 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.service_map_widget_definition_type import ServiceMapWidgetDefinitionType
+
+class ServiceMapWidgetDefinition(ModelNormal):
+ validations = {
+ "filters": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.service_map_widget_definition_type import ServiceMapWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "filters": ([str],),
+ "service": (str,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (ServiceMapWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "filters": "filters",
+ "service": "service",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, filters: List[str], service: str, type: ServiceMapWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ This widget displays a map of a service to all of the services that call it, and all of the services that it calls.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param filters: Your environment and primary tag (or * if enabled for your account).
+ :type filters: [str]
+
+ :param service: The ID of the service you want to map.
+ :type service: str
+
+ :param title: The title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the service map widget.
+ :type type: ServiceMapWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.filters = filters
+ self_.service = service
+ self_.type = type
diff --git a/datadog_api_client/v1/model/service_map_widget_definition_type.py b/datadog_api_client/v1/model/service_map_widget_definition_type.py
new file mode 100644
index 0000000000..2ff80b1431
--- /dev/null
+++ b/datadog_api_client/v1/model/service_map_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ServiceMapWidgetDefinitionType(ModelSimple):
+ """
+ Type of the service map widget.
+
+ :param value: If omitted defaults to "servicemap". Must be one of ["servicemap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "servicemap",
+ }
+ SERVICEMAP: ClassVar["ServiceMapWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ServiceMapWidgetDefinitionType.SERVICEMAP = ServiceMapWidgetDefinitionType("servicemap")
diff --git a/datadog_api_client/v1/model/service_summary_widget_definition.py b/datadog_api_client/v1/model/service_summary_widget_definition.py
new file mode 100644
index 0000000000..de12d67e84
--- /dev/null
+++ b/datadog_api_client/v1/model/service_summary_widget_definition.py
@@ -0,0 +1,168 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_service_summary_display_format import WidgetServiceSummaryDisplayFormat
+ from datadog_api_client.v1.model.widget_size_format import WidgetSizeFormat
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.service_summary_widget_definition_type import ServiceSummaryWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class ServiceSummaryWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_service_summary_display_format import WidgetServiceSummaryDisplayFormat
+ from datadog_api_client.v1.model.widget_size_format import WidgetSizeFormat
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.service_summary_widget_definition_type import ServiceSummaryWidgetDefinitionType
+ return {
+ "description": (str,),
+ "display_format": (WidgetServiceSummaryDisplayFormat,),
+ "env": (str,),
+ "service": (str,),
+ "show_breakdown": (bool,),
+ "show_distribution": (bool,),
+ "show_errors": (bool,),
+ "show_hits": (bool,),
+ "show_latency": (bool,),
+ "show_resource_list": (bool,),
+ "size_format": (WidgetSizeFormat,),
+ "span_name": (str,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (ServiceSummaryWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "display_format": "display_format",
+ "env": "env",
+ "service": "service",
+ "show_breakdown": "show_breakdown",
+ "show_distribution": "show_distribution",
+ "show_errors": "show_errors",
+ "show_hits": "show_hits",
+ "show_latency": "show_latency",
+ "show_resource_list": "show_resource_list",
+ "size_format": "size_format",
+ "span_name": "span_name",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, env: str, service: str, span_name: str, type: ServiceSummaryWidgetDefinitionType, description: Union[str, UnsetType]=unset, display_format: Union[WidgetServiceSummaryDisplayFormat, UnsetType]=unset, show_breakdown: Union[bool, UnsetType]=unset, show_distribution: Union[bool, UnsetType]=unset, show_errors: Union[bool, UnsetType]=unset, show_hits: Union[bool, UnsetType]=unset, show_latency: Union[bool, UnsetType]=unset, show_resource_list: Union[bool, UnsetType]=unset, size_format: Union[WidgetSizeFormat, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The service summary displays the graphs of a chosen service in your dashboard.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param display_format: Number of columns to display.
+ :type display_format: WidgetServiceSummaryDisplayFormat, optional
+
+ :param env: APM environment.
+ :type env: str
+
+ :param service: APM service.
+ :type service: str
+
+ :param show_breakdown: Whether to show the latency breakdown or not.
+ :type show_breakdown: bool, optional
+
+ :param show_distribution: Whether to show the latency distribution or not.
+ :type show_distribution: bool, optional
+
+ :param show_errors: Whether to show the error metrics or not.
+ :type show_errors: bool, optional
+
+ :param show_hits: Whether to show the hits metrics or not.
+ :type show_hits: bool, optional
+
+ :param show_latency: Whether to show the latency metrics or not.
+ :type show_latency: bool, optional
+
+ :param show_resource_list: Whether to show the resource list or not.
+ :type show_resource_list: bool, optional
+
+ :param size_format: Size of the widget.
+ :type size_format: WidgetSizeFormat, optional
+
+ :param span_name: APM span name.
+ :type span_name: str
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the service summary widget.
+ :type type: ServiceSummaryWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if display_format is not unset:
+ kwargs["display_format"] = display_format
+ if show_breakdown is not unset:
+ kwargs["show_breakdown"] = show_breakdown
+ if show_distribution is not unset:
+ kwargs["show_distribution"] = show_distribution
+ if show_errors is not unset:
+ kwargs["show_errors"] = show_errors
+ if show_hits is not unset:
+ kwargs["show_hits"] = show_hits
+ if show_latency is not unset:
+ kwargs["show_latency"] = show_latency
+ if show_resource_list is not unset:
+ kwargs["show_resource_list"] = show_resource_list
+ if size_format is not unset:
+ kwargs["size_format"] = size_format
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.env = env
+ self_.service = service
+ self_.span_name = span_name
+ self_.type = type
diff --git a/datadog_api_client/v1/model/service_summary_widget_definition_type.py b/datadog_api_client/v1/model/service_summary_widget_definition_type.py
new file mode 100644
index 0000000000..4092cfd34d
--- /dev/null
+++ b/datadog_api_client/v1/model/service_summary_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ServiceSummaryWidgetDefinitionType(ModelSimple):
+ """
+ Type of the service summary widget.
+
+ :param value: If omitted defaults to "trace_service". Must be one of ["trace_service"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "trace_service",
+ }
+ TRACE_SERVICE: ClassVar["ServiceSummaryWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ServiceSummaryWidgetDefinitionType.TRACE_SERVICE = ServiceSummaryWidgetDefinitionType("trace_service")
diff --git a/datadog_api_client/v1/model/shared_dashboard.py b/datadog_api_client/v1/model/shared_dashboard.py
new file mode 100644
index 0000000000..89e4a846a9
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard.py
@@ -0,0 +1,187 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.shared_dashboard_author import SharedDashboardAuthor
+ from datadog_api_client.v1.model.dashboard_type import DashboardType
+ from datadog_api_client.v1.model.dashboard_global_time import DashboardGlobalTime
+ from datadog_api_client.v1.model.shared_dashboard_invitees_items import SharedDashboardInviteesItems
+ from datadog_api_client.v1.model.selectable_template_variable_items import SelectableTemplateVariableItems
+ from datadog_api_client.v1.model.dashboard_share_type import DashboardShareType
+ from datadog_api_client.v1.model.shared_dashboard_status import SharedDashboardStatus
+ from datadog_api_client.v1.model.viewing_preferences import ViewingPreferences
+
+class SharedDashboard(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.shared_dashboard_author import SharedDashboardAuthor
+ from datadog_api_client.v1.model.dashboard_type import DashboardType
+ from datadog_api_client.v1.model.dashboard_global_time import DashboardGlobalTime
+ from datadog_api_client.v1.model.shared_dashboard_invitees_items import SharedDashboardInviteesItems
+ from datadog_api_client.v1.model.selectable_template_variable_items import SelectableTemplateVariableItems
+ from datadog_api_client.v1.model.dashboard_share_type import DashboardShareType
+ from datadog_api_client.v1.model.shared_dashboard_status import SharedDashboardStatus
+ from datadog_api_client.v1.model.viewing_preferences import ViewingPreferences
+ return {
+ "author": (SharedDashboardAuthor,),
+ "created": (datetime,),
+ "dashboard_id": (str,),
+ "dashboard_type": (DashboardType,),
+ "embeddable_domains": ([str],),
+ "expiration": (datetime, none_type),
+ "global_time": (DashboardGlobalTime,),
+ "global_time_selectable_enabled": (bool, none_type),
+ "invitees": ([SharedDashboardInviteesItems],),
+ "last_accessed": (datetime, none_type),
+ "public_url": (str,),
+ "selectable_template_vars": ([SelectableTemplateVariableItems], none_type),
+ "share_list": ([str], none_type),
+ "share_type": (DashboardShareType,),
+ "status": (SharedDashboardStatus,),
+ "title": (str,),
+ "token": (str,),
+ "viewing_preferences": (ViewingPreferences,),
+ }
+ attribute_map = {
+ "author": "author",
+ "created": "created",
+ "dashboard_id": "dashboard_id",
+ "dashboard_type": "dashboard_type",
+ "embeddable_domains": "embeddable_domains",
+ "expiration": "expiration",
+ "global_time": "global_time",
+ "global_time_selectable_enabled": "global_time_selectable_enabled",
+ "invitees": "invitees",
+ "last_accessed": "last_accessed",
+ "public_url": "public_url",
+ "selectable_template_vars": "selectable_template_vars",
+ "share_list": "share_list",
+ "share_type": "share_type",
+ "status": "status",
+ "title": "title",
+ "token": "token",
+ "viewing_preferences": "viewing_preferences",
+ }
+ read_only_vars = {
+ "author",
+ "created",
+ "last_accessed",
+ "public_url",
+ "token",
+ }
+
+ def __init__(self_, dashboard_id: str, dashboard_type: DashboardType, author: Union[SharedDashboardAuthor, UnsetType]=unset, created: Union[datetime, UnsetType]=unset, embeddable_domains: Union[List[str], UnsetType]=unset, expiration: Union[datetime, none_type, UnsetType]=unset, global_time: Union[DashboardGlobalTime, UnsetType]=unset, global_time_selectable_enabled: Union[bool, none_type, UnsetType]=unset, invitees: Union[List[SharedDashboardInviteesItems], UnsetType]=unset, last_accessed: Union[datetime, none_type, UnsetType]=unset, public_url: Union[str, UnsetType]=unset, selectable_template_vars: Union[List[SelectableTemplateVariableItems], none_type, UnsetType]=unset, share_list: Union[List[str], none_type, UnsetType]=unset, share_type: Union[DashboardShareType, none_type, UnsetType]=unset, status: Union[SharedDashboardStatus, UnsetType]=unset, title: Union[str, UnsetType]=unset, token: Union[str, UnsetType]=unset, viewing_preferences: Union[ViewingPreferences, UnsetType]=unset, **kwargs):
+ """
+ The metadata object associated with how a dashboard has been/will be shared.
+
+ :param author: User who shared the dashboard.
+ :type author: SharedDashboardAuthor, optional
+
+ :param created: Date the dashboard was shared.
+ :type created: datetime, optional
+
+ :param dashboard_id: ID of the dashboard to share.
+ :type dashboard_id: str
+
+ :param dashboard_type: The type of the associated private dashboard.
+ :type dashboard_type: DashboardType
+
+ :param embeddable_domains: The ``SharedDashboard`` ``embeddable_domains``.
+ :type embeddable_domains: [str], optional
+
+ :param expiration: The time when an OPEN shared dashboard becomes publicly unavailable.
+ :type expiration: datetime, none_type, optional
+
+ :param global_time: Object containing the live span selection for the dashboard.
+ :type global_time: DashboardGlobalTime, optional
+
+ :param global_time_selectable_enabled: Whether to allow viewers to select a different global time setting for the shared dashboard.
+ :type global_time_selectable_enabled: bool, none_type, optional
+
+ :param invitees: The ``SharedDashboard`` ``invitees``.
+ :type invitees: [SharedDashboardInviteesItems], optional
+
+ :param last_accessed: The last time the shared dashboard was accessed. Null if never accessed.
+ :type last_accessed: datetime, none_type, optional
+
+ :param public_url: URL of the shared dashboard.
+ :type public_url: str, optional
+
+ :param selectable_template_vars: List of objects representing template variables on the shared dashboard which can have selectable values.
+ :type selectable_template_vars: [SelectableTemplateVariableItems], none_type, optional
+
+ :param share_list: List of email addresses that can receive an invitation to access to the shared dashboard. **Deprecated**.
+ :type share_list: [str], none_type, optional
+
+ :param share_type: Type of sharing access (either open to anyone who has the public URL or invite-only).
+ :type share_type: DashboardShareType, none_type, optional
+
+ :param status: Active means the dashboard is publicly available. Paused means the dashboard is not publicly available.
+ :type status: SharedDashboardStatus, optional
+
+ :param title: Title of the shared dashboard.
+ :type title: str, optional
+
+ :param token: A unique token assigned to the shared dashboard.
+ :type token: str, optional
+
+ :param viewing_preferences: The viewing preferences for a shared dashboard.
+ :type viewing_preferences: ViewingPreferences, optional
+ """
+ if author is not unset:
+ kwargs["author"] = author
+ if created is not unset:
+ kwargs["created"] = created
+ if embeddable_domains is not unset:
+ kwargs["embeddable_domains"] = embeddable_domains
+ if expiration is not unset:
+ kwargs["expiration"] = expiration
+ if global_time is not unset:
+ kwargs["global_time"] = global_time
+ if global_time_selectable_enabled is not unset:
+ kwargs["global_time_selectable_enabled"] = global_time_selectable_enabled
+ if invitees is not unset:
+ kwargs["invitees"] = invitees
+ if last_accessed is not unset:
+ kwargs["last_accessed"] = last_accessed
+ if public_url is not unset:
+ kwargs["public_url"] = public_url
+ if selectable_template_vars is not unset:
+ kwargs["selectable_template_vars"] = selectable_template_vars
+ if share_list is not unset:
+ kwargs["share_list"] = share_list
+ if share_type is not unset:
+ kwargs["share_type"] = share_type
+ if status is not unset:
+ kwargs["status"] = status
+ if title is not unset:
+ kwargs["title"] = title
+ if token is not unset:
+ kwargs["token"] = token
+ if viewing_preferences is not unset:
+ kwargs["viewing_preferences"] = viewing_preferences
+ super().__init__(kwargs)
+
+
+ self_.dashboard_id = dashboard_id
+ self_.dashboard_type = dashboard_type
diff --git a/datadog_api_client/v1/model/shared_dashboard_author.py b/datadog_api_client/v1/model/shared_dashboard_author.py
new file mode 100644
index 0000000000..c8449f58a8
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_author.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SharedDashboardAuthor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "handle": (str,),
+ "name": (str, none_type),
+ }
+ attribute_map = {
+ "handle": "handle",
+ "name": "name",
+ }
+ read_only_vars = {
+ "handle",
+ "name",
+ }
+
+ def __init__(self_, handle: Union[str, UnsetType]=unset, name: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ User who shared the dashboard.
+
+ :param handle: Identifier of the user who shared the dashboard.
+ :type handle: str, optional
+
+ :param name: Name of the user who shared the dashboard.
+ :type name: str, none_type, optional
+ """
+ if handle is not unset:
+ kwargs["handle"] = handle
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/shared_dashboard_invitees_items.py b/datadog_api_client/v1/model/shared_dashboard_invitees_items.py
new file mode 100644
index 0000000000..41157d056e
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invitees_items.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SharedDashboardInviteesItems(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "access_expiration": (datetime, none_type),
+ "created_at": (datetime,),
+ "email": (str,),
+ }
+ attribute_map = {
+ "access_expiration": "access_expiration",
+ "created_at": "created_at",
+ "email": "email",
+ }
+ read_only_vars = {
+ "created_at",
+ }
+
+ def __init__(self_, email: str, access_expiration: Union[datetime, none_type, UnsetType]=unset, created_at: Union[datetime, UnsetType]=unset, **kwargs):
+ """
+ The allowlisted invitees for an INVITE-only shared dashboard.
+
+ :param access_expiration: Time of the invitee expiration. Null means the invite will not expire.
+ :type access_expiration: datetime, none_type, optional
+
+ :param created_at: Time that the invitee was created.
+ :type created_at: datetime, optional
+
+ :param email: Email of the invitee.
+ :type email: str
+ """
+ if access_expiration is not unset:
+ kwargs["access_expiration"] = access_expiration
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ super().__init__(kwargs)
+
+
+ self_.email = email
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites.py b/datadog_api_client/v1/model/shared_dashboard_invites.py
new file mode 100644
index 0000000000..5b4a49ad12
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.shared_dashboard_invites_data import SharedDashboardInvitesData
+ from datadog_api_client.v1.model.shared_dashboard_invites_meta import SharedDashboardInvitesMeta
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_object import SharedDashboardInvitesDataObject
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_list import SharedDashboardInvitesDataList
+
+class SharedDashboardInvites(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.shared_dashboard_invites_data import SharedDashboardInvitesData
+ from datadog_api_client.v1.model.shared_dashboard_invites_meta import SharedDashboardInvitesMeta
+ return {
+ "data": (SharedDashboardInvitesData,),
+ "meta": (SharedDashboardInvitesMeta,),
+ }
+ attribute_map = {
+ "data": "data",
+ "meta": "meta",
+ }
+ read_only_vars = {
+ "meta",
+ }
+
+ def __init__(self_, data: Union[SharedDashboardInvitesData, SharedDashboardInvitesDataObject, SharedDashboardInvitesDataList], meta: Union[SharedDashboardInvitesMeta, UnsetType]=unset, **kwargs):
+ """
+ Invitations data and metadata that exists for a shared dashboard returned by the API.
+
+ :param data: An object or list of objects containing the information for an invitation to a shared dashboard.
+ :type data: SharedDashboardInvitesData
+
+ :param meta: Pagination metadata returned by the API.
+ :type meta: SharedDashboardInvitesMeta, optional
+ """
+ if meta is not unset:
+ kwargs["meta"] = meta
+ super().__init__(kwargs)
+
+
+ self_.data = data
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites_data.py b/datadog_api_client/v1/model/shared_dashboard_invites_data.py
new file mode 100644
index 0000000000..deec0b684c
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites_data.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SharedDashboardInvitesData(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ An object or list of objects containing the information for an invitation to a shared dashboard.
+
+ :param attributes: Attributes of the shared dashboard invitation
+ :type attributes: SharedDashboardInvitesDataObjectAttributes
+
+ :param type: Type for shared dashboard invitation request body.
+ :type type: DashboardInviteType
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_object import SharedDashboardInvitesDataObject
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_list import SharedDashboardInvitesDataList
+ return {
+ "oneOf": [
+ SharedDashboardInvitesDataObject,
+ SharedDashboardInvitesDataList,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites_data_list.py b/datadog_api_client/v1/model/shared_dashboard_invites_data_list.py
new file mode 100644
index 0000000000..44a5b16f3c
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites_data_list.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SharedDashboardInvitesDataList(ModelSimple):
+ """
+ A list of objects containing the information for an invitation(s) to a shared dashboard.
+
+
+ :type value: [SharedDashboardInvitesDataObject]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_object import SharedDashboardInvitesDataObject
+ return {
+ "value": ([SharedDashboardInvitesDataObject],),
+ }
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites_data_object.py b/datadog_api_client/v1/model/shared_dashboard_invites_data_object.py
new file mode 100644
index 0000000000..6b40f07714
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites_data_object.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_object_attributes import SharedDashboardInvitesDataObjectAttributes
+ from datadog_api_client.v1.model.dashboard_invite_type import DashboardInviteType
+
+class SharedDashboardInvitesDataObject(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.shared_dashboard_invites_data_object_attributes import SharedDashboardInvitesDataObjectAttributes
+ from datadog_api_client.v1.model.dashboard_invite_type import DashboardInviteType
+ return {
+ "attributes": (SharedDashboardInvitesDataObjectAttributes,),
+ "type": (DashboardInviteType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: SharedDashboardInvitesDataObjectAttributes, type: DashboardInviteType, **kwargs):
+ """
+ Object containing the information for an invitation to a shared dashboard.
+
+ :param attributes: Attributes of the shared dashboard invitation
+ :type attributes: SharedDashboardInvitesDataObjectAttributes
+
+ :param type: Type for shared dashboard invitation request body.
+ :type type: DashboardInviteType
+ """
+ super().__init__(kwargs)
+
+
+ self_.attributes = attributes
+ self_.type = type
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites_data_object_attributes.py b/datadog_api_client/v1/model/shared_dashboard_invites_data_object_attributes.py
new file mode 100644
index 0000000000..3d253e1672
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites_data_object_attributes.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SharedDashboardInvitesDataObjectAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "created_at": (datetime,),
+ "email": (str,),
+ "has_session": (bool,),
+ "invitation_expiry": (datetime,),
+ "session_expiry": (datetime, none_type),
+ "share_token": (str,),
+ }
+ attribute_map = {
+ "created_at": "created_at",
+ "email": "email",
+ "has_session": "has_session",
+ "invitation_expiry": "invitation_expiry",
+ "session_expiry": "session_expiry",
+ "share_token": "share_token",
+ }
+ read_only_vars = {
+ "created_at",
+ "has_session",
+ "invitation_expiry",
+ "session_expiry",
+ "share_token",
+ }
+
+ def __init__(self_, created_at: Union[datetime, UnsetType]=unset, email: Union[str, UnsetType]=unset, has_session: Union[bool, UnsetType]=unset, invitation_expiry: Union[datetime, UnsetType]=unset, session_expiry: Union[datetime, none_type, UnsetType]=unset, share_token: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Attributes of the shared dashboard invitation
+
+ :param created_at: When the invitation was sent.
+ :type created_at: datetime, optional
+
+ :param email: An email address that an invitation has been (or if used in invitation request, will be) sent to.
+ :type email: str, optional
+
+ :param has_session: Indicates whether an active session exists for the invitation (produced when a user clicks the link in the email).
+ :type has_session: bool, optional
+
+ :param invitation_expiry: When the invitation expires.
+ :type invitation_expiry: datetime, optional
+
+ :param session_expiry: When the invited user's session expires. null if the invitation has no associated session.
+ :type session_expiry: datetime, none_type, optional
+
+ :param share_token: The unique token of the shared dashboard that was (or is to be) shared.
+ :type share_token: str, optional
+ """
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if email is not unset:
+ kwargs["email"] = email
+ if has_session is not unset:
+ kwargs["has_session"] = has_session
+ if invitation_expiry is not unset:
+ kwargs["invitation_expiry"] = invitation_expiry
+ if session_expiry is not unset:
+ kwargs["session_expiry"] = session_expiry
+ if share_token is not unset:
+ kwargs["share_token"] = share_token
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites_meta.py b/datadog_api_client/v1/model/shared_dashboard_invites_meta.py
new file mode 100644
index 0000000000..0ac0827719
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites_meta.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.shared_dashboard_invites_meta_page import SharedDashboardInvitesMetaPage
+
+class SharedDashboardInvitesMeta(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.shared_dashboard_invites_meta_page import SharedDashboardInvitesMetaPage
+ return {
+ "page": (SharedDashboardInvitesMetaPage,),
+ }
+ attribute_map = {
+ "page": "page",
+ }
+
+ def __init__(self_, page: Union[SharedDashboardInvitesMetaPage, UnsetType]=unset, **kwargs):
+ """
+ Pagination metadata returned by the API.
+
+ :param page: Object containing the total count of invitations across all pages
+ :type page: SharedDashboardInvitesMetaPage, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/shared_dashboard_invites_meta_page.py b/datadog_api_client/v1/model/shared_dashboard_invites_meta_page.py
new file mode 100644
index 0000000000..7a7c9267e7
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_invites_meta_page.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SharedDashboardInvitesMetaPage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_count": (int,),
+ }
+ attribute_map = {
+ "total_count": "total_count",
+ }
+
+ def __init__(self_, total_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object containing the total count of invitations across all pages
+
+ :param total_count: The total number of invitations on this shared board, across all pages.
+ :type total_count: int, optional
+ """
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/shared_dashboard_status.py b/datadog_api_client/v1/model/shared_dashboard_status.py
new file mode 100644
index 0000000000..300814058a
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_status.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SharedDashboardStatus(ModelSimple):
+ """
+ Active means the dashboard is publicly available. Paused means the dashboard is not publicly available.
+
+ :param value: Must be one of ["active", "paused"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "active",
+ "paused",
+ }
+ ACTIVE: ClassVar["SharedDashboardStatus"]
+ PAUSED: ClassVar["SharedDashboardStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SharedDashboardStatus.ACTIVE = SharedDashboardStatus("active")
+SharedDashboardStatus.PAUSED = SharedDashboardStatus("paused")
diff --git a/datadog_api_client/v1/model/shared_dashboard_update_request.py b/datadog_api_client/v1/model/shared_dashboard_update_request.py
new file mode 100644
index 0000000000..c86a35b4ee
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_update_request.py
@@ -0,0 +1,129 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.shared_dashboard_update_request_global_time import SharedDashboardUpdateRequestGlobalTime
+ from datadog_api_client.v1.model.shared_dashboard_invitees_items import SharedDashboardInviteesItems
+ from datadog_api_client.v1.model.selectable_template_variable_items import SelectableTemplateVariableItems
+ from datadog_api_client.v1.model.dashboard_share_type import DashboardShareType
+ from datadog_api_client.v1.model.shared_dashboard_status import SharedDashboardStatus
+ from datadog_api_client.v1.model.viewing_preferences import ViewingPreferences
+
+class SharedDashboardUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.shared_dashboard_update_request_global_time import SharedDashboardUpdateRequestGlobalTime
+ from datadog_api_client.v1.model.shared_dashboard_invitees_items import SharedDashboardInviteesItems
+ from datadog_api_client.v1.model.selectable_template_variable_items import SelectableTemplateVariableItems
+ from datadog_api_client.v1.model.dashboard_share_type import DashboardShareType
+ from datadog_api_client.v1.model.shared_dashboard_status import SharedDashboardStatus
+ from datadog_api_client.v1.model.viewing_preferences import ViewingPreferences
+ return {
+ "embeddable_domains": ([str],),
+ "expiration": (datetime, none_type),
+ "global_time": (SharedDashboardUpdateRequestGlobalTime,),
+ "global_time_selectable_enabled": (bool, none_type),
+ "invitees": ([SharedDashboardInviteesItems],),
+ "selectable_template_vars": ([SelectableTemplateVariableItems], none_type),
+ "share_list": ([str], none_type),
+ "share_type": (DashboardShareType,),
+ "status": (SharedDashboardStatus,),
+ "title": (str,),
+ "viewing_preferences": (ViewingPreferences,),
+ }
+ attribute_map = {
+ "embeddable_domains": "embeddable_domains",
+ "expiration": "expiration",
+ "global_time": "global_time",
+ "global_time_selectable_enabled": "global_time_selectable_enabled",
+ "invitees": "invitees",
+ "selectable_template_vars": "selectable_template_vars",
+ "share_list": "share_list",
+ "share_type": "share_type",
+ "status": "status",
+ "title": "title",
+ "viewing_preferences": "viewing_preferences",
+ }
+
+ def __init__(self_, embeddable_domains: Union[List[str], UnsetType]=unset, expiration: Union[datetime, none_type, UnsetType]=unset, global_time: Union[SharedDashboardUpdateRequestGlobalTime, none_type, UnsetType]=unset, global_time_selectable_enabled: Union[bool, none_type, UnsetType]=unset, invitees: Union[List[SharedDashboardInviteesItems], UnsetType]=unset, selectable_template_vars: Union[List[SelectableTemplateVariableItems], none_type, UnsetType]=unset, share_list: Union[List[str], none_type, UnsetType]=unset, share_type: Union[DashboardShareType, none_type, UnsetType]=unset, status: Union[SharedDashboardStatus, UnsetType]=unset, title: Union[str, UnsetType]=unset, viewing_preferences: Union[ViewingPreferences, UnsetType]=unset, **kwargs):
+ """
+ Update a shared dashboard's settings.
+
+ :param embeddable_domains: The ``SharedDashboard`` ``embeddable_domains``.
+ :type embeddable_domains: [str], optional
+
+ :param expiration: The time when an OPEN shared dashboard becomes publicly unavailable.
+ :type expiration: datetime, none_type, optional
+
+ :param global_time: Timeframe setting for the shared dashboard.
+ :type global_time: SharedDashboardUpdateRequestGlobalTime, none_type, optional
+
+ :param global_time_selectable_enabled: Whether to allow viewers to select a different global time setting for the shared dashboard.
+ :type global_time_selectable_enabled: bool, none_type, optional
+
+ :param invitees: The ``SharedDashboard`` ``invitees``.
+ :type invitees: [SharedDashboardInviteesItems], optional
+
+ :param selectable_template_vars: List of objects representing template variables on the shared dashboard which can have selectable values.
+ :type selectable_template_vars: [SelectableTemplateVariableItems], none_type, optional
+
+ :param share_list: List of email addresses that can be given access to the shared dashboard. **Deprecated**.
+ :type share_list: [str], none_type, optional
+
+ :param share_type: Type of sharing access (either open to anyone who has the public URL or invite-only).
+ :type share_type: DashboardShareType, none_type, optional
+
+ :param status: Active means the dashboard is publicly available. Paused means the dashboard is not publicly available.
+ :type status: SharedDashboardStatus, optional
+
+ :param title: Title of the shared dashboard.
+ :type title: str, optional
+
+ :param viewing_preferences: The viewing preferences for a shared dashboard.
+ :type viewing_preferences: ViewingPreferences, optional
+ """
+ if embeddable_domains is not unset:
+ kwargs["embeddable_domains"] = embeddable_domains
+ if expiration is not unset:
+ kwargs["expiration"] = expiration
+ if global_time is not unset:
+ kwargs["global_time"] = global_time
+ if global_time_selectable_enabled is not unset:
+ kwargs["global_time_selectable_enabled"] = global_time_selectable_enabled
+ if invitees is not unset:
+ kwargs["invitees"] = invitees
+ if selectable_template_vars is not unset:
+ kwargs["selectable_template_vars"] = selectable_template_vars
+ if share_list is not unset:
+ kwargs["share_list"] = share_list
+ if share_type is not unset:
+ kwargs["share_type"] = share_type
+ if status is not unset:
+ kwargs["status"] = status
+ if title is not unset:
+ kwargs["title"] = title
+ if viewing_preferences is not unset:
+ kwargs["viewing_preferences"] = viewing_preferences
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/shared_dashboard_update_request_global_time.py b/datadog_api_client/v1/model/shared_dashboard_update_request_global_time.py
new file mode 100644
index 0000000000..9ce216fc8d
--- /dev/null
+++ b/datadog_api_client/v1/model/shared_dashboard_update_request_global_time.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.dashboard_global_time_live_span import DashboardGlobalTimeLiveSpan
+
+class SharedDashboardUpdateRequestGlobalTime(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.dashboard_global_time_live_span import DashboardGlobalTimeLiveSpan
+ return {
+ "live_span": (DashboardGlobalTimeLiveSpan,),
+ }
+ attribute_map = {
+ "live_span": "live_span",
+ }
+
+ def __init__(self_, live_span: Union[DashboardGlobalTimeLiveSpan, UnsetType]=unset, **kwargs):
+ """
+ Timeframe setting for the shared dashboard.
+
+ :param live_span: Dashboard global time live_span selection
+ :type live_span: DashboardGlobalTimeLiveSpan, optional
+ """
+ if live_span is not unset:
+ kwargs["live_span"] = live_span
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/signal_archive_reason.py b/datadog_api_client/v1/model/signal_archive_reason.py
new file mode 100644
index 0000000000..406dc137fe
--- /dev/null
+++ b/datadog_api_client/v1/model/signal_archive_reason.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SignalArchiveReason(ModelSimple):
+ """
+ Reason why a signal has been archived.
+
+ :param value: Must be one of ["none", "false_positive", "testing_or_maintenance", "investigated_case_opened", "true_positive_benign", "true_positive_malicious", "other"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "none",
+ "false_positive",
+ "testing_or_maintenance",
+ "investigated_case_opened",
+ "true_positive_benign",
+ "true_positive_malicious",
+ "other",
+ }
+ NONE: ClassVar["SignalArchiveReason"]
+ FALSE_POSITIVE: ClassVar["SignalArchiveReason"]
+ TESTING_OR_MAINTENANCE: ClassVar["SignalArchiveReason"]
+ INVESTIGATED_CASE_OPENED: ClassVar["SignalArchiveReason"]
+ TRUE_POSITIVE_BENIGN: ClassVar["SignalArchiveReason"]
+ TRUE_POSITIVE_MALICIOUS: ClassVar["SignalArchiveReason"]
+ OTHER: ClassVar["SignalArchiveReason"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SignalArchiveReason.NONE = SignalArchiveReason("none")
+SignalArchiveReason.FALSE_POSITIVE = SignalArchiveReason("false_positive")
+SignalArchiveReason.TESTING_OR_MAINTENANCE = SignalArchiveReason("testing_or_maintenance")
+SignalArchiveReason.INVESTIGATED_CASE_OPENED = SignalArchiveReason("investigated_case_opened")
+SignalArchiveReason.TRUE_POSITIVE_BENIGN = SignalArchiveReason("true_positive_benign")
+SignalArchiveReason.TRUE_POSITIVE_MALICIOUS = SignalArchiveReason("true_positive_malicious")
+SignalArchiveReason.OTHER = SignalArchiveReason("other")
diff --git a/datadog_api_client/v1/model/signal_assignee_update_request.py b/datadog_api_client/v1/model/signal_assignee_update_request.py
new file mode 100644
index 0000000000..aeeb7c2352
--- /dev/null
+++ b/datadog_api_client/v1/model/signal_assignee_update_request.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SignalAssigneeUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "assignee": (str,),
+ "version": (int,),
+ }
+ attribute_map = {
+ "assignee": "assignee",
+ "version": "version",
+ }
+
+ def __init__(self_, assignee: str, version: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Attributes describing an assignee update operation over a security signal.
+
+ :param assignee: The UUID of the user being assigned. Use empty string to return signal to unassigned.
+ :type assignee: str
+
+ :param version: Version of the updated signal. If server side version is higher, update will be rejected.
+ :type version: int, optional
+ """
+ if version is not unset:
+ kwargs["version"] = version
+ super().__init__(kwargs)
+
+
+ self_.assignee = assignee
diff --git a/datadog_api_client/v1/model/signal_state_update_request.py b/datadog_api_client/v1/model/signal_state_update_request.py
new file mode 100644
index 0000000000..7f03629dd4
--- /dev/null
+++ b/datadog_api_client/v1/model/signal_state_update_request.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.signal_archive_reason import SignalArchiveReason
+ from datadog_api_client.v1.model.signal_triage_state import SignalTriageState
+
+class SignalStateUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.signal_archive_reason import SignalArchiveReason
+ from datadog_api_client.v1.model.signal_triage_state import SignalTriageState
+ return {
+ "archive_comment": (str,),
+ "archive_reason": (SignalArchiveReason,),
+ "state": (SignalTriageState,),
+ "version": (int,),
+ }
+ attribute_map = {
+ "archive_comment": "archiveComment",
+ "archive_reason": "archiveReason",
+ "state": "state",
+ "version": "version",
+ }
+
+ def __init__(self_, state: SignalTriageState, archive_comment: Union[str, UnsetType]=unset, archive_reason: Union[SignalArchiveReason, UnsetType]=unset, version: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Attributes describing the change of state for a given state.
+
+ :param archive_comment: Optional comment to explain why a signal is being archived.
+ :type archive_comment: str, optional
+
+ :param archive_reason: Reason why a signal has been archived.
+ :type archive_reason: SignalArchiveReason, optional
+
+ :param state: The new triage state of the signal.
+ :type state: SignalTriageState
+
+ :param version: Version of the updated signal. If server side version is higher, update will be rejected.
+ :type version: int, optional
+ """
+ if archive_comment is not unset:
+ kwargs["archive_comment"] = archive_comment
+ if archive_reason is not unset:
+ kwargs["archive_reason"] = archive_reason
+ if version is not unset:
+ kwargs["version"] = version
+ super().__init__(kwargs)
+
+
+ self_.state = state
diff --git a/datadog_api_client/v1/model/signal_triage_state.py b/datadog_api_client/v1/model/signal_triage_state.py
new file mode 100644
index 0000000000..d8f0b7a0b8
--- /dev/null
+++ b/datadog_api_client/v1/model/signal_triage_state.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SignalTriageState(ModelSimple):
+ """
+ The new triage state of the signal.
+
+ :param value: Must be one of ["open", "archived", "under_review"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "open",
+ "archived",
+ "under_review",
+ }
+ OPEN: ClassVar["SignalTriageState"]
+ ARCHIVED: ClassVar["SignalTriageState"]
+ UNDER_REVIEW: ClassVar["SignalTriageState"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SignalTriageState.OPEN = SignalTriageState("open")
+SignalTriageState.ARCHIVED = SignalTriageState("archived")
+SignalTriageState.UNDER_REVIEW = SignalTriageState("under_review")
diff --git a/datadog_api_client/v1/model/slack_integration_channel.py b/datadog_api_client/v1/model/slack_integration_channel.py
new file mode 100644
index 0000000000..654f8e827b
--- /dev/null
+++ b/datadog_api_client/v1/model/slack_integration_channel.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slack_integration_channel_display import SlackIntegrationChannelDisplay
+
+class SlackIntegrationChannel(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slack_integration_channel_display import SlackIntegrationChannelDisplay
+ return {
+ "display": (SlackIntegrationChannelDisplay,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "display": "display",
+ "name": "name",
+ }
+
+ def __init__(self_, display: Union[SlackIntegrationChannelDisplay, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The Slack channel configuration.
+
+ :param display: Configuration options for what is shown in an alert event message.
+ :type display: SlackIntegrationChannelDisplay, optional
+
+ :param name: Your channel name.
+ :type name: str, optional
+ """
+ if display is not unset:
+ kwargs["display"] = display
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slack_integration_channel_display.py b/datadog_api_client/v1/model/slack_integration_channel_display.py
new file mode 100644
index 0000000000..a97f906aa8
--- /dev/null
+++ b/datadog_api_client/v1/model/slack_integration_channel_display.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SlackIntegrationChannelDisplay(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "message": (bool,),
+ "mute_buttons": (bool,),
+ "notified": (bool,),
+ "snapshot": (bool,),
+ "tags": (bool,),
+ }
+ attribute_map = {
+ "message": "message",
+ "mute_buttons": "mute_buttons",
+ "notified": "notified",
+ "snapshot": "snapshot",
+ "tags": "tags",
+ }
+
+ def __init__(self_, message: Union[bool, UnsetType]=unset, mute_buttons: Union[bool, UnsetType]=unset, notified: Union[bool, UnsetType]=unset, snapshot: Union[bool, UnsetType]=unset, tags: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Configuration options for what is shown in an alert event message.
+
+ :param message: Show the main body of the alert event.
+ :type message: bool, optional
+
+ :param mute_buttons: Show interactive buttons to mute the alerting monitor.
+ :type mute_buttons: bool, optional
+
+ :param notified: Show the list of @-handles in the alert event.
+ :type notified: bool, optional
+
+ :param snapshot: Show the alert event's snapshot image.
+ :type snapshot: bool, optional
+
+ :param tags: Show the scopes on which the monitor alerted.
+ :type tags: bool, optional
+ """
+ if message is not unset:
+ kwargs["message"] = message
+ if mute_buttons is not unset:
+ kwargs["mute_buttons"] = mute_buttons
+ if notified is not unset:
+ kwargs["notified"] = notified
+ if snapshot is not unset:
+ kwargs["snapshot"] = snapshot
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slack_integration_channels.py b/datadog_api_client/v1/model/slack_integration_channels.py
new file mode 100644
index 0000000000..6321d4675b
--- /dev/null
+++ b/datadog_api_client/v1/model/slack_integration_channels.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SlackIntegrationChannels(ModelSimple):
+ """
+ A list of configured Slack channels.
+
+
+ :type value: [SlackIntegrationChannel]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slack_integration_channel import SlackIntegrationChannel
+ return {
+ "value": ([SlackIntegrationChannel],),
+ }
diff --git a/datadog_api_client/v1/model/slo_bulk_delete.py b/datadog_api_client/v1/model/slo_bulk_delete.py
new file mode 100644
index 0000000000..0b41877fcd
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_bulk_delete.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+
+class SLOBulkDelete(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ return ([SLOTimeframe],)
+
+ def __init__(self_, **kwargs):
+ """
+ A map of service level objective object IDs to arrays of timeframes,
+ which indicate the thresholds to delete for each ID.
+ """
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_bulk_delete_error.py b/datadog_api_client/v1/model/slo_bulk_delete_error.py
new file mode 100644
index 0000000000..62b639701d
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_bulk_delete_error.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_error_timeframe import SLOErrorTimeframe
+
+class SLOBulkDeleteError(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_error_timeframe import SLOErrorTimeframe
+ return {
+ "id": (str,),
+ "message": (str,),
+ "timeframe": (SLOErrorTimeframe,),
+ }
+ attribute_map = {
+ "id": "id",
+ "message": "message",
+ "timeframe": "timeframe",
+ }
+
+ def __init__(self_, id: str, message: str, timeframe: SLOErrorTimeframe, **kwargs):
+ """
+ Object describing the error.
+
+ :param id: The ID of the service level objective object associated with
+ this error.
+ :type id: str
+
+ :param message: The error message.
+ :type message: str
+
+ :param timeframe: The timeframe of the threshold associated with this error
+ or "all" if all thresholds are affected.
+ :type timeframe: SLOErrorTimeframe
+ """
+ super().__init__(kwargs)
+
+
+ self_.id = id
+ self_.message = message
+ self_.timeframe = timeframe
diff --git a/datadog_api_client/v1/model/slo_bulk_delete_response.py b/datadog_api_client/v1/model/slo_bulk_delete_response.py
new file mode 100644
index 0000000000..67d8360583
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_bulk_delete_response.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_bulk_delete_response_data import SLOBulkDeleteResponseData
+ from datadog_api_client.v1.model.slo_bulk_delete_error import SLOBulkDeleteError
+
+class SLOBulkDeleteResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_bulk_delete_response_data import SLOBulkDeleteResponseData
+ from datadog_api_client.v1.model.slo_bulk_delete_error import SLOBulkDeleteError
+ return {
+ "data": (SLOBulkDeleteResponseData,),
+ "errors": ([SLOBulkDeleteError],),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ }
+
+ def __init__(self_, data: Union[SLOBulkDeleteResponseData, UnsetType]=unset, errors: Union[List[SLOBulkDeleteError], UnsetType]=unset, **kwargs):
+ """
+ The bulk partial delete service level objective object endpoint
+ response.
+
+ This endpoint operates on multiple service level objective objects, so
+ it may be partially successful. In such cases, the "data" and "error"
+ fields in this response indicate which deletions succeeded and failed.
+
+ :param data: An array of service level objective objects.
+ :type data: SLOBulkDeleteResponseData, optional
+
+ :param errors: Array of errors object returned.
+ :type errors: [SLOBulkDeleteError], optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if errors is not unset:
+ kwargs["errors"] = errors
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_bulk_delete_response_data.py b/datadog_api_client/v1/model/slo_bulk_delete_response_data.py
new file mode 100644
index 0000000000..06d96f5cd8
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_bulk_delete_response_data.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOBulkDeleteResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "deleted": ([str],),
+ "updated": ([str],),
+ }
+ attribute_map = {
+ "deleted": "deleted",
+ "updated": "updated",
+ }
+
+ def __init__(self_, deleted: Union[List[str], UnsetType]=unset, updated: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ An array of service level objective objects.
+
+ :param deleted: An array of service level objective object IDs that indicates
+ which objects that were completely deleted.
+ :type deleted: [str], optional
+
+ :param updated: An array of service level objective object IDs that indicates
+ which objects that were modified (objects for which at least one
+ threshold was deleted, but that were not completely deleted).
+ :type updated: [str], optional
+ """
+ if deleted is not unset:
+ kwargs["deleted"] = deleted
+ if updated is not unset:
+ kwargs["updated"] = updated
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction.py b/datadog_api_client/v1/model/slo_correction.py
new file mode 100644
index 0000000000..77161a0736
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_response_attributes import SLOCorrectionResponseAttributes
+ from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+
+class SLOCorrection(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_response_attributes import SLOCorrectionResponseAttributes
+ from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+ return {
+ "attributes": (SLOCorrectionResponseAttributes,),
+ "id": (str,),
+ "type": (SLOCorrectionType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[SLOCorrectionResponseAttributes, UnsetType]=unset, id: Union[str, UnsetType]=unset, type: Union[SLOCorrectionType, UnsetType]=unset, **kwargs):
+ """
+ The response object of a list of SLO corrections.
+
+ :param attributes: The attribute object associated with the SLO correction.
+ :type attributes: SLOCorrectionResponseAttributes, optional
+
+ :param id: The ID of the SLO correction.
+ :type id: str, optional
+
+ :param type: SLO correction resource type.
+ :type type: SLOCorrectionType, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if id is not unset:
+ kwargs["id"] = id
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_category.py b/datadog_api_client/v1/model/slo_correction_category.py
new file mode 100644
index 0000000000..8e17e30fcf
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_category.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOCorrectionCategory(ModelSimple):
+ """
+ Category the SLO correction belongs to.
+
+ :param value: Must be one of ["Scheduled Maintenance", "Outside Business Hours", "Deployment", "Other"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "Scheduled Maintenance",
+ "Outside Business Hours",
+ "Deployment",
+ "Other",
+ }
+ SCHEDULED_MAINTENANCE: ClassVar["SLOCorrectionCategory"]
+ OUTSIDE_BUSINESS_HOURS: ClassVar["SLOCorrectionCategory"]
+ DEPLOYMENT: ClassVar["SLOCorrectionCategory"]
+ OTHER: ClassVar["SLOCorrectionCategory"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOCorrectionCategory.SCHEDULED_MAINTENANCE = SLOCorrectionCategory("Scheduled Maintenance")
+SLOCorrectionCategory.OUTSIDE_BUSINESS_HOURS = SLOCorrectionCategory("Outside Business Hours")
+SLOCorrectionCategory.DEPLOYMENT = SLOCorrectionCategory("Deployment")
+SLOCorrectionCategory.OTHER = SLOCorrectionCategory("Other")
diff --git a/datadog_api_client/v1/model/slo_correction_create_data.py b/datadog_api_client/v1/model/slo_correction_create_data.py
new file mode 100644
index 0000000000..9f85730a22
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_create_data.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_create_request_attributes import SLOCorrectionCreateRequestAttributes
+ from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+
+class SLOCorrectionCreateData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_create_request_attributes import SLOCorrectionCreateRequestAttributes
+ from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+ return {
+ "attributes": (SLOCorrectionCreateRequestAttributes,),
+ "type": (SLOCorrectionType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, type: SLOCorrectionType, attributes: Union[SLOCorrectionCreateRequestAttributes, UnsetType]=unset, **kwargs):
+ """
+ The data object associated with the SLO correction to be created.
+
+ :param attributes: The attribute object associated with the SLO correction to be created.
+
+ Exactly one of ``slo_id`` or ``slo_query`` must be provided.
+ :type attributes: SLOCorrectionCreateRequestAttributes, optional
+
+ :param type: SLO correction resource type.
+ :type type: SLOCorrectionType
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/slo_correction_create_request.py b/datadog_api_client/v1/model/slo_correction_create_request.py
new file mode 100644
index 0000000000..635a974bf3
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_create_request.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_create_data import SLOCorrectionCreateData
+
+class SLOCorrectionCreateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_create_data import SLOCorrectionCreateData
+ return {
+ "data": (SLOCorrectionCreateData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[SLOCorrectionCreateData, UnsetType]=unset, **kwargs):
+ """
+ An object that defines a correction to be applied to one or more SLOs.
+
+ :param data: The data object associated with the SLO correction to be created.
+ :type data: SLOCorrectionCreateData, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_create_request_attributes.py b/datadog_api_client/v1/model/slo_correction_create_request_attributes.py
new file mode 100644
index 0000000000..17bcb43237
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_create_request_attributes.py
@@ -0,0 +1,108 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+
+class SLOCorrectionCreateRequestAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+ return {
+ "category": (SLOCorrectionCategory,),
+ "description": (str,),
+ "duration": (int,),
+ "end": (int,),
+ "rrule": (str,),
+ "slo_id": (str,),
+ "slo_query": (str,),
+ "start": (int,),
+ "timezone": (str,),
+ }
+ attribute_map = {
+ "category": "category",
+ "description": "description",
+ "duration": "duration",
+ "end": "end",
+ "rrule": "rrule",
+ "slo_id": "slo_id",
+ "slo_query": "slo_query",
+ "start": "start",
+ "timezone": "timezone",
+ }
+
+ def __init__(self_, category: SLOCorrectionCategory, start: int, description: Union[str, UnsetType]=unset, duration: Union[int, UnsetType]=unset, end: Union[int, UnsetType]=unset, rrule: Union[str, UnsetType]=unset, slo_id: Union[str, UnsetType]=unset, slo_query: Union[str, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The attribute object associated with the SLO correction to be created.
+
+ Exactly one of ``slo_id`` or ``slo_query`` must be provided.
+
+ :param category: Category the SLO correction belongs to.
+ :type category: SLOCorrectionCategory
+
+ :param description: Description of the correction being made.
+ :type description: str, optional
+
+ :param duration: Length of time (in seconds) for a specified ``rrule`` recurring SLO correction.
+ :type duration: int, optional
+
+ :param end: Ending time of the correction in epoch seconds.
+ :type end: int, optional
+
+ :param rrule: The recurrence rules as defined in the iCalendar RFC 5545. The supported rules for SLO corrections
+ are ``FREQ`` , ``INTERVAL`` , ``COUNT`` , ``UNTIL`` and ``BYDAY``.
+ :type rrule: str, optional
+
+ :param slo_id: ID of the single SLO that this correction applies to.
+ :type slo_id: str, optional
+
+ :param slo_query: Query that matches the SLOs this correction applies to.
+ The query uses the `Events search syntax `_
+ and can filter SLOs by SLO tags.
+ :type slo_query: str, optional
+
+ :param start: Starting time of the correction in epoch seconds.
+ :type start: int
+
+ :param timezone: The timezone to display in the UI for the correction times (defaults to "UTC").
+ :type timezone: str, optional
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if end is not unset:
+ kwargs["end"] = end
+ if rrule is not unset:
+ kwargs["rrule"] = rrule
+ if slo_id is not unset:
+ kwargs["slo_id"] = slo_id
+ if slo_query is not unset:
+ kwargs["slo_query"] = slo_query
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
+ self_.category = category
+ self_.start = start
diff --git a/datadog_api_client/v1/model/slo_correction_list_response.py b/datadog_api_client/v1/model/slo_correction_list_response.py
new file mode 100644
index 0000000000..eb5f42e672
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_list_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction import SLOCorrection
+ from datadog_api_client.v1.model.response_meta_attributes import ResponseMetaAttributes
+
+class SLOCorrectionListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction import SLOCorrection
+ from datadog_api_client.v1.model.response_meta_attributes import ResponseMetaAttributes
+ return {
+ "data": ([SLOCorrection],),
+ "meta": (ResponseMetaAttributes,),
+ }
+ attribute_map = {
+ "data": "data",
+ "meta": "meta",
+ }
+
+ def __init__(self_, data: Union[List[SLOCorrection], UnsetType]=unset, meta: Union[ResponseMetaAttributes, UnsetType]=unset, **kwargs):
+ """
+ A list of SLO correction objects.
+
+ :param data: The list of SLO corrections objects.
+ :type data: [SLOCorrection], optional
+
+ :param meta: Object describing meta attributes of response.
+ :type meta: ResponseMetaAttributes, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if meta is not unset:
+ kwargs["meta"] = meta
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_response.py b/datadog_api_client/v1/model/slo_correction_response.py
new file mode 100644
index 0000000000..aae988bad7
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction import SLOCorrection
+
+class SLOCorrectionResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction import SLOCorrection
+ return {
+ "data": (SLOCorrection,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[SLOCorrection, UnsetType]=unset, **kwargs):
+ """
+ The response object of an SLO correction.
+
+ :param data: The response object of a list of SLO corrections.
+ :type data: SLOCorrection, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_response_attributes.py b/datadog_api_client/v1/model/slo_correction_response_attributes.py
new file mode 100644
index 0000000000..fa45a220c0
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_response_attributes.py
@@ -0,0 +1,141 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.slo_correction_response_attributes_modifier import SLOCorrectionResponseAttributesModifier
+
+class SLOCorrectionResponseAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.slo_correction_response_attributes_modifier import SLOCorrectionResponseAttributesModifier
+ return {
+ "category": (SLOCorrectionCategory,),
+ "created_at": (int, none_type),
+ "creator": (Creator,),
+ "description": (str,),
+ "duration": (int, none_type),
+ "end": (int, none_type),
+ "modified_at": (int, none_type),
+ "modifier": (SLOCorrectionResponseAttributesModifier,),
+ "rrule": (str, none_type),
+ "slo_id": (str, none_type),
+ "slo_query": (str, none_type),
+ "start": (int,),
+ "timezone": (str,),
+ }
+ attribute_map = {
+ "category": "category",
+ "created_at": "created_at",
+ "creator": "creator",
+ "description": "description",
+ "duration": "duration",
+ "end": "end",
+ "modified_at": "modified_at",
+ "modifier": "modifier",
+ "rrule": "rrule",
+ "slo_id": "slo_id",
+ "slo_query": "slo_query",
+ "start": "start",
+ "timezone": "timezone",
+ }
+ read_only_vars = {
+ "creator",
+ }
+
+ def __init__(self_, category: Union[SLOCorrectionCategory, UnsetType]=unset, created_at: Union[int, none_type, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, description: Union[str, UnsetType]=unset, duration: Union[int, none_type, UnsetType]=unset, end: Union[int, none_type, UnsetType]=unset, modified_at: Union[int, none_type, UnsetType]=unset, modifier: Union[SLOCorrectionResponseAttributesModifier, none_type, UnsetType]=unset, rrule: Union[str, none_type, UnsetType]=unset, slo_id: Union[str, none_type, UnsetType]=unset, slo_query: Union[str, none_type, UnsetType]=unset, start: Union[int, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The attribute object associated with the SLO correction.
+
+ :param category: Category the SLO correction belongs to.
+ :type category: SLOCorrectionCategory, optional
+
+ :param created_at: The epoch timestamp of when the correction was created at.
+ :type created_at: int, none_type, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param description: Description of the correction being made.
+ :type description: str, optional
+
+ :param duration: Length of time (in seconds) for a specified ``rrule`` recurring SLO correction.
+ :type duration: int, none_type, optional
+
+ :param end: Ending time of the correction in epoch seconds.
+ :type end: int, none_type, optional
+
+ :param modified_at: The epoch timestamp of when the correction was modified at.
+ :type modified_at: int, none_type, optional
+
+ :param modifier: Modifier of the object.
+ :type modifier: SLOCorrectionResponseAttributesModifier, none_type, optional
+
+ :param rrule: The recurrence rules as defined in the iCalendar RFC 5545. The supported rules for SLO corrections
+ are ``FREQ`` , ``INTERVAL`` , ``COUNT`` , ``UNTIL`` and ``BYDAY``.
+ :type rrule: str, none_type, optional
+
+ :param slo_id: ID of the single SLO that this correction applies to.
+ :type slo_id: str, none_type, optional
+
+ :param slo_query: Query that matches the SLOs this correction applies to.
+ :type slo_query: str, none_type, optional
+
+ :param start: Starting time of the correction in epoch seconds.
+ :type start: int, optional
+
+ :param timezone: The timezone to display in the UI for the correction times (defaults to "UTC").
+ :type timezone: str, optional
+ """
+ if category is not unset:
+ kwargs["category"] = category
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if description is not unset:
+ kwargs["description"] = description
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if end is not unset:
+ kwargs["end"] = end
+ if modified_at is not unset:
+ kwargs["modified_at"] = modified_at
+ if modifier is not unset:
+ kwargs["modifier"] = modifier
+ if rrule is not unset:
+ kwargs["rrule"] = rrule
+ if slo_id is not unset:
+ kwargs["slo_id"] = slo_id
+ if slo_query is not unset:
+ kwargs["slo_query"] = slo_query
+ if start is not unset:
+ kwargs["start"] = start
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_response_attributes_modifier.py b/datadog_api_client/v1/model/slo_correction_response_attributes_modifier.py
new file mode 100644
index 0000000000..cbddf1de02
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_response_attributes_modifier.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOCorrectionResponseAttributesModifier(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "email": (str,),
+ "handle": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "email": "email",
+ "handle": "handle",
+ "name": "name",
+ }
+
+ def __init__(self_, email: Union[str, UnsetType]=unset, handle: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Modifier of the object.
+
+ :param email: Email of the Modifier.
+ :type email: str, optional
+
+ :param handle: Handle of the Modifier.
+ :type handle: str, optional
+
+ :param name: Name of the Modifier.
+ :type name: str, optional
+ """
+ if email is not unset:
+ kwargs["email"] = email
+ if handle is not unset:
+ kwargs["handle"] = handle
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_type.py b/datadog_api_client/v1/model/slo_correction_type.py
new file mode 100644
index 0000000000..2b7ee116a9
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOCorrectionType(ModelSimple):
+ """
+ SLO correction resource type.
+
+ :param value: If omitted defaults to "correction". Must be one of ["correction"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "correction",
+ }
+ CORRECTION: ClassVar["SLOCorrectionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOCorrectionType.CORRECTION = SLOCorrectionType("correction")
diff --git a/datadog_api_client/v1/model/slo_correction_update_data.py b/datadog_api_client/v1/model/slo_correction_update_data.py
new file mode 100644
index 0000000000..f42fdcefe7
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_update_data.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_update_request_attributes import SLOCorrectionUpdateRequestAttributes
+ from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+
+class SLOCorrectionUpdateData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_update_request_attributes import SLOCorrectionUpdateRequestAttributes
+ from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+ return {
+ "attributes": (SLOCorrectionUpdateRequestAttributes,),
+ "type": (SLOCorrectionType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[SLOCorrectionUpdateRequestAttributes, UnsetType]=unset, type: Union[SLOCorrectionType, UnsetType]=unset, **kwargs):
+ """
+ The data object associated with the SLO correction to be updated.
+
+ :param attributes: The attribute object associated with the SLO correction to be updated.
+ :type attributes: SLOCorrectionUpdateRequestAttributes, optional
+
+ :param type: SLO correction resource type.
+ :type type: SLOCorrectionType, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_update_request.py b/datadog_api_client/v1/model/slo_correction_update_request.py
new file mode 100644
index 0000000000..c127a1df0a
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_update_request.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_update_data import SLOCorrectionUpdateData
+
+class SLOCorrectionUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_update_data import SLOCorrectionUpdateData
+ return {
+ "data": (SLOCorrectionUpdateData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[SLOCorrectionUpdateData, UnsetType]=unset, **kwargs):
+ """
+ An object that defines a correction to be applied to an SLO.
+
+ :param data: The data object associated with the SLO correction to be updated.
+ :type data: SLOCorrectionUpdateData, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_correction_update_request_attributes.py b/datadog_api_client/v1/model/slo_correction_update_request_attributes.py
new file mode 100644
index 0000000000..14d9311f73
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_correction_update_request_attributes.py
@@ -0,0 +1,101 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+
+class SLOCorrectionUpdateRequestAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+ return {
+ "category": (SLOCorrectionCategory,),
+ "description": (str,),
+ "duration": (int,),
+ "end": (int,),
+ "rrule": (str,),
+ "slo_query": (str,),
+ "start": (int,),
+ "timezone": (str,),
+ }
+ attribute_map = {
+ "category": "category",
+ "description": "description",
+ "duration": "duration",
+ "end": "end",
+ "rrule": "rrule",
+ "slo_query": "slo_query",
+ "start": "start",
+ "timezone": "timezone",
+ }
+
+ def __init__(self_, category: Union[SLOCorrectionCategory, UnsetType]=unset, description: Union[str, UnsetType]=unset, duration: Union[int, UnsetType]=unset, end: Union[int, UnsetType]=unset, rrule: Union[str, UnsetType]=unset, slo_query: Union[str, UnsetType]=unset, start: Union[int, UnsetType]=unset, timezone: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The attribute object associated with the SLO correction to be updated.
+
+ :param category: Category the SLO correction belongs to.
+ :type category: SLOCorrectionCategory, optional
+
+ :param description: Description of the correction being made.
+ :type description: str, optional
+
+ :param duration: Length of time (in seconds) for a specified ``rrule`` recurring SLO correction.
+ :type duration: int, optional
+
+ :param end: Ending time of the correction in epoch seconds.
+ :type end: int, optional
+
+ :param rrule: The recurrence rules as defined in the iCalendar RFC 5545. The supported rules for SLO corrections
+ are ``FREQ`` , ``INTERVAL`` , ``COUNT`` , ``UNTIL`` and ``BYDAY``.
+ :type rrule: str, optional
+
+ :param slo_query: Query that matches the SLOs this correction applies to.
+ The query uses the `Events search syntax `_
+ and can filter SLOs by SLO tags.
+ :type slo_query: str, optional
+
+ :param start: Starting time of the correction in epoch seconds.
+ :type start: int, optional
+
+ :param timezone: The timezone to display in the UI for the correction times (defaults to "UTC").
+ :type timezone: str, optional
+ """
+ if category is not unset:
+ kwargs["category"] = category
+ if description is not unset:
+ kwargs["description"] = description
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if end is not unset:
+ kwargs["end"] = end
+ if rrule is not unset:
+ kwargs["rrule"] = rrule
+ if slo_query is not unset:
+ kwargs["slo_query"] = slo_query
+ if start is not unset:
+ kwargs["start"] = start
+ if timezone is not unset:
+ kwargs["timezone"] = timezone
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_count_definition.py b/datadog_api_client/v1/model/slo_count_definition.py
new file mode 100644
index 0000000000..70f0a324a4
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_count_definition.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOCountDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ A count-based (metric) SLI specification, composed of three parts: the good events formula,
+ the bad or total events formula, and the underlying queries.
+ Exactly one of ``total_events_formula`` or ``bad_events_formula`` must be provided.
+
+ :param good_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type good_events_formula: SLOFormula
+
+ :param queries:
+ :type queries: [SLODataSourceQueryDefinition]
+
+ :param total_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type total_events_formula: SLOFormula
+
+ :param bad_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type bad_events_formula: SLOFormula
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.slo_count_definition_with_total_events_formula import SLOCountDefinitionWithTotalEventsFormula
+ from datadog_api_client.v1.model.slo_count_definition_with_bad_events_formula import SLOCountDefinitionWithBadEventsFormula
+ return {
+ "oneOf": [
+ SLOCountDefinitionWithTotalEventsFormula,
+ SLOCountDefinitionWithBadEventsFormula,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/slo_count_definition_with_bad_events_formula.py b/datadog_api_client/v1/model/slo_count_definition_with_bad_events_formula.py
new file mode 100644
index 0000000000..df5b401fec
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_count_definition_with_bad_events_formula.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_formula import SLOFormula
+ from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+
+class SLOCountDefinitionWithBadEventsFormula(ModelNormal):
+ validations = {
+ "queries": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_formula import SLOFormula
+ from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+ return {
+ "bad_events_formula": (SLOFormula,),
+ "good_events_formula": (SLOFormula,),
+ "queries": ([SLODataSourceQueryDefinition],),
+ }
+ attribute_map = {
+ "bad_events_formula": "bad_events_formula",
+ "good_events_formula": "good_events_formula",
+ "queries": "queries",
+ }
+
+ def __init__(self_, bad_events_formula: SLOFormula, good_events_formula: SLOFormula, queries: List[Union[SLODataSourceQueryDefinition, FormulaAndFunctionMetricQueryDefinition]], **kwargs):
+ """
+ SLO count definition using a bad events formula alongside a good events formula.
+
+ :param bad_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type bad_events_formula: SLOFormula
+
+ :param good_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type good_events_formula: SLOFormula
+
+ :param queries:
+ :type queries: [SLODataSourceQueryDefinition]
+ """
+ super().__init__(kwargs)
+
+
+ self_.bad_events_formula = bad_events_formula
+ self_.good_events_formula = good_events_formula
+ self_.queries = queries
diff --git a/datadog_api_client/v1/model/slo_count_definition_with_total_events_formula.py b/datadog_api_client/v1/model/slo_count_definition_with_total_events_formula.py
new file mode 100644
index 0000000000..9fedf1a64d
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_count_definition_with_total_events_formula.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_formula import SLOFormula
+ from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+
+class SLOCountDefinitionWithTotalEventsFormula(ModelNormal):
+ validations = {
+ "queries": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_formula import SLOFormula
+ from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+ return {
+ "good_events_formula": (SLOFormula,),
+ "queries": ([SLODataSourceQueryDefinition],),
+ "total_events_formula": (SLOFormula,),
+ }
+ attribute_map = {
+ "good_events_formula": "good_events_formula",
+ "queries": "queries",
+ "total_events_formula": "total_events_formula",
+ }
+
+ def __init__(self_, good_events_formula: SLOFormula, queries: List[Union[SLODataSourceQueryDefinition, FormulaAndFunctionMetricQueryDefinition]], total_events_formula: SLOFormula, **kwargs):
+ """
+ SLO count definition using a total events formula alongside a good events formula.
+
+ :param good_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type good_events_formula: SLOFormula
+
+ :param queries:
+ :type queries: [SLODataSourceQueryDefinition]
+
+ :param total_events_formula: A formula that specifies how to combine the results of multiple queries.
+ :type total_events_formula: SLOFormula
+ """
+ super().__init__(kwargs)
+
+
+ self_.good_events_formula = good_events_formula
+ self_.queries = queries
+ self_.total_events_formula = total_events_formula
diff --git a/datadog_api_client/v1/model/slo_count_spec.py b/datadog_api_client/v1/model/slo_count_spec.py
new file mode 100644
index 0000000000..9ba6ddb849
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_count_spec.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_count_definition import SLOCountDefinition
+ from datadog_api_client.v1.model.slo_count_definition_with_total_events_formula import SLOCountDefinitionWithTotalEventsFormula
+ from datadog_api_client.v1.model.slo_count_definition_with_bad_events_formula import SLOCountDefinitionWithBadEventsFormula
+
+class SLOCountSpec(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_count_definition import SLOCountDefinition
+ return {
+ "count": (SLOCountDefinition,),
+ }
+ attribute_map = {
+ "count": "count",
+ }
+
+ def __init__(self_, count: Union[SLOCountDefinition, SLOCountDefinitionWithTotalEventsFormula, SLOCountDefinitionWithBadEventsFormula], **kwargs):
+ """
+ A metric SLI specification.
+
+ :param count: A count-based (metric) SLI specification, composed of three parts: the good events formula,
+ the bad or total events formula, and the underlying queries.
+ Exactly one of ``total_events_formula`` or ``bad_events_formula`` must be provided.
+ :type count: SLOCountDefinition
+ """
+ super().__init__(kwargs)
+
+
+ self_.count = count
diff --git a/datadog_api_client/v1/model/slo_creator.py b/datadog_api_client/v1/model/slo_creator.py
new file mode 100644
index 0000000000..124275095f
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_creator.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOCreator(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "email": (str,),
+ "id": (int,),
+ "name": (str, none_type),
+ }
+ attribute_map = {
+ "email": "email",
+ "id": "id",
+ "name": "name",
+ }
+
+ def __init__(self_, email: Union[str, UnsetType]=unset, id: Union[int, UnsetType]=unset, name: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ The creator of the SLO
+
+ :param email: Email of the creator.
+ :type email: str, optional
+
+ :param id: User ID of the creator.
+ :type id: int, optional
+
+ :param name: Name of the creator.
+ :type name: str, none_type, optional
+ """
+ if email is not unset:
+ kwargs["email"] = email
+ if id is not unset:
+ kwargs["id"] = id
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_data_source_query_definition.py b/datadog_api_client/v1/model/slo_data_source_query_definition.py
new file mode 100644
index 0000000000..1bfb4f8680
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_data_source_query_definition.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLODataSourceQueryDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ A formula and function query.
+
+ :param aggregator: The aggregation methods available for metrics queries.
+ :type aggregator: FormulaAndFunctionMetricAggregation, optional
+
+ :param cross_org_uuids: The source organization UUID for cross organization queries. Feature in Private Beta.
+ :type cross_org_uuids: [str], optional
+
+ :param data_source: Data source for metrics queries.
+ :type data_source: FormulaAndFunctionMetricDataSource
+
+ :param name: Name of the query for use in formulas.
+ :type name: str
+
+ :param query: Metrics query definition.
+ :type query: str
+
+ :param semantic_mode: Semantic mode for metrics queries. This determines how metrics from different sources are combined or displayed.
+ :type semantic_mode: FormulaAndFunctionMetricSemanticMode, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ return {
+ "oneOf": [
+ FormulaAndFunctionMetricQueryDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/slo_delete_response.py b/datadog_api_client/v1/model/slo_delete_response.py
new file mode 100644
index 0000000000..5c3e860e6d
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_delete_response.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLODeleteResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "data": ([str],),
+ "errors": ({str: (str,)},),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ }
+
+ def __init__(self_, data: Union[List[str], UnsetType]=unset, errors: Union[Dict[str, str], UnsetType]=unset, **kwargs):
+ """
+ A response list of all service level objective deleted.
+
+ :param data: An array containing the ID of the deleted service level objective object.
+ :type data: [str], optional
+
+ :param errors: An dictionary containing the ID of the SLO as key and a deletion error as value.
+ :type errors: {str: (str,)}, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if errors is not unset:
+ kwargs["errors"] = errors
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_error_budget_remaining_data.py b/datadog_api_client/v1/model/slo_error_budget_remaining_data.py
new file mode 100644
index 0000000000..9b0e50d74f
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_error_budget_remaining_data.py
@@ -0,0 +1,36 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOErrorBudgetRemainingData(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return (float,)
+
+ def __init__(self_, **kwargs):
+ """
+ A mapping of threshold ``timeframe`` to the remaining error budget.
+ """
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_error_timeframe.py b/datadog_api_client/v1/model/slo_error_timeframe.py
new file mode 100644
index 0000000000..712f41a8e6
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_error_timeframe.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOErrorTimeframe(ModelSimple):
+ """
+ The timeframe of the threshold associated with this error
+ or "all" if all thresholds are affected.
+
+ :param value: Must be one of ["7d", "30d", "90d", "all"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "7d",
+ "30d",
+ "90d",
+ "all",
+ }
+ SEVEN_DAYS: ClassVar["SLOErrorTimeframe"]
+ THIRTY_DAYS: ClassVar["SLOErrorTimeframe"]
+ NINETY_DAYS: ClassVar["SLOErrorTimeframe"]
+ ALL: ClassVar["SLOErrorTimeframe"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOErrorTimeframe.SEVEN_DAYS = SLOErrorTimeframe("7d")
+SLOErrorTimeframe.THIRTY_DAYS = SLOErrorTimeframe("30d")
+SLOErrorTimeframe.NINETY_DAYS = SLOErrorTimeframe("90d")
+SLOErrorTimeframe.ALL = SLOErrorTimeframe("all")
diff --git a/datadog_api_client/v1/model/slo_formula.py b/datadog_api_client/v1/model/slo_formula.py
new file mode 100644
index 0000000000..fda005dcdf
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_formula.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOFormula(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "formula": (str,),
+ }
+ attribute_map = {
+ "formula": "formula",
+ }
+
+ def __init__(self_, formula: str, **kwargs):
+ """
+ A formula that specifies how to combine the results of multiple queries.
+
+ :param formula: The formula string, which is an expression involving named queries.
+ :type formula: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.formula = formula
diff --git a/datadog_api_client/v1/model/slo_history_metrics.py b/datadog_api_client/v1/model/slo_history_metrics.py
new file mode 100644
index 0000000000..b6c9246e56
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_metrics.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_history_metrics_series import SLOHistoryMetricsSeries
+
+class SLOHistoryMetrics(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_history_metrics_series import SLOHistoryMetricsSeries
+ return {
+ "denominator": (SLOHistoryMetricsSeries,),
+ "interval": (int,),
+ "message": (str,),
+ "numerator": (SLOHistoryMetricsSeries,),
+ "query": (str,),
+ "res_type": (str,),
+ "resp_version": (int,),
+ "times": ([float],),
+ }
+ attribute_map = {
+ "denominator": "denominator",
+ "interval": "interval",
+ "message": "message",
+ "numerator": "numerator",
+ "query": "query",
+ "res_type": "res_type",
+ "resp_version": "resp_version",
+ "times": "times",
+ }
+
+ def __init__(self_, denominator: SLOHistoryMetricsSeries, interval: int, numerator: SLOHistoryMetricsSeries, query: str, res_type: str, resp_version: int, times: List[float], message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A ``metric`` based SLO history response.
+
+ This is not included in responses for ``monitor`` based SLOs.
+
+ :param denominator: A representation of ``metric`` based SLO timeseries for the provided queries.
+ This is the same response type from ``batch_query`` endpoint.
+ :type denominator: SLOHistoryMetricsSeries
+
+ :param interval: The aggregated query interval for the series data. It's implicit based on the query time window.
+ :type interval: int
+
+ :param message: Optional message if there are specific query issues/warnings.
+ :type message: str, optional
+
+ :param numerator: A representation of ``metric`` based SLO timeseries for the provided queries.
+ This is the same response type from ``batch_query`` endpoint.
+ :type numerator: SLOHistoryMetricsSeries
+
+ :param query: The combined numerator and denominator query CSV.
+ :type query: str
+
+ :param res_type: The series result type. This mimics ``batch_query`` response type.
+ :type res_type: str
+
+ :param resp_version: The series response version type. This mimics ``batch_query`` response type.
+ :type resp_version: int
+
+ :param times: An array of query timestamps in EPOCH milliseconds.
+ :type times: [float]
+ """
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
+ self_.denominator = denominator
+ self_.interval = interval
+ self_.numerator = numerator
+ self_.query = query
+ self_.res_type = res_type
+ self_.resp_version = resp_version
+ self_.times = times
diff --git a/datadog_api_client/v1/model/slo_history_metrics_series.py b/datadog_api_client/v1/model/slo_history_metrics_series.py
new file mode 100644
index 0000000000..c9bebd4001
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_metrics_series.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_history_metrics_series_metadata import SLOHistoryMetricsSeriesMetadata
+
+class SLOHistoryMetricsSeries(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_history_metrics_series_metadata import SLOHistoryMetricsSeriesMetadata
+ return {
+ "count": (int,),
+ "metadata": (SLOHistoryMetricsSeriesMetadata,),
+ "sum": (float,),
+ "values": ([float],),
+ }
+ attribute_map = {
+ "count": "count",
+ "metadata": "metadata",
+ "sum": "sum",
+ "values": "values",
+ }
+
+ def __init__(self_, count: int, sum: float, values: List[float], metadata: Union[SLOHistoryMetricsSeriesMetadata, UnsetType]=unset, **kwargs):
+ """
+ A representation of ``metric`` based SLO timeseries for the provided queries.
+ This is the same response type from ``batch_query`` endpoint.
+
+ :param count: Count of submitted metrics.
+ :type count: int
+
+ :param metadata: Query metadata.
+ :type metadata: SLOHistoryMetricsSeriesMetadata, optional
+
+ :param sum: Total sum of the query.
+ :type sum: float
+
+ :param values: The query values for each metric.
+ :type values: [float]
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ super().__init__(kwargs)
+
+
+ self_.count = count
+ self_.sum = sum
+ self_.values = values
diff --git a/datadog_api_client/v1/model/slo_history_metrics_series_metadata.py b/datadog_api_client/v1/model/slo_history_metrics_series_metadata.py
new file mode 100644
index 0000000000..c47590107d
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_metrics_series_metadata.py
@@ -0,0 +1,86 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_history_metrics_series_metadata_unit import SLOHistoryMetricsSeriesMetadataUnit
+
+class SLOHistoryMetricsSeriesMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_history_metrics_series_metadata_unit import SLOHistoryMetricsSeriesMetadataUnit
+ return {
+ "aggr": (str,),
+ "expression": (str,),
+ "metric": (str,),
+ "query_index": (int,),
+ "scope": (str,),
+ "unit": ([SLOHistoryMetricsSeriesMetadataUnit, none_type], none_type),
+ }
+ attribute_map = {
+ "aggr": "aggr",
+ "expression": "expression",
+ "metric": "metric",
+ "query_index": "query_index",
+ "scope": "scope",
+ "unit": "unit",
+ }
+
+ def __init__(self_, aggr: Union[str, UnsetType]=unset, expression: Union[str, UnsetType]=unset, metric: Union[str, UnsetType]=unset, query_index: Union[int, UnsetType]=unset, scope: Union[str, UnsetType]=unset, unit: Union[List[SLOHistoryMetricsSeriesMetadataUnit], none_type, UnsetType]=unset, **kwargs):
+ """
+ Query metadata.
+
+ :param aggr: Query aggregator function. **Deprecated**.
+ :type aggr: str, optional
+
+ :param expression: Query expression. **Deprecated**.
+ :type expression: str, optional
+
+ :param metric: Query metric used. **Deprecated**.
+ :type metric: str, optional
+
+ :param query_index: Query index from original combined query. **Deprecated**.
+ :type query_index: int, optional
+
+ :param scope: Query scope. **Deprecated**.
+ :type scope: str, optional
+
+ :param unit: An array of metric units that contains up to two unit objects.
+ For example, bytes represents one unit object and bytes per second represents two unit objects.
+ If a metric query only has one unit object, the second array element is null.
+ :type unit: [SLOHistoryMetricsSeriesMetadataUnit, none_type], none_type, optional
+ """
+ if aggr is not unset:
+ kwargs["aggr"] = aggr
+ if expression is not unset:
+ kwargs["expression"] = expression
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if query_index is not unset:
+ kwargs["query_index"] = query_index
+ if scope is not unset:
+ kwargs["scope"] = scope
+ if unit is not unset:
+ kwargs["unit"] = unit
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_history_metrics_series_metadata_unit.py b/datadog_api_client/v1/model/slo_history_metrics_series_metadata_unit.py
new file mode 100644
index 0000000000..59a0cc7b27
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_metrics_series_metadata_unit.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOHistoryMetricsSeriesMetadataUnit(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "family": (str,),
+ "id": (int,),
+ "name": (str,),
+ "plural": (str, none_type),
+ "scale_factor": (float,),
+ "short_name": (str, none_type),
+ }
+ attribute_map = {
+ "family": "family",
+ "id": "id",
+ "name": "name",
+ "plural": "plural",
+ "scale_factor": "scale_factor",
+ "short_name": "short_name",
+ }
+
+ def __init__(self_, family: Union[str, UnsetType]=unset, id: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, plural: Union[str, none_type, UnsetType]=unset, scale_factor: Union[float, UnsetType]=unset, short_name: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ An Object of metric units.
+
+ :param family: The family of metric unit, for example ``bytes`` is the family for ``kibibyte`` , ``byte`` , and ``bit`` units.
+ :type family: str, optional
+
+ :param id: The ID of the metric unit.
+ :type id: int, optional
+
+ :param name: The unit of the metric, for instance ``byte``.
+ :type name: str, optional
+
+ :param plural: The plural Unit of metric, for instance ``bytes``.
+ :type plural: str, none_type, optional
+
+ :param scale_factor: The scale factor of metric unit, for instance ``1.0``.
+ :type scale_factor: float, optional
+
+ :param short_name: A shorter and abbreviated version of the metric unit, for instance ``B``.
+ :type short_name: str, none_type, optional
+ """
+ if family is not unset:
+ kwargs["family"] = family
+ if id is not unset:
+ kwargs["id"] = id
+ if name is not unset:
+ kwargs["name"] = name
+ if plural is not unset:
+ kwargs["plural"] = plural
+ if scale_factor is not unset:
+ kwargs["scale_factor"] = scale_factor
+ if short_name is not unset:
+ kwargs["short_name"] = short_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_history_monitor.py b/datadog_api_client/v1/model/slo_history_monitor.py
new file mode 100644
index 0000000000..aef0369f5d
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_monitor.py
@@ -0,0 +1,136 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_error_budget_remaining_data import SLOErrorBudgetRemainingData
+ from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+
+class SLOHistoryMonitor(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_error_budget_remaining_data import SLOErrorBudgetRemainingData
+ from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+ return {
+ "error_budget_remaining": (SLOErrorBudgetRemainingData,),
+ "errors": ([SLOHistoryResponseErrorWithType],),
+ "group": (str,),
+ "history": ([[float]],),
+ "monitor_modified": (int,),
+ "monitor_type": (str,),
+ "name": (str,),
+ "precision": (float,),
+ "preview": (bool,),
+ "sli_value": (float, none_type),
+ "span_precision": (float,),
+ "uptime": (float,),
+ }
+ attribute_map = {
+ "error_budget_remaining": "error_budget_remaining",
+ "errors": "errors",
+ "group": "group",
+ "history": "history",
+ "monitor_modified": "monitor_modified",
+ "monitor_type": "monitor_type",
+ "name": "name",
+ "precision": "precision",
+ "preview": "preview",
+ "sli_value": "sli_value",
+ "span_precision": "span_precision",
+ "uptime": "uptime",
+ }
+
+ def __init__(self_, error_budget_remaining: Union[SLOErrorBudgetRemainingData, UnsetType]=unset, errors: Union[List[SLOHistoryResponseErrorWithType], UnsetType]=unset, group: Union[str, UnsetType]=unset, history: Union[List[List[float]], UnsetType]=unset, monitor_modified: Union[int, UnsetType]=unset, monitor_type: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, precision: Union[float, UnsetType]=unset, preview: Union[bool, UnsetType]=unset, sli_value: Union[float, none_type, UnsetType]=unset, span_precision: Union[float, UnsetType]=unset, uptime: Union[float, UnsetType]=unset, **kwargs):
+ """
+ An object that holds an SLI value and its associated data. It can represent an SLO's overall SLI value.
+ This can also represent the SLI value for a specific monitor in multi-monitor SLOs, or a group in grouped SLOs.
+
+ :param error_budget_remaining: A mapping of threshold ``timeframe`` to the remaining error budget.
+ :type error_budget_remaining: SLOErrorBudgetRemainingData, optional
+
+ :param errors: An array of error objects returned while querying the history data for the service level objective.
+ :type errors: [SLOHistoryResponseErrorWithType], optional
+
+ :param group: For groups in a grouped SLO, this is the group name.
+ :type group: str, optional
+
+ :param history: The state transition history for the monitor. It is represented as
+ an array of pairs. Each pair is an array containing the timestamp of the transition
+ as an integer in Unix epoch format in the first element, and the state as an integer in the
+ second element. An integer value of ``0`` for state means uptime, ``1`` means downtime, and ``2`` means no data.
+ Periods of no data are counted either as uptime or downtime depending on monitor settings.
+ See `SLO documentation `_
+ for detailed information.
+ :type history: [[float]], optional
+
+ :param monitor_modified: For ``monitor`` based SLOs, this is the last modified timestamp in epoch seconds of the monitor.
+ :type monitor_modified: int, optional
+
+ :param monitor_type: For ``monitor`` based SLOs, this describes the type of monitor.
+ :type monitor_type: str, optional
+
+ :param name: For groups in a grouped SLO, this is the group name. For monitors in a multi-monitor SLO, this is the monitor name.
+ :type name: str, optional
+
+ :param precision: The amount of decimal places the SLI value is accurate to for the given from ``&&`` to timestamp. Use ``span_precision`` instead. **Deprecated**.
+ :type precision: float, optional
+
+ :param preview: For ``monitor`` based SLOs, when ``true`` this indicates that a replay is in progress to give an accurate uptime
+ calculation.
+ :type preview: bool, optional
+
+ :param sli_value: The current SLI value of the SLO over the history window.
+ :type sli_value: float, none_type, optional
+
+ :param span_precision: The amount of decimal places the SLI value is accurate to for the given from ``&&`` to timestamp.
+ :type span_precision: float, optional
+
+ :param uptime: Use ``sli_value`` instead. **Deprecated**.
+ :type uptime: float, optional
+ """
+ if error_budget_remaining is not unset:
+ kwargs["error_budget_remaining"] = error_budget_remaining
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if group is not unset:
+ kwargs["group"] = group
+ if history is not unset:
+ kwargs["history"] = history
+ if monitor_modified is not unset:
+ kwargs["monitor_modified"] = monitor_modified
+ if monitor_type is not unset:
+ kwargs["monitor_type"] = monitor_type
+ if name is not unset:
+ kwargs["name"] = name
+ if precision is not unset:
+ kwargs["precision"] = precision
+ if preview is not unset:
+ kwargs["preview"] = preview
+ if sli_value is not unset:
+ kwargs["sli_value"] = sli_value
+ if span_precision is not unset:
+ kwargs["span_precision"] = span_precision
+ if uptime is not unset:
+ kwargs["uptime"] = uptime
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_history_response.py b/datadog_api_client/v1/model/slo_history_response.py
new file mode 100644
index 0000000000..1bf765a000
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_history_response_data import SLOHistoryResponseData
+ from datadog_api_client.v1.model.slo_history_response_error import SLOHistoryResponseError
+
+class SLOHistoryResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_history_response_data import SLOHistoryResponseData
+ from datadog_api_client.v1.model.slo_history_response_error import SLOHistoryResponseError
+ return {
+ "data": (SLOHistoryResponseData,),
+ "errors": ([SLOHistoryResponseError], none_type),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ }
+
+ def __init__(self_, data: Union[SLOHistoryResponseData, UnsetType]=unset, errors: Union[List[SLOHistoryResponseError], none_type, UnsetType]=unset, **kwargs):
+ """
+ A service level objective history response.
+
+ :param data: An array of service level objective objects.
+ :type data: SLOHistoryResponseData, optional
+
+ :param errors: A list of errors while querying the history data for the service level objective.
+ :type errors: [SLOHistoryResponseError], none_type, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if errors is not unset:
+ kwargs["errors"] = errors
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_history_response_data.py b/datadog_api_client/v1/model/slo_history_response_data.py
new file mode 100644
index 0000000000..f5079284fc
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_response_data.py
@@ -0,0 +1,133 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_history_monitor import SLOHistoryMonitor
+ from datadog_api_client.v1.model.slo_history_sli_data import SLOHistorySLIData
+ from datadog_api_client.v1.model.slo_history_metrics import SLOHistoryMetrics
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_type_numeric import SLOTypeNumeric
+
+class SLOHistoryResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_history_monitor import SLOHistoryMonitor
+ from datadog_api_client.v1.model.slo_history_sli_data import SLOHistorySLIData
+ from datadog_api_client.v1.model.slo_history_metrics import SLOHistoryMetrics
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_type_numeric import SLOTypeNumeric
+ return {
+ "from_ts": (int,),
+ "group_by": ([str],),
+ "groups": ([SLOHistoryMonitor],),
+ "monitors": ([SLOHistoryMonitor],),
+ "overall": (SLOHistorySLIData,),
+ "series": (SLOHistoryMetrics,),
+ "thresholds": ({str: (SLOThreshold,)},),
+ "to_ts": (int,),
+ "type": (SLOType,),
+ "type_id": (SLOTypeNumeric,),
+ }
+ attribute_map = {
+ "from_ts": "from_ts",
+ "group_by": "group_by",
+ "groups": "groups",
+ "monitors": "monitors",
+ "overall": "overall",
+ "series": "series",
+ "thresholds": "thresholds",
+ "to_ts": "to_ts",
+ "type": "type",
+ "type_id": "type_id",
+ }
+
+ def __init__(self_, from_ts: Union[int, UnsetType]=unset, group_by: Union[List[str], UnsetType]=unset, groups: Union[List[SLOHistoryMonitor], UnsetType]=unset, monitors: Union[List[SLOHistoryMonitor], UnsetType]=unset, overall: Union[SLOHistorySLIData, UnsetType]=unset, series: Union[SLOHistoryMetrics, UnsetType]=unset, thresholds: Union[Dict[str, SLOThreshold], UnsetType]=unset, to_ts: Union[int, UnsetType]=unset, type: Union[SLOType, UnsetType]=unset, type_id: Union[SLOTypeNumeric, UnsetType]=unset, **kwargs):
+ """
+ An array of service level objective objects.
+
+ :param from_ts: The ``from`` timestamp in epoch seconds.
+ :type from_ts: int, optional
+
+ :param group_by: For ``metric`` based SLOs where the query includes a group-by clause, this represents the list of grouping parameters.
+
+ This is not included in responses for ``monitor`` based SLOs.
+ :type group_by: [str], optional
+
+ :param groups: For grouped SLOs, this represents SLI data for specific groups.
+
+ This is not included in the responses for ``metric`` based SLOs.
+ :type groups: [SLOHistoryMonitor], optional
+
+ :param monitors: For multi-monitor SLOs, this represents SLI data for specific monitors.
+
+ This is not included in the responses for ``metric`` based SLOs.
+ :type monitors: [SLOHistoryMonitor], optional
+
+ :param overall: An object that holds an SLI value and its associated data. It can represent an SLO's overall SLI value.
+ This can also represent the SLI value for a specific monitor in multi-monitor SLOs, or a group in grouped SLOs.
+ :type overall: SLOHistorySLIData, optional
+
+ :param series: A ``metric`` based SLO history response.
+
+ This is not included in responses for ``monitor`` based SLOs.
+ :type series: SLOHistoryMetrics, optional
+
+ :param thresholds: mapping of string timeframe to the SLO threshold.
+ :type thresholds: {str: (SLOThreshold,)}, optional
+
+ :param to_ts: The ``to`` timestamp in epoch seconds.
+ :type to_ts: int, optional
+
+ :param type: The type of the service level objective.
+ :type type: SLOType, optional
+
+ :param type_id: A numeric representation of the type of the service level objective ( ``0`` for
+ monitor, ``1`` for metric). Always included in service level objective responses.
+ Ignored in create/update requests.
+ :type type_id: SLOTypeNumeric, optional
+ """
+ if from_ts is not unset:
+ kwargs["from_ts"] = from_ts
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if groups is not unset:
+ kwargs["groups"] = groups
+ if monitors is not unset:
+ kwargs["monitors"] = monitors
+ if overall is not unset:
+ kwargs["overall"] = overall
+ if series is not unset:
+ kwargs["series"] = series
+ if thresholds is not unset:
+ kwargs["thresholds"] = thresholds
+ if to_ts is not unset:
+ kwargs["to_ts"] = to_ts
+ if type is not unset:
+ kwargs["type"] = type
+ if type_id is not unset:
+ kwargs["type_id"] = type_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_history_response_error.py b/datadog_api_client/v1/model/slo_history_response_error.py
new file mode 100644
index 0000000000..2f90c8ce8d
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_response_error.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOHistoryResponseError(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "error": (str,),
+ }
+ attribute_map = {
+ "error": "error",
+ }
+
+ def __init__(self_, error: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A list of errors while querying the history data for the service level objective.
+
+ :param error: Human readable error.
+ :type error: str, optional
+ """
+ if error is not unset:
+ kwargs["error"] = error
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_history_response_error_with_type.py b/datadog_api_client/v1/model/slo_history_response_error_with_type.py
new file mode 100644
index 0000000000..170c221763
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_response_error_with_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOHistoryResponseErrorWithType(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "error_message": (str,),
+ "error_type": (str,),
+ }
+ attribute_map = {
+ "error_message": "error_message",
+ "error_type": "error_type",
+ }
+
+ def __init__(self_, error_message: str, error_type: str, **kwargs):
+ """
+ An object describing the error with error type and error message.
+
+ :param error_message: A message with more details about the error.
+ :type error_message: str
+
+ :param error_type: Type of the error.
+ :type error_type: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.error_message = error_message
+ self_.error_type = error_type
diff --git a/datadog_api_client/v1/model/slo_history_sli_data.py b/datadog_api_client/v1/model/slo_history_sli_data.py
new file mode 100644
index 0000000000..aee7a2a50b
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_history_sli_data.py
@@ -0,0 +1,137 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_error_budget_remaining_data import SLOErrorBudgetRemainingData
+ from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+
+class SLOHistorySLIData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_error_budget_remaining_data import SLOErrorBudgetRemainingData
+ from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+ return {
+ "error_budget_remaining": (SLOErrorBudgetRemainingData,),
+ "errors": ([SLOHistoryResponseErrorWithType],),
+ "group": (str,),
+ "history": ([[float]],),
+ "monitor_modified": (int,),
+ "monitor_type": (str,),
+ "name": (str,),
+ "precision": ({str: (float,)},),
+ "preview": (bool,),
+ "sli_value": (float, none_type),
+ "span_precision": (float,),
+ "uptime": (float, none_type),
+ }
+ attribute_map = {
+ "error_budget_remaining": "error_budget_remaining",
+ "errors": "errors",
+ "group": "group",
+ "history": "history",
+ "monitor_modified": "monitor_modified",
+ "monitor_type": "monitor_type",
+ "name": "name",
+ "precision": "precision",
+ "preview": "preview",
+ "sli_value": "sli_value",
+ "span_precision": "span_precision",
+ "uptime": "uptime",
+ }
+
+ def __init__(self_, error_budget_remaining: Union[SLOErrorBudgetRemainingData, UnsetType]=unset, errors: Union[List[SLOHistoryResponseErrorWithType], UnsetType]=unset, group: Union[str, UnsetType]=unset, history: Union[List[List[float]], UnsetType]=unset, monitor_modified: Union[int, UnsetType]=unset, monitor_type: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, precision: Union[Dict[str, float], UnsetType]=unset, preview: Union[bool, UnsetType]=unset, sli_value: Union[float, none_type, UnsetType]=unset, span_precision: Union[float, UnsetType]=unset, uptime: Union[float, none_type, UnsetType]=unset, **kwargs):
+ """
+ An object that holds an SLI value and its associated data. It can represent an SLO's overall SLI value.
+ This can also represent the SLI value for a specific monitor in multi-monitor SLOs, or a group in grouped SLOs.
+
+ :param error_budget_remaining: A mapping of threshold ``timeframe`` to the remaining error budget.
+ :type error_budget_remaining: SLOErrorBudgetRemainingData, optional
+
+ :param errors: An array of error objects returned while querying the history data for the service level objective.
+ :type errors: [SLOHistoryResponseErrorWithType], optional
+
+ :param group: For groups in a grouped SLO, this is the group name.
+ :type group: str, optional
+
+ :param history: The state transition history for ``monitor`` or ``time-slice`` SLOs. It is represented as
+ an array of pairs. Each pair is an array containing the timestamp of the transition
+ as an integer in Unix epoch format in the first element, and the state as an integer in the
+ second element. An integer value of ``0`` for state means uptime, ``1`` means downtime, and ``2`` means no data.
+ Periods of no data count as uptime in time-slice SLOs, while for monitor SLOs, no data is counted
+ either as uptime or downtime depending on monitor settings. See
+ `SLO documentation `_
+ for detailed information.
+ :type history: [[float]], optional
+
+ :param monitor_modified: For ``monitor`` based SLOs, this is the last modified timestamp in epoch seconds of the monitor.
+ :type monitor_modified: int, optional
+
+ :param monitor_type: For ``monitor`` based SLOs, this describes the type of monitor.
+ :type monitor_type: str, optional
+
+ :param name: For groups in a grouped SLO, this is the group name. For monitors in a multi-monitor SLO, this is the monitor name.
+ :type name: str, optional
+
+ :param precision: A mapping of threshold ``timeframe`` to number of accurate decimals, regardless of the from && to timestamp.
+ :type precision: {str: (float,)}, optional
+
+ :param preview: For ``monitor`` based SLOs, when ``true`` this indicates that a replay is in progress to give an accurate uptime
+ calculation.
+ :type preview: bool, optional
+
+ :param sli_value: The current SLI value of the SLO over the history window.
+ :type sli_value: float, none_type, optional
+
+ :param span_precision: The amount of decimal places the SLI value is accurate to for the given from ``&&`` to timestamp.
+ :type span_precision: float, optional
+
+ :param uptime: Use ``sli_value`` instead. **Deprecated**.
+ :type uptime: float, none_type, optional
+ """
+ if error_budget_remaining is not unset:
+ kwargs["error_budget_remaining"] = error_budget_remaining
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if group is not unset:
+ kwargs["group"] = group
+ if history is not unset:
+ kwargs["history"] = history
+ if monitor_modified is not unset:
+ kwargs["monitor_modified"] = monitor_modified
+ if monitor_type is not unset:
+ kwargs["monitor_type"] = monitor_type
+ if name is not unset:
+ kwargs["name"] = name
+ if precision is not unset:
+ kwargs["precision"] = precision
+ if preview is not unset:
+ kwargs["preview"] = preview
+ if sli_value is not unset:
+ kwargs["sli_value"] = sli_value
+ if span_precision is not unset:
+ kwargs["span_precision"] = span_precision
+ if uptime is not unset:
+ kwargs["uptime"] = uptime
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_list_response.py b/datadog_api_client/v1/model/slo_list_response.py
new file mode 100644
index 0000000000..537c6003fb
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_response.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.service_level_objective import ServiceLevelObjective
+ from datadog_api_client.v1.model.slo_list_response_metadata import SLOListResponseMetadata
+ from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+ from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+
+class SLOListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.service_level_objective import ServiceLevelObjective
+ from datadog_api_client.v1.model.slo_list_response_metadata import SLOListResponseMetadata
+ return {
+ "data": ([ServiceLevelObjective],),
+ "errors": ([str],),
+ "metadata": (SLOListResponseMetadata,),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ "metadata": "metadata",
+ }
+
+ def __init__(self_, data: Union[List[ServiceLevelObjective], UnsetType]=unset, errors: Union[List[str], UnsetType]=unset, metadata: Union[SLOListResponseMetadata, UnsetType]=unset, **kwargs):
+ """
+ A response with one or more service level objective.
+
+ :param data: An array of service level objective objects.
+ :type data: [ServiceLevelObjective], optional
+
+ :param errors: An array of error messages. Each endpoint documents how/whether this field is
+ used.
+ :type errors: [str], optional
+
+ :param metadata: The metadata object containing additional information about the list of SLOs.
+ :type metadata: SLOListResponseMetadata, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_list_response_metadata.py b/datadog_api_client/v1/model/slo_list_response_metadata.py
new file mode 100644
index 0000000000..c64a047491
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_response_metadata.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_list_response_metadata_page import SLOListResponseMetadataPage
+
+class SLOListResponseMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_list_response_metadata_page import SLOListResponseMetadataPage
+ return {
+ "page": (SLOListResponseMetadataPage,),
+ }
+ attribute_map = {
+ "page": "page",
+ }
+
+ def __init__(self_, page: Union[SLOListResponseMetadataPage, UnsetType]=unset, **kwargs):
+ """
+ The metadata object containing additional information about the list of SLOs.
+
+ :param page: The object containing information about the pages of the list of SLOs.
+ :type page: SLOListResponseMetadataPage, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_list_response_metadata_page.py b/datadog_api_client/v1/model/slo_list_response_metadata_page.py
new file mode 100644
index 0000000000..fd42dd3d03
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_response_metadata_page.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOListResponseMetadataPage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_count": (int,),
+ "total_filtered_count": (int,),
+ }
+ attribute_map = {
+ "total_count": "total_count",
+ "total_filtered_count": "total_filtered_count",
+ }
+
+ def __init__(self_, total_count: Union[int, UnsetType]=unset, total_filtered_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ The object containing information about the pages of the list of SLOs.
+
+ :param total_count: The total number of resources that could be retrieved ignoring the parameters and filters in the request.
+ :type total_count: int, optional
+
+ :param total_filtered_count: The total number of resources that match the parameters and filters in the request. This attribute can be used by a client to determine the total number of pages.
+ :type total_filtered_count: int, optional
+ """
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ if total_filtered_count is not unset:
+ kwargs["total_filtered_count"] = total_filtered_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_list_widget_definition.py b/datadog_api_client/v1/model/slo_list_widget_definition.py
new file mode 100644
index 0000000000..218b482412
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_widget_definition.py
@@ -0,0 +1,92 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_list_widget_request import SLOListWidgetRequest
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.slo_list_widget_definition_type import SLOListWidgetDefinitionType
+
+class SLOListWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_list_widget_request import SLOListWidgetRequest
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.slo_list_widget_definition_type import SLOListWidgetDefinitionType
+ return {
+ "description": (str,),
+ "requests": ([SLOListWidgetRequest],),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (SLOListWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "requests": "requests",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[SLOListWidgetRequest], type: SLOListWidgetDefinitionType, description: Union[str, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Use the SLO List widget to track your SLOs (Service Level Objectives) on dashboards.
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: Array of one request object to display in the widget.
+ :type requests: [SLOListWidgetRequest]
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the SLO List widget.
+ :type type: SLOListWidgetDefinitionType
+ """
+ if description is not unset:
+ kwargs["description"] = description
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/slo_list_widget_definition_type.py b/datadog_api_client/v1/model/slo_list_widget_definition_type.py
new file mode 100644
index 0000000000..c4dfc7b1a2
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOListWidgetDefinitionType(ModelSimple):
+ """
+ Type of the SLO List widget.
+
+ :param value: If omitted defaults to "slo_list". Must be one of ["slo_list"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "slo_list",
+ }
+ SLO_LIST: ClassVar["SLOListWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOListWidgetDefinitionType.SLO_LIST = SLOListWidgetDefinitionType("slo_list")
diff --git a/datadog_api_client/v1/model/slo_list_widget_query.py b/datadog_api_client/v1/model/slo_list_widget_query.py
new file mode 100644
index 0000000000..352da0a825
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_widget_query.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+
+class SLOListWidgetQuery(ModelNormal):
+ validations = {
+ "limit": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+ return {
+ "limit": (int,),
+ "query_string": (str,),
+ "sort": ([WidgetFieldSort],),
+ }
+ attribute_map = {
+ "limit": "limit",
+ "query_string": "query_string",
+ "sort": "sort",
+ }
+
+ def __init__(self_, query_string: str, limit: Union[int, UnsetType]=unset, sort: Union[List[WidgetFieldSort], UnsetType]=unset, **kwargs):
+ """
+ Updated SLO List widget.
+
+ :param limit: Maximum number of results to display in the table.
+ :type limit: int, optional
+
+ :param query_string: Widget query.
+ :type query_string: str
+
+ :param sort: Options for sorting results.
+ :type sort: [WidgetFieldSort], optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if sort is not unset:
+ kwargs["sort"] = sort
+ super().__init__(kwargs)
+
+
+ self_.query_string = query_string
diff --git a/datadog_api_client/v1/model/slo_list_widget_request.py b/datadog_api_client/v1/model/slo_list_widget_request.py
new file mode 100644
index 0000000000..9d1a1192a7
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_widget_request.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_list_widget_query import SLOListWidgetQuery
+ from datadog_api_client.v1.model.slo_list_widget_request_type import SLOListWidgetRequestType
+
+class SLOListWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_list_widget_query import SLOListWidgetQuery
+ from datadog_api_client.v1.model.slo_list_widget_request_type import SLOListWidgetRequestType
+ return {
+ "query": (SLOListWidgetQuery,),
+ "request_type": (SLOListWidgetRequestType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: SLOListWidgetQuery, request_type: SLOListWidgetRequestType, **kwargs):
+ """
+ Updated SLO List widget.
+
+ :param query: Updated SLO List widget.
+ :type query: SLOListWidgetQuery
+
+ :param request_type: Widget request type.
+ :type request_type: SLOListWidgetRequestType
+ """
+ super().__init__(kwargs)
+
+
+ self_.query = query
+ self_.request_type = request_type
diff --git a/datadog_api_client/v1/model/slo_list_widget_request_type.py b/datadog_api_client/v1/model/slo_list_widget_request_type.py
new file mode 100644
index 0000000000..6efad2acba
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_list_widget_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOListWidgetRequestType(ModelSimple):
+ """
+ Widget request type.
+
+ :param value: If omitted defaults to "slo_list". Must be one of ["slo_list"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "slo_list",
+ }
+ SLO_LIST: ClassVar["SLOListWidgetRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOListWidgetRequestType.SLO_LIST = SLOListWidgetRequestType("slo_list")
diff --git a/datadog_api_client/v1/model/slo_overall_statuses.py b/datadog_api_client/v1/model/slo_overall_statuses.py
new file mode 100644
index 0000000000..ebbac6e1fc
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_overall_statuses.py
@@ -0,0 +1,111 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_raw_error_budget_remaining import SLORawErrorBudgetRemaining
+ from datadog_api_client.v1.model.slo_state import SLOState
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+
+class SLOOverallStatuses(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_raw_error_budget_remaining import SLORawErrorBudgetRemaining
+ from datadog_api_client.v1.model.slo_state import SLOState
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ return {
+ "error": (str, none_type),
+ "error_budget_remaining": (float, none_type),
+ "indexed_at": (int,),
+ "raw_error_budget_remaining": (SLORawErrorBudgetRemaining,),
+ "span_precision": (int, none_type),
+ "state": (SLOState,),
+ "status": (float, none_type),
+ "target": (float,),
+ "timeframe": (SLOTimeframe,),
+ }
+ attribute_map = {
+ "error": "error",
+ "error_budget_remaining": "error_budget_remaining",
+ "indexed_at": "indexed_at",
+ "raw_error_budget_remaining": "raw_error_budget_remaining",
+ "span_precision": "span_precision",
+ "state": "state",
+ "status": "status",
+ "target": "target",
+ "timeframe": "timeframe",
+ }
+
+ def __init__(self_, error: Union[str, none_type, UnsetType]=unset, error_budget_remaining: Union[float, none_type, UnsetType]=unset, indexed_at: Union[int, UnsetType]=unset, raw_error_budget_remaining: Union[SLORawErrorBudgetRemaining, none_type, UnsetType]=unset, span_precision: Union[int, none_type, UnsetType]=unset, state: Union[SLOState, UnsetType]=unset, status: Union[float, none_type, UnsetType]=unset, target: Union[float, UnsetType]=unset, timeframe: Union[SLOTimeframe, UnsetType]=unset, **kwargs):
+ """
+ Overall status of the SLO by timeframes.
+
+ :param error: Error message if SLO status or error budget could not be calculated.
+ :type error: str, none_type, optional
+
+ :param error_budget_remaining: Remaining error budget of the SLO in percentage.
+ :type error_budget_remaining: float, none_type, optional
+
+ :param indexed_at: timestamp (UNIX time in seconds) of when the SLO status and error budget
+ were calculated.
+ :type indexed_at: int, optional
+
+ :param raw_error_budget_remaining: Error budget remaining for an SLO.
+ :type raw_error_budget_remaining: SLORawErrorBudgetRemaining, none_type, optional
+
+ :param span_precision: The amount of decimal places the SLI value is accurate to.
+ :type span_precision: int, none_type, optional
+
+ :param state: State of the SLO.
+ :type state: SLOState, optional
+
+ :param status: The status of the SLO.
+ :type status: float, none_type, optional
+
+ :param target: The target of the SLO.
+ :type target: float, optional
+
+ :param timeframe: The SLO time window options. Note that "custom" is not a valid option for creating
+ or updating SLOs. It is only used when querying SLO history over custom timeframes.
+ :type timeframe: SLOTimeframe, optional
+ """
+ if error is not unset:
+ kwargs["error"] = error
+ if error_budget_remaining is not unset:
+ kwargs["error_budget_remaining"] = error_budget_remaining
+ if indexed_at is not unset:
+ kwargs["indexed_at"] = indexed_at
+ if raw_error_budget_remaining is not unset:
+ kwargs["raw_error_budget_remaining"] = raw_error_budget_remaining
+ if span_precision is not unset:
+ kwargs["span_precision"] = span_precision
+ if state is not unset:
+ kwargs["state"] = state
+ if status is not unset:
+ kwargs["status"] = status
+ if target is not unset:
+ kwargs["target"] = target
+ if timeframe is not unset:
+ kwargs["timeframe"] = timeframe
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_raw_error_budget_remaining.py b/datadog_api_client/v1/model/slo_raw_error_budget_remaining.py
new file mode 100644
index 0000000000..249bc3bd3c
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_raw_error_budget_remaining.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLORawErrorBudgetRemaining(ModelNormal):
+ _nullable = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "unit": (str,),
+ "value": (float,),
+ }
+ attribute_map = {
+ "unit": "unit",
+ "value": "value",
+ }
+
+ def __init__(self_, unit: Union[str, UnsetType]=unset, value: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Error budget remaining for an SLO.
+
+ :param unit: Error budget remaining unit.
+ :type unit: str, optional
+
+ :param value: Error budget remaining value.
+ :type value: float, optional
+ """
+ if unit is not unset:
+ kwargs["unit"] = unit
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_response.py b/datadog_api_client/v1/model/slo_response.py
new file mode 100644
index 0000000000..e666a7c0e3
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_response.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_response_data import SLOResponseData
+ from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+ from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+
+class SLOResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_response_data import SLOResponseData
+ return {
+ "data": (SLOResponseData,),
+ "errors": ([str],),
+ }
+ attribute_map = {
+ "data": "data",
+ "errors": "errors",
+ }
+
+ def __init__(self_, data: Union[SLOResponseData, UnsetType]=unset, errors: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ A service level objective response containing a single service level objective.
+
+ :param data: A service level objective object includes a service level indicator, thresholds
+ for one or more timeframes, and metadata ( ``name`` , ``description`` , ``tags`` , etc.).
+ :type data: SLOResponseData, optional
+
+ :param errors: An array of error messages. Each endpoint documents how/whether this field is
+ used.
+ :type errors: [str], optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if errors is not unset:
+ kwargs["errors"] = errors
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_response_data.py b/datadog_api_client/v1/model/slo_response_data.py
new file mode 100644
index 0000000000..d77de71201
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_response_data.py
@@ -0,0 +1,216 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+ from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ from datadog_api_client.v1.model.slo_type import SLOType
+ from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+ from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+
+class SLOResponseData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+ from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+ from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ from datadog_api_client.v1.model.slo_type import SLOType
+ return {
+ "configured_alert_ids": ([int],),
+ "created_at": (int,),
+ "creator": (Creator,),
+ "description": (str, none_type),
+ "groups": ([str],),
+ "id": (str,),
+ "modified_at": (int,),
+ "monitor_ids": ([int],),
+ "monitor_tags": ([str],),
+ "name": (str,),
+ "query": (ServiceLevelObjectiveQuery,),
+ "sli_specification": (SLOSliSpec,),
+ "tags": ([str],),
+ "target_threshold": (float,),
+ "thresholds": ([SLOThreshold],),
+ "timeframe": (SLOTimeframe,),
+ "type": (SLOType,),
+ "warning_threshold": (float,),
+ }
+ attribute_map = {
+ "configured_alert_ids": "configured_alert_ids",
+ "created_at": "created_at",
+ "creator": "creator",
+ "description": "description",
+ "groups": "groups",
+ "id": "id",
+ "modified_at": "modified_at",
+ "monitor_ids": "monitor_ids",
+ "monitor_tags": "monitor_tags",
+ "name": "name",
+ "query": "query",
+ "sli_specification": "sli_specification",
+ "tags": "tags",
+ "target_threshold": "target_threshold",
+ "thresholds": "thresholds",
+ "timeframe": "timeframe",
+ "type": "type",
+ "warning_threshold": "warning_threshold",
+ }
+ read_only_vars = {
+ "created_at",
+ "creator",
+ "id",
+ "modified_at",
+ }
+
+ def __init__(self_, configured_alert_ids: Union[List[int], UnsetType]=unset, created_at: Union[int, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, description: Union[str, none_type, UnsetType]=unset, groups: Union[List[str], UnsetType]=unset, id: Union[str, UnsetType]=unset, modified_at: Union[int, UnsetType]=unset, monitor_ids: Union[List[int], UnsetType]=unset, monitor_tags: Union[List[str], UnsetType]=unset, name: Union[str, UnsetType]=unset, query: Union[ServiceLevelObjectiveQuery, UnsetType]=unset, sli_specification: Union[SLOSliSpec, SLOTimeSliceSpec, SLOCountSpec, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, target_threshold: Union[float, UnsetType]=unset, thresholds: Union[List[SLOThreshold], UnsetType]=unset, timeframe: Union[SLOTimeframe, UnsetType]=unset, type: Union[SLOType, UnsetType]=unset, warning_threshold: Union[float, UnsetType]=unset, **kwargs):
+ """
+ A service level objective object includes a service level indicator, thresholds
+ for one or more timeframes, and metadata ( ``name`` , ``description`` , ``tags`` , etc.).
+
+ :param configured_alert_ids: A list of SLO monitors IDs that reference this SLO. This field is returned only when ``with_configured_alert_ids`` parameter is true in query.
+ :type configured_alert_ids: [int], optional
+
+ :param created_at: Creation timestamp (UNIX time in seconds)
+
+ Always included in service level objective responses.
+ :type created_at: int, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param description: A user-defined description of the service level objective.
+
+ Always included in service level objective responses (but may be ``null`` ).
+ Optional in create/update requests.
+ :type description: str, none_type, optional
+
+ :param groups: A list of (up to 20) monitor groups that narrow the scope of a monitor service level objective.
+
+ Included in service level objective responses if it is not empty. Optional in
+ create/update requests for monitor service level objectives, but may only be
+ used when then length of the ``monitor_ids`` field is one.
+ :type groups: [str], optional
+
+ :param id: A unique identifier for the service level objective object.
+
+ Always included in service level objective responses.
+ :type id: str, optional
+
+ :param modified_at: Modification timestamp (UNIX time in seconds)
+
+ Always included in service level objective responses.
+ :type modified_at: int, optional
+
+ :param monitor_ids: A list of monitor ids that defines the scope of a monitor service level
+ objective. **Required if type is monitor**.
+ :type monitor_ids: [int], optional
+
+ :param monitor_tags: The union of monitor tags for all monitors referenced by the ``monitor_ids``
+ field.
+ Always included in service level objective responses for monitor service level
+ objectives (but may be empty). Ignored in create/update requests. Does not
+ affect which monitors are included in the service level objective (that is
+ determined entirely by the ``monitor_ids`` field).
+ :type monitor_tags: [str], optional
+
+ :param name: The name of the service level objective object.
+ :type name: str, optional
+
+ :param query: A count-based (metric) SLO query. This field is superseded by ``sli_specification`` but is retained for backwards compatibility. Note that Datadog only allows the sum by aggregator
+ to be used because this will sum up all request counts instead of averaging them, or taking the max or
+ min of all of those requests.
+ :type query: ServiceLevelObjectiveQuery, optional
+
+ :param sli_specification: A generic SLI specification. This is used for time-slice and count-based (metric) SLOs only.
+ :type sli_specification: SLOSliSpec, optional
+
+ :param tags: A list of tags associated with this service level objective.
+ Always included in service level objective responses (but may be empty).
+ Optional in create/update requests.
+ :type tags: [str], optional
+
+ :param target_threshold: The target threshold such that when the service level indicator is above this
+ threshold over the given timeframe, the objective is being met.
+ :type target_threshold: float, optional
+
+ :param thresholds: The thresholds (timeframes and associated targets) for this service level
+ objective object.
+ :type thresholds: [SLOThreshold], optional
+
+ :param timeframe: The SLO time window options. Note that "custom" is not a valid option for creating
+ or updating SLOs. It is only used when querying SLO history over custom timeframes.
+ :type timeframe: SLOTimeframe, optional
+
+ :param type: The type of the service level objective.
+ :type type: SLOType, optional
+
+ :param warning_threshold: The optional warning threshold such that when the service level indicator is
+ below this value for the given threshold, but above the target threshold, the
+ objective appears in a "warning" state. This value must be greater than the target
+ threshold.
+ :type warning_threshold: float, optional
+ """
+ if configured_alert_ids is not unset:
+ kwargs["configured_alert_ids"] = configured_alert_ids
+ if created_at is not unset:
+ kwargs["created_at"] = created_at
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if description is not unset:
+ kwargs["description"] = description
+ if groups is not unset:
+ kwargs["groups"] = groups
+ if id is not unset:
+ kwargs["id"] = id
+ if modified_at is not unset:
+ kwargs["modified_at"] = modified_at
+ if monitor_ids is not unset:
+ kwargs["monitor_ids"] = monitor_ids
+ if monitor_tags is not unset:
+ kwargs["monitor_tags"] = monitor_tags
+ if name is not unset:
+ kwargs["name"] = name
+ if query is not unset:
+ kwargs["query"] = query
+ if sli_specification is not unset:
+ kwargs["sli_specification"] = sli_specification
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if target_threshold is not unset:
+ kwargs["target_threshold"] = target_threshold
+ if thresholds is not unset:
+ kwargs["thresholds"] = thresholds
+ if timeframe is not unset:
+ kwargs["timeframe"] = timeframe
+ if type is not unset:
+ kwargs["type"] = type
+ if warning_threshold is not unset:
+ kwargs["warning_threshold"] = warning_threshold
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_sli_spec.py b/datadog_api_client/v1/model/slo_sli_spec.py
new file mode 100644
index 0000000000..8a1de45941
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_sli_spec.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SLOSliSpec(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ A generic SLI specification. This is used for time-slice and count-based (metric) SLOs only.
+
+ :param time_slice: The time-slice condition, composed of 3 parts: 1. the metric timeseries query, 2. the comparator,
+ and 3. the threshold. Optionally, a fourth part, the query interval, can be provided.
+ :type time_slice: SLOTimeSliceCondition
+
+ :param count: A count-based (metric) SLI specification, composed of three parts: the good events formula,
+ the bad or total events formula, and the underlying queries.
+ Exactly one of `total_events_formula` or `bad_events_formula` must be provided.
+ :type count: SLOCountDefinition
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+ from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+ return {
+ "oneOf": [
+ SLOTimeSliceSpec,
+ SLOCountSpec,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/slo_state.py b/datadog_api_client/v1/model/slo_state.py
new file mode 100644
index 0000000000..e3b0a58230
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_state.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOState(ModelSimple):
+ """
+ State of the SLO.
+
+ :param value: Must be one of ["breached", "warning", "ok", "no_data"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "breached",
+ "warning",
+ "ok",
+ "no_data",
+ }
+ BREACHED: ClassVar["SLOState"]
+ WARNING: ClassVar["SLOState"]
+ OK: ClassVar["SLOState"]
+ NO_DATA: ClassVar["SLOState"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOState.BREACHED = SLOState("breached")
+SLOState.WARNING = SLOState("warning")
+SLOState.OK = SLOState("ok")
+SLOState.NO_DATA = SLOState("no_data")
diff --git a/datadog_api_client/v1/model/slo_status.py b/datadog_api_client/v1/model/slo_status.py
new file mode 100644
index 0000000000..947b6cd3a4
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_status.py
@@ -0,0 +1,94 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_raw_error_budget_remaining import SLORawErrorBudgetRemaining
+ from datadog_api_client.v1.model.slo_state import SLOState
+
+class SLOStatus(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_raw_error_budget_remaining import SLORawErrorBudgetRemaining
+ from datadog_api_client.v1.model.slo_state import SLOState
+ return {
+ "calculation_error": (str, none_type),
+ "error_budget_remaining": (float, none_type),
+ "indexed_at": (int,),
+ "raw_error_budget_remaining": (SLORawErrorBudgetRemaining,),
+ "sli": (float, none_type),
+ "span_precision": (int, none_type),
+ "state": (SLOState,),
+ }
+ attribute_map = {
+ "calculation_error": "calculation_error",
+ "error_budget_remaining": "error_budget_remaining",
+ "indexed_at": "indexed_at",
+ "raw_error_budget_remaining": "raw_error_budget_remaining",
+ "sli": "sli",
+ "span_precision": "span_precision",
+ "state": "state",
+ }
+
+ def __init__(self_, calculation_error: Union[str, none_type, UnsetType]=unset, error_budget_remaining: Union[float, none_type, UnsetType]=unset, indexed_at: Union[int, UnsetType]=unset, raw_error_budget_remaining: Union[SLORawErrorBudgetRemaining, none_type, UnsetType]=unset, sli: Union[float, none_type, UnsetType]=unset, span_precision: Union[int, none_type, UnsetType]=unset, state: Union[SLOState, UnsetType]=unset, **kwargs):
+ """
+ Status of the SLO's primary timeframe.
+
+ :param calculation_error: Error message if SLO status or error budget could not be calculated.
+ :type calculation_error: str, none_type, optional
+
+ :param error_budget_remaining: Remaining error budget of the SLO in percentage.
+ :type error_budget_remaining: float, none_type, optional
+
+ :param indexed_at: timestamp (UNIX time in seconds) of when the SLO status and error budget
+ were calculated.
+ :type indexed_at: int, optional
+
+ :param raw_error_budget_remaining: Error budget remaining for an SLO.
+ :type raw_error_budget_remaining: SLORawErrorBudgetRemaining, none_type, optional
+
+ :param sli: The current service level indicator (SLI) of the SLO, also known as 'status'. This is a percentage value from 0-100 (inclusive).
+ :type sli: float, none_type, optional
+
+ :param span_precision: The number of decimal places the SLI value is accurate to.
+ :type span_precision: int, none_type, optional
+
+ :param state: State of the SLO.
+ :type state: SLOState, optional
+ """
+ if calculation_error is not unset:
+ kwargs["calculation_error"] = calculation_error
+ if error_budget_remaining is not unset:
+ kwargs["error_budget_remaining"] = error_budget_remaining
+ if indexed_at is not unset:
+ kwargs["indexed_at"] = indexed_at
+ if raw_error_budget_remaining is not unset:
+ kwargs["raw_error_budget_remaining"] = raw_error_budget_remaining
+ if sli is not unset:
+ kwargs["sli"] = sli
+ if span_precision is not unset:
+ kwargs["span_precision"] = span_precision
+ if state is not unset:
+ kwargs["state"] = state
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/slo_threshold.py b/datadog_api_client/v1/model/slo_threshold.py
new file mode 100644
index 0000000000..922341653e
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_threshold.py
@@ -0,0 +1,85 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+
+class SLOThreshold(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+ return {
+ "target": (float,),
+ "target_display": (str,),
+ "timeframe": (SLOTimeframe,),
+ "warning": (float,),
+ "warning_display": (str,),
+ }
+ attribute_map = {
+ "target": "target",
+ "target_display": "target_display",
+ "timeframe": "timeframe",
+ "warning": "warning",
+ "warning_display": "warning_display",
+ }
+
+ def __init__(self_, target: float, timeframe: SLOTimeframe, target_display: Union[str, UnsetType]=unset, warning: Union[float, UnsetType]=unset, warning_display: Union[str, UnsetType]=unset, **kwargs):
+ """
+ SLO thresholds (target and optionally warning) for a single time window.
+
+ :param target: The target value for the service level indicator within the corresponding
+ timeframe.
+ :type target: float
+
+ :param target_display: A string representation of the target that indicates its precision.
+ It uses trailing zeros to show significant decimal places (for example ``98.00`` ).
+
+ Always included in service level objective responses. Ignored in
+ create/update requests.
+ :type target_display: str, optional
+
+ :param timeframe: The SLO time window options. Note that "custom" is not a valid option for creating
+ or updating SLOs. It is only used when querying SLO history over custom timeframes.
+ :type timeframe: SLOTimeframe
+
+ :param warning: The warning value for the service level objective.
+ :type warning: float, optional
+
+ :param warning_display: A string representation of the warning target (see the description of
+ the ``target_display`` field for details).
+
+ Included in service level objective responses if a warning target exists.
+ Ignored in create/update requests.
+ :type warning_display: str, optional
+ """
+ if target_display is not unset:
+ kwargs["target_display"] = target_display
+ if warning is not unset:
+ kwargs["warning"] = warning
+ if warning_display is not unset:
+ kwargs["warning_display"] = warning_display
+ super().__init__(kwargs)
+
+
+ self_.target = target
+ self_.timeframe = timeframe
diff --git a/datadog_api_client/v1/model/slo_time_slice_comparator.py b/datadog_api_client/v1/model/slo_time_slice_comparator.py
new file mode 100644
index 0000000000..7c2fb94bca
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_time_slice_comparator.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOTimeSliceComparator(ModelSimple):
+ """
+ The comparator used to compare the SLI value to the threshold.
+
+ :param value: Must be one of [">", ">=", "<", "<="].
+ :type value: str
+ """
+
+ allowed_values = {
+ ">",
+ ">=",
+ "<",
+ "<=",
+ }
+ GREATER: ClassVar["SLOTimeSliceComparator"]
+ GREATER_EQUAL: ClassVar["SLOTimeSliceComparator"]
+ LESS: ClassVar["SLOTimeSliceComparator"]
+ LESS_EQUAL: ClassVar["SLOTimeSliceComparator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOTimeSliceComparator.GREATER = SLOTimeSliceComparator(">")
+SLOTimeSliceComparator.GREATER_EQUAL = SLOTimeSliceComparator(">=")
+SLOTimeSliceComparator.LESS = SLOTimeSliceComparator("<")
+SLOTimeSliceComparator.LESS_EQUAL = SLOTimeSliceComparator("<=")
diff --git a/datadog_api_client/v1/model/slo_time_slice_condition.py b/datadog_api_client/v1/model/slo_time_slice_condition.py
new file mode 100644
index 0000000000..73135e3da6
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_time_slice_condition.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_time_slice_comparator import SLOTimeSliceComparator
+ from datadog_api_client.v1.model.slo_time_slice_query import SLOTimeSliceQuery
+ from datadog_api_client.v1.model.slo_time_slice_interval import SLOTimeSliceInterval
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+
+class SLOTimeSliceCondition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_time_slice_comparator import SLOTimeSliceComparator
+ from datadog_api_client.v1.model.slo_time_slice_query import SLOTimeSliceQuery
+ from datadog_api_client.v1.model.slo_time_slice_interval import SLOTimeSliceInterval
+ return {
+ "comparator": (SLOTimeSliceComparator,),
+ "query": (SLOTimeSliceQuery,),
+ "query_interval_seconds": (SLOTimeSliceInterval,),
+ "threshold": (float,),
+ }
+ attribute_map = {
+ "comparator": "comparator",
+ "query": "query",
+ "query_interval_seconds": "query_interval_seconds",
+ "threshold": "threshold",
+ }
+
+ def __init__(self_, comparator: SLOTimeSliceComparator, query: SLOTimeSliceQuery, threshold: float, query_interval_seconds: Union[SLOTimeSliceInterval, UnsetType]=unset, **kwargs):
+ """
+ The time-slice condition, composed of 3 parts: 1. the metric timeseries query, 2. the comparator,
+ and 3. the threshold. Optionally, a fourth part, the query interval, can be provided.
+
+ :param comparator: The comparator used to compare the SLI value to the threshold.
+ :type comparator: SLOTimeSliceComparator
+
+ :param query: The queries and formula used to calculate the SLI value.
+ :type query: SLOTimeSliceQuery
+
+ :param query_interval_seconds: The interval used when querying data, which defines the size of a time slice.
+ Two values are allowed: 60 (1 minute) and 300 (5 minutes).
+ If not provided, the value defaults to 300 (5 minutes).
+ :type query_interval_seconds: SLOTimeSliceInterval, optional
+
+ :param threshold: The threshold value to which each SLI value will be compared.
+ :type threshold: float
+ """
+ if query_interval_seconds is not unset:
+ kwargs["query_interval_seconds"] = query_interval_seconds
+ super().__init__(kwargs)
+
+
+ self_.comparator = comparator
+ self_.query = query
+ self_.threshold = threshold
diff --git a/datadog_api_client/v1/model/slo_time_slice_interval.py b/datadog_api_client/v1/model/slo_time_slice_interval.py
new file mode 100644
index 0000000000..11d02c92fa
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_time_slice_interval.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOTimeSliceInterval(ModelSimple):
+ """
+ The interval used when querying data, which defines the size of a time slice.
+ Two values are allowed: 60 (1 minute) and 300 (5 minutes).
+ If not provided, the value defaults to 300 (5 minutes).
+
+ :param value: Must be one of [60, 300].
+ :type value: int
+ """
+
+ allowed_values = {
+ 60,
+ 300,
+ }
+ ONE_MINUTE: ClassVar["SLOTimeSliceInterval"]
+ FIVE_MINUTES: ClassVar["SLOTimeSliceInterval"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (int,),
+ }
+SLOTimeSliceInterval.ONE_MINUTE = SLOTimeSliceInterval(60)
+SLOTimeSliceInterval.FIVE_MINUTES = SLOTimeSliceInterval(300)
diff --git a/datadog_api_client/v1/model/slo_time_slice_query.py b/datadog_api_client/v1/model/slo_time_slice_query.py
new file mode 100644
index 0000000000..49ea9fbfb0
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_time_slice_query.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_formula import SLOFormula
+ from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+
+class SLOTimeSliceQuery(ModelNormal):
+ validations = {
+ "formulas": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_formula import SLOFormula
+ from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+ return {
+ "formulas": ([SLOFormula],),
+ "queries": ([SLODataSourceQueryDefinition],),
+ }
+ attribute_map = {
+ "formulas": "formulas",
+ "queries": "queries",
+ }
+
+ def __init__(self_, formulas: List[SLOFormula], queries: List[Union[SLODataSourceQueryDefinition, FormulaAndFunctionMetricQueryDefinition]], **kwargs):
+ """
+ The queries and formula used to calculate the SLI value.
+
+ :param formulas: A list that contains exactly one formula, as only a single formula may be used in a time-slice SLO.
+ :type formulas: [SLOFormula]
+
+ :param queries: A list of queries that are used to calculate the SLI value.
+ :type queries: [SLODataSourceQueryDefinition]
+ """
+ super().__init__(kwargs)
+
+
+ self_.formulas = formulas
+ self_.queries = queries
diff --git a/datadog_api_client/v1/model/slo_time_slice_spec.py b/datadog_api_client/v1/model/slo_time_slice_spec.py
new file mode 100644
index 0000000000..35aa27a5e9
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_time_slice_spec.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_time_slice_condition import SLOTimeSliceCondition
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+
+class SLOTimeSliceSpec(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_time_slice_condition import SLOTimeSliceCondition
+ return {
+ "time_slice": (SLOTimeSliceCondition,),
+ }
+ attribute_map = {
+ "time_slice": "time_slice",
+ }
+
+ def __init__(self_, time_slice: SLOTimeSliceCondition, **kwargs):
+ """
+ A time-slice SLI specification.
+
+ :param time_slice: The time-slice condition, composed of 3 parts: 1. the metric timeseries query, 2. the comparator,
+ and 3. the threshold. Optionally, a fourth part, the query interval, can be provided.
+ :type time_slice: SLOTimeSliceCondition
+ """
+ super().__init__(kwargs)
+
+
+ self_.time_slice = time_slice
diff --git a/datadog_api_client/v1/model/slo_timeframe.py b/datadog_api_client/v1/model/slo_timeframe.py
new file mode 100644
index 0000000000..ef737deda6
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_timeframe.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOTimeframe(ModelSimple):
+ """
+ The SLO time window options. Note that "custom" is not a valid option for creating
+ or updating SLOs. It is only used when querying SLO history over custom timeframes.
+
+ :param value: Must be one of ["7d", "30d", "90d", "custom"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "7d",
+ "30d",
+ "90d",
+ "custom",
+ }
+ SEVEN_DAYS: ClassVar["SLOTimeframe"]
+ THIRTY_DAYS: ClassVar["SLOTimeframe"]
+ NINETY_DAYS: ClassVar["SLOTimeframe"]
+ CUSTOM: ClassVar["SLOTimeframe"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOTimeframe.SEVEN_DAYS = SLOTimeframe("7d")
+SLOTimeframe.THIRTY_DAYS = SLOTimeframe("30d")
+SLOTimeframe.NINETY_DAYS = SLOTimeframe("90d")
+SLOTimeframe.CUSTOM = SLOTimeframe("custom")
diff --git a/datadog_api_client/v1/model/slo_type.py b/datadog_api_client/v1/model/slo_type.py
new file mode 100644
index 0000000000..7596b88af6
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOType(ModelSimple):
+ """
+ The type of the service level objective.
+
+ :param value: Must be one of ["metric", "monitor", "time_slice"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "metric",
+ "monitor",
+ "time_slice",
+ }
+ METRIC: ClassVar["SLOType"]
+ MONITOR: ClassVar["SLOType"]
+ TIME_SLICE: ClassVar["SLOType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOType.METRIC = SLOType("metric")
+SLOType.MONITOR = SLOType("monitor")
+SLOType.TIME_SLICE = SLOType("time_slice")
diff --git a/datadog_api_client/v1/model/slo_type_numeric.py b/datadog_api_client/v1/model/slo_type_numeric.py
new file mode 100644
index 0000000000..0bf1e283b1
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_type_numeric.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOTypeNumeric(ModelSimple):
+ """
+ A numeric representation of the type of the service level objective (`0` for
+ monitor, `1` for metric). Always included in service level objective responses.
+ Ignored in create/update requests.
+
+ :param value: Must be one of [0, 1, 2].
+ :type value: int
+ """
+
+ allowed_values = {
+ 0,
+ 1,
+ 2,
+ }
+ MONITOR: ClassVar["SLOTypeNumeric"]
+ METRIC: ClassVar["SLOTypeNumeric"]
+ TIME_SLICE: ClassVar["SLOTypeNumeric"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (int,),
+ }
+SLOTypeNumeric.MONITOR = SLOTypeNumeric(0)
+SLOTypeNumeric.METRIC = SLOTypeNumeric(1)
+SLOTypeNumeric.TIME_SLICE = SLOTypeNumeric(2)
diff --git a/datadog_api_client/v1/model/slo_widget_definition.py b/datadog_api_client/v1/model/slo_widget_definition.py
new file mode 100644
index 0000000000..4ed2db6a77
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_widget_definition.py
@@ -0,0 +1,131 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_time_windows import WidgetTimeWindows
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.slo_widget_definition_type import SLOWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_view_mode import WidgetViewMode
+
+class SLOWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_time_windows import WidgetTimeWindows
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.slo_widget_definition_type import SLOWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_view_mode import WidgetViewMode
+ return {
+ "additional_query_filters": (str,),
+ "description": (str,),
+ "global_time_target": (str,),
+ "show_error_budget": (bool,),
+ "slo_id": (str,),
+ "time_windows": ([WidgetTimeWindows],),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (SLOWidgetDefinitionType,),
+ "view_mode": (WidgetViewMode,),
+ "view_type": (str,),
+ }
+ attribute_map = {
+ "additional_query_filters": "additional_query_filters",
+ "description": "description",
+ "global_time_target": "global_time_target",
+ "show_error_budget": "show_error_budget",
+ "slo_id": "slo_id",
+ "time_windows": "time_windows",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "view_mode": "view_mode",
+ "view_type": "view_type",
+ }
+
+ def __init__(self_, type: SLOWidgetDefinitionType, additional_query_filters: Union[str, UnsetType]=unset, description: Union[str, UnsetType]=unset, global_time_target: Union[str, UnsetType]=unset, show_error_budget: Union[bool, UnsetType]=unset, slo_id: Union[str, UnsetType]=unset, time_windows: Union[List[WidgetTimeWindows], UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, view_mode: Union[WidgetViewMode, UnsetType]=unset, **kwargs):
+ """
+ Use the SLO and uptime widget to track your SLOs (Service Level Objectives) and uptime on dashboards.
+
+ :param additional_query_filters: Additional filters applied to the SLO query.
+ :type additional_query_filters: str, optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param global_time_target: Defined global time target.
+ :type global_time_target: str, optional
+
+ :param show_error_budget: Defined error budget.
+ :type show_error_budget: bool, optional
+
+ :param slo_id: ID of the SLO displayed.
+ :type slo_id: str, optional
+
+ :param time_windows: Times being monitored.
+ :type time_windows: [WidgetTimeWindows], optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the SLO widget.
+ :type type: SLOWidgetDefinitionType
+
+ :param view_mode: Define how you want the SLO to be displayed.
+ :type view_mode: WidgetViewMode, optional
+
+ :param view_type: Type of view displayed by the widget.
+ :type view_type: str
+ """
+ if additional_query_filters is not unset:
+ kwargs["additional_query_filters"] = additional_query_filters
+ if description is not unset:
+ kwargs["description"] = description
+ if global_time_target is not unset:
+ kwargs["global_time_target"] = global_time_target
+ if show_error_budget is not unset:
+ kwargs["show_error_budget"] = show_error_budget
+ if slo_id is not unset:
+ kwargs["slo_id"] = slo_id
+ if time_windows is not unset:
+ kwargs["time_windows"] = time_windows
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if view_mode is not unset:
+ kwargs["view_mode"] = view_mode
+ super().__init__(kwargs)
+ view_type = kwargs.get("view_type", "detail")
+
+
+ self_.type = type
+ self_.view_type = view_type
diff --git a/datadog_api_client/v1/model/slo_widget_definition_type.py b/datadog_api_client/v1/model/slo_widget_definition_type.py
new file mode 100644
index 0000000000..e5849ab624
--- /dev/null
+++ b/datadog_api_client/v1/model/slo_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SLOWidgetDefinitionType(ModelSimple):
+ """
+ Type of the SLO widget.
+
+ :param value: If omitted defaults to "slo". Must be one of ["slo"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "slo",
+ }
+ SLO: ClassVar["SLOWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SLOWidgetDefinitionType.SLO = SLOWidgetDefinitionType("slo")
diff --git a/datadog_api_client/v1/model/split_config.py b/datadog_api_client/v1/model/split_config.py
new file mode 100644
index 0000000000..e23da7ef8c
--- /dev/null
+++ b/datadog_api_client/v1/model/split_config.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.split_sort import SplitSort
+ from datadog_api_client.v1.model.split_dimension import SplitDimension
+ from datadog_api_client.v1.model.split_vector_entry_item import SplitVectorEntryItem
+
+class SplitConfig(ModelNormal):
+ validations = {
+ "limit": {
+ "inclusive_maximum": 500,
+ "inclusive_minimum": 1,
+ },
+ "split_dimensions": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ "static_splits": {
+ "max_items": 500,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.split_sort import SplitSort
+ from datadog_api_client.v1.model.split_dimension import SplitDimension
+ from datadog_api_client.v1.model.split_vector_entry_item import SplitVectorEntryItem
+ return {
+ "limit": (int,),
+ "sort": (SplitSort,),
+ "split_dimensions": ([SplitDimension],),
+ "static_splits": ([[SplitVectorEntryItem]],),
+ }
+ attribute_map = {
+ "limit": "limit",
+ "sort": "sort",
+ "split_dimensions": "split_dimensions",
+ "static_splits": "static_splits",
+ }
+
+ def __init__(self_, limit: int, sort: SplitSort, split_dimensions: List[SplitDimension], static_splits: Union[List[List[SplitVectorEntryItem]], UnsetType]=unset, **kwargs):
+ """
+ Encapsulates all user choices about how to split a graph.
+
+ :param limit: Maximum number of graphs to display in the widget.
+ :type limit: int
+
+ :param sort: Controls the order in which graphs appear in the split.
+ :type sort: SplitSort
+
+ :param split_dimensions: The dimension(s) on which to split the graph
+ :type split_dimensions: [SplitDimension]
+
+ :param static_splits: Manual selection of tags making split graph widget static
+ :type static_splits: [[SplitVectorEntryItem]], optional
+ """
+ if static_splits is not unset:
+ kwargs["static_splits"] = static_splits
+ super().__init__(kwargs)
+
+
+ self_.limit = limit
+ self_.sort = sort
+ self_.split_dimensions = split_dimensions
diff --git a/datadog_api_client/v1/model/split_config_sort_compute.py b/datadog_api_client/v1/model/split_config_sort_compute.py
new file mode 100644
index 0000000000..8b04d81c0b
--- /dev/null
+++ b/datadog_api_client/v1/model/split_config_sort_compute.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SplitConfigSortCompute(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "aggregation": (str,),
+ "metric": (str,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "metric": "metric",
+ }
+
+ def __init__(self_, aggregation: str, metric: str, **kwargs):
+ """
+ Defines the metric and aggregation used as the sort value.
+
+ :param aggregation: How to aggregate the sort metric for the purposes of ordering.
+ :type aggregation: str
+
+ :param metric: The metric to use for sorting graphs.
+ :type metric: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
+ self_.metric = metric
diff --git a/datadog_api_client/v1/model/split_dimension.py b/datadog_api_client/v1/model/split_dimension.py
new file mode 100644
index 0000000000..c8728563be
--- /dev/null
+++ b/datadog_api_client/v1/model/split_dimension.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SplitDimension(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "one_graph_per": (str,),
+ }
+ attribute_map = {
+ "one_graph_per": "one_graph_per",
+ }
+
+ def __init__(self_, one_graph_per: str, **kwargs):
+ """
+ The property by which the graph splits
+
+ :param one_graph_per: The system interprets this attribute differently depending on the data source of the query being split. For metrics, it's a tag. For the events platform, it's an attribute or tag.
+ :type one_graph_per: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.one_graph_per = one_graph_per
diff --git a/datadog_api_client/v1/model/split_graph_source_widget_definition.py b/datadog_api_client/v1/model/split_graph_source_widget_definition.py
new file mode 100644
index 0000000000..d6b4796be6
--- /dev/null
+++ b/datadog_api_client/v1/model/split_graph_source_widget_definition.py
@@ -0,0 +1,160 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SplitGraphSourceWidgetDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The original widget we are splitting on.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: List of bar chart widget requests.
+ :type requests: [BarChartWidgetRequest]
+
+ :param style: Style customization for a bar chart widget.
+ :type style: BarChartWidgetStyle, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the bar chart widget.
+ :type type: BarChartWidgetDefinitionType
+
+ :param view: The view of the world that the map should render.
+ :type view: GeomapWidgetDefinitionView
+
+ :param autoscale: Whether to use auto-scaling or not.
+ :type autoscale: bool, optional
+
+ :param custom_unit: Display a unit of your choice on the widget.
+ :type custom_unit: str, optional
+
+ :param precision: Number of decimals to show. If not defined, the widget uses the raw value.
+ :type precision: int, optional
+
+ :param text_align: How to align the text on the widget.
+ :type text_align: WidgetTextAlign, optional
+
+ :param timeseries_background: Set a timeseries on the widget background.
+ :type timeseries_background: TimeseriesBackground, optional
+
+ :param color_by_groups: List of groups used for colors.
+ :type color_by_groups: [str], optional
+
+ :param xaxis: Axis controls for the widget.
+ :type xaxis: WidgetAxis, optional
+
+ :param yaxis: Axis controls for the widget.
+ :type yaxis: WidgetAxis, optional
+
+ :param hide_total: Show the total value in this widget.
+ :type hide_total: bool, optional
+
+ :param legend: Configuration of the legend.
+ :type legend: SunburstWidgetLegend, optional
+
+ :param has_search_bar: Controls the display of the search bar.
+ :type has_search_bar: TableWidgetHasSearchBar, optional
+
+ :param events: List of widget events. Deprecated - Use `overlay` request type instead.
+ :type events: [WidgetEvent], optional
+
+ :param legend_columns: Columns displayed in the legend.
+ :type legend_columns: [TimeseriesWidgetLegendColumn], optional
+
+ :param legend_layout: Layout of the legend.
+ :type legend_layout: TimeseriesWidgetLegendLayout, optional
+
+ :param legend_size: Available legend sizes for a widget. Should be one of "0", "2", "4", "8", "16", or "auto".
+ :type legend_size: str, optional
+
+ :param markers: List of markers.
+ :type markers: [WidgetMarker], optional
+
+ :param right_yaxis: Axis controls for the widget.
+ :type right_yaxis: WidgetAxis, optional
+
+ :param show_legend: (screenboard only) Show the legend for this widget.
+ :type show_legend: bool, optional
+
+ :param color_by: (deprecated) The attribute formerly used to determine color in the widget.
+ :type color_by: TreeMapColorBy, optional
+
+ :param group_by: (deprecated) The attribute formerly used to group elements in the widget.
+ :type group_by: TreeMapGroupBy, optional
+
+ :param size_by: (deprecated) The attribute formerly used to determine size in the widget.
+ :type size_by: TreeMapSizeBy, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+ from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+ from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+ from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+ from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+ from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+ from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+ return {
+ "oneOf": [
+ BarChartWidgetDefinition,
+ ChangeWidgetDefinition,
+ GeomapWidgetDefinition,
+ QueryValueWidgetDefinition,
+ ScatterPlotWidgetDefinition,
+ SunburstWidgetDefinition,
+ TableWidgetDefinition,
+ TimeseriesWidgetDefinition,
+ ToplistWidgetDefinition,
+ TreeMapWidgetDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/split_graph_viz_size.py b/datadog_api_client/v1/model/split_graph_viz_size.py
new file mode 100644
index 0000000000..80b407c8d5
--- /dev/null
+++ b/datadog_api_client/v1/model/split_graph_viz_size.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SplitGraphVizSize(ModelSimple):
+ """
+ Size of the individual graphs in the split.
+
+ :param value: Must be one of ["xs", "sm", "md", "lg"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "xs",
+ "sm",
+ "md",
+ "lg",
+ }
+ XS: ClassVar["SplitGraphVizSize"]
+ SM: ClassVar["SplitGraphVizSize"]
+ MD: ClassVar["SplitGraphVizSize"]
+ LG: ClassVar["SplitGraphVizSize"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SplitGraphVizSize.XS = SplitGraphVizSize("xs")
+SplitGraphVizSize.SM = SplitGraphVizSize("sm")
+SplitGraphVizSize.MD = SplitGraphVizSize("md")
+SplitGraphVizSize.LG = SplitGraphVizSize("lg")
diff --git a/datadog_api_client/v1/model/split_graph_widget_definition.py b/datadog_api_client/v1/model/split_graph_widget_definition.py
new file mode 100644
index 0000000000..c5317a35a0
--- /dev/null
+++ b/datadog_api_client/v1/model/split_graph_widget_definition.py
@@ -0,0 +1,108 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.split_graph_viz_size import SplitGraphVizSize
+ from datadog_api_client.v1.model.split_graph_source_widget_definition import SplitGraphSourceWidgetDefinition
+ from datadog_api_client.v1.model.split_config import SplitConfig
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.split_graph_widget_definition_type import SplitGraphWidgetDefinitionType
+ from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+ from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+ from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+ from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+ from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+ from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+ from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class SplitGraphWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.split_graph_viz_size import SplitGraphVizSize
+ from datadog_api_client.v1.model.split_graph_source_widget_definition import SplitGraphSourceWidgetDefinition
+ from datadog_api_client.v1.model.split_config import SplitConfig
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.split_graph_widget_definition_type import SplitGraphWidgetDefinitionType
+ return {
+ "has_uniform_y_axes": (bool,),
+ "size": (SplitGraphVizSize,),
+ "source_widget_definition": (SplitGraphSourceWidgetDefinition,),
+ "split_config": (SplitConfig,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "type": (SplitGraphWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "has_uniform_y_axes": "has_uniform_y_axes",
+ "size": "size",
+ "source_widget_definition": "source_widget_definition",
+ "split_config": "split_config",
+ "time": "time",
+ "title": "title",
+ "type": "type",
+ }
+
+ def __init__(self_, size: SplitGraphVizSize, source_widget_definition: Union[SplitGraphSourceWidgetDefinition, BarChartWidgetDefinition, ChangeWidgetDefinition, GeomapWidgetDefinition, QueryValueWidgetDefinition, ScatterPlotWidgetDefinition, SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, ToplistWidgetDefinition, TreeMapWidgetDefinition], split_config: SplitConfig, type: SplitGraphWidgetDefinitionType, has_uniform_y_axes: Union[bool, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The split graph widget allows you to create repeating units of a graph - one for each value in a group (for example: one per service)
+
+ :param has_uniform_y_axes: Normalize y axes across graphs
+ :type has_uniform_y_axes: bool, optional
+
+ :param size: Size of the individual graphs in the split.
+ :type size: SplitGraphVizSize
+
+ :param source_widget_definition: The original widget we are splitting on.
+ :type source_widget_definition: SplitGraphSourceWidgetDefinition
+
+ :param split_config: Encapsulates all user choices about how to split a graph.
+ :type split_config: SplitConfig
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param type: Type of the split graph widget
+ :type type: SplitGraphWidgetDefinitionType
+ """
+ if has_uniform_y_axes is not unset:
+ kwargs["has_uniform_y_axes"] = has_uniform_y_axes
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ super().__init__(kwargs)
+
+
+ self_.size = size
+ self_.source_widget_definition = source_widget_definition
+ self_.split_config = split_config
+ self_.type = type
diff --git a/datadog_api_client/v1/model/split_graph_widget_definition_type.py b/datadog_api_client/v1/model/split_graph_widget_definition_type.py
new file mode 100644
index 0000000000..7b8e51ed97
--- /dev/null
+++ b/datadog_api_client/v1/model/split_graph_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SplitGraphWidgetDefinitionType(ModelSimple):
+ """
+ Type of the split graph widget
+
+ :param value: If omitted defaults to "split_group". Must be one of ["split_group"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "split_group",
+ }
+ SPLIT_GROUP: ClassVar["SplitGraphWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SplitGraphWidgetDefinitionType.SPLIT_GROUP = SplitGraphWidgetDefinitionType("split_group")
diff --git a/datadog_api_client/v1/model/split_sort.py b/datadog_api_client/v1/model/split_sort.py
new file mode 100644
index 0000000000..d801b989e2
--- /dev/null
+++ b/datadog_api_client/v1/model/split_sort.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.split_config_sort_compute import SplitConfigSortCompute
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class SplitSort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.split_config_sort_compute import SplitConfigSortCompute
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "compute": (SplitConfigSortCompute,),
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "compute": "compute",
+ "order": "order",
+ }
+
+ def __init__(self_, order: WidgetSort, compute: Union[SplitConfigSortCompute, UnsetType]=unset, **kwargs):
+ """
+ Controls the order in which graphs appear in the split.
+
+ :param compute: Defines the metric and aggregation used as the sort value.
+ :type compute: SplitConfigSortCompute, optional
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort
+ """
+ if compute is not unset:
+ kwargs["compute"] = compute
+ super().__init__(kwargs)
+
+
+ self_.order = order
diff --git a/datadog_api_client/v1/model/split_vector_entry_item.py b/datadog_api_client/v1/model/split_vector_entry_item.py
new file mode 100644
index 0000000000..189dd3cb38
--- /dev/null
+++ b/datadog_api_client/v1/model/split_vector_entry_item.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SplitVectorEntryItem(ModelNormal):
+ validations = {
+ "tag_key": {
+ "min_length": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "tag_key": (str,),
+ "tag_values": ([str],),
+ }
+ attribute_map = {
+ "tag_key": "tag_key",
+ "tag_values": "tag_values",
+ }
+
+ def __init__(self_, tag_key: str, tag_values: List[str], **kwargs):
+ """
+ The split graph list contains a graph for each value of the split dimension.
+
+ :param tag_key: The tag key.
+ :type tag_key: str
+
+ :param tag_values: The tag values.
+ :type tag_values: [str]
+ """
+ super().__init__(kwargs)
+
+
+ self_.tag_key = tag_key
+ self_.tag_values = tag_values
diff --git a/datadog_api_client/v1/model/successful_signal_update_response.py b/datadog_api_client/v1/model/successful_signal_update_response.py
new file mode 100644
index 0000000000..cceaf508cf
--- /dev/null
+++ b/datadog_api_client/v1/model/successful_signal_update_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SuccessfulSignalUpdateResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "status": (str,),
+ }
+ attribute_map = {
+ "status": "status",
+ }
+
+ def __init__(self_, status: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Updated signal data following a successfully performed update.
+
+ :param status: Status of the response.
+ :type status: str, optional
+ """
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/sunburst_widget_definition.py b/datadog_api_client/v1/model/sunburst_widget_definition.py
new file mode 100644
index 0000000000..424098b3ad
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_definition.py
@@ -0,0 +1,145 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.sunburst_widget_legend import SunburstWidgetLegend
+ from datadog_api_client.v1.model.sunburst_widget_request import SunburstWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.sunburst_widget_definition_type import SunburstWidgetDefinitionType
+ from datadog_api_client.v1.model.sunburst_widget_legend_table import SunburstWidgetLegendTable
+ from datadog_api_client.v1.model.sunburst_widget_legend_inline_automatic import SunburstWidgetLegendInlineAutomatic
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class SunburstWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.sunburst_widget_legend import SunburstWidgetLegend
+ from datadog_api_client.v1.model.sunburst_widget_request import SunburstWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.sunburst_widget_definition_type import SunburstWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "hide_total": (bool,),
+ "legend": (SunburstWidgetLegend,),
+ "requests": ([SunburstWidgetRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (SunburstWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "hide_total": "hide_total",
+ "legend": "legend",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[SunburstWidgetRequest], type: SunburstWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, hide_total: Union[bool, UnsetType]=unset, legend: Union[SunburstWidgetLegend, SunburstWidgetLegendTable, SunburstWidgetLegendInlineAutomatic, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Sunbursts are spot on to highlight how groups contribute to the total of a query.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param hide_total: Show the total value in this widget.
+ :type hide_total: bool, optional
+
+ :param legend: Configuration of the legend.
+ :type legend: SunburstWidgetLegend, optional
+
+ :param requests: List of sunburst widget requests.
+ :type requests: [SunburstWidgetRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the Sunburst widget.
+ :type type: SunburstWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if hide_total is not unset:
+ kwargs["hide_total"] = hide_total
+ if legend is not unset:
+ kwargs["legend"] = legend
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/sunburst_widget_definition_type.py b/datadog_api_client/v1/model/sunburst_widget_definition_type.py
new file mode 100644
index 0000000000..8f5d097811
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SunburstWidgetDefinitionType(ModelSimple):
+ """
+ Type of the Sunburst widget.
+
+ :param value: If omitted defaults to "sunburst". Must be one of ["sunburst"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "sunburst",
+ }
+ SUNBURST: ClassVar["SunburstWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SunburstWidgetDefinitionType.SUNBURST = SunburstWidgetDefinitionType("sunburst")
diff --git a/datadog_api_client/v1/model/sunburst_widget_legend.py b/datadog_api_client/v1/model/sunburst_widget_legend.py
new file mode 100644
index 0000000000..141972864f
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_legend.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SunburstWidgetLegend(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Configuration of the legend.
+
+ :param type: Whether or not to show a table legend.
+ :type type: SunburstWidgetLegendTableType
+
+ :param hide_percent: Whether to hide the percentages of the groups.
+ :type hide_percent: bool, optional
+
+ :param hide_value: Whether to hide the values of the groups.
+ :type hide_value: bool, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.sunburst_widget_legend_table import SunburstWidgetLegendTable
+ from datadog_api_client.v1.model.sunburst_widget_legend_inline_automatic import SunburstWidgetLegendInlineAutomatic
+ return {
+ "oneOf": [
+ SunburstWidgetLegendTable,
+ SunburstWidgetLegendInlineAutomatic,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/sunburst_widget_legend_inline_automatic.py b/datadog_api_client/v1/model/sunburst_widget_legend_inline_automatic.py
new file mode 100644
index 0000000000..2896626496
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_legend_inline_automatic.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.sunburst_widget_legend_inline_automatic_type import SunburstWidgetLegendInlineAutomaticType
+
+class SunburstWidgetLegendInlineAutomatic(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.sunburst_widget_legend_inline_automatic_type import SunburstWidgetLegendInlineAutomaticType
+ return {
+ "hide_percent": (bool,),
+ "hide_value": (bool,),
+ "type": (SunburstWidgetLegendInlineAutomaticType,),
+ }
+ attribute_map = {
+ "hide_percent": "hide_percent",
+ "hide_value": "hide_value",
+ "type": "type",
+ }
+
+ def __init__(self_, type: SunburstWidgetLegendInlineAutomaticType, hide_percent: Union[bool, UnsetType]=unset, hide_value: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Configuration of inline or automatic legends.
+
+ :param hide_percent: Whether to hide the percentages of the groups.
+ :type hide_percent: bool, optional
+
+ :param hide_value: Whether to hide the values of the groups.
+ :type hide_value: bool, optional
+
+ :param type: Whether to show the legend inline or let it be automatically generated.
+ :type type: SunburstWidgetLegendInlineAutomaticType
+ """
+ if hide_percent is not unset:
+ kwargs["hide_percent"] = hide_percent
+ if hide_value is not unset:
+ kwargs["hide_value"] = hide_value
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/sunburst_widget_legend_inline_automatic_type.py b/datadog_api_client/v1/model/sunburst_widget_legend_inline_automatic_type.py
new file mode 100644
index 0000000000..e5a78e9908
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_legend_inline_automatic_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SunburstWidgetLegendInlineAutomaticType(ModelSimple):
+ """
+ Whether to show the legend inline or let it be automatically generated.
+
+ :param value: Must be one of ["inline", "automatic"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "inline",
+ "automatic",
+ }
+ INLINE: ClassVar["SunburstWidgetLegendInlineAutomaticType"]
+ AUTOMATIC: ClassVar["SunburstWidgetLegendInlineAutomaticType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SunburstWidgetLegendInlineAutomaticType.INLINE = SunburstWidgetLegendInlineAutomaticType("inline")
+SunburstWidgetLegendInlineAutomaticType.AUTOMATIC = SunburstWidgetLegendInlineAutomaticType("automatic")
diff --git a/datadog_api_client/v1/model/sunburst_widget_legend_table.py b/datadog_api_client/v1/model/sunburst_widget_legend_table.py
new file mode 100644
index 0000000000..0be1839510
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_legend_table.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.sunburst_widget_legend_table_type import SunburstWidgetLegendTableType
+
+class SunburstWidgetLegendTable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.sunburst_widget_legend_table_type import SunburstWidgetLegendTableType
+ return {
+ "type": (SunburstWidgetLegendTableType,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: SunburstWidgetLegendTableType, **kwargs):
+ """
+ Configuration of table-based legend.
+
+ :param type: Whether or not to show a table legend.
+ :type type: SunburstWidgetLegendTableType
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/sunburst_widget_legend_table_type.py b/datadog_api_client/v1/model/sunburst_widget_legend_table_type.py
new file mode 100644
index 0000000000..479108228f
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_legend_table_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SunburstWidgetLegendTableType(ModelSimple):
+ """
+ Whether or not to show a table legend.
+
+ :param value: Must be one of ["table", "none"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "table",
+ "none",
+ }
+ TABLE: ClassVar["SunburstWidgetLegendTableType"]
+ NONE: ClassVar["SunburstWidgetLegendTableType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SunburstWidgetLegendTableType.TABLE = SunburstWidgetLegendTableType("table")
+SunburstWidgetLegendTableType.NONE = SunburstWidgetLegendTableType("none")
diff --git a/datadog_api_client/v1/model/sunburst_widget_request.py b/datadog_api_client/v1/model/sunburst_widget_request.py
new file mode 100644
index 0000000000..bc152f4924
--- /dev/null
+++ b/datadog_api_client/v1/model/sunburst_widget_request.py
@@ -0,0 +1,174 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_style import WidgetStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+
+class SunburstWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_style import WidgetStyle
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "audit_query": (LogQueryDefinition,),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "sort": (WidgetSortBy,),
+ "style": (WidgetStyle,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "audit_query": "audit_query",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "sort": "sort",
+ "style": "style",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, audit_query: Union[LogQueryDefinition, UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, sort: Union[WidgetSortBy, UnsetType]=unset, style: Union[WidgetStyle, UnsetType]=unset, **kwargs):
+ """
+ Request definition of sunburst widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param audit_query: The log query.
+ :type audit_query: LogQueryDefinition, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param style: Widget style definition.
+ :type style: WidgetStyle, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if audit_query is not unset:
+ kwargs["audit_query"] = audit_query
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_step.py b/datadog_api_client/v1/model/synthetics_api_step.py
new file mode 100644
index 0000000000..ebe1351259
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_step.py
@@ -0,0 +1,96 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsAPIStep(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The steps used in a Synthetic multi-step API test.
+
+ :param allow_failure: Determines whether or not to continue with test if this step fails.
+ :type allow_failure: bool, optional
+
+ :param assertions: Array of assertions used for the test.
+ :type assertions: [SyntheticsAssertion]
+
+ :param exit_if_succeed: Determines whether or not to exit the test if the step succeeds.
+ :type exit_if_succeed: bool, optional
+
+ :param extracted_values: Array of values to parse and save as variables from the response.
+ :type extracted_values: [SyntheticsParsingOptions], optional
+
+ :param extracted_values_from_script: Generate variables using JavaScript.
+ :type extracted_values_from_script: str, optional
+
+ :param id: ID of the step.
+ :type id: str, optional
+
+ :param is_critical: Determines whether or not to consider the entire test as failed if this step fails.
+ Can be used only if `allowFailure` is `true`.
+ :type is_critical: bool, optional
+
+ :param name: The name of the step.
+ :type name: str
+
+ :param request: Object describing the Synthetic test request.
+ :type request: SyntheticsTestRequest
+
+ :param retry: Object describing the retry strategy to apply to a Synthetic test.
+ :type retry: SyntheticsTestOptionsRetry, optional
+
+ :param subtype: The subtype of the Synthetic multi-step API test step.
+ :type subtype: SyntheticsAPITestStepSubtype
+
+ :param value: The time to wait in seconds. Minimum value: 0. Maximum value: 180.
+ :type value: int
+
+ :param always_execute: A boolean set to always execute this step even if the previous step failed or was skipped.
+ :type always_execute: bool, optional
+
+ :param subtest_public_id: Public ID of the test to be played as part of a `playSubTest` step type.
+ :type subtest_public_id: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.synthetics_api_test_step import SyntheticsAPITestStep
+ from datadog_api_client.v1.model.synthetics_api_wait_step import SyntheticsAPIWaitStep
+ from datadog_api_client.v1.model.synthetics_api_subtest_step import SyntheticsAPISubtestStep
+ return {
+ "oneOf": [
+ SyntheticsAPITestStep,
+ SyntheticsAPIWaitStep,
+ SyntheticsAPISubtestStep,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_api_subtest_step.py b/datadog_api_client/v1/model/synthetics_api_subtest_step.py
new file mode 100644
index 0000000000..8165d25398
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_subtest_step.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_api_subtest_step_subtype import SyntheticsAPISubtestStepSubtype
+
+class SyntheticsAPISubtestStep(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_api_subtest_step_subtype import SyntheticsAPISubtestStepSubtype
+ return {
+ "allow_failure": (bool,),
+ "always_execute": (bool,),
+ "exit_if_succeed": (bool,),
+ "extracted_values_from_script": (str,),
+ "id": (str,),
+ "is_critical": (bool,),
+ "name": (str,),
+ "retry": (SyntheticsTestOptionsRetry,),
+ "subtest_public_id": (str,),
+ "subtype": (SyntheticsAPISubtestStepSubtype,),
+ }
+ attribute_map = {
+ "allow_failure": "allowFailure",
+ "always_execute": "alwaysExecute",
+ "exit_if_succeed": "exitIfSucceed",
+ "extracted_values_from_script": "extractedValuesFromScript",
+ "id": "id",
+ "is_critical": "isCritical",
+ "name": "name",
+ "retry": "retry",
+ "subtest_public_id": "subtestPublicId",
+ "subtype": "subtype",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, name: str, subtest_public_id: str, subtype: SyntheticsAPISubtestStepSubtype, allow_failure: Union[bool, UnsetType]=unset, always_execute: Union[bool, UnsetType]=unset, exit_if_succeed: Union[bool, UnsetType]=unset, extracted_values_from_script: Union[str, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_critical: Union[bool, UnsetType]=unset, retry: Union[SyntheticsTestOptionsRetry, UnsetType]=unset, **kwargs):
+ """
+ The subtest step used in a Synthetics multi-step API test.
+
+ :param allow_failure: Determines whether or not to continue with test if this step fails.
+ :type allow_failure: bool, optional
+
+ :param always_execute: A boolean set to always execute this step even if the previous step failed or was skipped.
+ :type always_execute: bool, optional
+
+ :param exit_if_succeed: Determines whether or not to exit the test if the step succeeds.
+ :type exit_if_succeed: bool, optional
+
+ :param extracted_values_from_script: Generate variables using JavaScript.
+ :type extracted_values_from_script: str, optional
+
+ :param id: ID of the step.
+ :type id: str, optional
+
+ :param is_critical: Determines whether or not to consider the entire test as failed if this step fails.
+ Can be used only if ``allowFailure`` is ``true``.
+ :type is_critical: bool, optional
+
+ :param name: The name of the step.
+ :type name: str
+
+ :param retry: Object describing the retry strategy to apply to a Synthetic test.
+ :type retry: SyntheticsTestOptionsRetry, optional
+
+ :param subtest_public_id: Public ID of the test to be played as part of a ``playSubTest`` step type.
+ :type subtest_public_id: str
+
+ :param subtype: The subtype of the Synthetic multi-step API subtest step.
+ :type subtype: SyntheticsAPISubtestStepSubtype
+ """
+ if allow_failure is not unset:
+ kwargs["allow_failure"] = allow_failure
+ if always_execute is not unset:
+ kwargs["always_execute"] = always_execute
+ if exit_if_succeed is not unset:
+ kwargs["exit_if_succeed"] = exit_if_succeed
+ if extracted_values_from_script is not unset:
+ kwargs["extracted_values_from_script"] = extracted_values_from_script
+ if id is not unset:
+ kwargs["id"] = id
+ if is_critical is not unset:
+ kwargs["is_critical"] = is_critical
+ if retry is not unset:
+ kwargs["retry"] = retry
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.subtest_public_id = subtest_public_id
+ self_.subtype = subtype
diff --git a/datadog_api_client/v1/model/synthetics_api_subtest_step_subtype.py b/datadog_api_client/v1/model/synthetics_api_subtest_step_subtype.py
new file mode 100644
index 0000000000..5332bd3b1d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_subtest_step_subtype.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAPISubtestStepSubtype(ModelSimple):
+ """
+ The subtype of the Synthetic multi-step API subtest step.
+
+ :param value: If omitted defaults to "playSubTest". Must be one of ["playSubTest"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "playSubTest",
+ }
+ PLAY_SUB_TEST: ClassVar["SyntheticsAPISubtestStepSubtype"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAPISubtestStepSubtype.PLAY_SUB_TEST = SyntheticsAPISubtestStepSubtype("playSubTest")
diff --git a/datadog_api_client/v1/model/synthetics_api_test.py b/datadog_api_client/v1/model/synthetics_api_test.py
new file mode 100644
index 0000000000..9afbbcde39
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test.py
@@ -0,0 +1,145 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_api_test_config import SyntheticsAPITestConfig
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+ from datadog_api_client.v1.model.synthetics_api_test_type import SyntheticsAPITestType
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+ from datadog_api_client.v1.model.synthetics_api_test_step import SyntheticsAPITestStep
+ from datadog_api_client.v1.model.synthetics_api_wait_step import SyntheticsAPIWaitStep
+ from datadog_api_client.v1.model.synthetics_api_subtest_step import SyntheticsAPISubtestStep
+
+class SyntheticsAPITest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_api_test_config import SyntheticsAPITestConfig
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+ from datadog_api_client.v1.model.synthetics_api_test_type import SyntheticsAPITestType
+ return {
+ "config": (SyntheticsAPITestConfig,),
+ "locations": ([str],),
+ "message": (str,),
+ "monitor_id": (int,),
+ "name": (str,),
+ "options": (SyntheticsTestOptions,),
+ "public_id": (str,),
+ "status": (SyntheticsTestPauseStatus,),
+ "subtype": (SyntheticsTestDetailsSubType,),
+ "tags": ([str],),
+ "type": (SyntheticsAPITestType,),
+ }
+ attribute_map = {
+ "config": "config",
+ "locations": "locations",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "name": "name",
+ "options": "options",
+ "public_id": "public_id",
+ "status": "status",
+ "subtype": "subtype",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "monitor_id",
+ "public_id",
+ }
+
+ def __init__(self_, config: SyntheticsAPITestConfig, locations: List[str], message: str, name: str, options: SyntheticsTestOptions, type: SyntheticsAPITestType, monitor_id: Union[int, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestPauseStatus, UnsetType]=unset, subtype: Union[SyntheticsTestDetailsSubType, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object containing details about a Synthetic API test.
+
+ :param config: Configuration object for a Synthetic API test.
+ :type config: SyntheticsAPITestConfig
+
+ :param locations: Array of locations used to run the test.
+ :type locations: [str]
+
+ :param message: Notification message associated with the test.
+ :type message: str
+
+ :param monitor_id: The associated monitor ID.
+ :type monitor_id: int, optional
+
+ :param name: Name of the test.
+ :type name: str
+
+ :param options: Object describing the extra options for a Synthetic test.
+ :type options: SyntheticsTestOptions
+
+ :param public_id: The public ID for the test.
+ :type public_id: str, optional
+
+ :param status: Define whether you want to start ( ``live`` ) or pause ( ``paused`` ) a
+ Synthetic test.
+ :type status: SyntheticsTestPauseStatus, optional
+
+ :param subtype: The subtype of the Synthetic API test, ``http`` , ``ssl`` , ``tcp`` ,
+ ``dns`` , ``icmp`` , ``udp`` , ``websocket`` , ``grpc`` or ``multi``.
+ :type subtype: SyntheticsTestDetailsSubType, optional
+
+ :param tags: Array of tags attached to the test.
+ :type tags: [str], optional
+
+ :param type: Type of the Synthetic test, ``api``.
+ :type type: SyntheticsAPITestType
+ """
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if status is not unset:
+ kwargs["status"] = status
+ if subtype is not unset:
+ kwargs["subtype"] = subtype
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.config = config
+ self_.locations = locations
+ self_.message = message
+ self_.name = name
+ self_.options = options
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_api_test_config.py b/datadog_api_client/v1/model/synthetics_api_test_config.py
new file mode 100644
index 0000000000..08b4ce38a5
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_config.py
@@ -0,0 +1,101 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_api_step import SyntheticsAPIStep
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+ from datadog_api_client.v1.model.synthetics_api_test_step import SyntheticsAPITestStep
+ from datadog_api_client.v1.model.synthetics_api_wait_step import SyntheticsAPIWaitStep
+ from datadog_api_client.v1.model.synthetics_api_subtest_step import SyntheticsAPISubtestStep
+
+class SyntheticsAPITestConfig(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_api_step import SyntheticsAPIStep
+ return {
+ "assertions": ([SyntheticsAssertion],),
+ "config_variables": ([SyntheticsConfigVariable],),
+ "request": (SyntheticsTestRequest,),
+ "steps": ([SyntheticsAPIStep],),
+ "variables_from_script": (str,),
+ }
+ attribute_map = {
+ "assertions": "assertions",
+ "config_variables": "configVariables",
+ "request": "request",
+ "steps": "steps",
+ "variables_from_script": "variablesFromScript",
+ }
+
+ def __init__(self_, assertions: Union[List[Union[SyntheticsAssertion, SyntheticsAssertionTarget, SyntheticsAssertionBodyHashTarget, SyntheticsAssertionJSONPathTarget, SyntheticsAssertionJSONSchemaTarget, SyntheticsAssertionXPathTarget, SyntheticsAssertionJavascript, SyntheticsAssertionMCPServerCapabilitiesTarget, SyntheticsAssertionMCPRespectsSpecification]], UnsetType]=unset, config_variables: Union[List[SyntheticsConfigVariable], UnsetType]=unset, request: Union[SyntheticsTestRequest, UnsetType]=unset, steps: Union[List[Union[SyntheticsAPIStep, SyntheticsAPITestStep, SyntheticsAPIWaitStep, SyntheticsAPISubtestStep]], UnsetType]=unset, variables_from_script: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Configuration object for a Synthetic API test.
+
+ :param assertions: Array of assertions used for the test. Required for single API tests.
+ :type assertions: [SyntheticsAssertion], optional
+
+ :param config_variables: Array of variables used for the test.
+ :type config_variables: [SyntheticsConfigVariable], optional
+
+ :param request: Object describing the Synthetic test request.
+ :type request: SyntheticsTestRequest, optional
+
+ :param steps: When the test subtype is ``multi`` , the steps of the test.
+ :type steps: [SyntheticsAPIStep], optional
+
+ :param variables_from_script: Variables defined from JavaScript code.
+ :type variables_from_script: str, optional
+ """
+ if assertions is not unset:
+ kwargs["assertions"] = assertions
+ if config_variables is not unset:
+ kwargs["config_variables"] = config_variables
+ if request is not unset:
+ kwargs["request"] = request
+ if steps is not unset:
+ kwargs["steps"] = steps
+ if variables_from_script is not unset:
+ kwargs["variables_from_script"] = variables_from_script
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_test_failure_code.py b/datadog_api_client/v1/model/synthetics_api_test_failure_code.py
new file mode 100644
index 0000000000..492ac87e61
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_failure_code.py
@@ -0,0 +1,120 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsApiTestFailureCode(ModelSimple):
+ """
+ Error code that can be returned by a Synthetic test.
+
+ :param value: Must be one of ["BODY_TOO_LARGE", "DENIED", "TOO_MANY_REDIRECTS", "AUTHENTICATION_ERROR", "DECRYPTION", "INVALID_CHAR_IN_HEADER", "HEADER_TOO_LARGE", "HEADERS_INCOMPATIBLE_CONTENT_LENGTH", "INVALID_REQUEST", "REQUIRES_UPDATE", "UNESCAPED_CHARACTERS_IN_REQUEST_PATH", "MALFORMED_RESPONSE", "INCORRECT_ASSERTION", "CONNREFUSED", "CONNRESET", "DNS", "HOSTUNREACH", "NETUNREACH", "TIMEOUT", "SSL", "OCSP", "INVALID_TEST", "TUNNEL", "WEBSOCKET", "UNKNOWN", "INTERNAL_ERROR"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "BODY_TOO_LARGE",
+ "DENIED",
+ "TOO_MANY_REDIRECTS",
+ "AUTHENTICATION_ERROR",
+ "DECRYPTION",
+ "INVALID_CHAR_IN_HEADER",
+ "HEADER_TOO_LARGE",
+ "HEADERS_INCOMPATIBLE_CONTENT_LENGTH",
+ "INVALID_REQUEST",
+ "REQUIRES_UPDATE",
+ "UNESCAPED_CHARACTERS_IN_REQUEST_PATH",
+ "MALFORMED_RESPONSE",
+ "INCORRECT_ASSERTION",
+ "CONNREFUSED",
+ "CONNRESET",
+ "DNS",
+ "HOSTUNREACH",
+ "NETUNREACH",
+ "TIMEOUT",
+ "SSL",
+ "OCSP",
+ "INVALID_TEST",
+ "TUNNEL",
+ "WEBSOCKET",
+ "UNKNOWN",
+ "INTERNAL_ERROR",
+ }
+ BODY_TOO_LARGE: ClassVar["SyntheticsApiTestFailureCode"]
+ DENIED: ClassVar["SyntheticsApiTestFailureCode"]
+ TOO_MANY_REDIRECTS: ClassVar["SyntheticsApiTestFailureCode"]
+ AUTHENTICATION_ERROR: ClassVar["SyntheticsApiTestFailureCode"]
+ DECRYPTION: ClassVar["SyntheticsApiTestFailureCode"]
+ INVALID_CHAR_IN_HEADER: ClassVar["SyntheticsApiTestFailureCode"]
+ HEADER_TOO_LARGE: ClassVar["SyntheticsApiTestFailureCode"]
+ HEADERS_INCOMPATIBLE_CONTENT_LENGTH: ClassVar["SyntheticsApiTestFailureCode"]
+ INVALID_REQUEST: ClassVar["SyntheticsApiTestFailureCode"]
+ REQUIRES_UPDATE: ClassVar["SyntheticsApiTestFailureCode"]
+ UNESCAPED_CHARACTERS_IN_REQUEST_PATH: ClassVar["SyntheticsApiTestFailureCode"]
+ MALFORMED_RESPONSE: ClassVar["SyntheticsApiTestFailureCode"]
+ INCORRECT_ASSERTION: ClassVar["SyntheticsApiTestFailureCode"]
+ CONNREFUSED: ClassVar["SyntheticsApiTestFailureCode"]
+ CONNRESET: ClassVar["SyntheticsApiTestFailureCode"]
+ DNS: ClassVar["SyntheticsApiTestFailureCode"]
+ HOSTUNREACH: ClassVar["SyntheticsApiTestFailureCode"]
+ NETUNREACH: ClassVar["SyntheticsApiTestFailureCode"]
+ TIMEOUT: ClassVar["SyntheticsApiTestFailureCode"]
+ SSL: ClassVar["SyntheticsApiTestFailureCode"]
+ OCSP: ClassVar["SyntheticsApiTestFailureCode"]
+ INVALID_TEST: ClassVar["SyntheticsApiTestFailureCode"]
+ TUNNEL: ClassVar["SyntheticsApiTestFailureCode"]
+ WEBSOCKET: ClassVar["SyntheticsApiTestFailureCode"]
+ UNKNOWN: ClassVar["SyntheticsApiTestFailureCode"]
+ INTERNAL_ERROR: ClassVar["SyntheticsApiTestFailureCode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsApiTestFailureCode.BODY_TOO_LARGE = SyntheticsApiTestFailureCode("BODY_TOO_LARGE")
+SyntheticsApiTestFailureCode.DENIED = SyntheticsApiTestFailureCode("DENIED")
+SyntheticsApiTestFailureCode.TOO_MANY_REDIRECTS = SyntheticsApiTestFailureCode("TOO_MANY_REDIRECTS")
+SyntheticsApiTestFailureCode.AUTHENTICATION_ERROR = SyntheticsApiTestFailureCode("AUTHENTICATION_ERROR")
+SyntheticsApiTestFailureCode.DECRYPTION = SyntheticsApiTestFailureCode("DECRYPTION")
+SyntheticsApiTestFailureCode.INVALID_CHAR_IN_HEADER = SyntheticsApiTestFailureCode("INVALID_CHAR_IN_HEADER")
+SyntheticsApiTestFailureCode.HEADER_TOO_LARGE = SyntheticsApiTestFailureCode("HEADER_TOO_LARGE")
+SyntheticsApiTestFailureCode.HEADERS_INCOMPATIBLE_CONTENT_LENGTH = SyntheticsApiTestFailureCode("HEADERS_INCOMPATIBLE_CONTENT_LENGTH")
+SyntheticsApiTestFailureCode.INVALID_REQUEST = SyntheticsApiTestFailureCode("INVALID_REQUEST")
+SyntheticsApiTestFailureCode.REQUIRES_UPDATE = SyntheticsApiTestFailureCode("REQUIRES_UPDATE")
+SyntheticsApiTestFailureCode.UNESCAPED_CHARACTERS_IN_REQUEST_PATH = SyntheticsApiTestFailureCode("UNESCAPED_CHARACTERS_IN_REQUEST_PATH")
+SyntheticsApiTestFailureCode.MALFORMED_RESPONSE = SyntheticsApiTestFailureCode("MALFORMED_RESPONSE")
+SyntheticsApiTestFailureCode.INCORRECT_ASSERTION = SyntheticsApiTestFailureCode("INCORRECT_ASSERTION")
+SyntheticsApiTestFailureCode.CONNREFUSED = SyntheticsApiTestFailureCode("CONNREFUSED")
+SyntheticsApiTestFailureCode.CONNRESET = SyntheticsApiTestFailureCode("CONNRESET")
+SyntheticsApiTestFailureCode.DNS = SyntheticsApiTestFailureCode("DNS")
+SyntheticsApiTestFailureCode.HOSTUNREACH = SyntheticsApiTestFailureCode("HOSTUNREACH")
+SyntheticsApiTestFailureCode.NETUNREACH = SyntheticsApiTestFailureCode("NETUNREACH")
+SyntheticsApiTestFailureCode.TIMEOUT = SyntheticsApiTestFailureCode("TIMEOUT")
+SyntheticsApiTestFailureCode.SSL = SyntheticsApiTestFailureCode("SSL")
+SyntheticsApiTestFailureCode.OCSP = SyntheticsApiTestFailureCode("OCSP")
+SyntheticsApiTestFailureCode.INVALID_TEST = SyntheticsApiTestFailureCode("INVALID_TEST")
+SyntheticsApiTestFailureCode.TUNNEL = SyntheticsApiTestFailureCode("TUNNEL")
+SyntheticsApiTestFailureCode.WEBSOCKET = SyntheticsApiTestFailureCode("WEBSOCKET")
+SyntheticsApiTestFailureCode.UNKNOWN = SyntheticsApiTestFailureCode("UNKNOWN")
+SyntheticsApiTestFailureCode.INTERNAL_ERROR = SyntheticsApiTestFailureCode("INTERNAL_ERROR")
diff --git a/datadog_api_client/v1/model/synthetics_api_test_result_data.py b/datadog_api_client/v1/model/synthetics_api_test_result_data.py
new file mode 100644
index 0000000000..2fc69c5eb4
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_result_data.py
@@ -0,0 +1,112 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ssl_certificate import SyntheticsSSLCertificate
+ from datadog_api_client.v1.model.synthetics_test_process_status import SyntheticsTestProcessStatus
+ from datadog_api_client.v1.model.synthetics_api_test_result_failure import SyntheticsApiTestResultFailure
+ from datadog_api_client.v1.model.synthetics_timing import SyntheticsTiming
+
+class SyntheticsAPITestResultData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ssl_certificate import SyntheticsSSLCertificate
+ from datadog_api_client.v1.model.synthetics_test_process_status import SyntheticsTestProcessStatus
+ from datadog_api_client.v1.model.synthetics_api_test_result_failure import SyntheticsApiTestResultFailure
+ from datadog_api_client.v1.model.synthetics_timing import SyntheticsTiming
+ return {
+ "cert": (SyntheticsSSLCertificate,),
+ "event_type": (SyntheticsTestProcessStatus,),
+ "failure": (SyntheticsApiTestResultFailure,),
+ "http_status_code": (int,),
+ "request_headers": ({str: (dict,)},),
+ "response_body": (str,),
+ "response_headers": ({str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)},),
+ "response_size": (int,),
+ "timings": (SyntheticsTiming,),
+ }
+ attribute_map = {
+ "cert": "cert",
+ "event_type": "eventType",
+ "failure": "failure",
+ "http_status_code": "httpStatusCode",
+ "request_headers": "requestHeaders",
+ "response_body": "responseBody",
+ "response_headers": "responseHeaders",
+ "response_size": "responseSize",
+ "timings": "timings",
+ }
+
+ def __init__(self_, cert: Union[SyntheticsSSLCertificate, UnsetType]=unset, event_type: Union[SyntheticsTestProcessStatus, UnsetType]=unset, failure: Union[SyntheticsApiTestResultFailure, UnsetType]=unset, http_status_code: Union[int, UnsetType]=unset, request_headers: Union[Dict[str, dict], UnsetType]=unset, response_body: Union[str, UnsetType]=unset, response_headers: Union[Dict[str, Any], UnsetType]=unset, response_size: Union[int, UnsetType]=unset, timings: Union[SyntheticsTiming, UnsetType]=unset, **kwargs):
+ """
+ Object containing results for your Synthetic API test.
+
+ :param cert: Object describing the SSL certificate used for a Synthetic test.
+ :type cert: SyntheticsSSLCertificate, optional
+
+ :param event_type: Status of a Synthetic test.
+ :type event_type: SyntheticsTestProcessStatus, optional
+
+ :param failure: The API test failure details.
+ :type failure: SyntheticsApiTestResultFailure, optional
+
+ :param http_status_code: The API test HTTP status code.
+ :type http_status_code: int, optional
+
+ :param request_headers: Request header object used for the API test.
+ :type request_headers: {str: (dict,)}, optional
+
+ :param response_body: Response body returned for the API test.
+ :type response_body: str, optional
+
+ :param response_headers: Response headers returned for the API test.
+ :type response_headers: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)}, optional
+
+ :param response_size: Global size in byte of the API test response.
+ :type response_size: int, optional
+
+ :param timings: Object containing all metrics and their values collected for a Synthetic API test.
+ See the `Synthetic Monitoring Metrics documentation `_.
+ :type timings: SyntheticsTiming, optional
+ """
+ if cert is not unset:
+ kwargs["cert"] = cert
+ if event_type is not unset:
+ kwargs["event_type"] = event_type
+ if failure is not unset:
+ kwargs["failure"] = failure
+ if http_status_code is not unset:
+ kwargs["http_status_code"] = http_status_code
+ if request_headers is not unset:
+ kwargs["request_headers"] = request_headers
+ if response_body is not unset:
+ kwargs["response_body"] = response_body
+ if response_headers is not unset:
+ kwargs["response_headers"] = response_headers
+ if response_size is not unset:
+ kwargs["response_size"] = response_size
+ if timings is not unset:
+ kwargs["timings"] = timings
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_test_result_failure.py b/datadog_api_client/v1/model/synthetics_api_test_result_failure.py
new file mode 100644
index 0000000000..810c174f01
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_result_failure.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_api_test_failure_code import SyntheticsApiTestFailureCode
+
+class SyntheticsApiTestResultFailure(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_api_test_failure_code import SyntheticsApiTestFailureCode
+ return {
+ "code": (SyntheticsApiTestFailureCode,),
+ "message": (str,),
+ }
+ attribute_map = {
+ "code": "code",
+ "message": "message",
+ }
+
+ def __init__(self_, code: Union[SyntheticsApiTestFailureCode, UnsetType]=unset, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The API test failure details.
+
+ :param code: Error code that can be returned by a Synthetic test.
+ :type code: SyntheticsApiTestFailureCode, optional
+
+ :param message: The API test error message.
+ :type message: str, optional
+ """
+ if code is not unset:
+ kwargs["code"] = code
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_test_result_full.py b/datadog_api_client/v1/model/synthetics_api_test_result_full.py
new file mode 100644
index 0000000000..cc43078ef1
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_result_full.py
@@ -0,0 +1,114 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_api_test_result_full_check import SyntheticsAPITestResultFullCheck
+ from datadog_api_client.v1.model.synthetics_api_test_result_data import SyntheticsAPITestResultData
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsAPITestResultFull(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_api_test_result_full_check import SyntheticsAPITestResultFullCheck
+ from datadog_api_client.v1.model.synthetics_api_test_result_data import SyntheticsAPITestResultData
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+ return {
+ "check": (SyntheticsAPITestResultFullCheck,),
+ "check_time": (float,),
+ "check_version": (int,),
+ "probe_dc": (str,),
+ "result": (SyntheticsAPITestResultData,),
+ "result_id": (str,),
+ "status": (SyntheticsTestMonitorStatus,),
+ }
+ attribute_map = {
+ "check": "check",
+ "check_time": "check_time",
+ "check_version": "check_version",
+ "probe_dc": "probe_dc",
+ "result": "result",
+ "result_id": "result_id",
+ "status": "status",
+ }
+
+ def __init__(self_, check: Union[SyntheticsAPITestResultFullCheck, UnsetType]=unset, check_time: Union[float, UnsetType]=unset, check_version: Union[int, UnsetType]=unset, probe_dc: Union[str, UnsetType]=unset, result: Union[SyntheticsAPITestResultData, UnsetType]=unset, result_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestMonitorStatus, UnsetType]=unset, **kwargs):
+ """
+ Object returned describing a API test result.
+
+ :param check: Object describing the API test configuration.
+ :type check: SyntheticsAPITestResultFullCheck, optional
+
+ :param check_time: When the API test was conducted.
+ :type check_time: float, optional
+
+ :param check_version: Version of the API test used.
+ :type check_version: int, optional
+
+ :param probe_dc: Locations for which to query the API test results.
+ :type probe_dc: str, optional
+
+ :param result: Object containing results for your Synthetic API test.
+ :type result: SyntheticsAPITestResultData, optional
+
+ :param result_id: ID of the API test result.
+ :type result_id: str, optional
+
+ :param status: The status of your Synthetic monitor.
+
+ * ``O`` for not triggered
+ * ``1`` for triggered
+ * ``2`` for no data
+ :type status: SyntheticsTestMonitorStatus, optional
+ """
+ if check is not unset:
+ kwargs["check"] = check
+ if check_time is not unset:
+ kwargs["check_time"] = check_time
+ if check_version is not unset:
+ kwargs["check_version"] = check_version
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+ if result is not unset:
+ kwargs["result"] = result
+ if result_id is not unset:
+ kwargs["result_id"] = result_id
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_test_result_full_check.py b/datadog_api_client/v1/model/synthetics_api_test_result_full_check.py
new file mode 100644
index 0000000000..9e2f8d9ed3
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_result_full_check.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsAPITestResultFullCheck(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ return {
+ "config": (SyntheticsTestConfig,),
+ }
+ attribute_map = {
+ "config": "config",
+ }
+
+ def __init__(self_, config: SyntheticsTestConfig, **kwargs):
+ """
+ Object describing the API test configuration.
+
+ :param config: Configuration object for a Synthetic test.
+ :type config: SyntheticsTestConfig
+ """
+ super().__init__(kwargs)
+
+
+ self_.config = config
diff --git a/datadog_api_client/v1/model/synthetics_api_test_result_short.py b/datadog_api_client/v1/model/synthetics_api_test_result_short.py
new file mode 100644
index 0000000000..18460087af
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_result_short.py
@@ -0,0 +1,83 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_api_test_result_short_result import SyntheticsAPITestResultShortResult
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+
+class SyntheticsAPITestResultShort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_api_test_result_short_result import SyntheticsAPITestResultShortResult
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+ return {
+ "check_time": (float,),
+ "probe_dc": (str,),
+ "result": (SyntheticsAPITestResultShortResult,),
+ "result_id": (str,),
+ "status": (SyntheticsTestMonitorStatus,),
+ }
+ attribute_map = {
+ "check_time": "check_time",
+ "probe_dc": "probe_dc",
+ "result": "result",
+ "result_id": "result_id",
+ "status": "status",
+ }
+
+ def __init__(self_, check_time: Union[float, UnsetType]=unset, probe_dc: Union[str, UnsetType]=unset, result: Union[SyntheticsAPITestResultShortResult, UnsetType]=unset, result_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestMonitorStatus, UnsetType]=unset, **kwargs):
+ """
+ Object with the results of a single Synthetic API test.
+
+ :param check_time: Last time the API test was performed.
+ :type check_time: float, optional
+
+ :param probe_dc: Location from which the API test was performed.
+ :type probe_dc: str, optional
+
+ :param result: Result of the last API test run.
+ :type result: SyntheticsAPITestResultShortResult, optional
+
+ :param result_id: ID of the API test result.
+ :type result_id: str, optional
+
+ :param status: The status of your Synthetic monitor.
+
+ * ``O`` for not triggered
+ * ``1`` for triggered
+ * ``2`` for no data
+ :type status: SyntheticsTestMonitorStatus, optional
+ """
+ if check_time is not unset:
+ kwargs["check_time"] = check_time
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+ if result is not unset:
+ kwargs["result"] = result
+ if result_id is not unset:
+ kwargs["result_id"] = result_id
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_test_result_short_result.py b/datadog_api_client/v1/model/synthetics_api_test_result_short_result.py
new file mode 100644
index 0000000000..79ef8fec97
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_result_short_result.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_timing import SyntheticsTiming
+
+class SyntheticsAPITestResultShortResult(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_timing import SyntheticsTiming
+ return {
+ "passed": (bool,),
+ "timings": (SyntheticsTiming,),
+ }
+ attribute_map = {
+ "passed": "passed",
+ "timings": "timings",
+ }
+
+ def __init__(self_, passed: Union[bool, UnsetType]=unset, timings: Union[SyntheticsTiming, UnsetType]=unset, **kwargs):
+ """
+ Result of the last API test run.
+
+ :param passed: Describes if the test run has passed or failed.
+ :type passed: bool, optional
+
+ :param timings: Object containing all metrics and their values collected for a Synthetic API test.
+ See the `Synthetic Monitoring Metrics documentation `_.
+ :type timings: SyntheticsTiming, optional
+ """
+ if passed is not unset:
+ kwargs["passed"] = passed
+ if timings is not unset:
+ kwargs["timings"] = timings
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_api_test_step.py b/datadog_api_client/v1/model/synthetics_api_test_step.py
new file mode 100644
index 0000000000..ac0b6b0652
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_step.py
@@ -0,0 +1,143 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_parsing_options import SyntheticsParsingOptions
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_api_test_step_subtype import SyntheticsAPITestStepSubtype
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsAPITestStep(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_parsing_options import SyntheticsParsingOptions
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_api_test_step_subtype import SyntheticsAPITestStepSubtype
+ return {
+ "allow_failure": (bool,),
+ "assertions": ([SyntheticsAssertion],),
+ "exit_if_succeed": (bool,),
+ "extracted_values": ([SyntheticsParsingOptions],),
+ "extracted_values_from_script": (str,),
+ "id": (str,),
+ "is_critical": (bool,),
+ "name": (str,),
+ "request": (SyntheticsTestRequest,),
+ "retry": (SyntheticsTestOptionsRetry,),
+ "subtype": (SyntheticsAPITestStepSubtype,),
+ }
+ attribute_map = {
+ "allow_failure": "allowFailure",
+ "assertions": "assertions",
+ "exit_if_succeed": "exitIfSucceed",
+ "extracted_values": "extractedValues",
+ "extracted_values_from_script": "extractedValuesFromScript",
+ "id": "id",
+ "is_critical": "isCritical",
+ "name": "name",
+ "request": "request",
+ "retry": "retry",
+ "subtype": "subtype",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, name: str, request: SyntheticsTestRequest, subtype: SyntheticsAPITestStepSubtype, allow_failure: Union[bool, UnsetType]=unset, exit_if_succeed: Union[bool, UnsetType]=unset, extracted_values: Union[List[SyntheticsParsingOptions], UnsetType]=unset, extracted_values_from_script: Union[str, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_critical: Union[bool, UnsetType]=unset, retry: Union[SyntheticsTestOptionsRetry, UnsetType]=unset, **kwargs):
+ """
+ The Test step used in a Synthetic multi-step API test.
+
+ :param allow_failure: Determines whether or not to continue with test if this step fails.
+ :type allow_failure: bool, optional
+
+ :param assertions: Array of assertions used for the test.
+ :type assertions: [SyntheticsAssertion]
+
+ :param exit_if_succeed: Determines whether or not to exit the test if the step succeeds.
+ :type exit_if_succeed: bool, optional
+
+ :param extracted_values: Array of values to parse and save as variables from the response.
+ :type extracted_values: [SyntheticsParsingOptions], optional
+
+ :param extracted_values_from_script: Generate variables using JavaScript.
+ :type extracted_values_from_script: str, optional
+
+ :param id: ID of the step.
+ :type id: str, optional
+
+ :param is_critical: Determines whether or not to consider the entire test as failed if this step fails.
+ Can be used only if ``allowFailure`` is ``true``.
+ :type is_critical: bool, optional
+
+ :param name: The name of the step.
+ :type name: str
+
+ :param request: Object describing the Synthetic test request.
+ :type request: SyntheticsTestRequest
+
+ :param retry: Object describing the retry strategy to apply to a Synthetic test.
+ :type retry: SyntheticsTestOptionsRetry, optional
+
+ :param subtype: The subtype of the Synthetic multi-step API test step.
+ :type subtype: SyntheticsAPITestStepSubtype
+ """
+ if allow_failure is not unset:
+ kwargs["allow_failure"] = allow_failure
+ if exit_if_succeed is not unset:
+ kwargs["exit_if_succeed"] = exit_if_succeed
+ if extracted_values is not unset:
+ kwargs["extracted_values"] = extracted_values
+ if extracted_values_from_script is not unset:
+ kwargs["extracted_values_from_script"] = extracted_values_from_script
+ if id is not unset:
+ kwargs["id"] = id
+ if is_critical is not unset:
+ kwargs["is_critical"] = is_critical
+ if retry is not unset:
+ kwargs["retry"] = retry
+ super().__init__(kwargs)
+ assertions = kwargs.get("assertions", [])
+
+
+ self_.assertions = assertions
+ self_.name = name
+ self_.request = request
+ self_.subtype = subtype
diff --git a/datadog_api_client/v1/model/synthetics_api_test_step_subtype.py b/datadog_api_client/v1/model/synthetics_api_test_step_subtype.py
new file mode 100644
index 0000000000..cc2898e780
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_step_subtype.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAPITestStepSubtype(ModelSimple):
+ """
+ The subtype of the Synthetic multi-step API test step.
+
+ :param value: Must be one of ["http", "grpc", "ssl", "dns", "tcp", "udp", "icmp", "websocket", "mcp"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "http",
+ "grpc",
+ "ssl",
+ "dns",
+ "tcp",
+ "udp",
+ "icmp",
+ "websocket",
+ "mcp",
+ }
+ HTTP: ClassVar["SyntheticsAPITestStepSubtype"]
+ GRPC: ClassVar["SyntheticsAPITestStepSubtype"]
+ SSL: ClassVar["SyntheticsAPITestStepSubtype"]
+ DNS: ClassVar["SyntheticsAPITestStepSubtype"]
+ TCP: ClassVar["SyntheticsAPITestStepSubtype"]
+ UDP: ClassVar["SyntheticsAPITestStepSubtype"]
+ ICMP: ClassVar["SyntheticsAPITestStepSubtype"]
+ WEBSOCKET: ClassVar["SyntheticsAPITestStepSubtype"]
+ MCP: ClassVar["SyntheticsAPITestStepSubtype"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAPITestStepSubtype.HTTP = SyntheticsAPITestStepSubtype("http")
+SyntheticsAPITestStepSubtype.GRPC = SyntheticsAPITestStepSubtype("grpc")
+SyntheticsAPITestStepSubtype.SSL = SyntheticsAPITestStepSubtype("ssl")
+SyntheticsAPITestStepSubtype.DNS = SyntheticsAPITestStepSubtype("dns")
+SyntheticsAPITestStepSubtype.TCP = SyntheticsAPITestStepSubtype("tcp")
+SyntheticsAPITestStepSubtype.UDP = SyntheticsAPITestStepSubtype("udp")
+SyntheticsAPITestStepSubtype.ICMP = SyntheticsAPITestStepSubtype("icmp")
+SyntheticsAPITestStepSubtype.WEBSOCKET = SyntheticsAPITestStepSubtype("websocket")
+SyntheticsAPITestStepSubtype.MCP = SyntheticsAPITestStepSubtype("mcp")
diff --git a/datadog_api_client/v1/model/synthetics_api_test_type.py b/datadog_api_client/v1/model/synthetics_api_test_type.py
new file mode 100644
index 0000000000..3e3c8452ac
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_test_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAPITestType(ModelSimple):
+ """
+ Type of the Synthetic test, `api`.
+
+ :param value: If omitted defaults to "api". Must be one of ["api"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "api",
+ }
+ API: ClassVar["SyntheticsAPITestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAPITestType.API = SyntheticsAPITestType("api")
diff --git a/datadog_api_client/v1/model/synthetics_api_wait_step.py b/datadog_api_client/v1/model/synthetics_api_wait_step.py
new file mode 100644
index 0000000000..8af64bee9c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_wait_step.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_api_wait_step_subtype import SyntheticsAPIWaitStepSubtype
+
+class SyntheticsAPIWaitStep(ModelNormal):
+ validations = {
+ "value": {
+ "inclusive_maximum": 180,
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_api_wait_step_subtype import SyntheticsAPIWaitStepSubtype
+ return {
+ "id": (str,),
+ "name": (str,),
+ "subtype": (SyntheticsAPIWaitStepSubtype,),
+ "value": (int,),
+ }
+ attribute_map = {
+ "id": "id",
+ "name": "name",
+ "subtype": "subtype",
+ "value": "value",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, name: str, subtype: SyntheticsAPIWaitStepSubtype, value: int, id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The Wait step used in a Synthetic multi-step API test.
+
+ :param id: ID of the step.
+ :type id: str, optional
+
+ :param name: The name of the step.
+ :type name: str
+
+ :param subtype: The subtype of the Synthetic multi-step API wait step.
+ :type subtype: SyntheticsAPIWaitStepSubtype
+
+ :param value: The time to wait in seconds. Minimum value: 0. Maximum value: 180.
+ :type value: int
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.subtype = subtype
+ self_.value = value
diff --git a/datadog_api_client/v1/model/synthetics_api_wait_step_subtype.py b/datadog_api_client/v1/model/synthetics_api_wait_step_subtype.py
new file mode 100644
index 0000000000..9c29fbcdf6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_api_wait_step_subtype.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAPIWaitStepSubtype(ModelSimple):
+ """
+ The subtype of the Synthetic multi-step API wait step.
+
+ :param value: If omitted defaults to "wait". Must be one of ["wait"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "wait",
+ }
+ WAIT: ClassVar["SyntheticsAPIWaitStepSubtype"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAPIWaitStepSubtype.WAIT = SyntheticsAPIWaitStepSubtype("wait")
diff --git a/datadog_api_client/v1/model/synthetics_assertion.py b/datadog_api_client/v1/model/synthetics_assertion.py
new file mode 100644
index 0000000000..575135cbfc
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsAssertion(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Object describing the assertions type, their associated operator,
+ which property they apply, and upon which target.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionOperator
+
+ :param _property: The associated assertion property.
+ :type _property: str, optional
+
+ :param target: Value used by the operator in assertions. Can be either a number or string.
+ :type target: SyntheticsAssertionTargetValue
+
+ :param timings_scope: Timings scope for response time assertions.
+ :type timings_scope: SyntheticsAssertionTimingsScope, optional
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionType
+
+ :param code: The JavaScript code that performs the assertions.
+ :type code: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ return {
+ "oneOf": [
+ SyntheticsAssertionTarget,
+ SyntheticsAssertionBodyHashTarget,
+ SyntheticsAssertionJSONPathTarget,
+ SyntheticsAssertionJSONSchemaTarget,
+ SyntheticsAssertionXPathTarget,
+ SyntheticsAssertionJavascript,
+ SyntheticsAssertionMCPServerCapabilitiesTarget,
+ SyntheticsAssertionMCPRespectsSpecification,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_assertion_body_hash_operator.py b/datadog_api_client/v1/model/synthetics_assertion_body_hash_operator.py
new file mode 100644
index 0000000000..01e39f898c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_body_hash_operator.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionBodyHashOperator(ModelSimple):
+ """
+ Assertion operator to apply.
+
+ :param value: Must be one of ["md5", "sha1", "sha256"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "md5",
+ "sha1",
+ "sha256",
+ }
+ MD5: ClassVar["SyntheticsAssertionBodyHashOperator"]
+ SHA1: ClassVar["SyntheticsAssertionBodyHashOperator"]
+ SHA256: ClassVar["SyntheticsAssertionBodyHashOperator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionBodyHashOperator.MD5 = SyntheticsAssertionBodyHashOperator("md5")
+SyntheticsAssertionBodyHashOperator.SHA1 = SyntheticsAssertionBodyHashOperator("sha1")
+SyntheticsAssertionBodyHashOperator.SHA256 = SyntheticsAssertionBodyHashOperator("sha256")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_body_hash_target.py b/datadog_api_client/v1/model/synthetics_assertion_body_hash_target.py
new file mode 100644
index 0000000000..1c121c0840
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_body_hash_target.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_operator import SyntheticsAssertionBodyHashOperator
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_type import SyntheticsAssertionBodyHashType
+
+class SyntheticsAssertionBodyHashTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_operator import SyntheticsAssertionBodyHashOperator
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_type import SyntheticsAssertionBodyHashType
+ return {
+ "operator": (SyntheticsAssertionBodyHashOperator,),
+ "target": (SyntheticsAssertionTargetValue,),
+ "type": (SyntheticsAssertionBodyHashType,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, operator: SyntheticsAssertionBodyHashOperator, target: Union[SyntheticsAssertionTargetValue, float, str], type: SyntheticsAssertionBodyHashType, **kwargs):
+ """
+ An assertion which targets body hash.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionBodyHashOperator
+
+ :param target: Value used by the operator in assertions. Can be either a number or string.
+ :type target: SyntheticsAssertionTargetValue
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionBodyHashType
+ """
+ super().__init__(kwargs)
+
+
+ self_.operator = operator
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_body_hash_type.py b/datadog_api_client/v1/model/synthetics_assertion_body_hash_type.py
new file mode 100644
index 0000000000..85fd3f10bf
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_body_hash_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionBodyHashType(ModelSimple):
+ """
+ Type of the assertion.
+
+ :param value: If omitted defaults to "bodyHash". Must be one of ["bodyHash"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "bodyHash",
+ }
+ BODY_HASH: ClassVar["SyntheticsAssertionBodyHashType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionBodyHashType.BODY_HASH = SyntheticsAssertionBodyHashType("bodyHash")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_javascript.py b/datadog_api_client/v1/model/synthetics_assertion_javascript.py
new file mode 100644
index 0000000000..7ebb4688a2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_javascript.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_javascript_type import SyntheticsAssertionJavascriptType
+
+class SyntheticsAssertionJavascript(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_javascript_type import SyntheticsAssertionJavascriptType
+ return {
+ "code": (str,),
+ "type": (SyntheticsAssertionJavascriptType,),
+ }
+ attribute_map = {
+ "code": "code",
+ "type": "type",
+ }
+
+ def __init__(self_, code: str, type: SyntheticsAssertionJavascriptType, **kwargs):
+ """
+ A JavaScript assertion.
+
+ :param code: The JavaScript code that performs the assertions.
+ :type code: str
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionJavascriptType
+ """
+ super().__init__(kwargs)
+
+
+ self_.code = code
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_javascript_type.py b/datadog_api_client/v1/model/synthetics_assertion_javascript_type.py
new file mode 100644
index 0000000000..ca2c05c5d8
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_javascript_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionJavascriptType(ModelSimple):
+ """
+ Type of the assertion.
+
+ :param value: If omitted defaults to "javascript". Must be one of ["javascript"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "javascript",
+ }
+ JAVASCRIPT: ClassVar["SyntheticsAssertionJavascriptType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionJavascriptType.JAVASCRIPT = SyntheticsAssertionJavascriptType("javascript")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_path_operator.py b/datadog_api_client/v1/model/synthetics_assertion_json_path_operator.py
new file mode 100644
index 0000000000..1cdda77287
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_path_operator.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionJSONPathOperator(ModelSimple):
+ """
+ Assertion operator to apply.
+
+ :param value: If omitted defaults to "validatesJSONPath". Must be one of ["validatesJSONPath"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "validatesJSONPath",
+ }
+ VALIDATES_JSON_PATH: ClassVar["SyntheticsAssertionJSONPathOperator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionJSONPathOperator.VALIDATES_JSON_PATH = SyntheticsAssertionJSONPathOperator("validatesJSONPath")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_path_target.py b/datadog_api_client/v1/model/synthetics_assertion_json_path_target.py
new file mode 100644
index 0000000000..f5bb893107
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_path_target.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_operator import SyntheticsAssertionJSONPathOperator
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target_target import SyntheticsAssertionJSONPathTargetTarget
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+
+class SyntheticsAssertionJSONPathTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_operator import SyntheticsAssertionJSONPathOperator
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target_target import SyntheticsAssertionJSONPathTargetTarget
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+ return {
+ "operator": (SyntheticsAssertionJSONPathOperator,),
+ "_property": (str,),
+ "target": (SyntheticsAssertionJSONPathTargetTarget,),
+ "type": (SyntheticsAssertionType,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "_property": "property",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, operator: SyntheticsAssertionJSONPathOperator, type: SyntheticsAssertionType, _property: Union[str, UnsetType]=unset, target: Union[SyntheticsAssertionJSONPathTargetTarget, UnsetType]=unset, **kwargs):
+ """
+ An assertion for the ``validatesJSONPath`` operator.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionJSONPathOperator
+
+ :param _property: The associated assertion property.
+ :type _property: str, optional
+
+ :param target: Composed target for ``validatesJSONPath`` operator.
+ :type target: SyntheticsAssertionJSONPathTargetTarget, optional
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionType
+ """
+ if _property is not unset:
+ kwargs["_property"] = _property
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.operator = operator
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_path_target_target.py b/datadog_api_client/v1/model/synthetics_assertion_json_path_target_target.py
new file mode 100644
index 0000000000..f95d028b83
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_path_target_target.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+
+class SyntheticsAssertionJSONPathTargetTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+ return {
+ "elements_operator": (str,),
+ "json_path": (str,),
+ "operator": (str,),
+ "target_value": (SyntheticsAssertionTargetValue,),
+ }
+ attribute_map = {
+ "elements_operator": "elementsOperator",
+ "json_path": "jsonPath",
+ "operator": "operator",
+ "target_value": "targetValue",
+ }
+
+ def __init__(self_, elements_operator: Union[str, UnsetType]=unset, json_path: Union[str, UnsetType]=unset, operator: Union[str, UnsetType]=unset, target_value: Union[SyntheticsAssertionTargetValue, float, str, UnsetType]=unset, **kwargs):
+ """
+ Composed target for ``validatesJSONPath`` operator.
+
+ :param elements_operator: The element from the list of results to assert on. To choose from the first element in the list ``firstElementMatches`` , every element in the list ``everyElementMatches`` , at least one element in the list ``atLeastOneElementMatches`` or the serialized value of the list ``serializationMatches``.
+ :type elements_operator: str, optional
+
+ :param json_path: The JSON path to assert.
+ :type json_path: str, optional
+
+ :param operator: The specific operator to use on the path.
+ :type operator: str, optional
+
+ :param target_value: Value used by the operator in assertions. Can be either a number or string.
+ :type target_value: SyntheticsAssertionTargetValue, optional
+ """
+ if elements_operator is not unset:
+ kwargs["elements_operator"] = elements_operator
+ if json_path is not unset:
+ kwargs["json_path"] = json_path
+ if operator is not unset:
+ kwargs["operator"] = operator
+ if target_value is not unset:
+ kwargs["target_value"] = target_value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_schema_meta_schema.py b/datadog_api_client/v1/model/synthetics_assertion_json_schema_meta_schema.py
new file mode 100644
index 0000000000..991e7ab7b1
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_schema_meta_schema.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionJSONSchemaMetaSchema(ModelSimple):
+ """
+ The JSON Schema meta-schema version used in the assertion.
+
+ :param value: Must be one of ["draft-07", "draft-06"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "draft-07",
+ "draft-06",
+ }
+ DRAFT_07: ClassVar["SyntheticsAssertionJSONSchemaMetaSchema"]
+ DRAFT_06: ClassVar["SyntheticsAssertionJSONSchemaMetaSchema"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionJSONSchemaMetaSchema.DRAFT_07 = SyntheticsAssertionJSONSchemaMetaSchema("draft-07")
+SyntheticsAssertionJSONSchemaMetaSchema.DRAFT_06 = SyntheticsAssertionJSONSchemaMetaSchema("draft-06")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_schema_operator.py b/datadog_api_client/v1/model/synthetics_assertion_json_schema_operator.py
new file mode 100644
index 0000000000..b72d32a38c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_schema_operator.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionJSONSchemaOperator(ModelSimple):
+ """
+ Assertion operator to apply.
+
+ :param value: If omitted defaults to "validatesJSONSchema". Must be one of ["validatesJSONSchema"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "validatesJSONSchema",
+ }
+ VALIDATES_JSON_SCHEMA: ClassVar["SyntheticsAssertionJSONSchemaOperator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionJSONSchemaOperator.VALIDATES_JSON_SCHEMA = SyntheticsAssertionJSONSchemaOperator("validatesJSONSchema")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_schema_target.py b/datadog_api_client/v1/model/synthetics_assertion_json_schema_target.py
new file mode 100644
index 0000000000..434318ce66
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_schema_target.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_operator import SyntheticsAssertionJSONSchemaOperator
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target_target import SyntheticsAssertionJSONSchemaTargetTarget
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+
+class SyntheticsAssertionJSONSchemaTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_operator import SyntheticsAssertionJSONSchemaOperator
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target_target import SyntheticsAssertionJSONSchemaTargetTarget
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+ return {
+ "operator": (SyntheticsAssertionJSONSchemaOperator,),
+ "target": (SyntheticsAssertionJSONSchemaTargetTarget,),
+ "type": (SyntheticsAssertionType,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, operator: SyntheticsAssertionJSONSchemaOperator, type: SyntheticsAssertionType, target: Union[SyntheticsAssertionJSONSchemaTargetTarget, UnsetType]=unset, **kwargs):
+ """
+ An assertion for the ``validatesJSONSchema`` operator.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionJSONSchemaOperator
+
+ :param target: Composed target for ``validatesJSONSchema`` operator.
+ :type target: SyntheticsAssertionJSONSchemaTargetTarget, optional
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionType
+ """
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.operator = operator
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_json_schema_target_target.py b/datadog_api_client/v1/model/synthetics_assertion_json_schema_target_target.py
new file mode 100644
index 0000000000..def90cb97c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_json_schema_target_target.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_meta_schema import SyntheticsAssertionJSONSchemaMetaSchema
+
+class SyntheticsAssertionJSONSchemaTargetTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_meta_schema import SyntheticsAssertionJSONSchemaMetaSchema
+ return {
+ "json_schema": (str,),
+ "meta_schema": (SyntheticsAssertionJSONSchemaMetaSchema,),
+ }
+ attribute_map = {
+ "json_schema": "jsonSchema",
+ "meta_schema": "metaSchema",
+ }
+
+ def __init__(self_, json_schema: Union[str, UnsetType]=unset, meta_schema: Union[SyntheticsAssertionJSONSchemaMetaSchema, UnsetType]=unset, **kwargs):
+ """
+ Composed target for ``validatesJSONSchema`` operator.
+
+ :param json_schema: The JSON Schema to assert.
+ :type json_schema: str, optional
+
+ :param meta_schema: The JSON Schema meta-schema version used in the assertion.
+ :type meta_schema: SyntheticsAssertionJSONSchemaMetaSchema, optional
+ """
+ if json_schema is not unset:
+ kwargs["json_schema"] = json_schema
+ if meta_schema is not unset:
+ kwargs["meta_schema"] = meta_schema
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_assertion_mcp_respects_specification.py b/datadog_api_client/v1/model/synthetics_assertion_mcp_respects_specification.py
new file mode 100644
index 0000000000..ac40360295
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_mcp_respects_specification.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification_type import SyntheticsAssertionMCPRespectsSpecificationType
+
+class SyntheticsAssertionMCPRespectsSpecification(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification_type import SyntheticsAssertionMCPRespectsSpecificationType
+ return {
+ "type": (SyntheticsAssertionMCPRespectsSpecificationType,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: SyntheticsAssertionMCPRespectsSpecificationType, **kwargs):
+ """
+ An assertion that verifies the MCP server response respects the MCP specification.
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionMCPRespectsSpecificationType
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_mcp_respects_specification_type.py b/datadog_api_client/v1/model/synthetics_assertion_mcp_respects_specification_type.py
new file mode 100644
index 0000000000..7112cb7cbf
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_mcp_respects_specification_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionMCPRespectsSpecificationType(ModelSimple):
+ """
+ Type of the assertion.
+
+ :param value: If omitted defaults to "mcpRespectsSpecification". Must be one of ["mcpRespectsSpecification"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "mcpRespectsSpecification",
+ }
+ MCP_RESPECTS_SPECIFICATION: ClassVar["SyntheticsAssertionMCPRespectsSpecificationType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionMCPRespectsSpecificationType.MCP_RESPECTS_SPECIFICATION = SyntheticsAssertionMCPRespectsSpecificationType("mcpRespectsSpecification")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_mcp_server_capabilities_target.py b/datadog_api_client/v1/model/synthetics_assertion_mcp_server_capabilities_target.py
new file mode 100644
index 0000000000..8e2e71ae3f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_mcp_server_capabilities_target.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_operator import SyntheticsAssertionOperator
+ from datadog_api_client.v1.model.synthetics_mcp_server_capability import SyntheticsMCPServerCapability
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_type import SyntheticsAssertionMCPServerCapabilitiesType
+
+class SyntheticsAssertionMCPServerCapabilitiesTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_operator import SyntheticsAssertionOperator
+ from datadog_api_client.v1.model.synthetics_mcp_server_capability import SyntheticsMCPServerCapability
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_type import SyntheticsAssertionMCPServerCapabilitiesType
+ return {
+ "operator": (SyntheticsAssertionOperator,),
+ "target": ([SyntheticsMCPServerCapability],),
+ "type": (SyntheticsAssertionMCPServerCapabilitiesType,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, operator: SyntheticsAssertionOperator, target: List[SyntheticsMCPServerCapability], type: SyntheticsAssertionMCPServerCapabilitiesType, **kwargs):
+ """
+ An assertion that checks that an MCP server advertises the expected capabilities.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionOperator
+
+ :param target: List of MCP server capabilities to assert against.
+ :type target: [SyntheticsMCPServerCapability]
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionMCPServerCapabilitiesType
+ """
+ super().__init__(kwargs)
+
+
+ self_.operator = operator
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_mcp_server_capabilities_type.py b/datadog_api_client/v1/model/synthetics_assertion_mcp_server_capabilities_type.py
new file mode 100644
index 0000000000..4f64a5e580
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_mcp_server_capabilities_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionMCPServerCapabilitiesType(ModelSimple):
+ """
+ Type of the assertion.
+
+ :param value: If omitted defaults to "mcpServerCapabilities". Must be one of ["mcpServerCapabilities"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "mcpServerCapabilities",
+ }
+ MCP_SERVER_CAPABILITIES: ClassVar["SyntheticsAssertionMCPServerCapabilitiesType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionMCPServerCapabilitiesType.MCP_SERVER_CAPABILITIES = SyntheticsAssertionMCPServerCapabilitiesType("mcpServerCapabilities")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_operator.py b/datadog_api_client/v1/model/synthetics_assertion_operator.py
new file mode 100644
index 0000000000..e4623bc5c2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_operator.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionOperator(ModelSimple):
+ """
+ Assertion operator to apply.
+
+ :param value: Must be one of ["contains", "doesNotContain", "is", "isNot", "lessThan", "lessThanOrEqual", "moreThan", "moreThanOrEqual", "matches", "doesNotMatch", "validates", "isInMoreThan", "isInLessThan", "doesNotExist", "isUndefined"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "contains",
+ "doesNotContain",
+ "is",
+ "isNot",
+ "lessThan",
+ "lessThanOrEqual",
+ "moreThan",
+ "moreThanOrEqual",
+ "matches",
+ "doesNotMatch",
+ "validates",
+ "isInMoreThan",
+ "isInLessThan",
+ "doesNotExist",
+ "isUndefined",
+ }
+ CONTAINS: ClassVar["SyntheticsAssertionOperator"]
+ DOES_NOT_CONTAIN: ClassVar["SyntheticsAssertionOperator"]
+ IS: ClassVar["SyntheticsAssertionOperator"]
+ IS_NOT: ClassVar["SyntheticsAssertionOperator"]
+ LESS_THAN: ClassVar["SyntheticsAssertionOperator"]
+ LESS_THAN_OR_EQUAL: ClassVar["SyntheticsAssertionOperator"]
+ MORE_THAN: ClassVar["SyntheticsAssertionOperator"]
+ MORE_THAN_OR_EQUAL: ClassVar["SyntheticsAssertionOperator"]
+ MATCHES: ClassVar["SyntheticsAssertionOperator"]
+ DOES_NOT_MATCH: ClassVar["SyntheticsAssertionOperator"]
+ VALIDATES: ClassVar["SyntheticsAssertionOperator"]
+ IS_IN_MORE_DAYS_THAN: ClassVar["SyntheticsAssertionOperator"]
+ IS_IN_LESS_DAYS_THAN: ClassVar["SyntheticsAssertionOperator"]
+ DOES_NOT_EXIST: ClassVar["SyntheticsAssertionOperator"]
+ IS_UNDEFINED: ClassVar["SyntheticsAssertionOperator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionOperator.CONTAINS = SyntheticsAssertionOperator("contains")
+SyntheticsAssertionOperator.DOES_NOT_CONTAIN = SyntheticsAssertionOperator("doesNotContain")
+SyntheticsAssertionOperator.IS = SyntheticsAssertionOperator("is")
+SyntheticsAssertionOperator.IS_NOT = SyntheticsAssertionOperator("isNot")
+SyntheticsAssertionOperator.LESS_THAN = SyntheticsAssertionOperator("lessThan")
+SyntheticsAssertionOperator.LESS_THAN_OR_EQUAL = SyntheticsAssertionOperator("lessThanOrEqual")
+SyntheticsAssertionOperator.MORE_THAN = SyntheticsAssertionOperator("moreThan")
+SyntheticsAssertionOperator.MORE_THAN_OR_EQUAL = SyntheticsAssertionOperator("moreThanOrEqual")
+SyntheticsAssertionOperator.MATCHES = SyntheticsAssertionOperator("matches")
+SyntheticsAssertionOperator.DOES_NOT_MATCH = SyntheticsAssertionOperator("doesNotMatch")
+SyntheticsAssertionOperator.VALIDATES = SyntheticsAssertionOperator("validates")
+SyntheticsAssertionOperator.IS_IN_MORE_DAYS_THAN = SyntheticsAssertionOperator("isInMoreThan")
+SyntheticsAssertionOperator.IS_IN_LESS_DAYS_THAN = SyntheticsAssertionOperator("isInLessThan")
+SyntheticsAssertionOperator.DOES_NOT_EXIST = SyntheticsAssertionOperator("doesNotExist")
+SyntheticsAssertionOperator.IS_UNDEFINED = SyntheticsAssertionOperator("isUndefined")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_target.py b/datadog_api_client/v1/model/synthetics_assertion_target.py
new file mode 100644
index 0000000000..0e455419ed
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_target.py
@@ -0,0 +1,80 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_operator import SyntheticsAssertionOperator
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+ from datadog_api_client.v1.model.synthetics_assertion_timings_scope import SyntheticsAssertionTimingsScope
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+
+class SyntheticsAssertionTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_operator import SyntheticsAssertionOperator
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+ from datadog_api_client.v1.model.synthetics_assertion_timings_scope import SyntheticsAssertionTimingsScope
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+ return {
+ "operator": (SyntheticsAssertionOperator,),
+ "_property": (str,),
+ "target": (SyntheticsAssertionTargetValue,),
+ "timings_scope": (SyntheticsAssertionTimingsScope,),
+ "type": (SyntheticsAssertionType,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "_property": "property",
+ "target": "target",
+ "timings_scope": "timingsScope",
+ "type": "type",
+ }
+
+ def __init__(self_, operator: SyntheticsAssertionOperator, target: Union[SyntheticsAssertionTargetValue, float, str], type: SyntheticsAssertionType, _property: Union[str, UnsetType]=unset, timings_scope: Union[SyntheticsAssertionTimingsScope, UnsetType]=unset, **kwargs):
+ """
+ An assertion which uses a simple target.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionOperator
+
+ :param _property: The associated assertion property.
+ :type _property: str, optional
+
+ :param target: Value used by the operator in assertions. Can be either a number or string.
+ :type target: SyntheticsAssertionTargetValue
+
+ :param timings_scope: Timings scope for response time assertions.
+ :type timings_scope: SyntheticsAssertionTimingsScope, optional
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionType
+ """
+ if _property is not unset:
+ kwargs["_property"] = _property
+ if timings_scope is not unset:
+ kwargs["timings_scope"] = timings_scope
+ super().__init__(kwargs)
+
+
+ self_.operator = operator
+ self_.target = target
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_target_value.py b/datadog_api_client/v1/model/synthetics_assertion_target_value.py
new file mode 100644
index 0000000000..30aa6d039f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_target_value.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsAssertionTargetValue(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Value used by the operator in assertions. Can be either a number or string.
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ return {
+ "oneOf": [
+ float,
+ str,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_assertion_timings_scope.py b/datadog_api_client/v1/model/synthetics_assertion_timings_scope.py
new file mode 100644
index 0000000000..81077e2172
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_timings_scope.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionTimingsScope(ModelSimple):
+ """
+ Timings scope for response time assertions.
+
+ :param value: Must be one of ["all", "withoutDNS"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "all",
+ "withoutDNS",
+ }
+ ALL: ClassVar["SyntheticsAssertionTimingsScope"]
+ WITHOUT_DNS: ClassVar["SyntheticsAssertionTimingsScope"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionTimingsScope.ALL = SyntheticsAssertionTimingsScope("all")
+SyntheticsAssertionTimingsScope.WITHOUT_DNS = SyntheticsAssertionTimingsScope("withoutDNS")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_type.py b/datadog_api_client/v1/model/synthetics_assertion_type.py
new file mode 100644
index 0000000000..b121a4d84e
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_type.py
@@ -0,0 +1,111 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionType(ModelSimple):
+ """
+ Type of the assertion.
+
+ :param value: Must be one of ["body", "header", "statusCode", "certificate", "responseTime", "property", "recordEvery", "recordSome", "tlsVersion", "minTlsVersion", "latency", "packetLossPercentage", "packetsReceived", "networkHop", "receivedMessage", "grpcHealthcheckStatus", "grpcMetadata", "grpcProto", "connection", "multiNetworkHop", "jitter", "mcpToolNameLength", "mcpToolCount"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "body",
+ "header",
+ "statusCode",
+ "certificate",
+ "responseTime",
+ "property",
+ "recordEvery",
+ "recordSome",
+ "tlsVersion",
+ "minTlsVersion",
+ "latency",
+ "packetLossPercentage",
+ "packetsReceived",
+ "networkHop",
+ "receivedMessage",
+ "grpcHealthcheckStatus",
+ "grpcMetadata",
+ "grpcProto",
+ "connection",
+ "multiNetworkHop",
+ "jitter",
+ "mcpToolNameLength",
+ "mcpToolCount",
+ }
+ BODY: ClassVar["SyntheticsAssertionType"]
+ HEADER: ClassVar["SyntheticsAssertionType"]
+ STATUS_CODE: ClassVar["SyntheticsAssertionType"]
+ CERTIFICATE: ClassVar["SyntheticsAssertionType"]
+ RESPONSE_TIME: ClassVar["SyntheticsAssertionType"]
+ PROPERTY: ClassVar["SyntheticsAssertionType"]
+ RECORD_EVERY: ClassVar["SyntheticsAssertionType"]
+ RECORD_SOME: ClassVar["SyntheticsAssertionType"]
+ TLS_VERSION: ClassVar["SyntheticsAssertionType"]
+ MIN_TLS_VERSION: ClassVar["SyntheticsAssertionType"]
+ LATENCY: ClassVar["SyntheticsAssertionType"]
+ PACKET_LOSS_PERCENTAGE: ClassVar["SyntheticsAssertionType"]
+ PACKETS_RECEIVED: ClassVar["SyntheticsAssertionType"]
+ NETWORK_HOP: ClassVar["SyntheticsAssertionType"]
+ RECEIVED_MESSAGE: ClassVar["SyntheticsAssertionType"]
+ GRPC_HEALTHCHECK_STATUS: ClassVar["SyntheticsAssertionType"]
+ GRPC_METADATA: ClassVar["SyntheticsAssertionType"]
+ GRPC_PROTO: ClassVar["SyntheticsAssertionType"]
+ CONNECTION: ClassVar["SyntheticsAssertionType"]
+ MULTI_NETWORK_HOP: ClassVar["SyntheticsAssertionType"]
+ JITTER: ClassVar["SyntheticsAssertionType"]
+ MCP_TOOL_NAME_LENGTH: ClassVar["SyntheticsAssertionType"]
+ MCP_TOOL_COUNT: ClassVar["SyntheticsAssertionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionType.BODY = SyntheticsAssertionType("body")
+SyntheticsAssertionType.HEADER = SyntheticsAssertionType("header")
+SyntheticsAssertionType.STATUS_CODE = SyntheticsAssertionType("statusCode")
+SyntheticsAssertionType.CERTIFICATE = SyntheticsAssertionType("certificate")
+SyntheticsAssertionType.RESPONSE_TIME = SyntheticsAssertionType("responseTime")
+SyntheticsAssertionType.PROPERTY = SyntheticsAssertionType("property")
+SyntheticsAssertionType.RECORD_EVERY = SyntheticsAssertionType("recordEvery")
+SyntheticsAssertionType.RECORD_SOME = SyntheticsAssertionType("recordSome")
+SyntheticsAssertionType.TLS_VERSION = SyntheticsAssertionType("tlsVersion")
+SyntheticsAssertionType.MIN_TLS_VERSION = SyntheticsAssertionType("minTlsVersion")
+SyntheticsAssertionType.LATENCY = SyntheticsAssertionType("latency")
+SyntheticsAssertionType.PACKET_LOSS_PERCENTAGE = SyntheticsAssertionType("packetLossPercentage")
+SyntheticsAssertionType.PACKETS_RECEIVED = SyntheticsAssertionType("packetsReceived")
+SyntheticsAssertionType.NETWORK_HOP = SyntheticsAssertionType("networkHop")
+SyntheticsAssertionType.RECEIVED_MESSAGE = SyntheticsAssertionType("receivedMessage")
+SyntheticsAssertionType.GRPC_HEALTHCHECK_STATUS = SyntheticsAssertionType("grpcHealthcheckStatus")
+SyntheticsAssertionType.GRPC_METADATA = SyntheticsAssertionType("grpcMetadata")
+SyntheticsAssertionType.GRPC_PROTO = SyntheticsAssertionType("grpcProto")
+SyntheticsAssertionType.CONNECTION = SyntheticsAssertionType("connection")
+SyntheticsAssertionType.MULTI_NETWORK_HOP = SyntheticsAssertionType("multiNetworkHop")
+SyntheticsAssertionType.JITTER = SyntheticsAssertionType("jitter")
+SyntheticsAssertionType.MCP_TOOL_NAME_LENGTH = SyntheticsAssertionType("mcpToolNameLength")
+SyntheticsAssertionType.MCP_TOOL_COUNT = SyntheticsAssertionType("mcpToolCount")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_x_path_operator.py b/datadog_api_client/v1/model/synthetics_assertion_x_path_operator.py
new file mode 100644
index 0000000000..e70120d2fc
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_x_path_operator.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsAssertionXPathOperator(ModelSimple):
+ """
+ Assertion operator to apply.
+
+ :param value: If omitted defaults to "validatesXPath". Must be one of ["validatesXPath"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "validatesXPath",
+ }
+ VALIDATES_X_PATH: ClassVar["SyntheticsAssertionXPathOperator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsAssertionXPathOperator.VALIDATES_X_PATH = SyntheticsAssertionXPathOperator("validatesXPath")
diff --git a/datadog_api_client/v1/model/synthetics_assertion_x_path_target.py b/datadog_api_client/v1/model/synthetics_assertion_x_path_target.py
new file mode 100644
index 0000000000..34b78edaee
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_x_path_target.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_operator import SyntheticsAssertionXPathOperator
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target_target import SyntheticsAssertionXPathTargetTarget
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+
+class SyntheticsAssertionXPathTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_operator import SyntheticsAssertionXPathOperator
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target_target import SyntheticsAssertionXPathTargetTarget
+ from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+ return {
+ "operator": (SyntheticsAssertionXPathOperator,),
+ "_property": (str,),
+ "target": (SyntheticsAssertionXPathTargetTarget,),
+ "type": (SyntheticsAssertionType,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "_property": "property",
+ "target": "target",
+ "type": "type",
+ }
+
+ def __init__(self_, operator: SyntheticsAssertionXPathOperator, type: SyntheticsAssertionType, _property: Union[str, UnsetType]=unset, target: Union[SyntheticsAssertionXPathTargetTarget, UnsetType]=unset, **kwargs):
+ """
+ An assertion for the ``validatesXPath`` operator.
+
+ :param operator: Assertion operator to apply.
+ :type operator: SyntheticsAssertionXPathOperator
+
+ :param _property: The associated assertion property.
+ :type _property: str, optional
+
+ :param target: Composed target for ``validatesXPath`` operator.
+ :type target: SyntheticsAssertionXPathTargetTarget, optional
+
+ :param type: Type of the assertion.
+ :type type: SyntheticsAssertionType
+ """
+ if _property is not unset:
+ kwargs["_property"] = _property
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.operator = operator
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_assertion_x_path_target_target.py b/datadog_api_client/v1/model/synthetics_assertion_x_path_target_target.py
new file mode 100644
index 0000000000..b0d5ac95b9
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_assertion_x_path_target_target.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+
+class SyntheticsAssertionXPathTargetTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+ return {
+ "operator": (str,),
+ "target_value": (SyntheticsAssertionTargetValue,),
+ "x_path": (str,),
+ }
+ attribute_map = {
+ "operator": "operator",
+ "target_value": "targetValue",
+ "x_path": "xPath",
+ }
+
+ def __init__(self_, operator: Union[str, UnsetType]=unset, target_value: Union[SyntheticsAssertionTargetValue, float, str, UnsetType]=unset, x_path: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Composed target for ``validatesXPath`` operator.
+
+ :param operator: The specific operator to use on the path.
+ :type operator: str, optional
+
+ :param target_value: Value used by the operator in assertions. Can be either a number or string.
+ :type target_value: SyntheticsAssertionTargetValue, optional
+
+ :param x_path: The X path to assert.
+ :type x_path: str, optional
+ """
+ if operator is not unset:
+ kwargs["operator"] = operator
+ if target_value is not unset:
+ kwargs["target_value"] = target_value
+ if x_path is not unset:
+ kwargs["x_path"] = x_path
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth.py b/datadog_api_client/v1/model/synthetics_basic_auth.py
new file mode 100644
index 0000000000..7844e5b33d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth.py
@@ -0,0 +1,134 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsBasicAuth(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Object to handle basic authentication when performing the test.
+
+ :param password: Password to use for the basic authentication.
+ :type password: str, optional
+
+ :param type: The type of basic authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthWebType, optional
+
+ :param username: Username to use for the basic authentication.
+ :type username: str, optional
+
+ :param access_key: Access key for the `SIGV4` authentication.
+ :type access_key: str
+
+ :param region: Region for the `SIGV4` authentication.
+ :type region: str, optional
+
+ :param secret_key: Secret key for the `SIGV4` authentication.
+ :type secret_key: str
+
+ :param service_name: Service name for the `SIGV4` authentication.
+ :type service_name: str, optional
+
+ :param session_token: Session token for the `SIGV4` authentication.
+ :type session_token: str, optional
+
+ :param domain: Domain for the authentication to use when performing the test.
+ :type domain: str, optional
+
+ :param workstation: Workstation for the authentication to use when performing the test.
+ :type workstation: str, optional
+
+ :param access_token_url: Access token URL to use when performing the authentication.
+ :type access_token_url: str
+
+ :param audience: Audience to use when performing the authentication.
+ :type audience: str, optional
+
+ :param client_id: Client ID to use when performing the authentication.
+ :type client_id: str
+
+ :param client_secret: Client secret to use when performing the authentication.
+ :type client_secret: str
+
+ :param resource: Resource to use when performing the authentication.
+ :type resource: str, optional
+
+ :param scope: Scope to use when performing the authentication.
+ :type scope: str, optional
+
+ :param token_api_authentication: Type of token to use when performing the authentication.
+ :type token_api_authentication: SyntheticsBasicAuthOauthTokenApiAuthentication
+
+ :param add_claims: Standard JWT claims to automatically inject.
+ :type add_claims: SyntheticsBasicAuthJWTAddClaims, optional
+
+ :param algorithm: Algorithm to use for the JWT authentication.
+ :type algorithm: SyntheticsBasicAuthJWTAlgorithm
+
+ :param expires_in: Token time-to-live in seconds.
+ :type expires_in: int, optional
+
+ :param header: Custom JWT header as a JSON string.
+ :type header: str, optional
+
+ :param payload: JWT claims as a JSON string.
+ :type payload: str
+
+ :param secret: Signing key for the JWT authentication. Use the shared secret for `HS256`
+ or the private key (PEM format) for `RS256` and `ES256`.
+ :type secret: str
+
+ :param token_prefix: Prefix added before the token in the `Authorization` header. Defaults to `Bearer`.
+ :type token_prefix: str, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+ return {
+ "oneOf": [
+ SyntheticsBasicAuthWeb,
+ SyntheticsBasicAuthSigv4,
+ SyntheticsBasicAuthNTLM,
+ SyntheticsBasicAuthDigest,
+ SyntheticsBasicAuthOauthClient,
+ SyntheticsBasicAuthOauthROP,
+ SyntheticsBasicAuthJWT,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_digest.py b/datadog_api_client/v1/model/synthetics_basic_auth_digest.py
new file mode 100644
index 0000000000..a00c18cfba
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_digest.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest_type import SyntheticsBasicAuthDigestType
+
+class SyntheticsBasicAuthDigest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest_type import SyntheticsBasicAuthDigestType
+ return {
+ "password": (str,),
+ "type": (SyntheticsBasicAuthDigestType,),
+ "username": (str,),
+ }
+ attribute_map = {
+ "password": "password",
+ "type": "type",
+ "username": "username",
+ }
+
+ def __init__(self_, password: str, type: SyntheticsBasicAuthDigestType, username: str, **kwargs):
+ """
+ Object to handle digest authentication when performing the test.
+
+ :param password: Password to use for the digest authentication.
+ :type password: str
+
+ :param type: The type of basic authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthDigestType
+
+ :param username: Username to use for the digest authentication.
+ :type username: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.password = password
+ self_.type = type
+ self_.username = username
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_digest_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_digest_type.py
new file mode 100644
index 0000000000..e648f7dcc2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_digest_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthDigestType(ModelSimple):
+ """
+ The type of basic authentication to use when performing the test.
+
+ :param value: If omitted defaults to "digest". Must be one of ["digest"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "digest",
+ }
+ DIGEST: ClassVar["SyntheticsBasicAuthDigestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthDigestType.DIGEST = SyntheticsBasicAuthDigestType("digest")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_jwt.py b/datadog_api_client/v1/model/synthetics_basic_auth_jwt.py
new file mode 100644
index 0000000000..69afe06971
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_jwt.py
@@ -0,0 +1,104 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims import SyntheticsBasicAuthJWTAddClaims
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm import SyntheticsBasicAuthJWTAlgorithm
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt_type import SyntheticsBasicAuthJWTType
+
+class SyntheticsBasicAuthJWT(ModelNormal):
+ validations = {
+ "expires_in": {
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims import SyntheticsBasicAuthJWTAddClaims
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm import SyntheticsBasicAuthJWTAlgorithm
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt_type import SyntheticsBasicAuthJWTType
+ return {
+ "add_claims": (SyntheticsBasicAuthJWTAddClaims,),
+ "algorithm": (SyntheticsBasicAuthJWTAlgorithm,),
+ "expires_in": (int,),
+ "header": (str,),
+ "payload": (str,),
+ "secret": (str,),
+ "token_prefix": (str,),
+ "type": (SyntheticsBasicAuthJWTType,),
+ }
+ attribute_map = {
+ "add_claims": "addClaims",
+ "algorithm": "algorithm",
+ "expires_in": "expiresIn",
+ "header": "header",
+ "payload": "payload",
+ "secret": "secret",
+ "token_prefix": "tokenPrefix",
+ "type": "type",
+ }
+
+ def __init__(self_, algorithm: SyntheticsBasicAuthJWTAlgorithm, payload: str, secret: str, type: SyntheticsBasicAuthJWTType, add_claims: Union[SyntheticsBasicAuthJWTAddClaims, UnsetType]=unset, expires_in: Union[int, UnsetType]=unset, header: Union[str, UnsetType]=unset, token_prefix: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to handle JWT authentication when performing the test.
+
+ :param add_claims: Standard JWT claims to automatically inject.
+ :type add_claims: SyntheticsBasicAuthJWTAddClaims, optional
+
+ :param algorithm: Algorithm to use for the JWT authentication.
+ :type algorithm: SyntheticsBasicAuthJWTAlgorithm
+
+ :param expires_in: Token time-to-live in seconds.
+ :type expires_in: int, optional
+
+ :param header: Custom JWT header as a JSON string.
+ :type header: str, optional
+
+ :param payload: JWT claims as a JSON string.
+ :type payload: str
+
+ :param secret: Signing key for the JWT authentication. Use the shared secret for ``HS256``
+ or the private key (PEM format) for ``RS256`` and ``ES256``.
+ :type secret: str
+
+ :param token_prefix: Prefix added before the token in the ``Authorization`` header. Defaults to ``Bearer``.
+ :type token_prefix: str, optional
+
+ :param type: The type of authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthJWTType
+ """
+ if add_claims is not unset:
+ kwargs["add_claims"] = add_claims
+ if expires_in is not unset:
+ kwargs["expires_in"] = expires_in
+ if header is not unset:
+ kwargs["header"] = header
+ if token_prefix is not unset:
+ kwargs["token_prefix"] = token_prefix
+ super().__init__(kwargs)
+
+
+ self_.algorithm = algorithm
+ self_.payload = payload
+ self_.secret = secret
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_jwt_add_claims.py b/datadog_api_client/v1/model/synthetics_basic_auth_jwt_add_claims.py
new file mode 100644
index 0000000000..3e00853402
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_jwt_add_claims.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsBasicAuthJWTAddClaims(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "exp": (bool,),
+ "iat": (bool,),
+ }
+ attribute_map = {
+ "exp": "exp",
+ "iat": "iat",
+ }
+
+ def __init__(self_, exp: Union[bool, UnsetType]=unset, iat: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Standard JWT claims to automatically inject.
+
+ :param exp: Whether to inject the ``exp`` (expiration) claim.
+ :type exp: bool, optional
+
+ :param iat: Whether to inject the ``iat`` (issued at) claim.
+ :type iat: bool, optional
+ """
+ if exp is not unset:
+ kwargs["exp"] = exp
+ if iat is not unset:
+ kwargs["iat"] = iat
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_jwt_algorithm.py b/datadog_api_client/v1/model/synthetics_basic_auth_jwt_algorithm.py
new file mode 100644
index 0000000000..7b7d277de2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_jwt_algorithm.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthJWTAlgorithm(ModelSimple):
+ """
+ Algorithm to use for the JWT authentication.
+
+ :param value: Must be one of ["HS256", "RS256", "ES256"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "HS256",
+ "RS256",
+ "ES256",
+ }
+ HS256: ClassVar["SyntheticsBasicAuthJWTAlgorithm"]
+ RS256: ClassVar["SyntheticsBasicAuthJWTAlgorithm"]
+ ES256: ClassVar["SyntheticsBasicAuthJWTAlgorithm"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthJWTAlgorithm.HS256 = SyntheticsBasicAuthJWTAlgorithm("HS256")
+SyntheticsBasicAuthJWTAlgorithm.RS256 = SyntheticsBasicAuthJWTAlgorithm("RS256")
+SyntheticsBasicAuthJWTAlgorithm.ES256 = SyntheticsBasicAuthJWTAlgorithm("ES256")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_jwt_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_jwt_type.py
new file mode 100644
index 0000000000..f1880f3e2d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_jwt_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthJWTType(ModelSimple):
+ """
+ The type of authentication to use when performing the test.
+
+ :param value: If omitted defaults to "jwt". Must be one of ["jwt"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "jwt",
+ }
+ JWT: ClassVar["SyntheticsBasicAuthJWTType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthJWTType.JWT = SyntheticsBasicAuthJWTType("jwt")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_ntlm.py b/datadog_api_client/v1/model/synthetics_basic_auth_ntlm.py
new file mode 100644
index 0000000000..7f81120c7a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_ntlm.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm_type import SyntheticsBasicAuthNTLMType
+
+class SyntheticsBasicAuthNTLM(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm_type import SyntheticsBasicAuthNTLMType
+ return {
+ "domain": (str,),
+ "password": (str,),
+ "type": (SyntheticsBasicAuthNTLMType,),
+ "username": (str,),
+ "workstation": (str,),
+ }
+ attribute_map = {
+ "domain": "domain",
+ "password": "password",
+ "type": "type",
+ "username": "username",
+ "workstation": "workstation",
+ }
+
+ def __init__(self_, type: SyntheticsBasicAuthNTLMType, domain: Union[str, UnsetType]=unset, password: Union[str, UnsetType]=unset, username: Union[str, UnsetType]=unset, workstation: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to handle ``NTLM`` authentication when performing the test.
+
+ :param domain: Domain for the authentication to use when performing the test.
+ :type domain: str, optional
+
+ :param password: Password for the authentication to use when performing the test.
+ :type password: str, optional
+
+ :param type: The type of authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthNTLMType
+
+ :param username: Username for the authentication to use when performing the test.
+ :type username: str, optional
+
+ :param workstation: Workstation for the authentication to use when performing the test.
+ :type workstation: str, optional
+ """
+ if domain is not unset:
+ kwargs["domain"] = domain
+ if password is not unset:
+ kwargs["password"] = password
+ if username is not unset:
+ kwargs["username"] = username
+ if workstation is not unset:
+ kwargs["workstation"] = workstation
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_ntlm_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_ntlm_type.py
new file mode 100644
index 0000000000..4001a110cb
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_ntlm_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthNTLMType(ModelSimple):
+ """
+ The type of authentication to use when performing the test.
+
+ :param value: If omitted defaults to "ntlm". Must be one of ["ntlm"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "ntlm",
+ }
+ NTLM: ClassVar["SyntheticsBasicAuthNTLMType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthNTLMType.NTLM = SyntheticsBasicAuthNTLMType("ntlm")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_oauth_client.py b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_client.py
new file mode 100644
index 0000000000..71d2367668
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_client.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_token_api_authentication import SyntheticsBasicAuthOauthTokenApiAuthentication
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client_type import SyntheticsBasicAuthOauthClientType
+
+class SyntheticsBasicAuthOauthClient(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_token_api_authentication import SyntheticsBasicAuthOauthTokenApiAuthentication
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client_type import SyntheticsBasicAuthOauthClientType
+ return {
+ "access_token_url": (str,),
+ "audience": (str,),
+ "client_id": (str,),
+ "client_secret": (str,),
+ "resource": (str,),
+ "scope": (str,),
+ "token_api_authentication": (SyntheticsBasicAuthOauthTokenApiAuthentication,),
+ "type": (SyntheticsBasicAuthOauthClientType,),
+ }
+ attribute_map = {
+ "access_token_url": "accessTokenUrl",
+ "audience": "audience",
+ "client_id": "clientId",
+ "client_secret": "clientSecret",
+ "resource": "resource",
+ "scope": "scope",
+ "token_api_authentication": "tokenApiAuthentication",
+ "type": "type",
+ }
+
+ def __init__(self_, access_token_url: str, client_id: str, client_secret: str, token_api_authentication: SyntheticsBasicAuthOauthTokenApiAuthentication, type: SyntheticsBasicAuthOauthClientType, audience: Union[str, UnsetType]=unset, resource: Union[str, UnsetType]=unset, scope: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to handle ``oauth client`` authentication when performing the test.
+
+ :param access_token_url: Access token URL to use when performing the authentication.
+ :type access_token_url: str
+
+ :param audience: Audience to use when performing the authentication.
+ :type audience: str, optional
+
+ :param client_id: Client ID to use when performing the authentication.
+ :type client_id: str
+
+ :param client_secret: Client secret to use when performing the authentication.
+ :type client_secret: str
+
+ :param resource: Resource to use when performing the authentication.
+ :type resource: str, optional
+
+ :param scope: Scope to use when performing the authentication.
+ :type scope: str, optional
+
+ :param token_api_authentication: Type of token to use when performing the authentication.
+ :type token_api_authentication: SyntheticsBasicAuthOauthTokenApiAuthentication
+
+ :param type: The type of basic authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthOauthClientType
+ """
+ if audience is not unset:
+ kwargs["audience"] = audience
+ if resource is not unset:
+ kwargs["resource"] = resource
+ if scope is not unset:
+ kwargs["scope"] = scope
+ super().__init__(kwargs)
+
+
+ self_.access_token_url = access_token_url
+ self_.client_id = client_id
+ self_.client_secret = client_secret
+ self_.token_api_authentication = token_api_authentication
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_oauth_client_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_client_type.py
new file mode 100644
index 0000000000..0b19251b9c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_client_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthOauthClientType(ModelSimple):
+ """
+ The type of basic authentication to use when performing the test.
+
+ :param value: If omitted defaults to "oauth-client". Must be one of ["oauth-client"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "oauth-client",
+ }
+ OAUTH_CLIENT: ClassVar["SyntheticsBasicAuthOauthClientType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthOauthClientType.OAUTH_CLIENT = SyntheticsBasicAuthOauthClientType("oauth-client")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_oauth_rop.py b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_rop.py
new file mode 100644
index 0000000000..17f6d5e6c7
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_rop.py
@@ -0,0 +1,109 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_token_api_authentication import SyntheticsBasicAuthOauthTokenApiAuthentication
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop_type import SyntheticsBasicAuthOauthROPType
+
+class SyntheticsBasicAuthOauthROP(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_token_api_authentication import SyntheticsBasicAuthOauthTokenApiAuthentication
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop_type import SyntheticsBasicAuthOauthROPType
+ return {
+ "access_token_url": (str,),
+ "audience": (str,),
+ "client_id": (str,),
+ "client_secret": (str,),
+ "password": (str,),
+ "resource": (str,),
+ "scope": (str,),
+ "token_api_authentication": (SyntheticsBasicAuthOauthTokenApiAuthentication,),
+ "type": (SyntheticsBasicAuthOauthROPType,),
+ "username": (str,),
+ }
+ attribute_map = {
+ "access_token_url": "accessTokenUrl",
+ "audience": "audience",
+ "client_id": "clientId",
+ "client_secret": "clientSecret",
+ "password": "password",
+ "resource": "resource",
+ "scope": "scope",
+ "token_api_authentication": "tokenApiAuthentication",
+ "type": "type",
+ "username": "username",
+ }
+
+ def __init__(self_, access_token_url: str, password: str, token_api_authentication: SyntheticsBasicAuthOauthTokenApiAuthentication, type: SyntheticsBasicAuthOauthROPType, username: str, audience: Union[str, UnsetType]=unset, client_id: Union[str, UnsetType]=unset, client_secret: Union[str, UnsetType]=unset, resource: Union[str, UnsetType]=unset, scope: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to handle ``oauth rop`` authentication when performing the test.
+
+ :param access_token_url: Access token URL to use when performing the authentication.
+ :type access_token_url: str
+
+ :param audience: Audience to use when performing the authentication.
+ :type audience: str, optional
+
+ :param client_id: Client ID to use when performing the authentication.
+ :type client_id: str, optional
+
+ :param client_secret: Client secret to use when performing the authentication.
+ :type client_secret: str, optional
+
+ :param password: Password to use when performing the authentication.
+ :type password: str
+
+ :param resource: Resource to use when performing the authentication.
+ :type resource: str, optional
+
+ :param scope: Scope to use when performing the authentication.
+ :type scope: str, optional
+
+ :param token_api_authentication: Type of token to use when performing the authentication.
+ :type token_api_authentication: SyntheticsBasicAuthOauthTokenApiAuthentication
+
+ :param type: The type of basic authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthOauthROPType
+
+ :param username: Username to use when performing the authentication.
+ :type username: str
+ """
+ if audience is not unset:
+ kwargs["audience"] = audience
+ if client_id is not unset:
+ kwargs["client_id"] = client_id
+ if client_secret is not unset:
+ kwargs["client_secret"] = client_secret
+ if resource is not unset:
+ kwargs["resource"] = resource
+ if scope is not unset:
+ kwargs["scope"] = scope
+ super().__init__(kwargs)
+
+
+ self_.access_token_url = access_token_url
+ self_.password = password
+ self_.token_api_authentication = token_api_authentication
+ self_.type = type
+ self_.username = username
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_oauth_rop_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_rop_type.py
new file mode 100644
index 0000000000..8a6c884a1a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_rop_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthOauthROPType(ModelSimple):
+ """
+ The type of basic authentication to use when performing the test.
+
+ :param value: If omitted defaults to "oauth-rop". Must be one of ["oauth-rop"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "oauth-rop",
+ }
+ OAUTH_ROP: ClassVar["SyntheticsBasicAuthOauthROPType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthOauthROPType.OAUTH_ROP = SyntheticsBasicAuthOauthROPType("oauth-rop")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_oauth_token_api_authentication.py b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_token_api_authentication.py
new file mode 100644
index 0000000000..878c92416a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_oauth_token_api_authentication.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthOauthTokenApiAuthentication(ModelSimple):
+ """
+ Type of token to use when performing the authentication.
+
+ :param value: Must be one of ["header", "body"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "header",
+ "body",
+ }
+ HEADER: ClassVar["SyntheticsBasicAuthOauthTokenApiAuthentication"]
+ BODY: ClassVar["SyntheticsBasicAuthOauthTokenApiAuthentication"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthOauthTokenApiAuthentication.HEADER = SyntheticsBasicAuthOauthTokenApiAuthentication("header")
+SyntheticsBasicAuthOauthTokenApiAuthentication.BODY = SyntheticsBasicAuthOauthTokenApiAuthentication("body")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_sigv4.py b/datadog_api_client/v1/model/synthetics_basic_auth_sigv4.py
new file mode 100644
index 0000000000..b50fa914e5
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_sigv4.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4_type import SyntheticsBasicAuthSigv4Type
+
+class SyntheticsBasicAuthSigv4(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4_type import SyntheticsBasicAuthSigv4Type
+ return {
+ "access_key": (str,),
+ "region": (str,),
+ "secret_key": (str,),
+ "service_name": (str,),
+ "session_token": (str,),
+ "type": (SyntheticsBasicAuthSigv4Type,),
+ }
+ attribute_map = {
+ "access_key": "accessKey",
+ "region": "region",
+ "secret_key": "secretKey",
+ "service_name": "serviceName",
+ "session_token": "sessionToken",
+ "type": "type",
+ }
+
+ def __init__(self_, access_key: str, secret_key: str, type: SyntheticsBasicAuthSigv4Type, region: Union[str, UnsetType]=unset, service_name: Union[str, UnsetType]=unset, session_token: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to handle ``SIGV4`` authentication when performing the test.
+
+ :param access_key: Access key for the ``SIGV4`` authentication.
+ :type access_key: str
+
+ :param region: Region for the ``SIGV4`` authentication.
+ :type region: str, optional
+
+ :param secret_key: Secret key for the ``SIGV4`` authentication.
+ :type secret_key: str
+
+ :param service_name: Service name for the ``SIGV4`` authentication.
+ :type service_name: str, optional
+
+ :param session_token: Session token for the ``SIGV4`` authentication.
+ :type session_token: str, optional
+
+ :param type: The type of authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthSigv4Type
+ """
+ if region is not unset:
+ kwargs["region"] = region
+ if service_name is not unset:
+ kwargs["service_name"] = service_name
+ if session_token is not unset:
+ kwargs["session_token"] = session_token
+ super().__init__(kwargs)
+
+
+ self_.access_key = access_key
+ self_.secret_key = secret_key
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_sigv4_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_sigv4_type.py
new file mode 100644
index 0000000000..1771ecfd6a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_sigv4_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthSigv4Type(ModelSimple):
+ """
+ The type of authentication to use when performing the test.
+
+ :param value: If omitted defaults to "sigv4". Must be one of ["sigv4"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "sigv4",
+ }
+ SIGV4: ClassVar["SyntheticsBasicAuthSigv4Type"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthSigv4Type.SIGV4 = SyntheticsBasicAuthSigv4Type("sigv4")
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_web.py b/datadog_api_client/v1/model/synthetics_basic_auth_web.py
new file mode 100644
index 0000000000..1ad20f41cf
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_web.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth_web_type import SyntheticsBasicAuthWebType
+
+class SyntheticsBasicAuthWeb(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth_web_type import SyntheticsBasicAuthWebType
+ return {
+ "password": (str,),
+ "type": (SyntheticsBasicAuthWebType,),
+ "username": (str,),
+ }
+ attribute_map = {
+ "password": "password",
+ "type": "type",
+ "username": "username",
+ }
+
+ def __init__(self_, password: Union[str, UnsetType]=unset, type: Union[SyntheticsBasicAuthWebType, UnsetType]=unset, username: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object to handle basic authentication when performing the test.
+
+ :param password: Password to use for the basic authentication.
+ :type password: str, optional
+
+ :param type: The type of basic authentication to use when performing the test.
+ :type type: SyntheticsBasicAuthWebType, optional
+
+ :param username: Username to use for the basic authentication.
+ :type username: str, optional
+ """
+ if password is not unset:
+ kwargs["password"] = password
+ if type is not unset:
+ kwargs["type"] = type
+ if username is not unset:
+ kwargs["username"] = username
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_basic_auth_web_type.py b/datadog_api_client/v1/model/synthetics_basic_auth_web_type.py
new file mode 100644
index 0000000000..9c6ab1d322
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_basic_auth_web_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBasicAuthWebType(ModelSimple):
+ """
+ The type of basic authentication to use when performing the test.
+
+ :param value: If omitted defaults to "web". Must be one of ["web"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "web",
+ }
+ WEB: ClassVar["SyntheticsBasicAuthWebType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBasicAuthWebType.WEB = SyntheticsBasicAuthWebType("web")
diff --git a/datadog_api_client/v1/model/synthetics_batch_details.py b/datadog_api_client/v1/model/synthetics_batch_details.py
new file mode 100644
index 0000000000..802f8cf387
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_batch_details.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_batch_details_data import SyntheticsBatchDetailsData
+
+class SyntheticsBatchDetails(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_batch_details_data import SyntheticsBatchDetailsData
+ return {
+ "data": (SyntheticsBatchDetailsData,),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[SyntheticsBatchDetailsData, UnsetType]=unset, **kwargs):
+ """
+ Details about a batch response.
+
+ :param data: Wrapper object that contains the details of a batch.
+ :type data: SyntheticsBatchDetailsData, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_batch_details_data.py b/datadog_api_client/v1/model/synthetics_batch_details_data.py
new file mode 100644
index 0000000000..22413ba53b
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_batch_details_data.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+ from datadog_api_client.v1.model.synthetics_batch_result import SyntheticsBatchResult
+ from datadog_api_client.v1.model.synthetics_batch_status import SyntheticsBatchStatus
+
+class SyntheticsBatchDetailsData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+ from datadog_api_client.v1.model.synthetics_batch_result import SyntheticsBatchResult
+ from datadog_api_client.v1.model.synthetics_batch_status import SyntheticsBatchStatus
+ return {
+ "metadata": (SyntheticsCIBatchMetadata,),
+ "results": ([SyntheticsBatchResult],),
+ "status": (SyntheticsBatchStatus,),
+ }
+ attribute_map = {
+ "metadata": "metadata",
+ "results": "results",
+ "status": "status",
+ }
+
+ def __init__(self_, metadata: Union[SyntheticsCIBatchMetadata, UnsetType]=unset, results: Union[List[SyntheticsBatchResult], UnsetType]=unset, status: Union[SyntheticsBatchStatus, UnsetType]=unset, **kwargs):
+ """
+ Wrapper object that contains the details of a batch.
+
+ :param metadata: Metadata for the Synthetic tests run.
+ :type metadata: SyntheticsCIBatchMetadata, optional
+
+ :param results: List of results for the batch.
+ :type results: [SyntheticsBatchResult], optional
+
+ :param status: Determines whether the batch has passed, failed, or is in progress.
+ :type status: SyntheticsBatchStatus, optional
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if results is not unset:
+ kwargs["results"] = results
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_batch_result.py b/datadog_api_client/v1/model/synthetics_batch_result.py
new file mode 100644
index 0000000000..b410ca2ebe
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_batch_result.py
@@ -0,0 +1,116 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_execution_rule import SyntheticsTestExecutionRule
+ from datadog_api_client.v1.model.synthetics_batch_status import SyntheticsBatchStatus
+ from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+
+class SyntheticsBatchResult(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_execution_rule import SyntheticsTestExecutionRule
+ from datadog_api_client.v1.model.synthetics_batch_status import SyntheticsBatchStatus
+ from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+ return {
+ "device": (str,),
+ "duration": (float,),
+ "execution_rule": (SyntheticsTestExecutionRule,),
+ "location": (str,),
+ "result_id": (str,),
+ "retries": (float,),
+ "status": (SyntheticsBatchStatus,),
+ "test_name": (str,),
+ "test_public_id": (str,),
+ "test_type": (SyntheticsTestDetailsType,),
+ }
+ attribute_map = {
+ "device": "device",
+ "duration": "duration",
+ "execution_rule": "execution_rule",
+ "location": "location",
+ "result_id": "result_id",
+ "retries": "retries",
+ "status": "status",
+ "test_name": "test_name",
+ "test_public_id": "test_public_id",
+ "test_type": "test_type",
+ }
+
+ def __init__(self_, device: Union[str, UnsetType]=unset, duration: Union[float, UnsetType]=unset, execution_rule: Union[SyntheticsTestExecutionRule, UnsetType]=unset, location: Union[str, UnsetType]=unset, result_id: Union[str, UnsetType]=unset, retries: Union[float, UnsetType]=unset, status: Union[SyntheticsBatchStatus, UnsetType]=unset, test_name: Union[str, UnsetType]=unset, test_public_id: Union[str, UnsetType]=unset, test_type: Union[SyntheticsTestDetailsType, UnsetType]=unset, **kwargs):
+ """
+ Object with the results of a Synthetic batch.
+
+ :param device: The device ID.
+ :type device: str, optional
+
+ :param duration: Total duration in millisecond of the test.
+ :type duration: float, optional
+
+ :param execution_rule: Execution rule for a Synthetic test.
+ :type execution_rule: SyntheticsTestExecutionRule, optional
+
+ :param location: Name of the location.
+ :type location: str, optional
+
+ :param result_id: The ID of the result to get.
+ :type result_id: str, optional
+
+ :param retries: Number of times this result has been retried.
+ :type retries: float, optional
+
+ :param status: Determines whether the batch has passed, failed, or is in progress.
+ :type status: SyntheticsBatchStatus, optional
+
+ :param test_name: Name of the test.
+ :type test_name: str, optional
+
+ :param test_public_id: The public ID of the Synthetic test.
+ :type test_public_id: str, optional
+
+ :param test_type: Type of the Synthetic test.
+ :type test_type: SyntheticsTestDetailsType, optional
+ """
+ if device is not unset:
+ kwargs["device"] = device
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if execution_rule is not unset:
+ kwargs["execution_rule"] = execution_rule
+ if location is not unset:
+ kwargs["location"] = location
+ if result_id is not unset:
+ kwargs["result_id"] = result_id
+ if retries is not unset:
+ kwargs["retries"] = retries
+ if status is not unset:
+ kwargs["status"] = status
+ if test_name is not unset:
+ kwargs["test_name"] = test_name
+ if test_public_id is not unset:
+ kwargs["test_public_id"] = test_public_id
+ if test_type is not unset:
+ kwargs["test_type"] = test_type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_batch_status.py b/datadog_api_client/v1/model/synthetics_batch_status.py
new file mode 100644
index 0000000000..28338d5a40
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_batch_status.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBatchStatus(ModelSimple):
+ """
+ Determines whether the batch has passed, failed, or is in progress.
+
+ :param value: Must be one of ["passed", "skipped", "failed"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "passed",
+ "skipped",
+ "failed",
+ }
+ PASSED: ClassVar["SyntheticsBatchStatus"]
+ SKIPPED: ClassVar["SyntheticsBatchStatus"]
+ FAILED: ClassVar["SyntheticsBatchStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBatchStatus.PASSED = SyntheticsBatchStatus("passed")
+SyntheticsBatchStatus.SKIPPED = SyntheticsBatchStatus("skipped")
+SyntheticsBatchStatus.FAILED = SyntheticsBatchStatus("failed")
diff --git a/datadog_api_client/v1/model/synthetics_browser_error.py b/datadog_api_client/v1/model/synthetics_browser_error.py
new file mode 100644
index 0000000000..1972484008
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_error.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_error_type import SyntheticsBrowserErrorType
+
+class SyntheticsBrowserError(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_error_type import SyntheticsBrowserErrorType
+ return {
+ "description": (str,),
+ "name": (str,),
+ "status": (int,),
+ "type": (SyntheticsBrowserErrorType,),
+ }
+ attribute_map = {
+ "description": "description",
+ "name": "name",
+ "status": "status",
+ "type": "type",
+ }
+
+ def __init__(self_, description: str, name: str, type: SyntheticsBrowserErrorType, status: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Error response object for a browser test.
+
+ :param description: Description of the error.
+ :type description: str
+
+ :param name: Name of the error.
+ :type name: str
+
+ :param status: Status Code of the error.
+ :type status: int, optional
+
+ :param type: Error type returned by a browser test.
+ :type type: SyntheticsBrowserErrorType
+ """
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
+ self_.description = description
+ self_.name = name
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_browser_error_type.py b/datadog_api_client/v1/model/synthetics_browser_error_type.py
new file mode 100644
index 0000000000..15decf49a7
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_error_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBrowserErrorType(ModelSimple):
+ """
+ Error type returned by a browser test.
+
+ :param value: Must be one of ["network", "js"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "network",
+ "js",
+ }
+ NETWORK: ClassVar["SyntheticsBrowserErrorType"]
+ JS: ClassVar["SyntheticsBrowserErrorType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBrowserErrorType.NETWORK = SyntheticsBrowserErrorType("network")
+SyntheticsBrowserErrorType.JS = SyntheticsBrowserErrorType("js")
diff --git a/datadog_api_client/v1/model/synthetics_browser_test.py b/datadog_api_client/v1/model/synthetics_browser_test.py
new file mode 100644
index 0000000000..e718f31408
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test.py
@@ -0,0 +1,141 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_test_config import SyntheticsBrowserTestConfig
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_step import SyntheticsStep
+ from datadog_api_client.v1.model.synthetics_browser_test_type import SyntheticsBrowserTestType
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsBrowserTest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_test_config import SyntheticsBrowserTestConfig
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_step import SyntheticsStep
+ from datadog_api_client.v1.model.synthetics_browser_test_type import SyntheticsBrowserTestType
+ return {
+ "config": (SyntheticsBrowserTestConfig,),
+ "locations": ([str],),
+ "message": (str,),
+ "monitor_id": (int,),
+ "name": (str,),
+ "options": (SyntheticsTestOptions,),
+ "public_id": (str,),
+ "status": (SyntheticsTestPauseStatus,),
+ "steps": ([SyntheticsStep],),
+ "tags": ([str],),
+ "type": (SyntheticsBrowserTestType,),
+ }
+ attribute_map = {
+ "config": "config",
+ "locations": "locations",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "name": "name",
+ "options": "options",
+ "public_id": "public_id",
+ "status": "status",
+ "steps": "steps",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "monitor_id",
+ "public_id",
+ }
+
+ def __init__(self_, config: SyntheticsBrowserTestConfig, locations: List[str], message: str, name: str, options: SyntheticsTestOptions, type: SyntheticsBrowserTestType, monitor_id: Union[int, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestPauseStatus, UnsetType]=unset, steps: Union[List[SyntheticsStep], UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object containing details about a Synthetic browser test.
+
+ :param config: Configuration object for a Synthetic browser test.
+ :type config: SyntheticsBrowserTestConfig
+
+ :param locations: Array of locations used to run the test.
+ :type locations: [str]
+
+ :param message: Notification message associated with the test. Message can either be text or an empty string.
+ :type message: str
+
+ :param monitor_id: The associated monitor ID.
+ :type monitor_id: int, optional
+
+ :param name: Name of the test.
+ :type name: str
+
+ :param options: Object describing the extra options for a Synthetic test.
+ :type options: SyntheticsTestOptions
+
+ :param public_id: The public ID of the test.
+ :type public_id: str, optional
+
+ :param status: Define whether you want to start ( ``live`` ) or pause ( ``paused`` ) a
+ Synthetic test.
+ :type status: SyntheticsTestPauseStatus, optional
+
+ :param steps: Array of steps for the test.
+ :type steps: [SyntheticsStep], optional
+
+ :param tags: Array of tags attached to the test.
+ :type tags: [str], optional
+
+ :param type: Type of the Synthetic test, ``browser``.
+ :type type: SyntheticsBrowserTestType
+ """
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if status is not unset:
+ kwargs["status"] = status
+ if steps is not unset:
+ kwargs["steps"] = steps
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.config = config
+ self_.locations = locations
+ self_.message = message
+ self_.name = name
+ self_.options = options
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_config.py b/datadog_api_client/v1/model/synthetics_browser_test_config.py
new file mode 100644
index 0000000000..48ab8c1500
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_config.py
@@ -0,0 +1,97 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_browser_variable import SyntheticsBrowserVariable
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsBrowserTestConfig(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_browser_variable import SyntheticsBrowserVariable
+ return {
+ "assertions": ([SyntheticsAssertion],),
+ "config_variables": ([SyntheticsConfigVariable],),
+ "request": (SyntheticsTestRequest,),
+ "set_cookie": (str,),
+ "variables": ([SyntheticsBrowserVariable],),
+ }
+ attribute_map = {
+ "assertions": "assertions",
+ "config_variables": "configVariables",
+ "request": "request",
+ "set_cookie": "setCookie",
+ "variables": "variables",
+ }
+
+ def __init__(self_, request: SyntheticsTestRequest, config_variables: Union[List[SyntheticsConfigVariable], UnsetType]=unset, set_cookie: Union[str, UnsetType]=unset, variables: Union[List[SyntheticsBrowserVariable], UnsetType]=unset, **kwargs):
+ """
+ Configuration object for a Synthetic browser test.
+
+ :param assertions: Array of assertions used for the test.
+ :type assertions: [SyntheticsAssertion]
+
+ :param config_variables: Array of variables used for the test.
+ :type config_variables: [SyntheticsConfigVariable], optional
+
+ :param request: Object describing the Synthetic test request.
+ :type request: SyntheticsTestRequest
+
+ :param set_cookie: Cookies to be used for the request, using the `Set-Cookie `_ syntax.
+ :type set_cookie: str, optional
+
+ :param variables: Array of variables used for the test steps.
+ :type variables: [SyntheticsBrowserVariable], optional
+ """
+ if config_variables is not unset:
+ kwargs["config_variables"] = config_variables
+ if set_cookie is not unset:
+ kwargs["set_cookie"] = set_cookie
+ if variables is not unset:
+ kwargs["variables"] = variables
+ super().__init__(kwargs)
+ assertions = kwargs.get("assertions", [])
+
+
+ self_.assertions = assertions
+ self_.request = request
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_failure_code.py b/datadog_api_client/v1/model/synthetics_browser_test_failure_code.py
new file mode 100644
index 0000000000..1322cd719a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_failure_code.py
@@ -0,0 +1,141 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBrowserTestFailureCode(ModelSimple):
+ """
+ Error code that can be returned by a Synthetic test.
+
+ :param value: Must be one of ["API_REQUEST_FAILURE", "ASSERTION_FAILURE", "DOWNLOAD_FILE_TOO_LARGE", "ELEMENT_NOT_INTERACTABLE", "EMAIL_VARIABLE_NOT_DEFINED", "EVALUATE_JAVASCRIPT", "EVALUATE_JAVASCRIPT_CONTEXT", "EXTRACT_VARIABLE", "FORBIDDEN_URL", "FRAME_DETACHED", "INCONSISTENCIES", "INTERNAL_ERROR", "INVALID_TYPE_TEXT_DELAY", "INVALID_URL", "INVALID_VARIABLE_PATTERN", "INVISIBLE_ELEMENT", "LOCATE_ELEMENT", "NAVIGATE_TO_LINK", "OPEN_URL", "PRESS_KEY", "SERVER_CERTIFICATE", "SELECT_OPTION", "STEP_TIMEOUT", "SUB_TEST_NOT_PASSED", "TEST_TIMEOUT", "TOO_MANY_HTTP_REQUESTS", "UNAVAILABLE_BROWSER", "UNKNOWN", "UNSUPPORTED_AUTH_SCHEMA", "UPLOAD_FILES_ELEMENT_TYPE", "UPLOAD_FILES_DIALOG", "UPLOAD_FILES_DYNAMIC_ELEMENT", "UPLOAD_FILES_NAME"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "API_REQUEST_FAILURE",
+ "ASSERTION_FAILURE",
+ "DOWNLOAD_FILE_TOO_LARGE",
+ "ELEMENT_NOT_INTERACTABLE",
+ "EMAIL_VARIABLE_NOT_DEFINED",
+ "EVALUATE_JAVASCRIPT",
+ "EVALUATE_JAVASCRIPT_CONTEXT",
+ "EXTRACT_VARIABLE",
+ "FORBIDDEN_URL",
+ "FRAME_DETACHED",
+ "INCONSISTENCIES",
+ "INTERNAL_ERROR",
+ "INVALID_TYPE_TEXT_DELAY",
+ "INVALID_URL",
+ "INVALID_VARIABLE_PATTERN",
+ "INVISIBLE_ELEMENT",
+ "LOCATE_ELEMENT",
+ "NAVIGATE_TO_LINK",
+ "OPEN_URL",
+ "PRESS_KEY",
+ "SERVER_CERTIFICATE",
+ "SELECT_OPTION",
+ "STEP_TIMEOUT",
+ "SUB_TEST_NOT_PASSED",
+ "TEST_TIMEOUT",
+ "TOO_MANY_HTTP_REQUESTS",
+ "UNAVAILABLE_BROWSER",
+ "UNKNOWN",
+ "UNSUPPORTED_AUTH_SCHEMA",
+ "UPLOAD_FILES_ELEMENT_TYPE",
+ "UPLOAD_FILES_DIALOG",
+ "UPLOAD_FILES_DYNAMIC_ELEMENT",
+ "UPLOAD_FILES_NAME",
+ }
+ API_REQUEST_FAILURE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ ASSERTION_FAILURE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ DOWNLOAD_FILE_TOO_LARGE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ ELEMENT_NOT_INTERACTABLE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ EMAIL_VARIABLE_NOT_DEFINED: ClassVar["SyntheticsBrowserTestFailureCode"]
+ EVALUATE_JAVASCRIPT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ EVALUATE_JAVASCRIPT_CONTEXT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ EXTRACT_VARIABLE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ FORBIDDEN_URL: ClassVar["SyntheticsBrowserTestFailureCode"]
+ FRAME_DETACHED: ClassVar["SyntheticsBrowserTestFailureCode"]
+ INCONSISTENCIES: ClassVar["SyntheticsBrowserTestFailureCode"]
+ INTERNAL_ERROR: ClassVar["SyntheticsBrowserTestFailureCode"]
+ INVALID_TYPE_TEXT_DELAY: ClassVar["SyntheticsBrowserTestFailureCode"]
+ INVALID_URL: ClassVar["SyntheticsBrowserTestFailureCode"]
+ INVALID_VARIABLE_PATTERN: ClassVar["SyntheticsBrowserTestFailureCode"]
+ INVISIBLE_ELEMENT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ LOCATE_ELEMENT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ NAVIGATE_TO_LINK: ClassVar["SyntheticsBrowserTestFailureCode"]
+ OPEN_URL: ClassVar["SyntheticsBrowserTestFailureCode"]
+ PRESS_KEY: ClassVar["SyntheticsBrowserTestFailureCode"]
+ SERVER_CERTIFICATE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ SELECT_OPTION: ClassVar["SyntheticsBrowserTestFailureCode"]
+ STEP_TIMEOUT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ SUB_TEST_NOT_PASSED: ClassVar["SyntheticsBrowserTestFailureCode"]
+ TEST_TIMEOUT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ TOO_MANY_HTTP_REQUESTS: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UNAVAILABLE_BROWSER: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UNKNOWN: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UNSUPPORTED_AUTH_SCHEMA: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UPLOAD_FILES_ELEMENT_TYPE: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UPLOAD_FILES_DIALOG: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UPLOAD_FILES_DYNAMIC_ELEMENT: ClassVar["SyntheticsBrowserTestFailureCode"]
+ UPLOAD_FILES_NAME: ClassVar["SyntheticsBrowserTestFailureCode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBrowserTestFailureCode.API_REQUEST_FAILURE = SyntheticsBrowserTestFailureCode("API_REQUEST_FAILURE")
+SyntheticsBrowserTestFailureCode.ASSERTION_FAILURE = SyntheticsBrowserTestFailureCode("ASSERTION_FAILURE")
+SyntheticsBrowserTestFailureCode.DOWNLOAD_FILE_TOO_LARGE = SyntheticsBrowserTestFailureCode("DOWNLOAD_FILE_TOO_LARGE")
+SyntheticsBrowserTestFailureCode.ELEMENT_NOT_INTERACTABLE = SyntheticsBrowserTestFailureCode("ELEMENT_NOT_INTERACTABLE")
+SyntheticsBrowserTestFailureCode.EMAIL_VARIABLE_NOT_DEFINED = SyntheticsBrowserTestFailureCode("EMAIL_VARIABLE_NOT_DEFINED")
+SyntheticsBrowserTestFailureCode.EVALUATE_JAVASCRIPT = SyntheticsBrowserTestFailureCode("EVALUATE_JAVASCRIPT")
+SyntheticsBrowserTestFailureCode.EVALUATE_JAVASCRIPT_CONTEXT = SyntheticsBrowserTestFailureCode("EVALUATE_JAVASCRIPT_CONTEXT")
+SyntheticsBrowserTestFailureCode.EXTRACT_VARIABLE = SyntheticsBrowserTestFailureCode("EXTRACT_VARIABLE")
+SyntheticsBrowserTestFailureCode.FORBIDDEN_URL = SyntheticsBrowserTestFailureCode("FORBIDDEN_URL")
+SyntheticsBrowserTestFailureCode.FRAME_DETACHED = SyntheticsBrowserTestFailureCode("FRAME_DETACHED")
+SyntheticsBrowserTestFailureCode.INCONSISTENCIES = SyntheticsBrowserTestFailureCode("INCONSISTENCIES")
+SyntheticsBrowserTestFailureCode.INTERNAL_ERROR = SyntheticsBrowserTestFailureCode("INTERNAL_ERROR")
+SyntheticsBrowserTestFailureCode.INVALID_TYPE_TEXT_DELAY = SyntheticsBrowserTestFailureCode("INVALID_TYPE_TEXT_DELAY")
+SyntheticsBrowserTestFailureCode.INVALID_URL = SyntheticsBrowserTestFailureCode("INVALID_URL")
+SyntheticsBrowserTestFailureCode.INVALID_VARIABLE_PATTERN = SyntheticsBrowserTestFailureCode("INVALID_VARIABLE_PATTERN")
+SyntheticsBrowserTestFailureCode.INVISIBLE_ELEMENT = SyntheticsBrowserTestFailureCode("INVISIBLE_ELEMENT")
+SyntheticsBrowserTestFailureCode.LOCATE_ELEMENT = SyntheticsBrowserTestFailureCode("LOCATE_ELEMENT")
+SyntheticsBrowserTestFailureCode.NAVIGATE_TO_LINK = SyntheticsBrowserTestFailureCode("NAVIGATE_TO_LINK")
+SyntheticsBrowserTestFailureCode.OPEN_URL = SyntheticsBrowserTestFailureCode("OPEN_URL")
+SyntheticsBrowserTestFailureCode.PRESS_KEY = SyntheticsBrowserTestFailureCode("PRESS_KEY")
+SyntheticsBrowserTestFailureCode.SERVER_CERTIFICATE = SyntheticsBrowserTestFailureCode("SERVER_CERTIFICATE")
+SyntheticsBrowserTestFailureCode.SELECT_OPTION = SyntheticsBrowserTestFailureCode("SELECT_OPTION")
+SyntheticsBrowserTestFailureCode.STEP_TIMEOUT = SyntheticsBrowserTestFailureCode("STEP_TIMEOUT")
+SyntheticsBrowserTestFailureCode.SUB_TEST_NOT_PASSED = SyntheticsBrowserTestFailureCode("SUB_TEST_NOT_PASSED")
+SyntheticsBrowserTestFailureCode.TEST_TIMEOUT = SyntheticsBrowserTestFailureCode("TEST_TIMEOUT")
+SyntheticsBrowserTestFailureCode.TOO_MANY_HTTP_REQUESTS = SyntheticsBrowserTestFailureCode("TOO_MANY_HTTP_REQUESTS")
+SyntheticsBrowserTestFailureCode.UNAVAILABLE_BROWSER = SyntheticsBrowserTestFailureCode("UNAVAILABLE_BROWSER")
+SyntheticsBrowserTestFailureCode.UNKNOWN = SyntheticsBrowserTestFailureCode("UNKNOWN")
+SyntheticsBrowserTestFailureCode.UNSUPPORTED_AUTH_SCHEMA = SyntheticsBrowserTestFailureCode("UNSUPPORTED_AUTH_SCHEMA")
+SyntheticsBrowserTestFailureCode.UPLOAD_FILES_ELEMENT_TYPE = SyntheticsBrowserTestFailureCode("UPLOAD_FILES_ELEMENT_TYPE")
+SyntheticsBrowserTestFailureCode.UPLOAD_FILES_DIALOG = SyntheticsBrowserTestFailureCode("UPLOAD_FILES_DIALOG")
+SyntheticsBrowserTestFailureCode.UPLOAD_FILES_DYNAMIC_ELEMENT = SyntheticsBrowserTestFailureCode("UPLOAD_FILES_DYNAMIC_ELEMENT")
+SyntheticsBrowserTestFailureCode.UPLOAD_FILES_NAME = SyntheticsBrowserTestFailureCode("UPLOAD_FILES_NAME")
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_result_data.py b/datadog_api_client/v1/model/synthetics_browser_test_result_data.py
new file mode 100644
index 0000000000..e2ddce2296
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_result_data.py
@@ -0,0 +1,131 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_device import SyntheticsDevice
+ from datadog_api_client.v1.model.synthetics_browser_test_result_failure import SyntheticsBrowserTestResultFailure
+ from datadog_api_client.v1.model.synthetics_step_detail import SyntheticsStepDetail
+
+class SyntheticsBrowserTestResultData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_device import SyntheticsDevice
+ from datadog_api_client.v1.model.synthetics_browser_test_result_failure import SyntheticsBrowserTestResultFailure
+ from datadog_api_client.v1.model.synthetics_step_detail import SyntheticsStepDetail
+ return {
+ "browser_type": (str,),
+ "browser_version": (str,),
+ "device": (SyntheticsDevice,),
+ "duration": (float,),
+ "error": (str,),
+ "failure": (SyntheticsBrowserTestResultFailure,),
+ "passed": (bool,),
+ "received_email_count": (int,),
+ "start_url": (str,),
+ "step_details": ([SyntheticsStepDetail],),
+ "thumbnails_bucket_key": (bool,),
+ "time_to_interactive": (float,),
+ }
+ attribute_map = {
+ "browser_type": "browserType",
+ "browser_version": "browserVersion",
+ "device": "device",
+ "duration": "duration",
+ "error": "error",
+ "failure": "failure",
+ "passed": "passed",
+ "received_email_count": "receivedEmailCount",
+ "start_url": "startUrl",
+ "step_details": "stepDetails",
+ "thumbnails_bucket_key": "thumbnailsBucketKey",
+ "time_to_interactive": "timeToInteractive",
+ }
+
+ def __init__(self_, browser_type: Union[str, UnsetType]=unset, browser_version: Union[str, UnsetType]=unset, device: Union[SyntheticsDevice, UnsetType]=unset, duration: Union[float, UnsetType]=unset, error: Union[str, UnsetType]=unset, failure: Union[SyntheticsBrowserTestResultFailure, UnsetType]=unset, passed: Union[bool, UnsetType]=unset, received_email_count: Union[int, UnsetType]=unset, start_url: Union[str, UnsetType]=unset, step_details: Union[List[SyntheticsStepDetail], UnsetType]=unset, thumbnails_bucket_key: Union[bool, UnsetType]=unset, time_to_interactive: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Object containing results for your Synthetic browser test.
+
+ :param browser_type: Type of browser device used for the browser test.
+ :type browser_type: str, optional
+
+ :param browser_version: Browser version used for the browser test.
+ :type browser_version: str, optional
+
+ :param device: Object describing the device used to perform the Synthetic test.
+ :type device: SyntheticsDevice, optional
+
+ :param duration: Global duration in second of the browser test.
+ :type duration: float, optional
+
+ :param error: Error returned for the browser test.
+ :type error: str, optional
+
+ :param failure: The browser test failure details.
+ :type failure: SyntheticsBrowserTestResultFailure, optional
+
+ :param passed: Whether or not the browser test was conducted.
+ :type passed: bool, optional
+
+ :param received_email_count: The amount of email received during the browser test.
+ :type received_email_count: int, optional
+
+ :param start_url: Starting URL for the browser test.
+ :type start_url: str, optional
+
+ :param step_details: Array containing the different browser test steps.
+ :type step_details: [SyntheticsStepDetail], optional
+
+ :param thumbnails_bucket_key: Whether or not a thumbnail is associated with the browser test.
+ :type thumbnails_bucket_key: bool, optional
+
+ :param time_to_interactive: Time in second to wait before the browser test starts after
+ reaching the start URL.
+ :type time_to_interactive: float, optional
+ """
+ if browser_type is not unset:
+ kwargs["browser_type"] = browser_type
+ if browser_version is not unset:
+ kwargs["browser_version"] = browser_version
+ if device is not unset:
+ kwargs["device"] = device
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if error is not unset:
+ kwargs["error"] = error
+ if failure is not unset:
+ kwargs["failure"] = failure
+ if passed is not unset:
+ kwargs["passed"] = passed
+ if received_email_count is not unset:
+ kwargs["received_email_count"] = received_email_count
+ if start_url is not unset:
+ kwargs["start_url"] = start_url
+ if step_details is not unset:
+ kwargs["step_details"] = step_details
+ if thumbnails_bucket_key is not unset:
+ kwargs["thumbnails_bucket_key"] = thumbnails_bucket_key
+ if time_to_interactive is not unset:
+ kwargs["time_to_interactive"] = time_to_interactive
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_result_failure.py b/datadog_api_client/v1/model/synthetics_browser_test_result_failure.py
new file mode 100644
index 0000000000..6c8cae3c7f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_result_failure.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_test_failure_code import SyntheticsBrowserTestFailureCode
+
+class SyntheticsBrowserTestResultFailure(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_test_failure_code import SyntheticsBrowserTestFailureCode
+ return {
+ "code": (SyntheticsBrowserTestFailureCode,),
+ "message": (str,),
+ }
+ attribute_map = {
+ "code": "code",
+ "message": "message",
+ }
+
+ def __init__(self_, code: Union[SyntheticsBrowserTestFailureCode, UnsetType]=unset, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The browser test failure details.
+
+ :param code: Error code that can be returned by a Synthetic test.
+ :type code: SyntheticsBrowserTestFailureCode, optional
+
+ :param message: The browser test error message.
+ :type message: str, optional
+ """
+ if code is not unset:
+ kwargs["code"] = code
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_result_full.py b/datadog_api_client/v1/model/synthetics_browser_test_result_full.py
new file mode 100644
index 0000000000..fc0052e836
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_result_full.py
@@ -0,0 +1,114 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_test_result_full_check import SyntheticsBrowserTestResultFullCheck
+ from datadog_api_client.v1.model.synthetics_browser_test_result_data import SyntheticsBrowserTestResultData
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsBrowserTestResultFull(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_test_result_full_check import SyntheticsBrowserTestResultFullCheck
+ from datadog_api_client.v1.model.synthetics_browser_test_result_data import SyntheticsBrowserTestResultData
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+ return {
+ "check": (SyntheticsBrowserTestResultFullCheck,),
+ "check_time": (float,),
+ "check_version": (int,),
+ "probe_dc": (str,),
+ "result": (SyntheticsBrowserTestResultData,),
+ "result_id": (str,),
+ "status": (SyntheticsTestMonitorStatus,),
+ }
+ attribute_map = {
+ "check": "check",
+ "check_time": "check_time",
+ "check_version": "check_version",
+ "probe_dc": "probe_dc",
+ "result": "result",
+ "result_id": "result_id",
+ "status": "status",
+ }
+
+ def __init__(self_, check: Union[SyntheticsBrowserTestResultFullCheck, UnsetType]=unset, check_time: Union[float, UnsetType]=unset, check_version: Union[int, UnsetType]=unset, probe_dc: Union[str, UnsetType]=unset, result: Union[SyntheticsBrowserTestResultData, UnsetType]=unset, result_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestMonitorStatus, UnsetType]=unset, **kwargs):
+ """
+ Object returned describing a browser test result.
+
+ :param check: Object describing the browser test configuration.
+ :type check: SyntheticsBrowserTestResultFullCheck, optional
+
+ :param check_time: When the browser test was conducted.
+ :type check_time: float, optional
+
+ :param check_version: Version of the browser test used.
+ :type check_version: int, optional
+
+ :param probe_dc: Location from which the browser test was performed.
+ :type probe_dc: str, optional
+
+ :param result: Object containing results for your Synthetic browser test.
+ :type result: SyntheticsBrowserTestResultData, optional
+
+ :param result_id: ID of the browser test result.
+ :type result_id: str, optional
+
+ :param status: The status of your Synthetic monitor.
+
+ * ``O`` for not triggered
+ * ``1`` for triggered
+ * ``2`` for no data
+ :type status: SyntheticsTestMonitorStatus, optional
+ """
+ if check is not unset:
+ kwargs["check"] = check
+ if check_time is not unset:
+ kwargs["check_time"] = check_time
+ if check_version is not unset:
+ kwargs["check_version"] = check_version
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+ if result is not unset:
+ kwargs["result"] = result
+ if result_id is not unset:
+ kwargs["result_id"] = result_id
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_result_full_check.py b/datadog_api_client/v1/model/synthetics_browser_test_result_full_check.py
new file mode 100644
index 0000000000..c83c834bb5
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_result_full_check.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsBrowserTestResultFullCheck(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ return {
+ "config": (SyntheticsTestConfig,),
+ }
+ attribute_map = {
+ "config": "config",
+ }
+
+ def __init__(self_, config: SyntheticsTestConfig, **kwargs):
+ """
+ Object describing the browser test configuration.
+
+ :param config: Configuration object for a Synthetic test.
+ :type config: SyntheticsTestConfig
+ """
+ super().__init__(kwargs)
+
+
+ self_.config = config
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_result_short.py b/datadog_api_client/v1/model/synthetics_browser_test_result_short.py
new file mode 100644
index 0000000000..f86af56023
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_result_short.py
@@ -0,0 +1,83 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_test_result_short_result import SyntheticsBrowserTestResultShortResult
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+
+class SyntheticsBrowserTestResultShort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_test_result_short_result import SyntheticsBrowserTestResultShortResult
+ from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+ return {
+ "check_time": (float,),
+ "probe_dc": (str,),
+ "result": (SyntheticsBrowserTestResultShortResult,),
+ "result_id": (str,),
+ "status": (SyntheticsTestMonitorStatus,),
+ }
+ attribute_map = {
+ "check_time": "check_time",
+ "probe_dc": "probe_dc",
+ "result": "result",
+ "result_id": "result_id",
+ "status": "status",
+ }
+
+ def __init__(self_, check_time: Union[float, UnsetType]=unset, probe_dc: Union[str, UnsetType]=unset, result: Union[SyntheticsBrowserTestResultShortResult, UnsetType]=unset, result_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestMonitorStatus, UnsetType]=unset, **kwargs):
+ """
+ Object with the results of a single Synthetic browser test.
+
+ :param check_time: Last time the browser test was performed.
+ :type check_time: float, optional
+
+ :param probe_dc: Location from which the Browser test was performed.
+ :type probe_dc: str, optional
+
+ :param result: Object with the result of the last browser test run.
+ :type result: SyntheticsBrowserTestResultShortResult, optional
+
+ :param result_id: ID of the browser test result.
+ :type result_id: str, optional
+
+ :param status: The status of your Synthetic monitor.
+
+ * ``O`` for not triggered
+ * ``1`` for triggered
+ * ``2`` for no data
+ :type status: SyntheticsTestMonitorStatus, optional
+ """
+ if check_time is not unset:
+ kwargs["check_time"] = check_time
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+ if result is not unset:
+ kwargs["result"] = result
+ if result_id is not unset:
+ kwargs["result_id"] = result_id
+ if status is not unset:
+ kwargs["status"] = status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_result_short_result.py b/datadog_api_client/v1/model/synthetics_browser_test_result_short_result.py
new file mode 100644
index 0000000000..d68b95d74b
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_result_short_result.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_device import SyntheticsDevice
+
+class SyntheticsBrowserTestResultShortResult(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_device import SyntheticsDevice
+ return {
+ "device": (SyntheticsDevice,),
+ "duration": (float,),
+ "error_count": (int,),
+ "step_count_completed": (int,),
+ "step_count_total": (int,),
+ }
+ attribute_map = {
+ "device": "device",
+ "duration": "duration",
+ "error_count": "errorCount",
+ "step_count_completed": "stepCountCompleted",
+ "step_count_total": "stepCountTotal",
+ }
+
+ def __init__(self_, device: Union[SyntheticsDevice, UnsetType]=unset, duration: Union[float, UnsetType]=unset, error_count: Union[int, UnsetType]=unset, step_count_completed: Union[int, UnsetType]=unset, step_count_total: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object with the result of the last browser test run.
+
+ :param device: Object describing the device used to perform the Synthetic test.
+ :type device: SyntheticsDevice, optional
+
+ :param duration: Length in milliseconds of the browser test run.
+ :type duration: float, optional
+
+ :param error_count: Amount of errors collected for a single browser test run.
+ :type error_count: int, optional
+
+ :param step_count_completed: Amount of browser test steps completed before failing.
+ :type step_count_completed: int, optional
+
+ :param step_count_total: Total amount of browser test steps.
+ :type step_count_total: int, optional
+ """
+ if device is not unset:
+ kwargs["device"] = device
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if error_count is not unset:
+ kwargs["error_count"] = error_count
+ if step_count_completed is not unset:
+ kwargs["step_count_completed"] = step_count_completed
+ if step_count_total is not unset:
+ kwargs["step_count_total"] = step_count_total
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_rum_settings.py b/datadog_api_client/v1/model/synthetics_browser_test_rum_settings.py
new file mode 100644
index 0000000000..66116bed8a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_rum_settings.py
@@ -0,0 +1,69 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsBrowserTestRumSettings(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "application_id": (str,),
+ "client_token_id": (int,),
+ "is_enabled": (bool,),
+ }
+ attribute_map = {
+ "application_id": "applicationId",
+ "client_token_id": "clientTokenId",
+ "is_enabled": "isEnabled",
+ }
+
+ def __init__(self_, is_enabled: bool, application_id: Union[str, UnsetType]=unset, client_token_id: Union[int, UnsetType]=unset, **kwargs):
+ """
+ The RUM data collection settings for the Synthetic browser test.
+ **Note:** There are 3 ways to format RUM settings:
+
+ ``{ isEnabled: false }``
+ RUM data is not collected.
+
+ ``{ isEnabled: true }``
+ RUM data is collected from the Synthetic test's default application.
+
+ ``{ isEnabled: true, applicationId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", clientTokenId: 12345 }``
+ RUM data is collected using the specified application.
+
+ :param application_id: RUM application ID used to collect RUM data for the browser test.
+ :type application_id: str, optional
+
+ :param client_token_id: RUM application API key ID used to collect RUM data for the browser test.
+ :type client_token_id: int, optional
+
+ :param is_enabled: Determines whether RUM data is collected during test runs.
+ :type is_enabled: bool
+ """
+ if application_id is not unset:
+ kwargs["application_id"] = application_id
+ if client_token_id is not unset:
+ kwargs["client_token_id"] = client_token_id
+ super().__init__(kwargs)
+
+
+ self_.is_enabled = is_enabled
diff --git a/datadog_api_client/v1/model/synthetics_browser_test_type.py b/datadog_api_client/v1/model/synthetics_browser_test_type.py
new file mode 100644
index 0000000000..3bf4275317
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_test_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBrowserTestType(ModelSimple):
+ """
+ Type of the Synthetic test, `browser`.
+
+ :param value: If omitted defaults to "browser". Must be one of ["browser"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "browser",
+ }
+ BROWSER: ClassVar["SyntheticsBrowserTestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBrowserTestType.BROWSER = SyntheticsBrowserTestType("browser")
diff --git a/datadog_api_client/v1/model/synthetics_browser_variable.py b/datadog_api_client/v1/model/synthetics_browser_variable.py
new file mode 100644
index 0000000000..b379c8f581
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_variable.py
@@ -0,0 +1,83 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_variable_type import SyntheticsBrowserVariableType
+
+class SyntheticsBrowserVariable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_variable_type import SyntheticsBrowserVariableType
+ return {
+ "example": (str,),
+ "id": (str,),
+ "name": (str,),
+ "pattern": (str,),
+ "secure": (bool,),
+ "type": (SyntheticsBrowserVariableType,),
+ }
+ attribute_map = {
+ "example": "example",
+ "id": "id",
+ "name": "name",
+ "pattern": "pattern",
+ "secure": "secure",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, type: SyntheticsBrowserVariableType, example: Union[str, UnsetType]=unset, id: Union[str, UnsetType]=unset, pattern: Union[str, UnsetType]=unset, secure: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Object defining a variable that can be used in your browser test.
+ See the `Recording Steps documentation `_.
+
+ :param example: Example for the variable.
+ :type example: str, optional
+
+ :param id: ID for the variable. Global variables require an ID.
+ :type id: str, optional
+
+ :param name: Name of the variable.
+ :type name: str
+
+ :param pattern: Pattern of the variable.
+ :type pattern: str, optional
+
+ :param secure: Determines whether or not the browser test variable is obfuscated. Can only be used with browser variables of type ``text``.
+ :type secure: bool, optional
+
+ :param type: Type of browser test variable.
+ :type type: SyntheticsBrowserVariableType
+ """
+ if example is not unset:
+ kwargs["example"] = example
+ if id is not unset:
+ kwargs["id"] = id
+ if pattern is not unset:
+ kwargs["pattern"] = pattern
+ if secure is not unset:
+ kwargs["secure"] = secure
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_browser_variable_type.py b/datadog_api_client/v1/model/synthetics_browser_variable_type.py
new file mode 100644
index 0000000000..8953c31665
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_browser_variable_type.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsBrowserVariableType(ModelSimple):
+ """
+ Type of browser test variable.
+
+ :param value: Must be one of ["element", "email", "global", "text"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "element",
+ "email",
+ "global",
+ "text",
+ }
+ ELEMENT: ClassVar["SyntheticsBrowserVariableType"]
+ EMAIL: ClassVar["SyntheticsBrowserVariableType"]
+ GLOBAL: ClassVar["SyntheticsBrowserVariableType"]
+ TEXT: ClassVar["SyntheticsBrowserVariableType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsBrowserVariableType.ELEMENT = SyntheticsBrowserVariableType("element")
+SyntheticsBrowserVariableType.EMAIL = SyntheticsBrowserVariableType("email")
+SyntheticsBrowserVariableType.GLOBAL = SyntheticsBrowserVariableType("global")
+SyntheticsBrowserVariableType.TEXT = SyntheticsBrowserVariableType("text")
diff --git a/datadog_api_client/v1/model/synthetics_check_type.py b/datadog_api_client/v1/model/synthetics_check_type.py
new file mode 100644
index 0000000000..b5562c1c84
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_check_type.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsCheckType(ModelSimple):
+ """
+ Type of assertion to apply in an API test.
+
+ :param value: Must be one of ["equals", "notEquals", "contains", "notContains", "startsWith", "notStartsWith", "greater", "lower", "greaterEquals", "lowerEquals", "matchRegex", "between", "isEmpty", "notIsEmpty"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "equals",
+ "notEquals",
+ "contains",
+ "notContains",
+ "startsWith",
+ "notStartsWith",
+ "greater",
+ "lower",
+ "greaterEquals",
+ "lowerEquals",
+ "matchRegex",
+ "between",
+ "isEmpty",
+ "notIsEmpty",
+ }
+ EQUALS: ClassVar["SyntheticsCheckType"]
+ NOT_EQUALS: ClassVar["SyntheticsCheckType"]
+ CONTAINS: ClassVar["SyntheticsCheckType"]
+ NOT_CONTAINS: ClassVar["SyntheticsCheckType"]
+ STARTS_WITH: ClassVar["SyntheticsCheckType"]
+ NOT_STARTS_WITH: ClassVar["SyntheticsCheckType"]
+ GREATER: ClassVar["SyntheticsCheckType"]
+ LOWER: ClassVar["SyntheticsCheckType"]
+ GREATER_EQUALS: ClassVar["SyntheticsCheckType"]
+ LOWER_EQUALS: ClassVar["SyntheticsCheckType"]
+ MATCH_REGEX: ClassVar["SyntheticsCheckType"]
+ BETWEEN: ClassVar["SyntheticsCheckType"]
+ IS_EMPTY: ClassVar["SyntheticsCheckType"]
+ NOT_IS_EMPTY: ClassVar["SyntheticsCheckType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsCheckType.EQUALS = SyntheticsCheckType("equals")
+SyntheticsCheckType.NOT_EQUALS = SyntheticsCheckType("notEquals")
+SyntheticsCheckType.CONTAINS = SyntheticsCheckType("contains")
+SyntheticsCheckType.NOT_CONTAINS = SyntheticsCheckType("notContains")
+SyntheticsCheckType.STARTS_WITH = SyntheticsCheckType("startsWith")
+SyntheticsCheckType.NOT_STARTS_WITH = SyntheticsCheckType("notStartsWith")
+SyntheticsCheckType.GREATER = SyntheticsCheckType("greater")
+SyntheticsCheckType.LOWER = SyntheticsCheckType("lower")
+SyntheticsCheckType.GREATER_EQUALS = SyntheticsCheckType("greaterEquals")
+SyntheticsCheckType.LOWER_EQUALS = SyntheticsCheckType("lowerEquals")
+SyntheticsCheckType.MATCH_REGEX = SyntheticsCheckType("matchRegex")
+SyntheticsCheckType.BETWEEN = SyntheticsCheckType("between")
+SyntheticsCheckType.IS_EMPTY = SyntheticsCheckType("isEmpty")
+SyntheticsCheckType.NOT_IS_EMPTY = SyntheticsCheckType("notIsEmpty")
diff --git a/datadog_api_client/v1/model/synthetics_ci_batch_metadata.py b/datadog_api_client/v1/model/synthetics_ci_batch_metadata.py
new file mode 100644
index 0000000000..ed8fd8087f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_batch_metadata.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_ci import SyntheticsCIBatchMetadataCI
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_git import SyntheticsCIBatchMetadataGit
+
+class SyntheticsCIBatchMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_ci import SyntheticsCIBatchMetadataCI
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_git import SyntheticsCIBatchMetadataGit
+ return {
+ "ci": (SyntheticsCIBatchMetadataCI,),
+ "git": (SyntheticsCIBatchMetadataGit,),
+ }
+ attribute_map = {
+ "ci": "ci",
+ "git": "git",
+ }
+
+ def __init__(self_, ci: Union[SyntheticsCIBatchMetadataCI, UnsetType]=unset, git: Union[SyntheticsCIBatchMetadataGit, UnsetType]=unset, **kwargs):
+ """
+ Metadata for the Synthetic tests run.
+
+ :param ci: Description of the CI provider.
+ :type ci: SyntheticsCIBatchMetadataCI, optional
+
+ :param git: Git information.
+ :type git: SyntheticsCIBatchMetadataGit, optional
+ """
+ if ci is not unset:
+ kwargs["ci"] = ci
+ if git is not unset:
+ kwargs["git"] = git
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ci_batch_metadata_ci.py b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_ci.py
new file mode 100644
index 0000000000..d62ecc8a91
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_ci.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_pipeline import SyntheticsCIBatchMetadataPipeline
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_provider import SyntheticsCIBatchMetadataProvider
+
+class SyntheticsCIBatchMetadataCI(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_pipeline import SyntheticsCIBatchMetadataPipeline
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata_provider import SyntheticsCIBatchMetadataProvider
+ return {
+ "pipeline": (SyntheticsCIBatchMetadataPipeline,),
+ "provider": (SyntheticsCIBatchMetadataProvider,),
+ }
+ attribute_map = {
+ "pipeline": "pipeline",
+ "provider": "provider",
+ }
+
+ def __init__(self_, pipeline: Union[SyntheticsCIBatchMetadataPipeline, UnsetType]=unset, provider: Union[SyntheticsCIBatchMetadataProvider, UnsetType]=unset, **kwargs):
+ """
+ Description of the CI provider.
+
+ :param pipeline: Description of the CI pipeline.
+ :type pipeline: SyntheticsCIBatchMetadataPipeline, optional
+
+ :param provider: Description of the CI provider.
+ :type provider: SyntheticsCIBatchMetadataProvider, optional
+ """
+ if pipeline is not unset:
+ kwargs["pipeline"] = pipeline
+ if provider is not unset:
+ kwargs["provider"] = provider
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ci_batch_metadata_git.py b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_git.py
new file mode 100644
index 0000000000..1a8418000a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_git.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsCIBatchMetadataGit(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "branch": (str,),
+ "commit_sha": (str,),
+ }
+ attribute_map = {
+ "branch": "branch",
+ "commit_sha": "commitSha",
+ }
+
+ def __init__(self_, branch: Union[str, UnsetType]=unset, commit_sha: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Git information.
+
+ :param branch: Branch name.
+ :type branch: str, optional
+
+ :param commit_sha: The commit SHA.
+ :type commit_sha: str, optional
+ """
+ if branch is not unset:
+ kwargs["branch"] = branch
+ if commit_sha is not unset:
+ kwargs["commit_sha"] = commit_sha
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ci_batch_metadata_pipeline.py b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_pipeline.py
new file mode 100644
index 0000000000..16eb3b34b8
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_pipeline.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsCIBatchMetadataPipeline(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "url": (str,),
+ }
+ attribute_map = {
+ "url": "url",
+ }
+
+ def __init__(self_, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Description of the CI pipeline.
+
+ :param url: URL of the pipeline.
+ :type url: str, optional
+ """
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ci_batch_metadata_provider.py b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_provider.py
new file mode 100644
index 0000000000..45074c8523
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_batch_metadata_provider.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsCIBatchMetadataProvider(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "name": (str,),
+ }
+ attribute_map = {
+ "name": "name",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Description of the CI provider.
+
+ :param name: Name of the CI provider.
+ :type name: str, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ci_test.py b/datadog_api_client/v1/model/synthetics_ci_test.py
new file mode 100644
index 0000000000..97350e2a5f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_test.py
@@ -0,0 +1,159 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth import SyntheticsBasicAuth
+ from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsCITest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth import SyntheticsBasicAuth
+ from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ return {
+ "allow_insecure_certificates": (bool,),
+ "basic_auth": (SyntheticsBasicAuth,),
+ "body": (str,),
+ "body_type": (str,),
+ "cookies": (str,),
+ "device_ids": ([str],),
+ "follow_redirects": (bool,),
+ "headers": (SyntheticsTestHeaders,),
+ "locations": ([str],),
+ "metadata": (SyntheticsCIBatchMetadata,),
+ "public_id": (str,),
+ "retry": (SyntheticsTestOptionsRetry,),
+ "start_url": (str,),
+ "variables": ({str: (str,)},),
+ "version": (int,),
+ }
+ attribute_map = {
+ "allow_insecure_certificates": "allowInsecureCertificates",
+ "basic_auth": "basicAuth",
+ "body": "body",
+ "body_type": "bodyType",
+ "cookies": "cookies",
+ "device_ids": "deviceIds",
+ "follow_redirects": "followRedirects",
+ "headers": "headers",
+ "locations": "locations",
+ "metadata": "metadata",
+ "public_id": "public_id",
+ "retry": "retry",
+ "start_url": "startUrl",
+ "variables": "variables",
+ "version": "version",
+ }
+
+ def __init__(self_, public_id: str, allow_insecure_certificates: Union[bool, UnsetType]=unset, basic_auth: Union[SyntheticsBasicAuth, SyntheticsBasicAuthWeb, SyntheticsBasicAuthSigv4, SyntheticsBasicAuthNTLM, SyntheticsBasicAuthDigest, SyntheticsBasicAuthOauthClient, SyntheticsBasicAuthOauthROP, SyntheticsBasicAuthJWT, UnsetType]=unset, body: Union[str, UnsetType]=unset, body_type: Union[str, UnsetType]=unset, cookies: Union[str, UnsetType]=unset, device_ids: Union[List[str], UnsetType]=unset, follow_redirects: Union[bool, UnsetType]=unset, headers: Union[SyntheticsTestHeaders, UnsetType]=unset, locations: Union[List[str], UnsetType]=unset, metadata: Union[SyntheticsCIBatchMetadata, UnsetType]=unset, retry: Union[SyntheticsTestOptionsRetry, UnsetType]=unset, start_url: Union[str, UnsetType]=unset, variables: Union[Dict[str, str], UnsetType]=unset, version: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Configuration for Continuous Testing.
+
+ :param allow_insecure_certificates: Disable certificate checks in API tests.
+ :type allow_insecure_certificates: bool, optional
+
+ :param basic_auth: Object to handle basic authentication when performing the test.
+ :type basic_auth: SyntheticsBasicAuth, optional
+
+ :param body: Body to include in the test.
+ :type body: str, optional
+
+ :param body_type: Type of the data sent in a Synthetic API test.
+ :type body_type: str, optional
+
+ :param cookies: Cookies for the request.
+ :type cookies: str, optional
+
+ :param device_ids: For browser test, array with the different device IDs used to run the test.
+ :type device_ids: [str], optional
+
+ :param follow_redirects: For API HTTP test, whether or not the test should follow redirects.
+ :type follow_redirects: bool, optional
+
+ :param headers: Headers to include when performing the test.
+ :type headers: SyntheticsTestHeaders, optional
+
+ :param locations: Array of locations used to run the test.
+ :type locations: [str], optional
+
+ :param metadata: Metadata for the Synthetic tests run.
+ :type metadata: SyntheticsCIBatchMetadata, optional
+
+ :param public_id: The public ID of the Synthetic test to trigger.
+ :type public_id: str
+
+ :param retry: Object describing the retry strategy to apply to a Synthetic test.
+ :type retry: SyntheticsTestOptionsRetry, optional
+
+ :param start_url: Starting URL for the browser test.
+ :type start_url: str, optional
+
+ :param variables: Variables to replace in the test.
+ :type variables: {str: (str,)}, optional
+
+ :param version: The version number of the Synthetic test version to trigger.
+ :type version: int, optional
+ """
+ if allow_insecure_certificates is not unset:
+ kwargs["allow_insecure_certificates"] = allow_insecure_certificates
+ if basic_auth is not unset:
+ kwargs["basic_auth"] = basic_auth
+ if body is not unset:
+ kwargs["body"] = body
+ if body_type is not unset:
+ kwargs["body_type"] = body_type
+ if cookies is not unset:
+ kwargs["cookies"] = cookies
+ if device_ids is not unset:
+ kwargs["device_ids"] = device_ids
+ if follow_redirects is not unset:
+ kwargs["follow_redirects"] = follow_redirects
+ if headers is not unset:
+ kwargs["headers"] = headers
+ if locations is not unset:
+ kwargs["locations"] = locations
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if retry is not unset:
+ kwargs["retry"] = retry
+ if start_url is not unset:
+ kwargs["start_url"] = start_url
+ if variables is not unset:
+ kwargs["variables"] = variables
+ if version is not unset:
+ kwargs["version"] = version
+ super().__init__(kwargs)
+
+
+ self_.public_id = public_id
diff --git a/datadog_api_client/v1/model/synthetics_ci_test_body.py b/datadog_api_client/v1/model/synthetics_ci_test_body.py
new file mode 100644
index 0000000000..88f02a9639
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ci_test_body.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ci_test import SyntheticsCITest
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsCITestBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ci_test import SyntheticsCITest
+ return {
+ "tests": ([SyntheticsCITest],),
+ }
+ attribute_map = {
+ "tests": "tests",
+ }
+
+ def __init__(self_, tests: Union[List[SyntheticsCITest], UnsetType]=unset, **kwargs):
+ """
+ Object describing the synthetics tests to trigger.
+
+ :param tests: List of Synthetic tests with overrides.
+ :type tests: [SyntheticsCITest], optional
+ """
+ if tests is not unset:
+ kwargs["tests"] = tests
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_config_variable.py b/datadog_api_client/v1/model/synthetics_config_variable.py
new file mode 100644
index 0000000000..b7fdd12210
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_config_variable.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_config_variable_type import SyntheticsConfigVariableType
+
+class SyntheticsConfigVariable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_config_variable_type import SyntheticsConfigVariableType
+ return {
+ "example": (str,),
+ "id": (str,),
+ "name": (str,),
+ "pattern": (str,),
+ "secure": (bool,),
+ "type": (SyntheticsConfigVariableType,),
+ }
+ attribute_map = {
+ "example": "example",
+ "id": "id",
+ "name": "name",
+ "pattern": "pattern",
+ "secure": "secure",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, type: SyntheticsConfigVariableType, example: Union[str, UnsetType]=unset, id: Union[str, UnsetType]=unset, pattern: Union[str, UnsetType]=unset, secure: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Object defining a variable that can be used in your test configuration.
+
+ :param example: Example for the variable.
+ :type example: str, optional
+
+ :param id: ID of the variable for global variables.
+ :type id: str, optional
+
+ :param name: Name of the variable.
+ :type name: str
+
+ :param pattern: Pattern of the variable.
+ :type pattern: str, optional
+
+ :param secure: Whether the value of this variable will be obfuscated in test results. Only for config variables of type ``text``.
+ :type secure: bool, optional
+
+ :param type: Type of the configuration variable.
+ :type type: SyntheticsConfigVariableType
+ """
+ if example is not unset:
+ kwargs["example"] = example
+ if id is not unset:
+ kwargs["id"] = id
+ if pattern is not unset:
+ kwargs["pattern"] = pattern
+ if secure is not unset:
+ kwargs["secure"] = secure
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_config_variable_type.py b/datadog_api_client/v1/model/synthetics_config_variable_type.py
new file mode 100644
index 0000000000..cf7f03f704
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_config_variable_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsConfigVariableType(ModelSimple):
+ """
+ Type of the configuration variable.
+
+ :param value: Must be one of ["global", "text", "email"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "global",
+ "text",
+ "email",
+ }
+ GLOBAL: ClassVar["SyntheticsConfigVariableType"]
+ TEXT: ClassVar["SyntheticsConfigVariableType"]
+ EMAIL: ClassVar["SyntheticsConfigVariableType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsConfigVariableType.GLOBAL = SyntheticsConfigVariableType("global")
+SyntheticsConfigVariableType.TEXT = SyntheticsConfigVariableType("text")
+SyntheticsConfigVariableType.EMAIL = SyntheticsConfigVariableType("email")
diff --git a/datadog_api_client/v1/model/synthetics_core_web_vitals.py b/datadog_api_client/v1/model/synthetics_core_web_vitals.py
new file mode 100644
index 0000000000..da76e82152
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_core_web_vitals.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsCoreWebVitals(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "_cls": (float,),
+ "lcp": (float,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "_cls": "cls",
+ "lcp": "lcp",
+ "url": "url",
+ }
+
+ def __init__(self_, _cls: Union[float, UnsetType]=unset, lcp: Union[float, UnsetType]=unset, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Core Web Vitals attached to a browser test step.
+
+ :param _cls: Cumulative Layout Shift.
+ :type _cls: float, optional
+
+ :param lcp: Largest Contentful Paint in milliseconds.
+ :type lcp: float, optional
+
+ :param url: URL attached to the metrics.
+ :type url: str, optional
+ """
+ if _cls is not unset:
+ kwargs["_cls"] = _cls
+ if lcp is not unset:
+ kwargs["lcp"] = lcp
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_delete_tests_payload.py b/datadog_api_client/v1/model/synthetics_delete_tests_payload.py
new file mode 100644
index 0000000000..383f020349
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_delete_tests_payload.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsDeleteTestsPayload(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "force_delete_dependencies": (bool,),
+ "public_ids": ([str],),
+ }
+ attribute_map = {
+ "force_delete_dependencies": "force_delete_dependencies",
+ "public_ids": "public_ids",
+ }
+
+ def __init__(self_, force_delete_dependencies: Union[bool, UnsetType]=unset, public_ids: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ A JSON list of the ID or IDs of the Synthetic tests that you want
+ to delete.
+
+ :param force_delete_dependencies: Delete the Synthetic test even if it's referenced by other resources
+ (for example, SLOs and composite monitors).
+ :type force_delete_dependencies: bool, optional
+
+ :param public_ids: An array of Synthetic test IDs you want to delete.
+ :type public_ids: [str], optional
+ """
+ if force_delete_dependencies is not unset:
+ kwargs["force_delete_dependencies"] = force_delete_dependencies
+ if public_ids is not unset:
+ kwargs["public_ids"] = public_ids
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_delete_tests_response.py b/datadog_api_client/v1/model/synthetics_delete_tests_response.py
new file mode 100644
index 0000000000..a0eb464a0b
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_delete_tests_response.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_deleted_test import SyntheticsDeletedTest
+
+class SyntheticsDeleteTestsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_deleted_test import SyntheticsDeletedTest
+ return {
+ "deleted_tests": ([SyntheticsDeletedTest],),
+ }
+ attribute_map = {
+ "deleted_tests": "deleted_tests",
+ }
+
+ def __init__(self_, deleted_tests: Union[List[SyntheticsDeletedTest], UnsetType]=unset, **kwargs):
+ """
+ Response object for deleting Synthetic tests.
+
+ :param deleted_tests: Array of objects containing a deleted Synthetic test ID with
+ the associated deletion timestamp.
+ :type deleted_tests: [SyntheticsDeletedTest], optional
+ """
+ if deleted_tests is not unset:
+ kwargs["deleted_tests"] = deleted_tests
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_deleted_test.py b/datadog_api_client/v1/model/synthetics_deleted_test.py
new file mode 100644
index 0000000000..0d095a55fc
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_deleted_test.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsDeletedTest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "deleted_at": (datetime,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "deleted_at": "deleted_at",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, deleted_at: Union[datetime, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object containing a deleted Synthetic test ID with the associated
+ deletion timestamp.
+
+ :param deleted_at: Deletion timestamp of the Synthetic test ID.
+ :type deleted_at: datetime, optional
+
+ :param public_id: The Synthetic test ID deleted.
+ :type public_id: str, optional
+ """
+ if deleted_at is not unset:
+ kwargs["deleted_at"] = deleted_at
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_device.py b/datadog_api_client/v1/model/synthetics_device.py
new file mode 100644
index 0000000000..df5ceeaba3
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_device.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsDevice(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "height": (int,),
+ "id": (str,),
+ "is_mobile": (bool,),
+ "name": (str,),
+ "width": (int,),
+ }
+ attribute_map = {
+ "height": "height",
+ "id": "id",
+ "is_mobile": "isMobile",
+ "name": "name",
+ "width": "width",
+ }
+
+ def __init__(self_, height: int, id: str, name: str, width: int, is_mobile: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Object describing the device used to perform the Synthetic test.
+
+ :param height: Screen height of the device.
+ :type height: int
+
+ :param id: The device ID.
+ :type id: str
+
+ :param is_mobile: Whether or not the device is a mobile.
+ :type is_mobile: bool, optional
+
+ :param name: The device name.
+ :type name: str
+
+ :param width: Screen width of the device.
+ :type width: int
+ """
+ if is_mobile is not unset:
+ kwargs["is_mobile"] = is_mobile
+ super().__init__(kwargs)
+
+
+ self_.height = height
+ self_.id = id
+ self_.name = name
+ self_.width = width
diff --git a/datadog_api_client/v1/model/synthetics_fetch_uptimes_payload.py b/datadog_api_client/v1/model/synthetics_fetch_uptimes_payload.py
new file mode 100644
index 0000000000..7b66906632
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_fetch_uptimes_payload.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsFetchUptimesPayload(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "from_ts": (int,),
+ "public_ids": ([str],),
+ "to_ts": (int,),
+ }
+ attribute_map = {
+ "from_ts": "from_ts",
+ "public_ids": "public_ids",
+ "to_ts": "to_ts",
+ }
+
+ def __init__(self_, from_ts: int, public_ids: List[str], to_ts: int, **kwargs):
+ """
+ Object containing IDs of Synthetic tests and a timeframe.
+
+ :param from_ts: Timestamp in seconds (Unix epoch) for the start of uptime.
+ :type from_ts: int
+
+ :param public_ids: An array of Synthetic test IDs you want uptimes for.
+ :type public_ids: [str]
+
+ :param to_ts: Timestamp in seconds (Unix epoch) for the end of uptime.
+ :type to_ts: int
+ """
+ super().__init__(kwargs)
+
+
+ self_.from_ts = from_ts
+ self_.public_ids = public_ids
+ self_.to_ts = to_ts
diff --git a/datadog_api_client/v1/model/synthetics_get_api_test_latest_results_response.py b/datadog_api_client/v1/model/synthetics_get_api_test_latest_results_response.py
new file mode 100644
index 0000000000..c68b483dac
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_get_api_test_latest_results_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_api_test_result_short import SyntheticsAPITestResultShort
+
+class SyntheticsGetAPITestLatestResultsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_api_test_result_short import SyntheticsAPITestResultShort
+ return {
+ "last_timestamp_fetched": (int,),
+ "results": ([SyntheticsAPITestResultShort],),
+ }
+ attribute_map = {
+ "last_timestamp_fetched": "last_timestamp_fetched",
+ "results": "results",
+ }
+
+ def __init__(self_, last_timestamp_fetched: Union[int, UnsetType]=unset, results: Union[List[SyntheticsAPITestResultShort], UnsetType]=unset, **kwargs):
+ """
+ Object with the latest Synthetic API test run.
+
+ :param last_timestamp_fetched: Timestamp of the latest API test run.
+ :type last_timestamp_fetched: int, optional
+
+ :param results: Result of the latest API test run.
+ :type results: [SyntheticsAPITestResultShort], optional
+ """
+ if last_timestamp_fetched is not unset:
+ kwargs["last_timestamp_fetched"] = last_timestamp_fetched
+ if results is not unset:
+ kwargs["results"] = results
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_get_browser_test_latest_results_response.py b/datadog_api_client/v1/model/synthetics_get_browser_test_latest_results_response.py
new file mode 100644
index 0000000000..ed23f1fa5d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_get_browser_test_latest_results_response.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_test_result_short import SyntheticsBrowserTestResultShort
+
+class SyntheticsGetBrowserTestLatestResultsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_test_result_short import SyntheticsBrowserTestResultShort
+ return {
+ "last_timestamp_fetched": (int,),
+ "results": ([SyntheticsBrowserTestResultShort],),
+ }
+ attribute_map = {
+ "last_timestamp_fetched": "last_timestamp_fetched",
+ "results": "results",
+ }
+
+ def __init__(self_, last_timestamp_fetched: Union[int, UnsetType]=unset, results: Union[List[SyntheticsBrowserTestResultShort], UnsetType]=unset, **kwargs):
+ """
+ Object with the latest Synthetic browser test run.
+
+ :param last_timestamp_fetched: Timestamp of the latest browser test run.
+ :type last_timestamp_fetched: int, optional
+
+ :param results: Result of the latest browser test run.
+ :type results: [SyntheticsBrowserTestResultShort], optional
+ """
+ if last_timestamp_fetched is not unset:
+ kwargs["last_timestamp_fetched"] = last_timestamp_fetched
+ if results is not unset:
+ kwargs["results"] = results
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_global_variable.py b/datadog_api_client/v1/model/synthetics_global_variable.py
new file mode 100644
index 0000000000..b2d1636211
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_global_variable_attributes import SyntheticsGlobalVariableAttributes
+ from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options import SyntheticsGlobalVariableParseTestOptions
+ from datadog_api_client.v1.model.synthetics_global_variable_value import SyntheticsGlobalVariableValue
+
+class SyntheticsGlobalVariable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_global_variable_attributes import SyntheticsGlobalVariableAttributes
+ from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options import SyntheticsGlobalVariableParseTestOptions
+ from datadog_api_client.v1.model.synthetics_global_variable_value import SyntheticsGlobalVariableValue
+ return {
+ "attributes": (SyntheticsGlobalVariableAttributes,),
+ "description": (str,),
+ "id": (str,),
+ "is_fido": (bool,),
+ "is_totp": (bool,),
+ "name": (str,),
+ "parse_test_options": (SyntheticsGlobalVariableParseTestOptions,),
+ "parse_test_public_id": (str,),
+ "tags": ([str],),
+ "value": (SyntheticsGlobalVariableValue,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "description": "description",
+ "id": "id",
+ "is_fido": "is_fido",
+ "is_totp": "is_totp",
+ "name": "name",
+ "parse_test_options": "parse_test_options",
+ "parse_test_public_id": "parse_test_public_id",
+ "tags": "tags",
+ "value": "value",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, description: str, name: str, tags: List[str], value: SyntheticsGlobalVariableValue, attributes: Union[SyntheticsGlobalVariableAttributes, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_fido: Union[bool, UnsetType]=unset, is_totp: Union[bool, UnsetType]=unset, parse_test_options: Union[SyntheticsGlobalVariableParseTestOptions, UnsetType]=unset, parse_test_public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Synthetic global variable.
+
+ :param attributes: Attributes of the global variable.
+ :type attributes: SyntheticsGlobalVariableAttributes, optional
+
+ :param description: Description of the global variable.
+ :type description: str
+
+ :param id: Unique identifier of the global variable.
+ :type id: str, optional
+
+ :param is_fido: Determines if the global variable is a FIDO variable.
+ :type is_fido: bool, optional
+
+ :param is_totp: Determines if the global variable is a TOTP/MFA variable.
+ :type is_totp: bool, optional
+
+ :param name: Name of the global variable. Unique across Synthetic global variables.
+ :type name: str
+
+ :param parse_test_options: Parser options to use for retrieving a Synthetic global variable from a Synthetic test. Used in conjunction with ``parse_test_public_id``.
+ :type parse_test_options: SyntheticsGlobalVariableParseTestOptions, optional
+
+ :param parse_test_public_id: A Synthetic test ID to use as a test to generate the variable value.
+ :type parse_test_public_id: str, optional
+
+ :param tags: Tags of the global variable.
+ :type tags: [str]
+
+ :param value: Value of the global variable.
+ :type value: SyntheticsGlobalVariableValue
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if id is not unset:
+ kwargs["id"] = id
+ if is_fido is not unset:
+ kwargs["is_fido"] = is_fido
+ if is_totp is not unset:
+ kwargs["is_totp"] = is_totp
+ if parse_test_options is not unset:
+ kwargs["parse_test_options"] = parse_test_options
+ if parse_test_public_id is not unset:
+ kwargs["parse_test_public_id"] = parse_test_public_id
+ super().__init__(kwargs)
+
+
+ self_.description = description
+ self_.name = name
+ self_.tags = tags
+ self_.value = value
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_attributes.py b/datadog_api_client/v1/model/synthetics_global_variable_attributes.py
new file mode 100644
index 0000000000..a2c75f459e
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_attributes.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+
+class SyntheticsGlobalVariableAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+ return {
+ "restricted_roles": (SyntheticsRestrictedRoles,),
+ }
+ attribute_map = {
+ "restricted_roles": "restricted_roles",
+ }
+
+ def __init__(self_, restricted_roles: Union[SyntheticsRestrictedRoles, UnsetType]=unset, **kwargs):
+ """
+ Attributes of the global variable.
+
+ :param restricted_roles: A list of role identifiers that can be pulled from the Roles API, for restricting read and write access. This field is deprecated. Use the restriction policies API to manage permissions. **Deprecated**.
+ :type restricted_roles: SyntheticsRestrictedRoles, optional
+ """
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_options.py b/datadog_api_client/v1/model/synthetics_global_variable_options.py
new file mode 100644
index 0000000000..75ef5e7531
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_options.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_global_variable_totp_parameters import SyntheticsGlobalVariableTOTPParameters
+
+class SyntheticsGlobalVariableOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_global_variable_totp_parameters import SyntheticsGlobalVariableTOTPParameters
+ return {
+ "totp_parameters": (SyntheticsGlobalVariableTOTPParameters,),
+ }
+ attribute_map = {
+ "totp_parameters": "totp_parameters",
+ }
+
+ def __init__(self_, totp_parameters: Union[SyntheticsGlobalVariableTOTPParameters, UnsetType]=unset, **kwargs):
+ """
+ Options for the Global Variable for MFA.
+
+ :param totp_parameters: Parameters for the TOTP/MFA variable
+ :type totp_parameters: SyntheticsGlobalVariableTOTPParameters, optional
+ """
+ if totp_parameters is not unset:
+ kwargs["totp_parameters"] = totp_parameters
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_parse_test_options.py b/datadog_api_client/v1/model/synthetics_global_variable_parse_test_options.py
new file mode 100644
index 0000000000..ba5a09a64b
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_parse_test_options.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_variable_parser import SyntheticsVariableParser
+ from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options_type import SyntheticsGlobalVariableParseTestOptionsType
+
+class SyntheticsGlobalVariableParseTestOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_variable_parser import SyntheticsVariableParser
+ from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options_type import SyntheticsGlobalVariableParseTestOptionsType
+ return {
+ "field": (str,),
+ "local_variable_name": (str,),
+ "parser": (SyntheticsVariableParser,),
+ "type": (SyntheticsGlobalVariableParseTestOptionsType,),
+ }
+ attribute_map = {
+ "field": "field",
+ "local_variable_name": "localVariableName",
+ "parser": "parser",
+ "type": "type",
+ }
+
+ def __init__(self_, type: SyntheticsGlobalVariableParseTestOptionsType, field: Union[str, UnsetType]=unset, local_variable_name: Union[str, UnsetType]=unset, parser: Union[SyntheticsVariableParser, UnsetType]=unset, **kwargs):
+ """
+ Parser options to use for retrieving a Synthetic global variable from a Synthetic test. Used in conjunction with ``parse_test_public_id``.
+
+ :param field: When type is ``http_header`` , name of the header to use to extract the value.
+ :type field: str, optional
+
+ :param local_variable_name: When type is ``local_variable`` , name of the local variable to use to extract the value.
+ :type local_variable_name: str, optional
+
+ :param parser: Details of the parser to use for the global variable.
+ :type parser: SyntheticsVariableParser, optional
+
+ :param type: Type of value to extract from a test for a Synthetic global variable.
+ :type type: SyntheticsGlobalVariableParseTestOptionsType
+ """
+ if field is not unset:
+ kwargs["field"] = field
+ if local_variable_name is not unset:
+ kwargs["local_variable_name"] = local_variable_name
+ if parser is not unset:
+ kwargs["parser"] = parser
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_parse_test_options_type.py b/datadog_api_client/v1/model/synthetics_global_variable_parse_test_options_type.py
new file mode 100644
index 0000000000..e8ff300561
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_parse_test_options_type.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsGlobalVariableParseTestOptionsType(ModelSimple):
+ """
+ Type of value to extract from a test for a Synthetic global variable.
+
+ :param value: Must be one of ["http_body", "http_header", "http_status_code", "local_variable"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "http_body",
+ "http_header",
+ "http_status_code",
+ "local_variable",
+ }
+ HTTP_BODY: ClassVar["SyntheticsGlobalVariableParseTestOptionsType"]
+ HTTP_HEADER: ClassVar["SyntheticsGlobalVariableParseTestOptionsType"]
+ HTTP_STATUS_CODE: ClassVar["SyntheticsGlobalVariableParseTestOptionsType"]
+ LOCAL_VARIABLE: ClassVar["SyntheticsGlobalVariableParseTestOptionsType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsGlobalVariableParseTestOptionsType.HTTP_BODY = SyntheticsGlobalVariableParseTestOptionsType("http_body")
+SyntheticsGlobalVariableParseTestOptionsType.HTTP_HEADER = SyntheticsGlobalVariableParseTestOptionsType("http_header")
+SyntheticsGlobalVariableParseTestOptionsType.HTTP_STATUS_CODE = SyntheticsGlobalVariableParseTestOptionsType("http_status_code")
+SyntheticsGlobalVariableParseTestOptionsType.LOCAL_VARIABLE = SyntheticsGlobalVariableParseTestOptionsType("local_variable")
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_parser_type.py b/datadog_api_client/v1/model/synthetics_global_variable_parser_type.py
new file mode 100644
index 0000000000..0422b5b640
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_parser_type.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsGlobalVariableParserType(ModelSimple):
+ """
+ Type of parser for a Synthetic global variable from a synthetics test.
+
+ :param value: Must be one of ["raw", "json_path", "regex", "x_path"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "raw",
+ "json_path",
+ "regex",
+ "x_path",
+ }
+ RAW: ClassVar["SyntheticsGlobalVariableParserType"]
+ JSON_PATH: ClassVar["SyntheticsGlobalVariableParserType"]
+ REGEX: ClassVar["SyntheticsGlobalVariableParserType"]
+ X_PATH: ClassVar["SyntheticsGlobalVariableParserType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsGlobalVariableParserType.RAW = SyntheticsGlobalVariableParserType("raw")
+SyntheticsGlobalVariableParserType.JSON_PATH = SyntheticsGlobalVariableParserType("json_path")
+SyntheticsGlobalVariableParserType.REGEX = SyntheticsGlobalVariableParserType("regex")
+SyntheticsGlobalVariableParserType.X_PATH = SyntheticsGlobalVariableParserType("x_path")
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_request.py b/datadog_api_client/v1/model/synthetics_global_variable_request.py
new file mode 100644
index 0000000000..eddbbeaec6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_request.py
@@ -0,0 +1,116 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_global_variable_attributes import SyntheticsGlobalVariableAttributes
+ from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options import SyntheticsGlobalVariableParseTestOptions
+ from datadog_api_client.v1.model.synthetics_global_variable_value import SyntheticsGlobalVariableValue
+
+class SyntheticsGlobalVariableRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_global_variable_attributes import SyntheticsGlobalVariableAttributes
+ from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options import SyntheticsGlobalVariableParseTestOptions
+ from datadog_api_client.v1.model.synthetics_global_variable_value import SyntheticsGlobalVariableValue
+ return {
+ "attributes": (SyntheticsGlobalVariableAttributes,),
+ "description": (str,),
+ "id": (str,),
+ "is_fido": (bool,),
+ "is_totp": (bool,),
+ "name": (str,),
+ "parse_test_options": (SyntheticsGlobalVariableParseTestOptions,),
+ "parse_test_public_id": (str,),
+ "tags": ([str],),
+ "value": (SyntheticsGlobalVariableValue,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "description": "description",
+ "id": "id",
+ "is_fido": "is_fido",
+ "is_totp": "is_totp",
+ "name": "name",
+ "parse_test_options": "parse_test_options",
+ "parse_test_public_id": "parse_test_public_id",
+ "tags": "tags",
+ "value": "value",
+ }
+ read_only_vars = {
+ "id",
+ }
+
+ def __init__(self_, description: str, name: str, tags: List[str], attributes: Union[SyntheticsGlobalVariableAttributes, UnsetType]=unset, id: Union[str, UnsetType]=unset, is_fido: Union[bool, UnsetType]=unset, is_totp: Union[bool, UnsetType]=unset, parse_test_options: Union[SyntheticsGlobalVariableParseTestOptions, UnsetType]=unset, parse_test_public_id: Union[str, UnsetType]=unset, value: Union[SyntheticsGlobalVariableValue, UnsetType]=unset, **kwargs):
+ """
+ Details of the global variable to create.
+
+ :param attributes: Attributes of the global variable.
+ :type attributes: SyntheticsGlobalVariableAttributes, optional
+
+ :param description: Description of the global variable.
+ :type description: str
+
+ :param id: Unique identifier of the global variable.
+ :type id: str, optional
+
+ :param is_fido: Determines if the global variable is a FIDO variable.
+ :type is_fido: bool, optional
+
+ :param is_totp: Determines if the global variable is a TOTP/MFA variable.
+ :type is_totp: bool, optional
+
+ :param name: Name of the global variable. Unique across Synthetic global variables.
+ :type name: str
+
+ :param parse_test_options: Parser options to use for retrieving a Synthetic global variable from a Synthetic test. Used in conjunction with ``parse_test_public_id``.
+ :type parse_test_options: SyntheticsGlobalVariableParseTestOptions, optional
+
+ :param parse_test_public_id: A Synthetic test ID to use as a test to generate the variable value.
+ :type parse_test_public_id: str, optional
+
+ :param tags: Tags of the global variable.
+ :type tags: [str]
+
+ :param value: Value of the global variable.
+ :type value: SyntheticsGlobalVariableValue, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if id is not unset:
+ kwargs["id"] = id
+ if is_fido is not unset:
+ kwargs["is_fido"] = is_fido
+ if is_totp is not unset:
+ kwargs["is_totp"] = is_totp
+ if parse_test_options is not unset:
+ kwargs["parse_test_options"] = parse_test_options
+ if parse_test_public_id is not unset:
+ kwargs["parse_test_public_id"] = parse_test_public_id
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
+ self_.description = description
+ self_.name = name
+ self_.tags = tags
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_totp_parameters.py b/datadog_api_client/v1/model/synthetics_global_variable_totp_parameters.py
new file mode 100644
index 0000000000..61ad65b683
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_totp_parameters.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsGlobalVariableTOTPParameters(ModelNormal):
+ validations = {
+ "digits": {
+ "inclusive_maximum": 10,
+ "inclusive_minimum": 4,
+ },
+ "refresh_interval": {
+ "inclusive_maximum": 999,
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "digits": (int,),
+ "refresh_interval": (int,),
+ }
+ attribute_map = {
+ "digits": "digits",
+ "refresh_interval": "refresh_interval",
+ }
+
+ def __init__(self_, digits: Union[int, UnsetType]=unset, refresh_interval: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Parameters for the TOTP/MFA variable
+
+ :param digits: Number of digits for the OTP code.
+ :type digits: int, optional
+
+ :param refresh_interval: Interval for which to refresh the token (in seconds).
+ :type refresh_interval: int, optional
+ """
+ if digits is not unset:
+ kwargs["digits"] = digits
+ if refresh_interval is not unset:
+ kwargs["refresh_interval"] = refresh_interval
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_global_variable_value.py b/datadog_api_client/v1/model/synthetics_global_variable_value.py
new file mode 100644
index 0000000000..96ea843fd7
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_global_variable_value.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_global_variable_options import SyntheticsGlobalVariableOptions
+
+class SyntheticsGlobalVariableValue(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_global_variable_options import SyntheticsGlobalVariableOptions
+ return {
+ "options": (SyntheticsGlobalVariableOptions,),
+ "secure": (bool,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "options": "options",
+ "secure": "secure",
+ "value": "value",
+ }
+
+ def __init__(self_, options: Union[SyntheticsGlobalVariableOptions, UnsetType]=unset, secure: Union[bool, UnsetType]=unset, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Value of the global variable.
+
+ :param options: Options for the Global Variable for MFA.
+ :type options: SyntheticsGlobalVariableOptions, optional
+
+ :param secure: Determines if the value of the variable is hidden.
+ :type secure: bool, optional
+
+ :param value: Value of the global variable. When reading a global variable,
+ the value will not be present if the variable is hidden with the ``secure`` property.
+ :type value: str, optional
+ """
+ if options is not unset:
+ kwargs["options"] = options
+ if secure is not unset:
+ kwargs["secure"] = secure
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_list_global_variables_response.py b/datadog_api_client/v1/model/synthetics_list_global_variables_response.py
new file mode 100644
index 0000000000..4eb90659e9
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_list_global_variables_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_global_variable import SyntheticsGlobalVariable
+
+class SyntheticsListGlobalVariablesResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_global_variable import SyntheticsGlobalVariable
+ return {
+ "variables": ([SyntheticsGlobalVariable],),
+ }
+ attribute_map = {
+ "variables": "variables",
+ }
+
+ def __init__(self_, variables: Union[List[SyntheticsGlobalVariable], UnsetType]=unset, **kwargs):
+ """
+ Object containing an array of Synthetic global variables.
+
+ :param variables: Array of Synthetic global variables.
+ :type variables: [SyntheticsGlobalVariable], optional
+ """
+ if variables is not unset:
+ kwargs["variables"] = variables
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_list_tests_response.py b/datadog_api_client/v1/model/synthetics_list_tests_response.py
new file mode 100644
index 0000000000..1a795f6411
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_list_tests_response.py
@@ -0,0 +1,64 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_details_without_steps import SyntheticsTestDetailsWithoutSteps
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsListTestsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_details_without_steps import SyntheticsTestDetailsWithoutSteps
+ return {
+ "tests": ([SyntheticsTestDetailsWithoutSteps],),
+ }
+ attribute_map = {
+ "tests": "tests",
+ }
+
+ def __init__(self_, tests: Union[List[SyntheticsTestDetailsWithoutSteps], UnsetType]=unset, **kwargs):
+ """
+ Object containing an array of Synthetic tests configuration.
+
+ :param tests: Array of Synthetic tests configuration.
+ :type tests: [SyntheticsTestDetailsWithoutSteps], optional
+ """
+ if tests is not unset:
+ kwargs["tests"] = tests
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_local_variable_parsing_options_type.py b/datadog_api_client/v1/model/synthetics_local_variable_parsing_options_type.py
new file mode 100644
index 0000000000..61be4ba8bc
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_local_variable_parsing_options_type.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsLocalVariableParsingOptionsType(ModelSimple):
+ """
+ Property of the Synthetic Test Response to extract into a local variable.
+
+ :param value: Must be one of ["grpc_message", "grpc_metadata", "http_body", "http_header", "http_status_code"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "grpc_message",
+ "grpc_metadata",
+ "http_body",
+ "http_header",
+ "http_status_code",
+ }
+ GRPC_MESSAGE: ClassVar["SyntheticsLocalVariableParsingOptionsType"]
+ GRPC_METADATA: ClassVar["SyntheticsLocalVariableParsingOptionsType"]
+ HTTP_BODY: ClassVar["SyntheticsLocalVariableParsingOptionsType"]
+ HTTP_HEADER: ClassVar["SyntheticsLocalVariableParsingOptionsType"]
+ HTTP_STATUS_CODE: ClassVar["SyntheticsLocalVariableParsingOptionsType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsLocalVariableParsingOptionsType.GRPC_MESSAGE = SyntheticsLocalVariableParsingOptionsType("grpc_message")
+SyntheticsLocalVariableParsingOptionsType.GRPC_METADATA = SyntheticsLocalVariableParsingOptionsType("grpc_metadata")
+SyntheticsLocalVariableParsingOptionsType.HTTP_BODY = SyntheticsLocalVariableParsingOptionsType("http_body")
+SyntheticsLocalVariableParsingOptionsType.HTTP_HEADER = SyntheticsLocalVariableParsingOptionsType("http_header")
+SyntheticsLocalVariableParsingOptionsType.HTTP_STATUS_CODE = SyntheticsLocalVariableParsingOptionsType("http_status_code")
diff --git a/datadog_api_client/v1/model/synthetics_location.py b/datadog_api_client/v1/model/synthetics_location.py
new file mode 100644
index 0000000000..1a561138ea
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_location.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsLocation(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "id": "id",
+ "name": "name",
+ }
+
+ def __init__(self_, id: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Synthetic location that can be used when creating or editing a
+ test.
+
+ :param id: Unique identifier of the location.
+ :type id: str, optional
+
+ :param name: Name of the location.
+ :type name: str, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_locations.py b/datadog_api_client/v1/model/synthetics_locations.py
new file mode 100644
index 0000000000..6f7e0a081f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_locations.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_location import SyntheticsLocation
+
+class SyntheticsLocations(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_location import SyntheticsLocation
+ return {
+ "locations": ([SyntheticsLocation],),
+ }
+ attribute_map = {
+ "locations": "locations",
+ }
+
+ def __init__(self_, locations: Union[List[SyntheticsLocation], UnsetType]=unset, **kwargs):
+ """
+ List of Synthetic locations.
+
+ :param locations: List of Synthetic locations.
+ :type locations: [SyntheticsLocation], optional
+ """
+ if locations is not unset:
+ kwargs["locations"] = locations
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mcp_protocol_version.py b/datadog_api_client/v1/model/synthetics_mcp_protocol_version.py
new file mode 100644
index 0000000000..db863a998f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mcp_protocol_version.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMCPProtocolVersion(ModelSimple):
+ """
+ The MCP protocol version used by the step. See https://modelcontextprotocol.io/specification.
+
+ :param value: If omitted defaults to "2025-06-18". Must be one of ["2025-06-18"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "2025-06-18",
+ }
+ VERSION_2025_06_18: ClassVar["SyntheticsMCPProtocolVersion"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMCPProtocolVersion.VERSION_2025_06_18 = SyntheticsMCPProtocolVersion("2025-06-18")
diff --git a/datadog_api_client/v1/model/synthetics_mcp_server_capability.py b/datadog_api_client/v1/model/synthetics_mcp_server_capability.py
new file mode 100644
index 0000000000..8261c96da1
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mcp_server_capability.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMCPServerCapability(ModelSimple):
+ """
+ A capability advertised by an MCP server.
+
+ :param value: Must be one of ["completions", "experimental", "logging", "prompts", "resources", "tools"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "completions",
+ "experimental",
+ "logging",
+ "prompts",
+ "resources",
+ "tools",
+ }
+ COMPLETIONS: ClassVar["SyntheticsMCPServerCapability"]
+ EXPERIMENTAL: ClassVar["SyntheticsMCPServerCapability"]
+ LOGGING: ClassVar["SyntheticsMCPServerCapability"]
+ PROMPTS: ClassVar["SyntheticsMCPServerCapability"]
+ RESOURCES: ClassVar["SyntheticsMCPServerCapability"]
+ TOOLS: ClassVar["SyntheticsMCPServerCapability"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMCPServerCapability.COMPLETIONS = SyntheticsMCPServerCapability("completions")
+SyntheticsMCPServerCapability.EXPERIMENTAL = SyntheticsMCPServerCapability("experimental")
+SyntheticsMCPServerCapability.LOGGING = SyntheticsMCPServerCapability("logging")
+SyntheticsMCPServerCapability.PROMPTS = SyntheticsMCPServerCapability("prompts")
+SyntheticsMCPServerCapability.RESOURCES = SyntheticsMCPServerCapability("resources")
+SyntheticsMCPServerCapability.TOOLS = SyntheticsMCPServerCapability("tools")
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step.py b/datadog_api_client/v1/model/synthetics_mobile_step.py
new file mode 100644
index 0000000000..a08e2b52e4
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step.py
@@ -0,0 +1,109 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_step_params import SyntheticsMobileStepParams
+ from datadog_api_client.v1.model.synthetics_mobile_step_type import SyntheticsMobileStepType
+
+class SyntheticsMobileStep(ModelNormal):
+ validations = {
+ "name": {
+ "max_length": 1500,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_step_params import SyntheticsMobileStepParams
+ from datadog_api_client.v1.model.synthetics_mobile_step_type import SyntheticsMobileStepType
+ return {
+ "allow_failure": (bool,),
+ "has_new_step_element": (bool,),
+ "is_critical": (bool,),
+ "name": (str,),
+ "no_screenshot": (bool,),
+ "params": (SyntheticsMobileStepParams,),
+ "public_id": (str,),
+ "timeout": (int,),
+ "type": (SyntheticsMobileStepType,),
+ }
+ attribute_map = {
+ "allow_failure": "allowFailure",
+ "has_new_step_element": "hasNewStepElement",
+ "is_critical": "isCritical",
+ "name": "name",
+ "no_screenshot": "noScreenshot",
+ "params": "params",
+ "public_id": "publicId",
+ "timeout": "timeout",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, params: SyntheticsMobileStepParams, type: SyntheticsMobileStepType, allow_failure: Union[bool, UnsetType]=unset, has_new_step_element: Union[bool, UnsetType]=unset, is_critical: Union[bool, UnsetType]=unset, no_screenshot: Union[bool, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, timeout: Union[int, UnsetType]=unset, **kwargs):
+ """
+ The steps used in a Synthetic mobile test.
+
+ :param allow_failure: A boolean set to allow this step to fail.
+ :type allow_failure: bool, optional
+
+ :param has_new_step_element: A boolean set to determine if the step has a new step element.
+ :type has_new_step_element: bool, optional
+
+ :param is_critical: A boolean to use in addition to ``allowFailure`` to determine if the test should be marked as failed when the step fails.
+ :type is_critical: bool, optional
+
+ :param name: The name of the step.
+ :type name: str
+
+ :param no_screenshot: A boolean set to not take a screenshot for the step.
+ :type no_screenshot: bool, optional
+
+ :param params: The parameters of a mobile step.
+ :type params: SyntheticsMobileStepParams
+
+ :param public_id: The public ID of the step.
+ :type public_id: str, optional
+
+ :param timeout: The time before declaring a step failed.
+ :type timeout: int, optional
+
+ :param type: Step type used in your mobile Synthetic test.
+ :type type: SyntheticsMobileStepType
+ """
+ if allow_failure is not unset:
+ kwargs["allow_failure"] = allow_failure
+ if has_new_step_element is not unset:
+ kwargs["has_new_step_element"] = has_new_step_element
+ if is_critical is not unset:
+ kwargs["is_critical"] = is_critical
+ if no_screenshot is not unset:
+ kwargs["no_screenshot"] = no_screenshot
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if timeout is not unset:
+ kwargs["timeout"] = timeout
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.params = params
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params.py b/datadog_api_client/v1/model/synthetics_mobile_step_params.py
new file mode 100644
index 0000000000..69a6ecaf60
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params.py
@@ -0,0 +1,149 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_check_type import SyntheticsCheckType
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_direction import SyntheticsMobileStepParamsDirection
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element import SyntheticsMobileStepParamsElement
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_positions_items import SyntheticsMobileStepParamsPositionsItems
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_value import SyntheticsMobileStepParamsValue
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_variable import SyntheticsMobileStepParamsVariable
+
+class SyntheticsMobileStepParams(ModelNormal):
+ validations = {
+ "delay": {
+ "inclusive_maximum": 5000,
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_check_type import SyntheticsCheckType
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_direction import SyntheticsMobileStepParamsDirection
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element import SyntheticsMobileStepParamsElement
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_positions_items import SyntheticsMobileStepParamsPositionsItems
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_value import SyntheticsMobileStepParamsValue
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_variable import SyntheticsMobileStepParamsVariable
+ return {
+ "check": (SyntheticsCheckType,),
+ "delay": (int,),
+ "direction": (SyntheticsMobileStepParamsDirection,),
+ "element": (SyntheticsMobileStepParamsElement,),
+ "enabled": (bool,),
+ "max_scrolls": (int,),
+ "positions": ([SyntheticsMobileStepParamsPositionsItems],),
+ "subtest_public_id": (str,),
+ "value": (SyntheticsMobileStepParamsValue,),
+ "variable": (SyntheticsMobileStepParamsVariable,),
+ "with_enter": (bool,),
+ "x": (float,),
+ "y": (float,),
+ }
+ attribute_map = {
+ "check": "check",
+ "delay": "delay",
+ "direction": "direction",
+ "element": "element",
+ "enabled": "enabled",
+ "max_scrolls": "maxScrolls",
+ "positions": "positions",
+ "subtest_public_id": "subtestPublicId",
+ "value": "value",
+ "variable": "variable",
+ "with_enter": "withEnter",
+ "x": "x",
+ "y": "y",
+ }
+
+ def __init__(self_, check: Union[SyntheticsCheckType, UnsetType]=unset, delay: Union[int, UnsetType]=unset, direction: Union[SyntheticsMobileStepParamsDirection, UnsetType]=unset, element: Union[SyntheticsMobileStepParamsElement, UnsetType]=unset, enabled: Union[bool, UnsetType]=unset, max_scrolls: Union[int, UnsetType]=unset, positions: Union[List[SyntheticsMobileStepParamsPositionsItems], UnsetType]=unset, subtest_public_id: Union[str, UnsetType]=unset, value: Union[SyntheticsMobileStepParamsValue, str, int, UnsetType]=unset, variable: Union[SyntheticsMobileStepParamsVariable, UnsetType]=unset, with_enter: Union[bool, UnsetType]=unset, x: Union[float, UnsetType]=unset, y: Union[float, UnsetType]=unset, **kwargs):
+ """
+ The parameters of a mobile step.
+
+ :param check: Type of assertion to apply in an API test.
+ :type check: SyntheticsCheckType, optional
+
+ :param delay: Number of milliseconds to wait between inputs in a ``typeText`` step type.
+ :type delay: int, optional
+
+ :param direction: The direction of the scroll for a ``scrollToElement`` step type.
+ :type direction: SyntheticsMobileStepParamsDirection, optional
+
+ :param element: Information about the element used for a step.
+ :type element: SyntheticsMobileStepParamsElement, optional
+
+ :param enabled: Boolean to change the state of the wifi for a ``toggleWiFi`` step type.
+ :type enabled: bool, optional
+
+ :param max_scrolls: Maximum number of scrolls to do for a ``scrollToElement`` step type.
+ :type max_scrolls: int, optional
+
+ :param positions: List of positions for the ``flick`` step type. The maximum is 10 flicks per step
+ :type positions: [SyntheticsMobileStepParamsPositionsItems], optional
+
+ :param subtest_public_id: Public ID of the test to be played as part of a ``playSubTest`` step type.
+ :type subtest_public_id: str, optional
+
+ :param value: Values used in the step for in multiple step types.
+ :type value: SyntheticsMobileStepParamsValue, optional
+
+ :param variable: Variable object for ``extractVariable`` step type.
+ :type variable: SyntheticsMobileStepParamsVariable, optional
+
+ :param with_enter: Boolean to indicate if ``Enter`` should be pressed at the end of the ``typeText`` step type.
+ :type with_enter: bool, optional
+
+ :param x: Amount to scroll by on the ``x`` axis for a ``scroll`` step type.
+ :type x: float, optional
+
+ :param y: Amount to scroll by on the ``y`` axis for a ``scroll`` step type.
+ :type y: float, optional
+ """
+ if check is not unset:
+ kwargs["check"] = check
+ if delay is not unset:
+ kwargs["delay"] = delay
+ if direction is not unset:
+ kwargs["direction"] = direction
+ if element is not unset:
+ kwargs["element"] = element
+ if enabled is not unset:
+ kwargs["enabled"] = enabled
+ if max_scrolls is not unset:
+ kwargs["max_scrolls"] = max_scrolls
+ if positions is not unset:
+ kwargs["positions"] = positions
+ if subtest_public_id is not unset:
+ kwargs["subtest_public_id"] = subtest_public_id
+ if value is not unset:
+ kwargs["value"] = value
+ if variable is not unset:
+ kwargs["variable"] = variable
+ if with_enter is not unset:
+ kwargs["with_enter"] = with_enter
+ if x is not unset:
+ kwargs["x"] = x
+ if y is not unset:
+ kwargs["y"] = y
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_direction.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_direction.py
new file mode 100644
index 0000000000..94f206cc8b
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_direction.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMobileStepParamsDirection(ModelSimple):
+ """
+ The direction of the scroll for a `scrollToElement` step type.
+
+ :param value: Must be one of ["up", "down", "left", "right"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "up",
+ "down",
+ "left",
+ "right",
+ }
+ UP: ClassVar["SyntheticsMobileStepParamsDirection"]
+ DOWN: ClassVar["SyntheticsMobileStepParamsDirection"]
+ LEFT: ClassVar["SyntheticsMobileStepParamsDirection"]
+ RIGHT: ClassVar["SyntheticsMobileStepParamsDirection"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMobileStepParamsDirection.UP = SyntheticsMobileStepParamsDirection("up")
+SyntheticsMobileStepParamsDirection.DOWN = SyntheticsMobileStepParamsDirection("down")
+SyntheticsMobileStepParamsDirection.LEFT = SyntheticsMobileStepParamsDirection("left")
+SyntheticsMobileStepParamsDirection.RIGHT = SyntheticsMobileStepParamsDirection("right")
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_element.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_element.py
new file mode 100644
index 0000000000..6c3c7e8346
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_element.py
@@ -0,0 +1,102 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_context_type import SyntheticsMobileStepParamsElementContextType
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_relative_position import SyntheticsMobileStepParamsElementRelativePosition
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator import SyntheticsMobileStepParamsElementUserLocator
+
+class SyntheticsMobileStepParamsElement(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_context_type import SyntheticsMobileStepParamsElementContextType
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_relative_position import SyntheticsMobileStepParamsElementRelativePosition
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator import SyntheticsMobileStepParamsElementUserLocator
+ return {
+ "context": (str,),
+ "context_type": (SyntheticsMobileStepParamsElementContextType,),
+ "element_description": (str,),
+ "multi_locator": (dict,),
+ "relative_position": (SyntheticsMobileStepParamsElementRelativePosition,),
+ "text_content": (str,),
+ "user_locator": (SyntheticsMobileStepParamsElementUserLocator,),
+ "view_name": (str,),
+ }
+ attribute_map = {
+ "context": "context",
+ "context_type": "contextType",
+ "element_description": "elementDescription",
+ "multi_locator": "multiLocator",
+ "relative_position": "relativePosition",
+ "text_content": "textContent",
+ "user_locator": "userLocator",
+ "view_name": "viewName",
+ }
+
+ def __init__(self_, context: Union[str, UnsetType]=unset, context_type: Union[SyntheticsMobileStepParamsElementContextType, UnsetType]=unset, element_description: Union[str, UnsetType]=unset, multi_locator: Union[dict, UnsetType]=unset, relative_position: Union[SyntheticsMobileStepParamsElementRelativePosition, UnsetType]=unset, text_content: Union[str, UnsetType]=unset, user_locator: Union[SyntheticsMobileStepParamsElementUserLocator, UnsetType]=unset, view_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Information about the element used for a step.
+
+ :param context: Context of the element.
+ :type context: str, optional
+
+ :param context_type: Type of the context that the element is in.
+ :type context_type: SyntheticsMobileStepParamsElementContextType, optional
+
+ :param element_description: Description of the element.
+ :type element_description: str, optional
+
+ :param multi_locator: Multi-locator to find the element.
+ :type multi_locator: dict, optional
+
+ :param relative_position: Position of the action relative to the element.
+ :type relative_position: SyntheticsMobileStepParamsElementRelativePosition, optional
+
+ :param text_content: Text content of the element.
+ :type text_content: str, optional
+
+ :param user_locator: User locator to find the element.
+ :type user_locator: SyntheticsMobileStepParamsElementUserLocator, optional
+
+ :param view_name: Name of the view of the element.
+ :type view_name: str, optional
+ """
+ if context is not unset:
+ kwargs["context"] = context
+ if context_type is not unset:
+ kwargs["context_type"] = context_type
+ if element_description is not unset:
+ kwargs["element_description"] = element_description
+ if multi_locator is not unset:
+ kwargs["multi_locator"] = multi_locator
+ if relative_position is not unset:
+ kwargs["relative_position"] = relative_position
+ if text_content is not unset:
+ kwargs["text_content"] = text_content
+ if user_locator is not unset:
+ kwargs["user_locator"] = user_locator
+ if view_name is not unset:
+ kwargs["view_name"] = view_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_element_context_type.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_context_type.py
new file mode 100644
index 0000000000..f76cb5c141
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_context_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMobileStepParamsElementContextType(ModelSimple):
+ """
+ Type of the context that the element is in.
+
+ :param value: Must be one of ["native", "web"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "native",
+ "web",
+ }
+ NATIVE: ClassVar["SyntheticsMobileStepParamsElementContextType"]
+ WEB: ClassVar["SyntheticsMobileStepParamsElementContextType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMobileStepParamsElementContextType.NATIVE = SyntheticsMobileStepParamsElementContextType("native")
+SyntheticsMobileStepParamsElementContextType.WEB = SyntheticsMobileStepParamsElementContextType("web")
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_element_relative_position.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_relative_position.py
new file mode 100644
index 0000000000..9a92f4f5ac
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_relative_position.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsMobileStepParamsElementRelativePosition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "x": (float,),
+ "y": (float,),
+ }
+ attribute_map = {
+ "x": "x",
+ "y": "y",
+ }
+
+ def __init__(self_, x: Union[float, UnsetType]=unset, y: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Position of the action relative to the element.
+
+ :param x: The ``relativePosition`` on the ``x`` axis for the element.
+ :type x: float, optional
+
+ :param y: The ``relativePosition`` on the ``y`` axis for the element.
+ :type y: float, optional
+ """
+ if x is not unset:
+ kwargs["x"] = x
+ if y is not unset:
+ kwargs["y"] = y
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator.py
new file mode 100644
index 0000000000..fc631d8328
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator_values_items import SyntheticsMobileStepParamsElementUserLocatorValuesItems
+
+class SyntheticsMobileStepParamsElementUserLocator(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator_values_items import SyntheticsMobileStepParamsElementUserLocatorValuesItems
+ return {
+ "fail_test_on_cannot_locate": (bool,),
+ "values": ([SyntheticsMobileStepParamsElementUserLocatorValuesItems],),
+ }
+ attribute_map = {
+ "fail_test_on_cannot_locate": "failTestOnCannotLocate",
+ "values": "values",
+ }
+
+ def __init__(self_, fail_test_on_cannot_locate: Union[bool, UnsetType]=unset, values: Union[List[SyntheticsMobileStepParamsElementUserLocatorValuesItems], UnsetType]=unset, **kwargs):
+ """
+ User locator to find the element.
+
+ :param fail_test_on_cannot_locate: Whether if the test should fail if the element cannot be found.
+ :type fail_test_on_cannot_locate: bool, optional
+
+ :param values: Values of the user locator.
+ :type values: [SyntheticsMobileStepParamsElementUserLocatorValuesItems], optional
+ """
+ if fail_test_on_cannot_locate is not unset:
+ kwargs["fail_test_on_cannot_locate"] = fail_test_on_cannot_locate
+ if values is not unset:
+ kwargs["values"] = values
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator_values_items.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator_values_items.py
new file mode 100644
index 0000000000..d0a5633c1e
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator_values_items.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator_values_items_type import SyntheticsMobileStepParamsElementUserLocatorValuesItemsType
+
+class SyntheticsMobileStepParamsElementUserLocatorValuesItems(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator_values_items_type import SyntheticsMobileStepParamsElementUserLocatorValuesItemsType
+ return {
+ "type": (SyntheticsMobileStepParamsElementUserLocatorValuesItemsType,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ "value": "value",
+ }
+
+ def __init__(self_, type: Union[SyntheticsMobileStepParamsElementUserLocatorValuesItemsType, UnsetType]=unset, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ A single user locator object.
+
+ :param type: Type of a user locator.
+ :type type: SyntheticsMobileStepParamsElementUserLocatorValuesItemsType, optional
+
+ :param value: Value of a user locator.
+ :type value: str, optional
+ """
+ if type is not unset:
+ kwargs["type"] = type
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator_values_items_type.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator_values_items_type.py
new file mode 100644
index 0000000000..3a0ca5f126
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_element_user_locator_values_items_type.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMobileStepParamsElementUserLocatorValuesItemsType(ModelSimple):
+ """
+ Type of a user locator.
+
+ :param value: Must be one of ["accessibility-id", "id", "ios-predicate-string", "ios-class-chain", "xpath"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "accessibility-id",
+ "id",
+ "ios-predicate-string",
+ "ios-class-chain",
+ "xpath",
+ }
+ ACCESSIBILITY_ID: ClassVar["SyntheticsMobileStepParamsElementUserLocatorValuesItemsType"]
+ ID: ClassVar["SyntheticsMobileStepParamsElementUserLocatorValuesItemsType"]
+ IOS_PREDICATE_STRING: ClassVar["SyntheticsMobileStepParamsElementUserLocatorValuesItemsType"]
+ IOS_CLASS_CHAIN: ClassVar["SyntheticsMobileStepParamsElementUserLocatorValuesItemsType"]
+ XPATH: ClassVar["SyntheticsMobileStepParamsElementUserLocatorValuesItemsType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMobileStepParamsElementUserLocatorValuesItemsType.ACCESSIBILITY_ID = SyntheticsMobileStepParamsElementUserLocatorValuesItemsType("accessibility-id")
+SyntheticsMobileStepParamsElementUserLocatorValuesItemsType.ID = SyntheticsMobileStepParamsElementUserLocatorValuesItemsType("id")
+SyntheticsMobileStepParamsElementUserLocatorValuesItemsType.IOS_PREDICATE_STRING = SyntheticsMobileStepParamsElementUserLocatorValuesItemsType("ios-predicate-string")
+SyntheticsMobileStepParamsElementUserLocatorValuesItemsType.IOS_CLASS_CHAIN = SyntheticsMobileStepParamsElementUserLocatorValuesItemsType("ios-class-chain")
+SyntheticsMobileStepParamsElementUserLocatorValuesItemsType.XPATH = SyntheticsMobileStepParamsElementUserLocatorValuesItemsType("xpath")
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_positions_items.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_positions_items.py
new file mode 100644
index 0000000000..bd8e4dcb87
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_positions_items.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsMobileStepParamsPositionsItems(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "x": (float,),
+ "y": (float,),
+ }
+ attribute_map = {
+ "x": "x",
+ "y": "y",
+ }
+
+ def __init__(self_, x: Union[float, UnsetType]=unset, y: Union[float, UnsetType]=unset, **kwargs):
+ """
+ A description of a single position for a ``flick`` step type.
+
+ :param x: The ``x`` position for the flick.
+ :type x: float, optional
+
+ :param y: The ``y`` position for the flick.
+ :type y: float, optional
+ """
+ if x is not unset:
+ kwargs["x"] = x
+ if y is not unset:
+ kwargs["y"] = y
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_value.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_value.py
new file mode 100644
index 0000000000..8b1c81fb24
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_value.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsMobileStepParamsValue(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Values used in the step for in multiple step types.
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ return {
+ "oneOf": [
+ str,
+ int,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_params_variable.py b/datadog_api_client/v1/model/synthetics_mobile_step_params_variable.py
new file mode 100644
index 0000000000..87fc137986
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_params_variable.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsMobileStepParamsVariable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "example": (str,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "example": "example",
+ "name": "name",
+ }
+
+ def __init__(self_, example: str, name: str, **kwargs):
+ """
+ Variable object for ``extractVariable`` step type.
+
+ :param example: An example for the variable.
+ :type example: str
+
+ :param name: The variable name.
+ :type name: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.example = example
+ self_.name = name
diff --git a/datadog_api_client/v1/model/synthetics_mobile_step_type.py b/datadog_api_client/v1/model/synthetics_mobile_step_type.py
new file mode 100644
index 0000000000..a7be9c0763
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_step_type.py
@@ -0,0 +1,93 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMobileStepType(ModelSimple):
+ """
+ Step type used in your mobile Synthetic test.
+
+ :param value: Must be one of ["assertElementContent", "assertScreenContains", "assertScreenLacks", "doubleTap", "extractVariable", "flick", "openDeeplink", "playSubTest", "pressBack", "restartApplication", "rotate", "scroll", "scrollToElement", "tap", "toggleWiFi", "typeText", "wait"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "assertElementContent",
+ "assertScreenContains",
+ "assertScreenLacks",
+ "doubleTap",
+ "extractVariable",
+ "flick",
+ "openDeeplink",
+ "playSubTest",
+ "pressBack",
+ "restartApplication",
+ "rotate",
+ "scroll",
+ "scrollToElement",
+ "tap",
+ "toggleWiFi",
+ "typeText",
+ "wait",
+ }
+ ASSERTELEMENTCONTENT: ClassVar["SyntheticsMobileStepType"]
+ ASSERTSCREENCONTAINS: ClassVar["SyntheticsMobileStepType"]
+ ASSERTSCREENLACKS: ClassVar["SyntheticsMobileStepType"]
+ DOUBLETAP: ClassVar["SyntheticsMobileStepType"]
+ EXTRACTVARIABLE: ClassVar["SyntheticsMobileStepType"]
+ FLICK: ClassVar["SyntheticsMobileStepType"]
+ OPENDEEPLINK: ClassVar["SyntheticsMobileStepType"]
+ PLAYSUBTEST: ClassVar["SyntheticsMobileStepType"]
+ PRESSBACK: ClassVar["SyntheticsMobileStepType"]
+ RESTARTAPPLICATION: ClassVar["SyntheticsMobileStepType"]
+ ROTATE: ClassVar["SyntheticsMobileStepType"]
+ SCROLL: ClassVar["SyntheticsMobileStepType"]
+ SCROLLTOELEMENT: ClassVar["SyntheticsMobileStepType"]
+ TAP: ClassVar["SyntheticsMobileStepType"]
+ TOGGLEWIFI: ClassVar["SyntheticsMobileStepType"]
+ TYPETEXT: ClassVar["SyntheticsMobileStepType"]
+ WAIT: ClassVar["SyntheticsMobileStepType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMobileStepType.ASSERTELEMENTCONTENT = SyntheticsMobileStepType("assertElementContent")
+SyntheticsMobileStepType.ASSERTSCREENCONTAINS = SyntheticsMobileStepType("assertScreenContains")
+SyntheticsMobileStepType.ASSERTSCREENLACKS = SyntheticsMobileStepType("assertScreenLacks")
+SyntheticsMobileStepType.DOUBLETAP = SyntheticsMobileStepType("doubleTap")
+SyntheticsMobileStepType.EXTRACTVARIABLE = SyntheticsMobileStepType("extractVariable")
+SyntheticsMobileStepType.FLICK = SyntheticsMobileStepType("flick")
+SyntheticsMobileStepType.OPENDEEPLINK = SyntheticsMobileStepType("openDeeplink")
+SyntheticsMobileStepType.PLAYSUBTEST = SyntheticsMobileStepType("playSubTest")
+SyntheticsMobileStepType.PRESSBACK = SyntheticsMobileStepType("pressBack")
+SyntheticsMobileStepType.RESTARTAPPLICATION = SyntheticsMobileStepType("restartApplication")
+SyntheticsMobileStepType.ROTATE = SyntheticsMobileStepType("rotate")
+SyntheticsMobileStepType.SCROLL = SyntheticsMobileStepType("scroll")
+SyntheticsMobileStepType.SCROLLTOELEMENT = SyntheticsMobileStepType("scrollToElement")
+SyntheticsMobileStepType.TAP = SyntheticsMobileStepType("tap")
+SyntheticsMobileStepType.TOGGLEWIFI = SyntheticsMobileStepType("toggleWiFi")
+SyntheticsMobileStepType.TYPETEXT = SyntheticsMobileStepType("typeText")
+SyntheticsMobileStepType.WAIT = SyntheticsMobileStepType("wait")
diff --git a/datadog_api_client/v1/model/synthetics_mobile_test.py b/datadog_api_client/v1/model/synthetics_mobile_test.py
new file mode 100644
index 0000000000..64b93b0e8f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_test.py
@@ -0,0 +1,127 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_test_config import SyntheticsMobileTestConfig
+ from datadog_api_client.v1.model.synthetics_mobile_test_options import SyntheticsMobileTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_mobile_step import SyntheticsMobileStep
+ from datadog_api_client.v1.model.synthetics_mobile_test_type import SyntheticsMobileTestType
+
+class SyntheticsMobileTest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_test_config import SyntheticsMobileTestConfig
+ from datadog_api_client.v1.model.synthetics_mobile_test_options import SyntheticsMobileTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_mobile_step import SyntheticsMobileStep
+ from datadog_api_client.v1.model.synthetics_mobile_test_type import SyntheticsMobileTestType
+ return {
+ "config": (SyntheticsMobileTestConfig,),
+ "device_ids": ([str],),
+ "message": (str,),
+ "monitor_id": (int,),
+ "name": (str,),
+ "options": (SyntheticsMobileTestOptions,),
+ "public_id": (str,),
+ "status": (SyntheticsTestPauseStatus,),
+ "steps": ([SyntheticsMobileStep],),
+ "tags": ([str],),
+ "type": (SyntheticsMobileTestType,),
+ }
+ attribute_map = {
+ "config": "config",
+ "device_ids": "device_ids",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "name": "name",
+ "options": "options",
+ "public_id": "public_id",
+ "status": "status",
+ "steps": "steps",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "monitor_id",
+ "public_id",
+ }
+
+ def __init__(self_, config: SyntheticsMobileTestConfig, message: str, name: str, options: SyntheticsMobileTestOptions, type: SyntheticsMobileTestType, device_ids: Union[List[str], UnsetType]=unset, monitor_id: Union[int, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestPauseStatus, UnsetType]=unset, steps: Union[List[SyntheticsMobileStep], UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object containing details about a Synthetic mobile test.
+
+ :param config: Configuration object for a Synthetic mobile test.
+ :type config: SyntheticsMobileTestConfig
+
+ :param device_ids: Array with the different device IDs used to run the test.
+ :type device_ids: [str], optional
+
+ :param message: Notification message associated with the test.
+ :type message: str
+
+ :param monitor_id: The associated monitor ID.
+ :type monitor_id: int, optional
+
+ :param name: Name of the test.
+ :type name: str
+
+ :param options: Object describing the extra options for a Synthetic test.
+ :type options: SyntheticsMobileTestOptions
+
+ :param public_id: The public ID of the test.
+ :type public_id: str, optional
+
+ :param status: Define whether you want to start ( ``live`` ) or pause ( ``paused`` ) a
+ Synthetic test.
+ :type status: SyntheticsTestPauseStatus, optional
+
+ :param steps: Array of steps for the test.
+ :type steps: [SyntheticsMobileStep], optional
+
+ :param tags: Array of tags attached to the test.
+ :type tags: [str], optional
+
+ :param type: Type of the Synthetic test, ``mobile``.
+ :type type: SyntheticsMobileTestType
+ """
+ if device_ids is not unset:
+ kwargs["device_ids"] = device_ids
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if status is not unset:
+ kwargs["status"] = status
+ if steps is not unset:
+ kwargs["steps"] = steps
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
+ self_.config = config
+ self_.message = message
+ self_.name = name
+ self_.options = options
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_mobile_test_config.py b/datadog_api_client/v1/model/synthetics_mobile_test_config.py
new file mode 100644
index 0000000000..17543cb24f
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_test_config.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_test_initial_application_arguments import SyntheticsMobileTestInitialApplicationArguments
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+
+class SyntheticsMobileTestConfig(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_test_initial_application_arguments import SyntheticsMobileTestInitialApplicationArguments
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ return {
+ "initial_application_arguments": (SyntheticsMobileTestInitialApplicationArguments,),
+ "variables": ([SyntheticsConfigVariable],),
+ }
+ attribute_map = {
+ "initial_application_arguments": "initialApplicationArguments",
+ "variables": "variables",
+ }
+
+ def __init__(self_, initial_application_arguments: Union[SyntheticsMobileTestInitialApplicationArguments, UnsetType]=unset, variables: Union[List[SyntheticsConfigVariable], UnsetType]=unset, **kwargs):
+ """
+ Configuration object for a Synthetic mobile test.
+
+ :param initial_application_arguments: Initial application arguments for a mobile test.
+ :type initial_application_arguments: SyntheticsMobileTestInitialApplicationArguments, optional
+
+ :param variables: Array of variables used for the test steps.
+ :type variables: [SyntheticsConfigVariable], optional
+ """
+ if initial_application_arguments is not unset:
+ kwargs["initial_application_arguments"] = initial_application_arguments
+ if variables is not unset:
+ kwargs["variables"] = variables
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_test_initial_application_arguments.py b/datadog_api_client/v1/model/synthetics_mobile_test_initial_application_arguments.py
new file mode 100644
index 0000000000..93ad2876ed
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_test_initial_application_arguments.py
@@ -0,0 +1,36 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsMobileTestInitialApplicationArguments(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return (str,)
+
+ def __init__(self_, **kwargs):
+ """
+ Initial application arguments for a mobile test.
+ """
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_mobile_test_options.py b/datadog_api_client/v1/model/synthetics_mobile_test_options.py
new file mode 100644
index 0000000000..0926aa5163
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_test_options.py
@@ -0,0 +1,193 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_restriction_policy_binding import SyntheticsTestRestrictionPolicyBinding
+ from datadog_api_client.v1.model.synthetics_test_ci_options import SyntheticsTestCiOptions
+ from datadog_api_client.v1.model.synthetics_mobile_tests_mobile_application import SyntheticsMobileTestsMobileApplication
+ from datadog_api_client.v1.model.synthetics_test_options_monitor_options import SyntheticsTestOptionsMonitorOptions
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_test_options_scheduling import SyntheticsTestOptionsScheduling
+
+class SyntheticsMobileTestOptions(ModelNormal):
+ validations = {
+ "default_step_timeout": {
+ "inclusive_maximum": 300,
+ "inclusive_minimum": 1,
+ },
+ "min_failure_duration": {
+ "inclusive_maximum": 7200,
+ "inclusive_minimum": 0,
+ },
+ "monitor_priority": {
+ "inclusive_maximum": 5,
+ "inclusive_minimum": 1,
+ },
+ "tick_every": {
+ "inclusive_maximum": 604800,
+ "inclusive_minimum": 300,
+ },
+ "verbosity": {
+ "inclusive_maximum": 5,
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_restriction_policy_binding import SyntheticsTestRestrictionPolicyBinding
+ from datadog_api_client.v1.model.synthetics_test_ci_options import SyntheticsTestCiOptions
+ from datadog_api_client.v1.model.synthetics_mobile_tests_mobile_application import SyntheticsMobileTestsMobileApplication
+ from datadog_api_client.v1.model.synthetics_test_options_monitor_options import SyntheticsTestOptionsMonitorOptions
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_test_options_scheduling import SyntheticsTestOptionsScheduling
+ return {
+ "allow_application_crash": (bool,),
+ "bindings": ([SyntheticsTestRestrictionPolicyBinding],),
+ "ci": (SyntheticsTestCiOptions,),
+ "default_step_timeout": (int,),
+ "device_ids": ([str],),
+ "disable_auto_accept_alert": (bool,),
+ "min_failure_duration": (int,),
+ "mobile_application": (SyntheticsMobileTestsMobileApplication,),
+ "monitor_name": (str,),
+ "monitor_options": (SyntheticsTestOptionsMonitorOptions,),
+ "monitor_priority": (int,),
+ "no_screenshot": (bool,),
+ "restricted_roles": (SyntheticsRestrictedRoles,),
+ "retry": (SyntheticsTestOptionsRetry,),
+ "scheduling": (SyntheticsTestOptionsScheduling,),
+ "tick_every": (int,),
+ "verbosity": (int,),
+ }
+ attribute_map = {
+ "allow_application_crash": "allowApplicationCrash",
+ "bindings": "bindings",
+ "ci": "ci",
+ "default_step_timeout": "defaultStepTimeout",
+ "device_ids": "device_ids",
+ "disable_auto_accept_alert": "disableAutoAcceptAlert",
+ "min_failure_duration": "min_failure_duration",
+ "mobile_application": "mobileApplication",
+ "monitor_name": "monitor_name",
+ "monitor_options": "monitor_options",
+ "monitor_priority": "monitor_priority",
+ "no_screenshot": "noScreenshot",
+ "restricted_roles": "restricted_roles",
+ "retry": "retry",
+ "scheduling": "scheduling",
+ "tick_every": "tick_every",
+ "verbosity": "verbosity",
+ }
+
+ def __init__(self_, device_ids: List[str], mobile_application: SyntheticsMobileTestsMobileApplication, tick_every: int, allow_application_crash: Union[bool, UnsetType]=unset, bindings: Union[List[SyntheticsTestRestrictionPolicyBinding], UnsetType]=unset, ci: Union[SyntheticsTestCiOptions, UnsetType]=unset, default_step_timeout: Union[int, UnsetType]=unset, disable_auto_accept_alert: Union[bool, UnsetType]=unset, min_failure_duration: Union[int, UnsetType]=unset, monitor_name: Union[str, UnsetType]=unset, monitor_options: Union[SyntheticsTestOptionsMonitorOptions, UnsetType]=unset, monitor_priority: Union[int, UnsetType]=unset, no_screenshot: Union[bool, UnsetType]=unset, restricted_roles: Union[SyntheticsRestrictedRoles, UnsetType]=unset, retry: Union[SyntheticsTestOptionsRetry, UnsetType]=unset, scheduling: Union[SyntheticsTestOptionsScheduling, UnsetType]=unset, verbosity: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object describing the extra options for a Synthetic test.
+
+ :param allow_application_crash: A boolean to set if an application crash would mark the test as failed.
+ :type allow_application_crash: bool, optional
+
+ :param bindings: Array of bindings used for the mobile test.
+ :type bindings: [SyntheticsTestRestrictionPolicyBinding], optional
+
+ :param ci: CI/CD options for a Synthetic test.
+ :type ci: SyntheticsTestCiOptions, optional
+
+ :param default_step_timeout: The default timeout for steps in the test (in seconds).
+ :type default_step_timeout: int, optional
+
+ :param device_ids: For mobile test, array with the different device IDs used to run the test.
+ :type device_ids: [str]
+
+ :param disable_auto_accept_alert: A boolean to disable auto accepting alerts.
+ :type disable_auto_accept_alert: bool, optional
+
+ :param min_failure_duration: Minimum amount of time in failure required to trigger an alert.
+ :type min_failure_duration: int, optional
+
+ :param mobile_application: Mobile application for mobile synthetics test.
+ :type mobile_application: SyntheticsMobileTestsMobileApplication
+
+ :param monitor_name: The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs.
+ :type monitor_name: str, optional
+
+ :param monitor_options: Object containing the options for a Synthetic test as a monitor
+ (for example, renotification).
+ :type monitor_options: SyntheticsTestOptionsMonitorOptions, optional
+
+ :param monitor_priority: Integer from 1 (high) to 5 (low) indicating alert severity.
+ :type monitor_priority: int, optional
+
+ :param no_screenshot: A boolean set to not take a screenshot for the step.
+ :type no_screenshot: bool, optional
+
+ :param restricted_roles: A list of role identifiers that can be pulled from the Roles API, for restricting read and write access. This field is deprecated. Use the restriction policies API to manage permissions. **Deprecated**.
+ :type restricted_roles: SyntheticsRestrictedRoles, optional
+
+ :param retry: Object describing the retry strategy to apply to a Synthetic test.
+ :type retry: SyntheticsTestOptionsRetry, optional
+
+ :param scheduling: Object containing timeframes and timezone used for advanced scheduling.
+ :type scheduling: SyntheticsTestOptionsScheduling, optional
+
+ :param tick_every: The frequency at which to run the Synthetic test (in seconds).
+ :type tick_every: int
+
+ :param verbosity: The level of verbosity for the mobile test. This field can not be set by a user.
+ :type verbosity: int, optional
+ """
+ if allow_application_crash is not unset:
+ kwargs["allow_application_crash"] = allow_application_crash
+ if bindings is not unset:
+ kwargs["bindings"] = bindings
+ if ci is not unset:
+ kwargs["ci"] = ci
+ if default_step_timeout is not unset:
+ kwargs["default_step_timeout"] = default_step_timeout
+ if disable_auto_accept_alert is not unset:
+ kwargs["disable_auto_accept_alert"] = disable_auto_accept_alert
+ if min_failure_duration is not unset:
+ kwargs["min_failure_duration"] = min_failure_duration
+ if monitor_name is not unset:
+ kwargs["monitor_name"] = monitor_name
+ if monitor_options is not unset:
+ kwargs["monitor_options"] = monitor_options
+ if monitor_priority is not unset:
+ kwargs["monitor_priority"] = monitor_priority
+ if no_screenshot is not unset:
+ kwargs["no_screenshot"] = no_screenshot
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ if retry is not unset:
+ kwargs["retry"] = retry
+ if scheduling is not unset:
+ kwargs["scheduling"] = scheduling
+ if verbosity is not unset:
+ kwargs["verbosity"] = verbosity
+ super().__init__(kwargs)
+
+
+ self_.device_ids = device_ids
+ self_.mobile_application = mobile_application
+ self_.tick_every = tick_every
diff --git a/datadog_api_client/v1/model/synthetics_mobile_test_type.py b/datadog_api_client/v1/model/synthetics_mobile_test_type.py
new file mode 100644
index 0000000000..cbef7269e0
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_test_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMobileTestType(ModelSimple):
+ """
+ Type of the Synthetic test, `mobile`.
+
+ :param value: If omitted defaults to "mobile". Must be one of ["mobile"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "mobile",
+ }
+ MOBILE: ClassVar["SyntheticsMobileTestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMobileTestType.MOBILE = SyntheticsMobileTestType("mobile")
diff --git a/datadog_api_client/v1/model/synthetics_mobile_tests_mobile_application.py b/datadog_api_client/v1/model/synthetics_mobile_tests_mobile_application.py
new file mode 100644
index 0000000000..609ea953bd
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_tests_mobile_application.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_mobile_tests_mobile_application_reference_type import SyntheticsMobileTestsMobileApplicationReferenceType
+
+class SyntheticsMobileTestsMobileApplication(ModelNormal):
+ validations = {
+ "application_id": {
+ "max_length": 1500,
+ },
+ "reference_id": {
+ "max_length": 1500,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_mobile_tests_mobile_application_reference_type import SyntheticsMobileTestsMobileApplicationReferenceType
+ return {
+ "application_id": (str,),
+ "reference_id": (str,),
+ "reference_type": (SyntheticsMobileTestsMobileApplicationReferenceType,),
+ }
+ attribute_map = {
+ "application_id": "applicationId",
+ "reference_id": "referenceId",
+ "reference_type": "referenceType",
+ }
+
+ def __init__(self_, application_id: str, reference_id: str, reference_type: SyntheticsMobileTestsMobileApplicationReferenceType, **kwargs):
+ """
+ Mobile application for mobile synthetics test.
+
+ :param application_id: Application ID of the mobile application.
+ :type application_id: str
+
+ :param reference_id: Reference ID of the mobile application.
+ :type reference_id: str
+
+ :param reference_type: Reference type for the mobile application for a mobile synthetics test.
+ :type reference_type: SyntheticsMobileTestsMobileApplicationReferenceType
+ """
+ super().__init__(kwargs)
+
+
+ self_.application_id = application_id
+ self_.reference_id = reference_id
+ self_.reference_type = reference_type
diff --git a/datadog_api_client/v1/model/synthetics_mobile_tests_mobile_application_reference_type.py b/datadog_api_client/v1/model/synthetics_mobile_tests_mobile_application_reference_type.py
new file mode 100644
index 0000000000..3ad70b18ba
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_mobile_tests_mobile_application_reference_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsMobileTestsMobileApplicationReferenceType(ModelSimple):
+ """
+ Reference type for the mobile application for a mobile synthetics test.
+
+ :param value: Must be one of ["latest", "version"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "latest",
+ "version",
+ }
+ LATEST: ClassVar["SyntheticsMobileTestsMobileApplicationReferenceType"]
+ VERSION: ClassVar["SyntheticsMobileTestsMobileApplicationReferenceType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsMobileTestsMobileApplicationReferenceType.LATEST = SyntheticsMobileTestsMobileApplicationReferenceType("latest")
+SyntheticsMobileTestsMobileApplicationReferenceType.VERSION = SyntheticsMobileTestsMobileApplicationReferenceType("version")
diff --git a/datadog_api_client/v1/model/synthetics_parsing_options.py b/datadog_api_client/v1/model/synthetics_parsing_options.py
new file mode 100644
index 0000000000..72f46e65d6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_parsing_options.py
@@ -0,0 +1,79 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_variable_parser import SyntheticsVariableParser
+ from datadog_api_client.v1.model.synthetics_local_variable_parsing_options_type import SyntheticsLocalVariableParsingOptionsType
+
+class SyntheticsParsingOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_variable_parser import SyntheticsVariableParser
+ from datadog_api_client.v1.model.synthetics_local_variable_parsing_options_type import SyntheticsLocalVariableParsingOptionsType
+ return {
+ "field": (str,),
+ "name": (str,),
+ "parser": (SyntheticsVariableParser,),
+ "secure": (bool,),
+ "type": (SyntheticsLocalVariableParsingOptionsType,),
+ }
+ attribute_map = {
+ "field": "field",
+ "name": "name",
+ "parser": "parser",
+ "secure": "secure",
+ "type": "type",
+ }
+
+ def __init__(self_, field: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, parser: Union[SyntheticsVariableParser, UnsetType]=unset, secure: Union[bool, UnsetType]=unset, type: Union[SyntheticsLocalVariableParsingOptionsType, UnsetType]=unset, **kwargs):
+ """
+ Parsing options for variables to extract.
+
+ :param field: When type is ``http_header`` or ``grpc_metadata`` , name of the header or metadatum to extract.
+ :type field: str, optional
+
+ :param name: Name of the variable to extract.
+ :type name: str, optional
+
+ :param parser: Details of the parser to use for the global variable.
+ :type parser: SyntheticsVariableParser, optional
+
+ :param secure: Determines whether or not the extracted value will be obfuscated.
+ :type secure: bool, optional
+
+ :param type: Property of the Synthetic Test Response to extract into a local variable.
+ :type type: SyntheticsLocalVariableParsingOptionsType, optional
+ """
+ if field is not unset:
+ kwargs["field"] = field
+ if name is not unset:
+ kwargs["name"] = name
+ if parser is not unset:
+ kwargs["parser"] = parser
+ if secure is not unset:
+ kwargs["secure"] = secure
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_patch_test_body.py b/datadog_api_client/v1/model/synthetics_patch_test_body.py
new file mode 100644
index 0000000000..dfd0266085
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_patch_test_body.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_patch_test_operation import SyntheticsPatchTestOperation
+
+class SyntheticsPatchTestBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_patch_test_operation import SyntheticsPatchTestOperation
+ return {
+ "data": ([SyntheticsPatchTestOperation],),
+ }
+ attribute_map = {
+ "data": "data",
+ }
+
+ def __init__(self_, data: Union[List[SyntheticsPatchTestOperation], UnsetType]=unset, **kwargs):
+ """
+ Wrapper around an array of `JSON Patch `_ operations to perform on the test
+
+ :param data: Array of `JSON Patch `_ operations to perform on the test
+ :type data: [SyntheticsPatchTestOperation], optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_patch_test_operation.py b/datadog_api_client/v1/model/synthetics_patch_test_operation.py
new file mode 100644
index 0000000000..b192dea8f6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_patch_test_operation.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_patch_test_operation_name import SyntheticsPatchTestOperationName
+
+class SyntheticsPatchTestOperation(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_patch_test_operation_name import SyntheticsPatchTestOperationName
+ return {
+ "op": (SyntheticsPatchTestOperationName,),
+ "path": (str,),
+ "value": (bool, date, datetime, dict, float, int, list, str, UUID, none_type,),
+ }
+ attribute_map = {
+ "op": "op",
+ "path": "path",
+ "value": "value",
+ }
+
+ def __init__(self_, op: Union[SyntheticsPatchTestOperationName, UnsetType]=unset, path: Union[str, UnsetType]=unset, value: Union[Any, UnsetType]=unset, **kwargs):
+ """
+ A single `JSON Patch `_ operation to perform on the test
+
+ :param op: The operation to perform
+ :type op: SyntheticsPatchTestOperationName, optional
+
+ :param path: The path to the value to modify
+ :type path: str, optional
+
+ :param value: A value to use in a `JSON Patch `_ operation
+ :type value: bool, date, datetime, dict, float, int, list, str, UUID, none_type, optional
+ """
+ if op is not unset:
+ kwargs["op"] = op
+ if path is not unset:
+ kwargs["path"] = path
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_patch_test_operation_name.py b/datadog_api_client/v1/model/synthetics_patch_test_operation_name.py
new file mode 100644
index 0000000000..12d73a4dfe
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_patch_test_operation_name.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsPatchTestOperationName(ModelSimple):
+ """
+ The operation to perform
+
+ :param value: Must be one of ["add", "remove", "replace", "move", "copy", "test"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "add",
+ "remove",
+ "replace",
+ "move",
+ "copy",
+ "test",
+ }
+ ADD: ClassVar["SyntheticsPatchTestOperationName"]
+ REMOVE: ClassVar["SyntheticsPatchTestOperationName"]
+ REPLACE: ClassVar["SyntheticsPatchTestOperationName"]
+ MOVE: ClassVar["SyntheticsPatchTestOperationName"]
+ COPY: ClassVar["SyntheticsPatchTestOperationName"]
+ TEST: ClassVar["SyntheticsPatchTestOperationName"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsPatchTestOperationName.ADD = SyntheticsPatchTestOperationName("add")
+SyntheticsPatchTestOperationName.REMOVE = SyntheticsPatchTestOperationName("remove")
+SyntheticsPatchTestOperationName.REPLACE = SyntheticsPatchTestOperationName("replace")
+SyntheticsPatchTestOperationName.MOVE = SyntheticsPatchTestOperationName("move")
+SyntheticsPatchTestOperationName.COPY = SyntheticsPatchTestOperationName("copy")
+SyntheticsPatchTestOperationName.TEST = SyntheticsPatchTestOperationName("test")
diff --git a/datadog_api_client/v1/model/synthetics_playing_tab.py b/datadog_api_client/v1/model/synthetics_playing_tab.py
new file mode 100644
index 0000000000..29dc7897ef
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_playing_tab.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsPlayingTab(ModelSimple):
+ """
+ Navigate between different tabs for your browser test.
+
+ :param value: Must be one of [-1, 0, 1, 2, 3].
+ :type value: int
+ """
+
+ allowed_values = {
+ -1,
+ 0,
+ 1,
+ 2,
+ 3,
+ }
+ MAIN_TAB: ClassVar["SyntheticsPlayingTab"]
+ NEW_TAB: ClassVar["SyntheticsPlayingTab"]
+ TAB_1: ClassVar["SyntheticsPlayingTab"]
+ TAB_2: ClassVar["SyntheticsPlayingTab"]
+ TAB_3: ClassVar["SyntheticsPlayingTab"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (int,),
+ }
+SyntheticsPlayingTab.MAIN_TAB = SyntheticsPlayingTab(-1)
+SyntheticsPlayingTab.NEW_TAB = SyntheticsPlayingTab(0)
+SyntheticsPlayingTab.TAB_1 = SyntheticsPlayingTab(1)
+SyntheticsPlayingTab.TAB_2 = SyntheticsPlayingTab(2)
+SyntheticsPlayingTab.TAB_3 = SyntheticsPlayingTab(3)
diff --git a/datadog_api_client/v1/model/synthetics_private_location.py b/datadog_api_client/v1/model/synthetics_private_location.py
new file mode 100644
index 0000000000..1c86ae2a63
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location.py
@@ -0,0 +1,87 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_private_location_metadata import SyntheticsPrivateLocationMetadata
+ from datadog_api_client.v1.model.synthetics_private_location_secrets import SyntheticsPrivateLocationSecrets
+
+class SyntheticsPrivateLocation(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_private_location_metadata import SyntheticsPrivateLocationMetadata
+ from datadog_api_client.v1.model.synthetics_private_location_secrets import SyntheticsPrivateLocationSecrets
+ return {
+ "description": (str,),
+ "id": (str,),
+ "metadata": (SyntheticsPrivateLocationMetadata,),
+ "name": (str,),
+ "secrets": (SyntheticsPrivateLocationSecrets,),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "description": "description",
+ "id": "id",
+ "metadata": "metadata",
+ "name": "name",
+ "secrets": "secrets",
+ "tags": "tags",
+ }
+ read_only_vars = {
+ "id",
+ "secrets",
+ }
+
+ def __init__(self_, description: str, name: str, tags: List[str], id: Union[str, UnsetType]=unset, metadata: Union[SyntheticsPrivateLocationMetadata, UnsetType]=unset, secrets: Union[SyntheticsPrivateLocationSecrets, UnsetType]=unset, **kwargs):
+ """
+ Object containing information about the private location to create.
+
+ :param description: Description of the private location.
+ :type description: str
+
+ :param id: Unique identifier of the private location.
+ :type id: str, optional
+
+ :param metadata: Object containing metadata about the private location.
+ :type metadata: SyntheticsPrivateLocationMetadata, optional
+
+ :param name: Name of the private location.
+ :type name: str
+
+ :param secrets: Secrets for the private location. Only present in the response when creating the private location.
+ :type secrets: SyntheticsPrivateLocationSecrets, optional
+
+ :param tags: Array of tags attached to the private location.
+ :type tags: [str]
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if secrets is not unset:
+ kwargs["secrets"] = secrets
+ super().__init__(kwargs)
+
+
+ self_.description = description
+ self_.name = name
+ self_.tags = tags
diff --git a/datadog_api_client/v1/model/synthetics_private_location_creation_response.py b/datadog_api_client/v1/model/synthetics_private_location_creation_response.py
new file mode 100644
index 0000000000..efcaf6599d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location_creation_response.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_private_location import SyntheticsPrivateLocation
+ from datadog_api_client.v1.model.synthetics_private_location_creation_response_result_encryption import SyntheticsPrivateLocationCreationResponseResultEncryption
+
+class SyntheticsPrivateLocationCreationResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_private_location import SyntheticsPrivateLocation
+ from datadog_api_client.v1.model.synthetics_private_location_creation_response_result_encryption import SyntheticsPrivateLocationCreationResponseResultEncryption
+ return {
+ "config": (dict,),
+ "private_location": (SyntheticsPrivateLocation,),
+ "result_encryption": (SyntheticsPrivateLocationCreationResponseResultEncryption,),
+ }
+ attribute_map = {
+ "config": "config",
+ "private_location": "private_location",
+ "result_encryption": "result_encryption",
+ }
+
+ def __init__(self_, config: Union[dict, UnsetType]=unset, private_location: Union[SyntheticsPrivateLocation, UnsetType]=unset, result_encryption: Union[SyntheticsPrivateLocationCreationResponseResultEncryption, UnsetType]=unset, **kwargs):
+ """
+ Object that contains the new private location, the public key for result encryption, and the configuration skeleton.
+
+ :param config: Configuration skeleton for the private location. See installation instructions of the private location on how to use this configuration.
+ :type config: dict, optional
+
+ :param private_location: Object containing information about the private location to create.
+ :type private_location: SyntheticsPrivateLocation, optional
+
+ :param result_encryption: Public key for the result encryption.
+ :type result_encryption: SyntheticsPrivateLocationCreationResponseResultEncryption, optional
+ """
+ if config is not unset:
+ kwargs["config"] = config
+ if private_location is not unset:
+ kwargs["private_location"] = private_location
+ if result_encryption is not unset:
+ kwargs["result_encryption"] = result_encryption
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_private_location_creation_response_result_encryption.py b/datadog_api_client/v1/model/synthetics_private_location_creation_response_result_encryption.py
new file mode 100644
index 0000000000..dbc6d8aafc
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location_creation_response_result_encryption.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsPrivateLocationCreationResponseResultEncryption(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (str,),
+ "key": (str,),
+ }
+ attribute_map = {
+ "id": "id",
+ "key": "key",
+ }
+
+ def __init__(self_, id: Union[str, UnsetType]=unset, key: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Public key for the result encryption.
+
+ :param id: Fingerprint for the encryption key.
+ :type id: str, optional
+
+ :param key: Public key for result encryption.
+ :type key: str, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if key is not unset:
+ kwargs["key"] = key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_private_location_metadata.py b/datadog_api_client/v1/model/synthetics_private_location_metadata.py
new file mode 100644
index 0000000000..f9b446604c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location_metadata.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+
+class SyntheticsPrivateLocationMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+ return {
+ "restricted_roles": (SyntheticsRestrictedRoles,),
+ }
+ attribute_map = {
+ "restricted_roles": "restricted_roles",
+ }
+
+ def __init__(self_, restricted_roles: Union[SyntheticsRestrictedRoles, UnsetType]=unset, **kwargs):
+ """
+ Object containing metadata about the private location.
+
+ :param restricted_roles: A list of role identifiers that can be pulled from the Roles API, for restricting read and write access. This field is deprecated. Use the restriction policies API to manage permissions. **Deprecated**.
+ :type restricted_roles: SyntheticsRestrictedRoles, optional
+ """
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_private_location_secrets.py b/datadog_api_client/v1/model/synthetics_private_location_secrets.py
new file mode 100644
index 0000000000..4b73d687ca
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location_secrets.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_private_location_secrets_authentication import SyntheticsPrivateLocationSecretsAuthentication
+ from datadog_api_client.v1.model.synthetics_private_location_secrets_config_decryption import SyntheticsPrivateLocationSecretsConfigDecryption
+
+class SyntheticsPrivateLocationSecrets(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_private_location_secrets_authentication import SyntheticsPrivateLocationSecretsAuthentication
+ from datadog_api_client.v1.model.synthetics_private_location_secrets_config_decryption import SyntheticsPrivateLocationSecretsConfigDecryption
+ return {
+ "authentication": (SyntheticsPrivateLocationSecretsAuthentication,),
+ "config_decryption": (SyntheticsPrivateLocationSecretsConfigDecryption,),
+ }
+ attribute_map = {
+ "authentication": "authentication",
+ "config_decryption": "config_decryption",
+ }
+
+ def __init__(self_, authentication: Union[SyntheticsPrivateLocationSecretsAuthentication, UnsetType]=unset, config_decryption: Union[SyntheticsPrivateLocationSecretsConfigDecryption, UnsetType]=unset, **kwargs):
+ """
+ Secrets for the private location. Only present in the response when creating the private location.
+
+ :param authentication: Authentication part of the secrets.
+ :type authentication: SyntheticsPrivateLocationSecretsAuthentication, optional
+
+ :param config_decryption: Private key for the private location.
+ :type config_decryption: SyntheticsPrivateLocationSecretsConfigDecryption, optional
+ """
+ if authentication is not unset:
+ kwargs["authentication"] = authentication
+ if config_decryption is not unset:
+ kwargs["config_decryption"] = config_decryption
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_private_location_secrets_authentication.py b/datadog_api_client/v1/model/synthetics_private_location_secrets_authentication.py
new file mode 100644
index 0000000000..a8174f1d69
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location_secrets_authentication.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsPrivateLocationSecretsAuthentication(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (str,),
+ "key": (str,),
+ }
+ attribute_map = {
+ "id": "id",
+ "key": "key",
+ }
+ read_only_vars = {
+ "id",
+ "key",
+ }
+
+ def __init__(self_, id: Union[str, UnsetType]=unset, key: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Authentication part of the secrets.
+
+ :param id: Access key for the private location.
+ :type id: str, optional
+
+ :param key: Secret access key for the private location.
+ :type key: str, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if key is not unset:
+ kwargs["key"] = key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_private_location_secrets_config_decryption.py b/datadog_api_client/v1/model/synthetics_private_location_secrets_config_decryption.py
new file mode 100644
index 0000000000..269a3e624c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_private_location_secrets_config_decryption.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsPrivateLocationSecretsConfigDecryption(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "key": (str,),
+ }
+ attribute_map = {
+ "key": "key",
+ }
+ read_only_vars = {
+ "key",
+ }
+
+ def __init__(self_, key: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Private key for the private location.
+
+ :param key: Private key for the private location.
+ :type key: str, optional
+ """
+ if key is not unset:
+ kwargs["key"] = key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_restricted_roles.py b/datadog_api_client/v1/model/synthetics_restricted_roles.py
new file mode 100644
index 0000000000..f3046742ec
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_restricted_roles.py
@@ -0,0 +1,39 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsRestrictedRoles(ModelSimple):
+ """
+ A list of role identifiers that can be pulled from the Roles API, for restricting read and write access. This field is deprecated. Use the restriction policies API to manage permissions.
+
+
+ :type value: [str]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": ([str],),
+ }
diff --git a/datadog_api_client/v1/model/synthetics_ssl_certificate.py b/datadog_api_client/v1/model/synthetics_ssl_certificate.py
new file mode 100644
index 0000000000..0ae2041316
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ssl_certificate.py
@@ -0,0 +1,128 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ssl_certificate_issuer import SyntheticsSSLCertificateIssuer
+ from datadog_api_client.v1.model.synthetics_ssl_certificate_subject import SyntheticsSSLCertificateSubject
+
+class SyntheticsSSLCertificate(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ssl_certificate_issuer import SyntheticsSSLCertificateIssuer
+ from datadog_api_client.v1.model.synthetics_ssl_certificate_subject import SyntheticsSSLCertificateSubject
+ return {
+ "cipher": (str,),
+ "exponent": (float,),
+ "ext_key_usage": ([str],),
+ "fingerprint": (str,),
+ "fingerprint256": (str,),
+ "issuer": (SyntheticsSSLCertificateIssuer,),
+ "modulus": (str,),
+ "protocol": (str,),
+ "serial_number": (str,),
+ "subject": (SyntheticsSSLCertificateSubject,),
+ "valid_from": (datetime,),
+ "valid_to": (datetime,),
+ }
+ attribute_map = {
+ "cipher": "cipher",
+ "exponent": "exponent",
+ "ext_key_usage": "extKeyUsage",
+ "fingerprint": "fingerprint",
+ "fingerprint256": "fingerprint256",
+ "issuer": "issuer",
+ "modulus": "modulus",
+ "protocol": "protocol",
+ "serial_number": "serialNumber",
+ "subject": "subject",
+ "valid_from": "validFrom",
+ "valid_to": "validTo",
+ }
+
+ def __init__(self_, cipher: Union[str, UnsetType]=unset, exponent: Union[float, UnsetType]=unset, ext_key_usage: Union[List[str], UnsetType]=unset, fingerprint: Union[str, UnsetType]=unset, fingerprint256: Union[str, UnsetType]=unset, issuer: Union[SyntheticsSSLCertificateIssuer, UnsetType]=unset, modulus: Union[str, UnsetType]=unset, protocol: Union[str, UnsetType]=unset, serial_number: Union[str, UnsetType]=unset, subject: Union[SyntheticsSSLCertificateSubject, UnsetType]=unset, valid_from: Union[datetime, UnsetType]=unset, valid_to: Union[datetime, UnsetType]=unset, **kwargs):
+ """
+ Object describing the SSL certificate used for a Synthetic test.
+
+ :param cipher: Cipher used for the connection.
+ :type cipher: str, optional
+
+ :param exponent: Exponent associated to the certificate.
+ :type exponent: float, optional
+
+ :param ext_key_usage: Array of extensions and details used for the certificate.
+ :type ext_key_usage: [str], optional
+
+ :param fingerprint: MD5 digest of the DER-encoded Certificate information.
+ :type fingerprint: str, optional
+
+ :param fingerprint256: SHA-1 digest of the DER-encoded Certificate information.
+ :type fingerprint256: str, optional
+
+ :param issuer: Object describing the issuer of a SSL certificate.
+ :type issuer: SyntheticsSSLCertificateIssuer, optional
+
+ :param modulus: Modulus associated to the SSL certificate private key.
+ :type modulus: str, optional
+
+ :param protocol: TLS protocol used for the test.
+ :type protocol: str, optional
+
+ :param serial_number: Serial Number assigned by Symantec to the SSL certificate.
+ :type serial_number: str, optional
+
+ :param subject: Object describing the SSL certificate used for the test.
+ :type subject: SyntheticsSSLCertificateSubject, optional
+
+ :param valid_from: Date from which the SSL certificate is valid.
+ :type valid_from: datetime, optional
+
+ :param valid_to: Date until which the SSL certificate is valid.
+ :type valid_to: datetime, optional
+ """
+ if cipher is not unset:
+ kwargs["cipher"] = cipher
+ if exponent is not unset:
+ kwargs["exponent"] = exponent
+ if ext_key_usage is not unset:
+ kwargs["ext_key_usage"] = ext_key_usage
+ if fingerprint is not unset:
+ kwargs["fingerprint"] = fingerprint
+ if fingerprint256 is not unset:
+ kwargs["fingerprint256"] = fingerprint256
+ if issuer is not unset:
+ kwargs["issuer"] = issuer
+ if modulus is not unset:
+ kwargs["modulus"] = modulus
+ if protocol is not unset:
+ kwargs["protocol"] = protocol
+ if serial_number is not unset:
+ kwargs["serial_number"] = serial_number
+ if subject is not unset:
+ kwargs["subject"] = subject
+ if valid_from is not unset:
+ kwargs["valid_from"] = valid_from
+ if valid_to is not unset:
+ kwargs["valid_to"] = valid_to
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ssl_certificate_issuer.py b/datadog_api_client/v1/model/synthetics_ssl_certificate_issuer.py
new file mode 100644
index 0000000000..51bb04e327
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ssl_certificate_issuer.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsSSLCertificateIssuer(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "c": (str,),
+ "cn": (str,),
+ "l": (str,),
+ "o": (str,),
+ "ou": (str,),
+ "st": (str,),
+ }
+ attribute_map = {
+ "c": "C",
+ "cn": "CN",
+ "l": "L",
+ "o": "O",
+ "ou": "OU",
+ "st": "ST",
+ }
+
+ def __init__(self_, c: Union[str, UnsetType]=unset, cn: Union[str, UnsetType]=unset, l: Union[str, UnsetType]=unset, o: Union[str, UnsetType]=unset, ou: Union[str, UnsetType]=unset, st: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object describing the issuer of a SSL certificate.
+
+ :param c: Country Name that issued the certificate.
+ :type c: str, optional
+
+ :param cn: Common Name that issued certificate.
+ :type cn: str, optional
+
+ :param l: Locality that issued the certificate.
+ :type l: str, optional
+
+ :param o: Organization that issued the certificate.
+ :type o: str, optional
+
+ :param ou: Organizational Unit that issued the certificate.
+ :type ou: str, optional
+
+ :param st: State Or Province Name that issued the certificate.
+ :type st: str, optional
+ """
+ if c is not unset:
+ kwargs["c"] = c
+ if cn is not unset:
+ kwargs["cn"] = cn
+ if l is not unset:
+ kwargs["l"] = l
+ if o is not unset:
+ kwargs["o"] = o
+ if ou is not unset:
+ kwargs["ou"] = ou
+ if st is not unset:
+ kwargs["st"] = st
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_ssl_certificate_subject.py b/datadog_api_client/v1/model/synthetics_ssl_certificate_subject.py
new file mode 100644
index 0000000000..b878cc3188
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_ssl_certificate_subject.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsSSLCertificateSubject(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "c": (str,),
+ "cn": (str,),
+ "l": (str,),
+ "o": (str,),
+ "ou": (str,),
+ "st": (str,),
+ "alt_name": (str,),
+ }
+ attribute_map = {
+ "c": "C",
+ "cn": "CN",
+ "l": "L",
+ "o": "O",
+ "ou": "OU",
+ "st": "ST",
+ "alt_name": "altName",
+ }
+
+ def __init__(self_, c: Union[str, UnsetType]=unset, cn: Union[str, UnsetType]=unset, l: Union[str, UnsetType]=unset, o: Union[str, UnsetType]=unset, ou: Union[str, UnsetType]=unset, st: Union[str, UnsetType]=unset, alt_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object describing the SSL certificate used for the test.
+
+ :param c: Country Name associated with the certificate.
+ :type c: str, optional
+
+ :param cn: Common Name that associated with the certificate.
+ :type cn: str, optional
+
+ :param l: Locality associated with the certificate.
+ :type l: str, optional
+
+ :param o: Organization associated with the certificate.
+ :type o: str, optional
+
+ :param ou: Organizational Unit associated with the certificate.
+ :type ou: str, optional
+
+ :param st: State Or Province Name associated with the certificate.
+ :type st: str, optional
+
+ :param alt_name: Subject Alternative Name associated with the certificate.
+ :type alt_name: str, optional
+ """
+ if c is not unset:
+ kwargs["c"] = c
+ if cn is not unset:
+ kwargs["cn"] = cn
+ if l is not unset:
+ kwargs["l"] = l
+ if o is not unset:
+ kwargs["o"] = o
+ if ou is not unset:
+ kwargs["ou"] = ou
+ if st is not unset:
+ kwargs["st"] = st
+ if alt_name is not unset:
+ kwargs["alt_name"] = alt_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_step.py b/datadog_api_client/v1/model/synthetics_step.py
new file mode 100644
index 0000000000..122f9cd20d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_step.py
@@ -0,0 +1,112 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_step_type import SyntheticsStepType
+
+class SyntheticsStep(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_step_type import SyntheticsStepType
+ return {
+ "allow_failure": (bool,),
+ "always_execute": (bool,),
+ "exit_if_succeed": (bool,),
+ "is_critical": (bool,),
+ "name": (str,),
+ "no_screenshot": (bool,),
+ "params": (dict,),
+ "public_id": (str,),
+ "timeout": (int,),
+ "type": (SyntheticsStepType,),
+ }
+ attribute_map = {
+ "allow_failure": "allowFailure",
+ "always_execute": "alwaysExecute",
+ "exit_if_succeed": "exitIfSucceed",
+ "is_critical": "isCritical",
+ "name": "name",
+ "no_screenshot": "noScreenshot",
+ "params": "params",
+ "public_id": "public_id",
+ "timeout": "timeout",
+ "type": "type",
+ }
+
+ def __init__(self_, allow_failure: Union[bool, UnsetType]=unset, always_execute: Union[bool, UnsetType]=unset, exit_if_succeed: Union[bool, UnsetType]=unset, is_critical: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, no_screenshot: Union[bool, UnsetType]=unset, params: Union[dict, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, timeout: Union[int, UnsetType]=unset, type: Union[SyntheticsStepType, UnsetType]=unset, **kwargs):
+ """
+ The steps used in a Synthetic browser test.
+
+ :param allow_failure: A boolean set to allow this step to fail.
+ :type allow_failure: bool, optional
+
+ :param always_execute: A boolean set to always execute this step even if the previous step failed or was skipped.
+ :type always_execute: bool, optional
+
+ :param exit_if_succeed: A boolean set to exit the test if the step succeeds.
+ :type exit_if_succeed: bool, optional
+
+ :param is_critical: A boolean to use in addition to ``allowFailure`` to determine if the test should be marked as failed when the step fails.
+ :type is_critical: bool, optional
+
+ :param name: The name of the step.
+ :type name: str, optional
+
+ :param no_screenshot: A boolean set to skip taking a screenshot for the step.
+ :type no_screenshot: bool, optional
+
+ :param params: The parameters of the step.
+ :type params: dict, optional
+
+ :param public_id: The public ID of the step.
+ :type public_id: str, optional
+
+ :param timeout: The time before declaring a step failed.
+ :type timeout: int, optional
+
+ :param type: Step type used in your Synthetic test.
+ :type type: SyntheticsStepType, optional
+ """
+ if allow_failure is not unset:
+ kwargs["allow_failure"] = allow_failure
+ if always_execute is not unset:
+ kwargs["always_execute"] = always_execute
+ if exit_if_succeed is not unset:
+ kwargs["exit_if_succeed"] = exit_if_succeed
+ if is_critical is not unset:
+ kwargs["is_critical"] = is_critical
+ if name is not unset:
+ kwargs["name"] = name
+ if no_screenshot is not unset:
+ kwargs["no_screenshot"] = no_screenshot
+ if params is not unset:
+ kwargs["params"] = params
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if timeout is not unset:
+ kwargs["timeout"] = timeout
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_step_detail.py b/datadog_api_client/v1/model/synthetics_step_detail.py
new file mode 100644
index 0000000000..a927768bc2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_step_detail.py
@@ -0,0 +1,188 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_browser_error import SyntheticsBrowserError
+ from datadog_api_client.v1.model.synthetics_check_type import SyntheticsCheckType
+ from datadog_api_client.v1.model.synthetics_browser_test_result_failure import SyntheticsBrowserTestResultFailure
+ from datadog_api_client.v1.model.synthetics_playing_tab import SyntheticsPlayingTab
+ from datadog_api_client.v1.model.synthetics_step_type import SyntheticsStepType
+ from datadog_api_client.v1.model.synthetics_core_web_vitals import SyntheticsCoreWebVitals
+ from datadog_api_client.v1.model.synthetics_step_detail_warning import SyntheticsStepDetailWarning
+
+class SyntheticsStepDetail(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_browser_error import SyntheticsBrowserError
+ from datadog_api_client.v1.model.synthetics_check_type import SyntheticsCheckType
+ from datadog_api_client.v1.model.synthetics_browser_test_result_failure import SyntheticsBrowserTestResultFailure
+ from datadog_api_client.v1.model.synthetics_playing_tab import SyntheticsPlayingTab
+ from datadog_api_client.v1.model.synthetics_step_type import SyntheticsStepType
+ from datadog_api_client.v1.model.synthetics_core_web_vitals import SyntheticsCoreWebVitals
+ from datadog_api_client.v1.model.synthetics_step_detail_warning import SyntheticsStepDetailWarning
+ return {
+ "allow_failure": (bool,),
+ "browser_errors": ([SyntheticsBrowserError],),
+ "check_type": (SyntheticsCheckType,),
+ "description": (str,),
+ "duration": (float,),
+ "error": (str,),
+ "failure": (SyntheticsBrowserTestResultFailure,),
+ "playing_tab": (SyntheticsPlayingTab,),
+ "screenshot_bucket_key": (bool,),
+ "skipped": (bool,),
+ "snapshot_bucket_key": (bool,),
+ "step_id": (int,),
+ "sub_test_step_details": ([SyntheticsStepDetail],),
+ "time_to_interactive": (float,),
+ "type": (SyntheticsStepType,),
+ "url": (str,),
+ "value": (bool, date, datetime, dict, float, int, list, str, UUID, none_type,),
+ "vitals_metrics": ([SyntheticsCoreWebVitals],),
+ "warnings": ([SyntheticsStepDetailWarning],),
+ }
+ attribute_map = {
+ "allow_failure": "allowFailure",
+ "browser_errors": "browserErrors",
+ "check_type": "checkType",
+ "description": "description",
+ "duration": "duration",
+ "error": "error",
+ "failure": "failure",
+ "playing_tab": "playingTab",
+ "screenshot_bucket_key": "screenshotBucketKey",
+ "skipped": "skipped",
+ "snapshot_bucket_key": "snapshotBucketKey",
+ "step_id": "stepId",
+ "sub_test_step_details": "subTestStepDetails",
+ "time_to_interactive": "timeToInteractive",
+ "type": "type",
+ "url": "url",
+ "value": "value",
+ "vitals_metrics": "vitalsMetrics",
+ "warnings": "warnings",
+ }
+
+ def __init__(self_, allow_failure: Union[bool, UnsetType]=unset, browser_errors: Union[List[SyntheticsBrowserError], UnsetType]=unset, check_type: Union[SyntheticsCheckType, UnsetType]=unset, description: Union[str, UnsetType]=unset, duration: Union[float, UnsetType]=unset, error: Union[str, UnsetType]=unset, failure: Union[SyntheticsBrowserTestResultFailure, UnsetType]=unset, playing_tab: Union[SyntheticsPlayingTab, UnsetType]=unset, screenshot_bucket_key: Union[bool, UnsetType]=unset, skipped: Union[bool, UnsetType]=unset, snapshot_bucket_key: Union[bool, UnsetType]=unset, step_id: Union[int, UnsetType]=unset, sub_test_step_details: Union[List[SyntheticsStepDetail], UnsetType]=unset, time_to_interactive: Union[float, UnsetType]=unset, type: Union[SyntheticsStepType, UnsetType]=unset, url: Union[str, UnsetType]=unset, value: Union[Any, UnsetType]=unset, vitals_metrics: Union[List[SyntheticsCoreWebVitals], UnsetType]=unset, warnings: Union[List[SyntheticsStepDetailWarning], UnsetType]=unset, **kwargs):
+ """
+ Object describing a step for a Synthetic test.
+
+ :param allow_failure: Whether or not the step was allowed to fail.
+ :type allow_failure: bool, optional
+
+ :param browser_errors: Array of errors collected for a browser test.
+ :type browser_errors: [SyntheticsBrowserError], optional
+
+ :param check_type: Type of assertion to apply in an API test.
+ :type check_type: SyntheticsCheckType, optional
+
+ :param description: Description of the test.
+ :type description: str, optional
+
+ :param duration: Total duration in millisecond of the test.
+ :type duration: float, optional
+
+ :param error: Error returned by the test.
+ :type error: str, optional
+
+ :param failure: The browser test failure details.
+ :type failure: SyntheticsBrowserTestResultFailure, optional
+
+ :param playing_tab: Navigate between different tabs for your browser test.
+ :type playing_tab: SyntheticsPlayingTab, optional
+
+ :param screenshot_bucket_key: Whether or not screenshots where collected by the test.
+ :type screenshot_bucket_key: bool, optional
+
+ :param skipped: Whether or not to skip this step.
+ :type skipped: bool, optional
+
+ :param snapshot_bucket_key: Whether or not snapshots where collected by the test.
+ :type snapshot_bucket_key: bool, optional
+
+ :param step_id: The step ID.
+ :type step_id: int, optional
+
+ :param sub_test_step_details: If this step includes a sub-test.
+ `Subtests documentation `_.
+ :type sub_test_step_details: [SyntheticsStepDetail], optional
+
+ :param time_to_interactive: Time before starting the step.
+ :type time_to_interactive: float, optional
+
+ :param type: Step type used in your Synthetic test.
+ :type type: SyntheticsStepType, optional
+
+ :param url: URL to perform the step against.
+ :type url: str, optional
+
+ :param value: Value for the step.
+ :type value: bool, date, datetime, dict, float, int, list, str, UUID, none_type, optional
+
+ :param vitals_metrics: Array of Core Web Vitals metrics for the step.
+ :type vitals_metrics: [SyntheticsCoreWebVitals], optional
+
+ :param warnings: Warning collected that didn't failed the step.
+ :type warnings: [SyntheticsStepDetailWarning], optional
+ """
+ if allow_failure is not unset:
+ kwargs["allow_failure"] = allow_failure
+ if browser_errors is not unset:
+ kwargs["browser_errors"] = browser_errors
+ if check_type is not unset:
+ kwargs["check_type"] = check_type
+ if description is not unset:
+ kwargs["description"] = description
+ if duration is not unset:
+ kwargs["duration"] = duration
+ if error is not unset:
+ kwargs["error"] = error
+ if failure is not unset:
+ kwargs["failure"] = failure
+ if playing_tab is not unset:
+ kwargs["playing_tab"] = playing_tab
+ if screenshot_bucket_key is not unset:
+ kwargs["screenshot_bucket_key"] = screenshot_bucket_key
+ if skipped is not unset:
+ kwargs["skipped"] = skipped
+ if snapshot_bucket_key is not unset:
+ kwargs["snapshot_bucket_key"] = snapshot_bucket_key
+ if step_id is not unset:
+ kwargs["step_id"] = step_id
+ if sub_test_step_details is not unset:
+ kwargs["sub_test_step_details"] = sub_test_step_details
+ if time_to_interactive is not unset:
+ kwargs["time_to_interactive"] = time_to_interactive
+ if type is not unset:
+ kwargs["type"] = type
+ if url is not unset:
+ kwargs["url"] = url
+ if value is not unset:
+ kwargs["value"] = value
+ if vitals_metrics is not unset:
+ kwargs["vitals_metrics"] = vitals_metrics
+ if warnings is not unset:
+ kwargs["warnings"] = warnings
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_step_detail_warning.py b/datadog_api_client/v1/model/synthetics_step_detail_warning.py
new file mode 100644
index 0000000000..13b62b06f3
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_step_detail_warning.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_warning_type import SyntheticsWarningType
+
+class SyntheticsStepDetailWarning(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_warning_type import SyntheticsWarningType
+ return {
+ "message": (str,),
+ "type": (SyntheticsWarningType,),
+ }
+ attribute_map = {
+ "message": "message",
+ "type": "type",
+ }
+
+ def __init__(self_, message: str, type: SyntheticsWarningType, **kwargs):
+ """
+ Object collecting warnings for a given step.
+
+ :param message: Message for the warning.
+ :type message: str
+
+ :param type: User locator used.
+ :type type: SyntheticsWarningType
+ """
+ super().__init__(kwargs)
+
+
+ self_.message = message
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_step_type.py b/datadog_api_client/v1/model/synthetics_step_type.py
new file mode 100644
index 0000000000..b977403155
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_step_type.py
@@ -0,0 +1,129 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsStepType(ModelSimple):
+ """
+ Step type used in your Synthetic test.
+
+ :param value: Must be one of ["assertCurrentUrl", "assertElementAttribute", "assertElementContent", "assertElementPresent", "assertEmail", "assertFileDownload", "assertFromJavascript", "assertPageContains", "assertPageLacks", "assertRequests", "click", "drag", "drop", "extractFromJavascript", "extractFromEmailBody", "extractVariable", "goToEmailLink", "goToUrl", "goToUrlAndMeasureTti", "hover", "playSubTest", "pressKey", "refresh", "runApiTest", "scroll", "selectOption", "typeText", "uploadFiles", "wait"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "assertCurrentUrl",
+ "assertElementAttribute",
+ "assertElementContent",
+ "assertElementPresent",
+ "assertEmail",
+ "assertFileDownload",
+ "assertFromJavascript",
+ "assertPageContains",
+ "assertPageLacks",
+ "assertRequests",
+ "click",
+ "drag",
+ "drop",
+ "extractFromJavascript",
+ "extractFromEmailBody",
+ "extractVariable",
+ "goToEmailLink",
+ "goToUrl",
+ "goToUrlAndMeasureTti",
+ "hover",
+ "playSubTest",
+ "pressKey",
+ "refresh",
+ "runApiTest",
+ "scroll",
+ "selectOption",
+ "typeText",
+ "uploadFiles",
+ "wait",
+ }
+ ASSERT_CURRENT_URL: ClassVar["SyntheticsStepType"]
+ ASSERT_ELEMENT_ATTRIBUTE: ClassVar["SyntheticsStepType"]
+ ASSERT_ELEMENT_CONTENT: ClassVar["SyntheticsStepType"]
+ ASSERT_ELEMENT_PRESENT: ClassVar["SyntheticsStepType"]
+ ASSERT_EMAIL: ClassVar["SyntheticsStepType"]
+ ASSERT_FILE_DOWNLOAD: ClassVar["SyntheticsStepType"]
+ ASSERT_FROM_JAVASCRIPT: ClassVar["SyntheticsStepType"]
+ ASSERT_PAGE_CONTAINS: ClassVar["SyntheticsStepType"]
+ ASSERT_PAGE_LACKS: ClassVar["SyntheticsStepType"]
+ ASSERT_REQUESTS: ClassVar["SyntheticsStepType"]
+ CLICK: ClassVar["SyntheticsStepType"]
+ DRAG: ClassVar["SyntheticsStepType"]
+ DROP: ClassVar["SyntheticsStepType"]
+ EXTRACT_FROM_JAVASCRIPT: ClassVar["SyntheticsStepType"]
+ EXTRACT_FROM_EMAIL_BODY: ClassVar["SyntheticsStepType"]
+ EXTRACT_VARIABLE: ClassVar["SyntheticsStepType"]
+ GO_TO_EMAIL_LINK: ClassVar["SyntheticsStepType"]
+ GO_TO_URL: ClassVar["SyntheticsStepType"]
+ GO_TO_URL_AND_MEASURE_TTI: ClassVar["SyntheticsStepType"]
+ HOVER: ClassVar["SyntheticsStepType"]
+ PLAY_SUB_TEST: ClassVar["SyntheticsStepType"]
+ PRESS_KEY: ClassVar["SyntheticsStepType"]
+ REFRESH: ClassVar["SyntheticsStepType"]
+ RUN_API_TEST: ClassVar["SyntheticsStepType"]
+ SCROLL: ClassVar["SyntheticsStepType"]
+ SELECT_OPTION: ClassVar["SyntheticsStepType"]
+ TYPE_TEXT: ClassVar["SyntheticsStepType"]
+ UPLOAD_FILES: ClassVar["SyntheticsStepType"]
+ WAIT: ClassVar["SyntheticsStepType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsStepType.ASSERT_CURRENT_URL = SyntheticsStepType("assertCurrentUrl")
+SyntheticsStepType.ASSERT_ELEMENT_ATTRIBUTE = SyntheticsStepType("assertElementAttribute")
+SyntheticsStepType.ASSERT_ELEMENT_CONTENT = SyntheticsStepType("assertElementContent")
+SyntheticsStepType.ASSERT_ELEMENT_PRESENT = SyntheticsStepType("assertElementPresent")
+SyntheticsStepType.ASSERT_EMAIL = SyntheticsStepType("assertEmail")
+SyntheticsStepType.ASSERT_FILE_DOWNLOAD = SyntheticsStepType("assertFileDownload")
+SyntheticsStepType.ASSERT_FROM_JAVASCRIPT = SyntheticsStepType("assertFromJavascript")
+SyntheticsStepType.ASSERT_PAGE_CONTAINS = SyntheticsStepType("assertPageContains")
+SyntheticsStepType.ASSERT_PAGE_LACKS = SyntheticsStepType("assertPageLacks")
+SyntheticsStepType.ASSERT_REQUESTS = SyntheticsStepType("assertRequests")
+SyntheticsStepType.CLICK = SyntheticsStepType("click")
+SyntheticsStepType.DRAG = SyntheticsStepType("drag")
+SyntheticsStepType.DROP = SyntheticsStepType("drop")
+SyntheticsStepType.EXTRACT_FROM_JAVASCRIPT = SyntheticsStepType("extractFromJavascript")
+SyntheticsStepType.EXTRACT_FROM_EMAIL_BODY = SyntheticsStepType("extractFromEmailBody")
+SyntheticsStepType.EXTRACT_VARIABLE = SyntheticsStepType("extractVariable")
+SyntheticsStepType.GO_TO_EMAIL_LINK = SyntheticsStepType("goToEmailLink")
+SyntheticsStepType.GO_TO_URL = SyntheticsStepType("goToUrl")
+SyntheticsStepType.GO_TO_URL_AND_MEASURE_TTI = SyntheticsStepType("goToUrlAndMeasureTti")
+SyntheticsStepType.HOVER = SyntheticsStepType("hover")
+SyntheticsStepType.PLAY_SUB_TEST = SyntheticsStepType("playSubTest")
+SyntheticsStepType.PRESS_KEY = SyntheticsStepType("pressKey")
+SyntheticsStepType.REFRESH = SyntheticsStepType("refresh")
+SyntheticsStepType.RUN_API_TEST = SyntheticsStepType("runApiTest")
+SyntheticsStepType.SCROLL = SyntheticsStepType("scroll")
+SyntheticsStepType.SELECT_OPTION = SyntheticsStepType("selectOption")
+SyntheticsStepType.TYPE_TEXT = SyntheticsStepType("typeText")
+SyntheticsStepType.UPLOAD_FILES = SyntheticsStepType("uploadFiles")
+SyntheticsStepType.WAIT = SyntheticsStepType("wait")
diff --git a/datadog_api_client/v1/model/synthetics_test_call_type.py b/datadog_api_client/v1/model/synthetics_test_call_type.py
new file mode 100644
index 0000000000..8f127e71a7
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_call_type.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestCallType(ModelSimple):
+ """
+ The type of call to perform. Used by gRPC steps (`healthcheck`, `unary`)
+ and MCP steps (`init`, `tool_list`, `tool_call`). Valid values depend on
+ the parent step's `subtype`.
+
+ :param value: Must be one of ["healthcheck", "unary", "init", "tool_list", "tool_call"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "healthcheck",
+ "unary",
+ "init",
+ "tool_list",
+ "tool_call",
+ }
+ HEALTHCHECK: ClassVar["SyntheticsTestCallType"]
+ UNARY: ClassVar["SyntheticsTestCallType"]
+ INIT: ClassVar["SyntheticsTestCallType"]
+ TOOL_LIST: ClassVar["SyntheticsTestCallType"]
+ TOOL_CALL: ClassVar["SyntheticsTestCallType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestCallType.HEALTHCHECK = SyntheticsTestCallType("healthcheck")
+SyntheticsTestCallType.UNARY = SyntheticsTestCallType("unary")
+SyntheticsTestCallType.INIT = SyntheticsTestCallType("init")
+SyntheticsTestCallType.TOOL_LIST = SyntheticsTestCallType("tool_list")
+SyntheticsTestCallType.TOOL_CALL = SyntheticsTestCallType("tool_call")
diff --git a/datadog_api_client/v1/model/synthetics_test_ci_options.py b/datadog_api_client/v1/model/synthetics_test_ci_options.py
new file mode 100644
index 0000000000..81ecdc4954
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_ci_options.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_execution_rule import SyntheticsTestExecutionRule
+
+class SyntheticsTestCiOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_execution_rule import SyntheticsTestExecutionRule
+ return {
+ "execution_rule": (SyntheticsTestExecutionRule,),
+ }
+ attribute_map = {
+ "execution_rule": "executionRule",
+ }
+
+ def __init__(self_, execution_rule: SyntheticsTestExecutionRule, **kwargs):
+ """
+ CI/CD options for a Synthetic test.
+
+ :param execution_rule: Execution rule for a Synthetic test.
+ :type execution_rule: SyntheticsTestExecutionRule
+ """
+ super().__init__(kwargs)
+
+
+ self_.execution_rule = execution_rule
diff --git a/datadog_api_client/v1/model/synthetics_test_config.py b/datadog_api_client/v1/model/synthetics_test_config.py
new file mode 100644
index 0000000000..164174c624
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_config.py
@@ -0,0 +1,91 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_browser_variable import SyntheticsBrowserVariable
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsTestConfig(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+ from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+ from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+ from datadog_api_client.v1.model.synthetics_browser_variable import SyntheticsBrowserVariable
+ return {
+ "assertions": ([SyntheticsAssertion],),
+ "config_variables": ([SyntheticsConfigVariable],),
+ "request": (SyntheticsTestRequest,),
+ "variables": ([SyntheticsBrowserVariable],),
+ }
+ attribute_map = {
+ "assertions": "assertions",
+ "config_variables": "configVariables",
+ "request": "request",
+ "variables": "variables",
+ }
+
+ def __init__(self_, assertions: Union[List[Union[SyntheticsAssertion, SyntheticsAssertionTarget, SyntheticsAssertionBodyHashTarget, SyntheticsAssertionJSONPathTarget, SyntheticsAssertionJSONSchemaTarget, SyntheticsAssertionXPathTarget, SyntheticsAssertionJavascript, SyntheticsAssertionMCPServerCapabilitiesTarget, SyntheticsAssertionMCPRespectsSpecification]], UnsetType]=unset, config_variables: Union[List[SyntheticsConfigVariable], UnsetType]=unset, request: Union[SyntheticsTestRequest, UnsetType]=unset, variables: Union[List[SyntheticsBrowserVariable], UnsetType]=unset, **kwargs):
+ """
+ Configuration object for a Synthetic test.
+
+ :param assertions: Array of assertions used for the test. Required for single API tests.
+ :type assertions: [SyntheticsAssertion], optional
+
+ :param config_variables: Array of variables used for the test.
+ :type config_variables: [SyntheticsConfigVariable], optional
+
+ :param request: Object describing the Synthetic test request.
+ :type request: SyntheticsTestRequest, optional
+
+ :param variables: Browser tests only - array of variables used for the test steps.
+ :type variables: [SyntheticsBrowserVariable], optional
+ """
+ if assertions is not unset:
+ kwargs["assertions"] = assertions
+ if config_variables is not unset:
+ kwargs["config_variables"] = config_variables
+ if request is not unset:
+ kwargs["request"] = request
+ if variables is not unset:
+ kwargs["variables"] = variables
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_details.py b/datadog_api_client/v1/model/synthetics_test_details.py
new file mode 100644
index 0000000000..3aedff0221
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_details.py
@@ -0,0 +1,167 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_step import SyntheticsStep
+ from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+ from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsTestDetails(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_step import SyntheticsStep
+ from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+ from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+ return {
+ "config": (SyntheticsTestConfig,),
+ "creator": (Creator,),
+ "locations": ([str],),
+ "message": (str,),
+ "monitor_id": (int,),
+ "name": (str,),
+ "options": (SyntheticsTestOptions,),
+ "public_id": (str,),
+ "status": (SyntheticsTestPauseStatus,),
+ "steps": ([SyntheticsStep],),
+ "subtype": (SyntheticsTestDetailsSubType,),
+ "tags": ([str],),
+ "type": (SyntheticsTestDetailsType,),
+ }
+ attribute_map = {
+ "config": "config",
+ "creator": "creator",
+ "locations": "locations",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "name": "name",
+ "options": "options",
+ "public_id": "public_id",
+ "status": "status",
+ "steps": "steps",
+ "subtype": "subtype",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "creator",
+ "monitor_id",
+ "public_id",
+ }
+
+ def __init__(self_, config: Union[SyntheticsTestConfig, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, locations: Union[List[str], UnsetType]=unset, message: Union[str, UnsetType]=unset, monitor_id: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, options: Union[SyntheticsTestOptions, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestPauseStatus, UnsetType]=unset, steps: Union[List[SyntheticsStep], UnsetType]=unset, subtype: Union[SyntheticsTestDetailsSubType, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[SyntheticsTestDetailsType, UnsetType]=unset, **kwargs):
+ """
+ Object containing details about your Synthetic test.
+
+ :param config: Configuration object for a Synthetic test.
+ :type config: SyntheticsTestConfig, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param locations: Array of locations used to run the test.
+ :type locations: [str], optional
+
+ :param message: Notification message associated with the test.
+ :type message: str, optional
+
+ :param monitor_id: The associated monitor ID.
+ :type monitor_id: int, optional
+
+ :param name: Name of the test.
+ :type name: str, optional
+
+ :param options: Object describing the extra options for a Synthetic test.
+ :type options: SyntheticsTestOptions, optional
+
+ :param public_id: The test public ID.
+ :type public_id: str, optional
+
+ :param status: Define whether you want to start ( ``live`` ) or pause ( ``paused`` ) a
+ Synthetic test.
+ :type status: SyntheticsTestPauseStatus, optional
+
+ :param steps: The steps of the test if they exist.
+ :type steps: [SyntheticsStep], optional
+
+ :param subtype: The subtype of the Synthetic API test, ``http`` , ``ssl`` , ``tcp`` ,
+ ``dns`` , ``icmp`` , ``udp`` , ``websocket`` , ``grpc`` or ``multi``.
+ :type subtype: SyntheticsTestDetailsSubType, optional
+
+ :param tags: Array of tags attached to the test.
+ :type tags: [str], optional
+
+ :param type: Type of the Synthetic test.
+ :type type: SyntheticsTestDetailsType, optional
+ """
+ if config is not unset:
+ kwargs["config"] = config
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if locations is not unset:
+ kwargs["locations"] = locations
+ if message is not unset:
+ kwargs["message"] = message
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if name is not unset:
+ kwargs["name"] = name
+ if options is not unset:
+ kwargs["options"] = options
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if status is not unset:
+ kwargs["status"] = status
+ if steps is not unset:
+ kwargs["steps"] = steps
+ if subtype is not unset:
+ kwargs["subtype"] = subtype
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_details_sub_type.py b/datadog_api_client/v1/model/synthetics_test_details_sub_type.py
new file mode 100644
index 0000000000..c8c3009139
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_details_sub_type.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestDetailsSubType(ModelSimple):
+ """
+ The subtype of the Synthetic API test, `http`, `ssl`, `tcp`,
+ `dns`, `icmp`, `udp`, `websocket`, `grpc` or `multi`.
+
+ :param value: Must be one of ["http", "ssl", "tcp", "dns", "multi", "icmp", "udp", "websocket", "grpc"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "http",
+ "ssl",
+ "tcp",
+ "dns",
+ "multi",
+ "icmp",
+ "udp",
+ "websocket",
+ "grpc",
+ }
+ HTTP: ClassVar["SyntheticsTestDetailsSubType"]
+ SSL: ClassVar["SyntheticsTestDetailsSubType"]
+ TCP: ClassVar["SyntheticsTestDetailsSubType"]
+ DNS: ClassVar["SyntheticsTestDetailsSubType"]
+ MULTI: ClassVar["SyntheticsTestDetailsSubType"]
+ ICMP: ClassVar["SyntheticsTestDetailsSubType"]
+ UDP: ClassVar["SyntheticsTestDetailsSubType"]
+ WEBSOCKET: ClassVar["SyntheticsTestDetailsSubType"]
+ GRPC: ClassVar["SyntheticsTestDetailsSubType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestDetailsSubType.HTTP = SyntheticsTestDetailsSubType("http")
+SyntheticsTestDetailsSubType.SSL = SyntheticsTestDetailsSubType("ssl")
+SyntheticsTestDetailsSubType.TCP = SyntheticsTestDetailsSubType("tcp")
+SyntheticsTestDetailsSubType.DNS = SyntheticsTestDetailsSubType("dns")
+SyntheticsTestDetailsSubType.MULTI = SyntheticsTestDetailsSubType("multi")
+SyntheticsTestDetailsSubType.ICMP = SyntheticsTestDetailsSubType("icmp")
+SyntheticsTestDetailsSubType.UDP = SyntheticsTestDetailsSubType("udp")
+SyntheticsTestDetailsSubType.WEBSOCKET = SyntheticsTestDetailsSubType("websocket")
+SyntheticsTestDetailsSubType.GRPC = SyntheticsTestDetailsSubType("grpc")
diff --git a/datadog_api_client/v1/model/synthetics_test_details_type.py b/datadog_api_client/v1/model/synthetics_test_details_type.py
new file mode 100644
index 0000000000..4c74a61352
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_details_type.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestDetailsType(ModelSimple):
+ """
+ Type of the Synthetic test.
+
+ :param value: Must be one of ["api", "browser", "mobile", "network"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "api",
+ "browser",
+ "mobile",
+ "network",
+ }
+ API: ClassVar["SyntheticsTestDetailsType"]
+ BROWSER: ClassVar["SyntheticsTestDetailsType"]
+ MOBILE: ClassVar["SyntheticsTestDetailsType"]
+ NETWORK: ClassVar["SyntheticsTestDetailsType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestDetailsType.API = SyntheticsTestDetailsType("api")
+SyntheticsTestDetailsType.BROWSER = SyntheticsTestDetailsType("browser")
+SyntheticsTestDetailsType.MOBILE = SyntheticsTestDetailsType("mobile")
+SyntheticsTestDetailsType.NETWORK = SyntheticsTestDetailsType("network")
diff --git a/datadog_api_client/v1/model/synthetics_test_details_without_steps.py b/datadog_api_client/v1/model/synthetics_test_details_without_steps.py
new file mode 100644
index 0000000000..43e178d09c
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_details_without_steps.py
@@ -0,0 +1,158 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+ from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+ from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+ from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+ from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+ from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+ from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsTestDetailsWithoutSteps(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+ from datadog_api_client.v1.model.creator import Creator
+ from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+ from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+ return {
+ "config": (SyntheticsTestConfig,),
+ "creator": (Creator,),
+ "locations": ([str],),
+ "message": (str,),
+ "monitor_id": (int,),
+ "name": (str,),
+ "options": (SyntheticsTestOptions,),
+ "public_id": (str,),
+ "status": (SyntheticsTestPauseStatus,),
+ "subtype": (SyntheticsTestDetailsSubType,),
+ "tags": ([str],),
+ "type": (SyntheticsTestDetailsType,),
+ }
+ attribute_map = {
+ "config": "config",
+ "creator": "creator",
+ "locations": "locations",
+ "message": "message",
+ "monitor_id": "monitor_id",
+ "name": "name",
+ "options": "options",
+ "public_id": "public_id",
+ "status": "status",
+ "subtype": "subtype",
+ "tags": "tags",
+ "type": "type",
+ }
+ read_only_vars = {
+ "creator",
+ "monitor_id",
+ "public_id",
+ }
+
+ def __init__(self_, config: Union[SyntheticsTestConfig, UnsetType]=unset, creator: Union[Creator, UnsetType]=unset, locations: Union[List[str], UnsetType]=unset, message: Union[str, UnsetType]=unset, monitor_id: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, options: Union[SyntheticsTestOptions, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, status: Union[SyntheticsTestPauseStatus, UnsetType]=unset, subtype: Union[SyntheticsTestDetailsSubType, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, type: Union[SyntheticsTestDetailsType, UnsetType]=unset, **kwargs):
+ """
+ Object containing details about your Synthetic test, without test steps.
+
+ :param config: Configuration object for a Synthetic test.
+ :type config: SyntheticsTestConfig, optional
+
+ :param creator: Object describing the creator of the shared element.
+ :type creator: Creator, optional
+
+ :param locations: Array of locations used to run the test.
+ :type locations: [str], optional
+
+ :param message: Notification message associated with the test.
+ :type message: str, optional
+
+ :param monitor_id: The associated monitor ID.
+ :type monitor_id: int, optional
+
+ :param name: Name of the test.
+ :type name: str, optional
+
+ :param options: Object describing the extra options for a Synthetic test.
+ :type options: SyntheticsTestOptions, optional
+
+ :param public_id: The test public ID.
+ :type public_id: str, optional
+
+ :param status: Define whether you want to start ( ``live`` ) or pause ( ``paused`` ) a
+ Synthetic test.
+ :type status: SyntheticsTestPauseStatus, optional
+
+ :param subtype: The subtype of the Synthetic API test, ``http`` , ``ssl`` , ``tcp`` ,
+ ``dns`` , ``icmp`` , ``udp`` , ``websocket`` , ``grpc`` or ``multi``.
+ :type subtype: SyntheticsTestDetailsSubType, optional
+
+ :param tags: Array of tags attached to the test.
+ :type tags: [str], optional
+
+ :param type: Type of the Synthetic test.
+ :type type: SyntheticsTestDetailsType, optional
+ """
+ if config is not unset:
+ kwargs["config"] = config
+ if creator is not unset:
+ kwargs["creator"] = creator
+ if locations is not unset:
+ kwargs["locations"] = locations
+ if message is not unset:
+ kwargs["message"] = message
+ if monitor_id is not unset:
+ kwargs["monitor_id"] = monitor_id
+ if name is not unset:
+ kwargs["name"] = name
+ if options is not unset:
+ kwargs["options"] = options
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if status is not unset:
+ kwargs["status"] = status
+ if subtype is not unset:
+ kwargs["subtype"] = subtype
+ if tags is not unset:
+ kwargs["tags"] = tags
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_execution_rule.py b/datadog_api_client/v1/model/synthetics_test_execution_rule.py
new file mode 100644
index 0000000000..0a15ece6eb
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_execution_rule.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestExecutionRule(ModelSimple):
+ """
+ Execution rule for a Synthetic test.
+
+ :param value: Must be one of ["blocking", "non_blocking", "skipped"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "blocking",
+ "non_blocking",
+ "skipped",
+ }
+ BLOCKING: ClassVar["SyntheticsTestExecutionRule"]
+ NON_BLOCKING: ClassVar["SyntheticsTestExecutionRule"]
+ SKIPPED: ClassVar["SyntheticsTestExecutionRule"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestExecutionRule.BLOCKING = SyntheticsTestExecutionRule("blocking")
+SyntheticsTestExecutionRule.NON_BLOCKING = SyntheticsTestExecutionRule("non_blocking")
+SyntheticsTestExecutionRule.SKIPPED = SyntheticsTestExecutionRule("skipped")
diff --git a/datadog_api_client/v1/model/synthetics_test_headers.py b/datadog_api_client/v1/model/synthetics_test_headers.py
new file mode 100644
index 0000000000..488edd62c0
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_headers.py
@@ -0,0 +1,36 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestHeaders(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return (str,)
+
+ def __init__(self_, **kwargs):
+ """
+ Headers to include when performing the test.
+ """
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_metadata.py b/datadog_api_client/v1/model/synthetics_test_metadata.py
new file mode 100644
index 0000000000..05b9150129
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_metadata.py
@@ -0,0 +1,36 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestMetadata(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return (str,)
+
+ def __init__(self_, **kwargs):
+ """
+ Metadata to include when performing the gRPC test.
+ """
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_monitor_status.py b/datadog_api_client/v1/model/synthetics_test_monitor_status.py
new file mode 100644
index 0000000000..66ba14fd9d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_monitor_status.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestMonitorStatus(ModelSimple):
+ """
+ The status of your Synthetic monitor.
+ * `O` for not triggered
+ * `1` for triggered
+ * `2` for no data
+
+ :param value: Must be one of [0, 1, 2].
+ :type value: int
+ """
+
+ allowed_values = {
+ 0,
+ 1,
+ 2,
+ }
+ UNTRIGGERED: ClassVar["SyntheticsTestMonitorStatus"]
+ TRIGGERED: ClassVar["SyntheticsTestMonitorStatus"]
+ NO_DATA: ClassVar["SyntheticsTestMonitorStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (int,),
+ }
+SyntheticsTestMonitorStatus.UNTRIGGERED = SyntheticsTestMonitorStatus(0)
+SyntheticsTestMonitorStatus.TRIGGERED = SyntheticsTestMonitorStatus(1)
+SyntheticsTestMonitorStatus.NO_DATA = SyntheticsTestMonitorStatus(2)
diff --git a/datadog_api_client/v1/model/synthetics_test_options.py b/datadog_api_client/v1/model/synthetics_test_options.py
new file mode 100644
index 0000000000..a313e5f6e2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options.py
@@ -0,0 +1,273 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_ci_options import SyntheticsTestCiOptions
+ from datadog_api_client.v1.model.synthetics_test_options_http_version import SyntheticsTestOptionsHTTPVersion
+ from datadog_api_client.v1.model.synthetics_test_options_monitor_options import SyntheticsTestOptionsMonitorOptions
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_browser_test_rum_settings import SyntheticsBrowserTestRumSettings
+ from datadog_api_client.v1.model.synthetics_test_options_scheduling import SyntheticsTestOptionsScheduling
+
+class SyntheticsTestOptions(ModelNormal):
+ validations = {
+ "monitor_priority": {
+ "inclusive_maximum": 5,
+ "inclusive_minimum": 1,
+ },
+ "tick_every": {
+ "inclusive_maximum": 604800,
+ "inclusive_minimum": 30,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_ci_options import SyntheticsTestCiOptions
+ from datadog_api_client.v1.model.synthetics_test_options_http_version import SyntheticsTestOptionsHTTPVersion
+ from datadog_api_client.v1.model.synthetics_test_options_monitor_options import SyntheticsTestOptionsMonitorOptions
+ from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+ from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+ from datadog_api_client.v1.model.synthetics_browser_test_rum_settings import SyntheticsBrowserTestRumSettings
+ from datadog_api_client.v1.model.synthetics_test_options_scheduling import SyntheticsTestOptionsScheduling
+ return {
+ "accept_self_signed": (bool,),
+ "allow_insecure": (bool,),
+ "blocked_request_patterns": ([str],),
+ "capture_network_payloads": (bool,),
+ "check_certificate_revocation": (bool,),
+ "ci": (SyntheticsTestCiOptions,),
+ "device_ids": ([str],),
+ "disable_aia_intermediate_fetching": (bool,),
+ "disable_cors": (bool,),
+ "disable_csp": (bool,),
+ "enable_profiling": (bool,),
+ "enable_security_testing": (bool,),
+ "follow_redirects": (bool,),
+ "http_version": (SyntheticsTestOptionsHTTPVersion,),
+ "ignore_server_certificate_error": (bool,),
+ "ignore_certificate_validation": (bool,),
+ "initial_navigation_timeout": (int,),
+ "min_failure_duration": (int,),
+ "min_location_failed": (int,),
+ "monitor_name": (str,),
+ "monitor_options": (SyntheticsTestOptionsMonitorOptions,),
+ "monitor_priority": (int,),
+ "no_screenshot": (bool,),
+ "restricted_roles": (SyntheticsRestrictedRoles,),
+ "retry": (SyntheticsTestOptionsRetry,),
+ "rum_settings": (SyntheticsBrowserTestRumSettings,),
+ "scheduling": (SyntheticsTestOptionsScheduling,),
+ "tick_every": (int,),
+ }
+ attribute_map = {
+ "accept_self_signed": "accept_self_signed",
+ "allow_insecure": "allow_insecure",
+ "blocked_request_patterns": "blockedRequestPatterns",
+ "capture_network_payloads": "captureNetworkPayloads",
+ "check_certificate_revocation": "checkCertificateRevocation",
+ "ci": "ci",
+ "device_ids": "device_ids",
+ "disable_aia_intermediate_fetching": "disableAiaIntermediateFetching",
+ "disable_cors": "disableCors",
+ "disable_csp": "disableCsp",
+ "enable_profiling": "enableProfiling",
+ "enable_security_testing": "enableSecurityTesting",
+ "follow_redirects": "follow_redirects",
+ "http_version": "httpVersion",
+ "ignore_server_certificate_error": "ignoreServerCertificateError",
+ "ignore_certificate_validation": "ignore_certificate_validation",
+ "initial_navigation_timeout": "initialNavigationTimeout",
+ "min_failure_duration": "min_failure_duration",
+ "min_location_failed": "min_location_failed",
+ "monitor_name": "monitor_name",
+ "monitor_options": "monitor_options",
+ "monitor_priority": "monitor_priority",
+ "no_screenshot": "noScreenshot",
+ "restricted_roles": "restricted_roles",
+ "retry": "retry",
+ "rum_settings": "rumSettings",
+ "scheduling": "scheduling",
+ "tick_every": "tick_every",
+ }
+
+ def __init__(self_, accept_self_signed: Union[bool, UnsetType]=unset, allow_insecure: Union[bool, UnsetType]=unset, blocked_request_patterns: Union[List[str], UnsetType]=unset, capture_network_payloads: Union[bool, UnsetType]=unset, check_certificate_revocation: Union[bool, UnsetType]=unset, ci: Union[SyntheticsTestCiOptions, UnsetType]=unset, device_ids: Union[List[str], UnsetType]=unset, disable_aia_intermediate_fetching: Union[bool, UnsetType]=unset, disable_cors: Union[bool, UnsetType]=unset, disable_csp: Union[bool, UnsetType]=unset, enable_profiling: Union[bool, UnsetType]=unset, enable_security_testing: Union[bool, UnsetType]=unset, follow_redirects: Union[bool, UnsetType]=unset, http_version: Union[SyntheticsTestOptionsHTTPVersion, UnsetType]=unset, ignore_server_certificate_error: Union[bool, UnsetType]=unset, ignore_certificate_validation: Union[bool, UnsetType]=unset, initial_navigation_timeout: Union[int, UnsetType]=unset, min_failure_duration: Union[int, UnsetType]=unset, min_location_failed: Union[int, UnsetType]=unset, monitor_name: Union[str, UnsetType]=unset, monitor_options: Union[SyntheticsTestOptionsMonitorOptions, UnsetType]=unset, monitor_priority: Union[int, UnsetType]=unset, no_screenshot: Union[bool, UnsetType]=unset, restricted_roles: Union[SyntheticsRestrictedRoles, UnsetType]=unset, retry: Union[SyntheticsTestOptionsRetry, UnsetType]=unset, rum_settings: Union[SyntheticsBrowserTestRumSettings, UnsetType]=unset, scheduling: Union[SyntheticsTestOptionsScheduling, UnsetType]=unset, tick_every: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object describing the extra options for a Synthetic test.
+
+ :param accept_self_signed: For SSL tests, whether or not the test should allow self signed
+ certificates.
+ :type accept_self_signed: bool, optional
+
+ :param allow_insecure: Allows loading insecure content for an HTTP request in an API test.
+ :type allow_insecure: bool, optional
+
+ :param blocked_request_patterns: Array of URL patterns to block.
+ :type blocked_request_patterns: [str], optional
+
+ :param capture_network_payloads: Capture HTTP request/response headers and bodies for Fetch/XHR calls made during browser tests.
+ :type capture_network_payloads: bool, optional
+
+ :param check_certificate_revocation: For SSL tests, whether or not the test should fail on revoked certificate in stapled OCSP.
+ :type check_certificate_revocation: bool, optional
+
+ :param ci: CI/CD options for a Synthetic test.
+ :type ci: SyntheticsTestCiOptions, optional
+
+ :param device_ids: For browser test, array with the different device IDs used to run the test.
+ :type device_ids: [str], optional
+
+ :param disable_aia_intermediate_fetching: For SSL tests, whether or not the test should disable fetching intermediate certificates from AIA.
+ :type disable_aia_intermediate_fetching: bool, optional
+
+ :param disable_cors: Whether or not to disable CORS mechanism.
+ :type disable_cors: bool, optional
+
+ :param disable_csp: Disable Content Security Policy for browser tests.
+ :type disable_csp: bool, optional
+
+ :param enable_profiling: Enable profiling for browser tests.
+ :type enable_profiling: bool, optional
+
+ :param enable_security_testing: Enable security testing for browser tests. Security testing is not available anymore. This field is deprecated and won't be used. **Deprecated**.
+ :type enable_security_testing: bool, optional
+
+ :param follow_redirects: For API HTTP test, whether or not the test should follow redirects.
+ :type follow_redirects: bool, optional
+
+ :param http_version: HTTP version to use for a Synthetic test.
+ :type http_version: SyntheticsTestOptionsHTTPVersion, optional
+
+ :param ignore_server_certificate_error: Ignore server certificate error for browser tests.
+ :type ignore_server_certificate_error: bool, optional
+
+ :param ignore_certificate_validation: For SSL tests, whether the test should ignore certificate validation.
+ :type ignore_certificate_validation: bool, optional
+
+ :param initial_navigation_timeout: Timeout before declaring the initial step as failed (in seconds) for browser tests.
+ :type initial_navigation_timeout: int, optional
+
+ :param min_failure_duration: Minimum amount of time in failure required to trigger an alert.
+ :type min_failure_duration: int, optional
+
+ :param min_location_failed: Minimum number of locations in failure required to trigger
+ an alert.
+ :type min_location_failed: int, optional
+
+ :param monitor_name: The monitor name is used for the alert title as well as for all monitor dashboard widgets and SLOs.
+ :type monitor_name: str, optional
+
+ :param monitor_options: Object containing the options for a Synthetic test as a monitor
+ (for example, renotification).
+ :type monitor_options: SyntheticsTestOptionsMonitorOptions, optional
+
+ :param monitor_priority: Integer from 1 (high) to 5 (low) indicating alert severity.
+ :type monitor_priority: int, optional
+
+ :param no_screenshot: Prevents saving screenshots of the steps.
+ :type no_screenshot: bool, optional
+
+ :param restricted_roles: A list of role identifiers that can be pulled from the Roles API, for restricting read and write access. This field is deprecated. Use the restriction policies API to manage permissions. **Deprecated**.
+ :type restricted_roles: SyntheticsRestrictedRoles, optional
+
+ :param retry: Object describing the retry strategy to apply to a Synthetic test.
+ :type retry: SyntheticsTestOptionsRetry, optional
+
+ :param rum_settings: The RUM data collection settings for the Synthetic browser test.
+ **Note:** There are 3 ways to format RUM settings:
+
+ ``{ isEnabled: false }``
+ RUM data is not collected.
+
+ ``{ isEnabled: true }``
+ RUM data is collected from the Synthetic test's default application.
+
+ ``{ isEnabled: true, applicationId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", clientTokenId: 12345 }``
+ RUM data is collected using the specified application.
+ :type rum_settings: SyntheticsBrowserTestRumSettings, optional
+
+ :param scheduling: Object containing timeframes and timezone used for advanced scheduling.
+ :type scheduling: SyntheticsTestOptionsScheduling, optional
+
+ :param tick_every: The frequency at which to run the Synthetic test (in seconds).
+ :type tick_every: int, optional
+ """
+ if accept_self_signed is not unset:
+ kwargs["accept_self_signed"] = accept_self_signed
+ if allow_insecure is not unset:
+ kwargs["allow_insecure"] = allow_insecure
+ if blocked_request_patterns is not unset:
+ kwargs["blocked_request_patterns"] = blocked_request_patterns
+ if capture_network_payloads is not unset:
+ kwargs["capture_network_payloads"] = capture_network_payloads
+ if check_certificate_revocation is not unset:
+ kwargs["check_certificate_revocation"] = check_certificate_revocation
+ if ci is not unset:
+ kwargs["ci"] = ci
+ if device_ids is not unset:
+ kwargs["device_ids"] = device_ids
+ if disable_aia_intermediate_fetching is not unset:
+ kwargs["disable_aia_intermediate_fetching"] = disable_aia_intermediate_fetching
+ if disable_cors is not unset:
+ kwargs["disable_cors"] = disable_cors
+ if disable_csp is not unset:
+ kwargs["disable_csp"] = disable_csp
+ if enable_profiling is not unset:
+ kwargs["enable_profiling"] = enable_profiling
+ if enable_security_testing is not unset:
+ kwargs["enable_security_testing"] = enable_security_testing
+ if follow_redirects is not unset:
+ kwargs["follow_redirects"] = follow_redirects
+ if http_version is not unset:
+ kwargs["http_version"] = http_version
+ if ignore_server_certificate_error is not unset:
+ kwargs["ignore_server_certificate_error"] = ignore_server_certificate_error
+ if ignore_certificate_validation is not unset:
+ kwargs["ignore_certificate_validation"] = ignore_certificate_validation
+ if initial_navigation_timeout is not unset:
+ kwargs["initial_navigation_timeout"] = initial_navigation_timeout
+ if min_failure_duration is not unset:
+ kwargs["min_failure_duration"] = min_failure_duration
+ if min_location_failed is not unset:
+ kwargs["min_location_failed"] = min_location_failed
+ if monitor_name is not unset:
+ kwargs["monitor_name"] = monitor_name
+ if monitor_options is not unset:
+ kwargs["monitor_options"] = monitor_options
+ if monitor_priority is not unset:
+ kwargs["monitor_priority"] = monitor_priority
+ if no_screenshot is not unset:
+ kwargs["no_screenshot"] = no_screenshot
+ if restricted_roles is not unset:
+ kwargs["restricted_roles"] = restricted_roles
+ if retry is not unset:
+ kwargs["retry"] = retry
+ if rum_settings is not unset:
+ kwargs["rum_settings"] = rum_settings
+ if scheduling is not unset:
+ kwargs["scheduling"] = scheduling
+ if tick_every is not unset:
+ kwargs["tick_every"] = tick_every
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_options_http_version.py b/datadog_api_client/v1/model/synthetics_test_options_http_version.py
new file mode 100644
index 0000000000..f27e2e73ac
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options_http_version.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestOptionsHTTPVersion(ModelSimple):
+ """
+ HTTP version to use for a Synthetic test.
+
+ :param value: Must be one of ["http1", "http2", "any"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "http1",
+ "http2",
+ "any",
+ }
+ HTTP1: ClassVar["SyntheticsTestOptionsHTTPVersion"]
+ HTTP2: ClassVar["SyntheticsTestOptionsHTTPVersion"]
+ ANY: ClassVar["SyntheticsTestOptionsHTTPVersion"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestOptionsHTTPVersion.HTTP1 = SyntheticsTestOptionsHTTPVersion("http1")
+SyntheticsTestOptionsHTTPVersion.HTTP2 = SyntheticsTestOptionsHTTPVersion("http2")
+SyntheticsTestOptionsHTTPVersion.ANY = SyntheticsTestOptionsHTTPVersion("any")
diff --git a/datadog_api_client/v1/model/synthetics_test_options_monitor_options.py b/datadog_api_client/v1/model/synthetics_test_options_monitor_options.py
new file mode 100644
index 0000000000..4ad6f44bb2
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options_monitor_options.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_options_monitor_options_notification_preset_name import SyntheticsTestOptionsMonitorOptionsNotificationPresetName
+
+class SyntheticsTestOptionsMonitorOptions(ModelNormal):
+ validations = {
+ "renotify_interval": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_options_monitor_options_notification_preset_name import SyntheticsTestOptionsMonitorOptionsNotificationPresetName
+ return {
+ "escalation_message": (str,),
+ "notification_preset_name": (SyntheticsTestOptionsMonitorOptionsNotificationPresetName,),
+ "renotify_interval": (int,),
+ "renotify_occurrences": (int,),
+ }
+ attribute_map = {
+ "escalation_message": "escalation_message",
+ "notification_preset_name": "notification_preset_name",
+ "renotify_interval": "renotify_interval",
+ "renotify_occurrences": "renotify_occurrences",
+ }
+
+ def __init__(self_, escalation_message: Union[str, UnsetType]=unset, notification_preset_name: Union[SyntheticsTestOptionsMonitorOptionsNotificationPresetName, UnsetType]=unset, renotify_interval: Union[int, UnsetType]=unset, renotify_occurrences: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object containing the options for a Synthetic test as a monitor
+ (for example, renotification).
+
+ :param escalation_message: Message to include in the escalation notification.
+ :type escalation_message: str, optional
+
+ :param notification_preset_name: The name of the preset for the notification for the monitor.
+ :type notification_preset_name: SyntheticsTestOptionsMonitorOptionsNotificationPresetName, optional
+
+ :param renotify_interval: Time interval before renotifying if the test is still failing
+ (in minutes).
+ :type renotify_interval: int, optional
+
+ :param renotify_occurrences: The number of times to renotify if the test is still failing.
+ :type renotify_occurrences: int, optional
+ """
+ if escalation_message is not unset:
+ kwargs["escalation_message"] = escalation_message
+ if notification_preset_name is not unset:
+ kwargs["notification_preset_name"] = notification_preset_name
+ if renotify_interval is not unset:
+ kwargs["renotify_interval"] = renotify_interval
+ if renotify_occurrences is not unset:
+ kwargs["renotify_occurrences"] = renotify_occurrences
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_options_monitor_options_notification_preset_name.py b/datadog_api_client/v1/model/synthetics_test_options_monitor_options_notification_preset_name.py
new file mode 100644
index 0000000000..ec5e94a062
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options_monitor_options_notification_preset_name.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestOptionsMonitorOptionsNotificationPresetName(ModelSimple):
+ """
+ The name of the preset for the notification for the monitor.
+
+ :param value: Must be one of ["show_all", "hide_all", "hide_query", "hide_handles", "hide_query_and_handles", "show_only_snapshot", "hide_handles_and_footer"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "show_all",
+ "hide_all",
+ "hide_query",
+ "hide_handles",
+ "hide_query_and_handles",
+ "show_only_snapshot",
+ "hide_handles_and_footer",
+ }
+ SHOW_ALL: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+ HIDE_ALL: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+ HIDE_QUERY: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+ HIDE_HANDLES: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+ HIDE_QUERY_AND_HANDLES: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+ SHOW_ONLY_SNAPSHOT: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+ HIDE_HANDLES_AND_FOOTER: ClassVar["SyntheticsTestOptionsMonitorOptionsNotificationPresetName"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.SHOW_ALL = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("show_all")
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.HIDE_ALL = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("hide_all")
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.HIDE_QUERY = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("hide_query")
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.HIDE_HANDLES = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("hide_handles")
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.HIDE_QUERY_AND_HANDLES = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("hide_query_and_handles")
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.SHOW_ONLY_SNAPSHOT = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("show_only_snapshot")
+SyntheticsTestOptionsMonitorOptionsNotificationPresetName.HIDE_HANDLES_AND_FOOTER = SyntheticsTestOptionsMonitorOptionsNotificationPresetName("hide_handles_and_footer")
diff --git a/datadog_api_client/v1/model/synthetics_test_options_retry.py b/datadog_api_client/v1/model/synthetics_test_options_retry.py
new file mode 100644
index 0000000000..67197f9ef3
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options_retry.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestOptionsRetry(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "count": (int,),
+ "interval": (float,),
+ }
+ attribute_map = {
+ "count": "count",
+ "interval": "interval",
+ }
+
+ def __init__(self_, count: Union[int, UnsetType]=unset, interval: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Object describing the retry strategy to apply to a Synthetic test.
+
+ :param count: Number of times a test needs to be retried before marking a
+ location as failed. Defaults to 0.
+ :type count: int, optional
+
+ :param interval: Time interval between retries (in milliseconds). Defaults to
+ 300ms.
+ :type interval: float, optional
+ """
+ if count is not unset:
+ kwargs["count"] = count
+ if interval is not unset:
+ kwargs["interval"] = interval
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_options_scheduling.py b/datadog_api_client/v1/model/synthetics_test_options_scheduling.py
new file mode 100644
index 0000000000..8882fc7692
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options_scheduling.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_options_scheduling_timeframe import SyntheticsTestOptionsSchedulingTimeframe
+
+class SyntheticsTestOptionsScheduling(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_options_scheduling_timeframe import SyntheticsTestOptionsSchedulingTimeframe
+ return {
+ "timeframes": ([SyntheticsTestOptionsSchedulingTimeframe],),
+ "timezone": (str,),
+ }
+ attribute_map = {
+ "timeframes": "timeframes",
+ "timezone": "timezone",
+ }
+
+ def __init__(self_, timeframes: List[SyntheticsTestOptionsSchedulingTimeframe], timezone: str, **kwargs):
+ """
+ Object containing timeframes and timezone used for advanced scheduling.
+
+ :param timeframes: Array containing objects describing the scheduling pattern to apply to each day.
+ :type timeframes: [SyntheticsTestOptionsSchedulingTimeframe]
+
+ :param timezone: Timezone in which the timeframe is based.
+ :type timezone: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.timeframes = timeframes
+ self_.timezone = timezone
diff --git a/datadog_api_client/v1/model/synthetics_test_options_scheduling_timeframe.py b/datadog_api_client/v1/model/synthetics_test_options_scheduling_timeframe.py
new file mode 100644
index 0000000000..75bc1951a6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_options_scheduling_timeframe.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestOptionsSchedulingTimeframe(ModelNormal):
+ validations = {
+ "day": {
+ "inclusive_maximum": 7,
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "day": (int,),
+ "_from": (str,),
+ "to": (str,),
+ }
+ attribute_map = {
+ "day": "day",
+ "_from": "from",
+ "to": "to",
+ }
+
+ def __init__(self_, day: int, _from: str, to: str, **kwargs):
+ """
+ Object describing a timeframe.
+
+ :param day: Number representing the day of the week.
+ :type day: int
+
+ :param _from: The hour of the day on which scheduling starts.
+ :type _from: str
+
+ :param to: The hour of the day on which scheduling ends.
+ :type to: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.day = day
+ self_._from = _from
+ self_.to = to
diff --git a/datadog_api_client/v1/model/synthetics_test_pause_status.py b/datadog_api_client/v1/model/synthetics_test_pause_status.py
new file mode 100644
index 0000000000..b83d6f0be6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_pause_status.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestPauseStatus(ModelSimple):
+ """
+ Define whether you want to start (`live`) or pause (`paused`) a
+ Synthetic test.
+
+ :param value: Must be one of ["live", "paused"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "live",
+ "paused",
+ }
+ LIVE: ClassVar["SyntheticsTestPauseStatus"]
+ PAUSED: ClassVar["SyntheticsTestPauseStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestPauseStatus.LIVE = SyntheticsTestPauseStatus("live")
+SyntheticsTestPauseStatus.PAUSED = SyntheticsTestPauseStatus("paused")
diff --git a/datadog_api_client/v1/model/synthetics_test_process_status.py b/datadog_api_client/v1/model/synthetics_test_process_status.py
new file mode 100644
index 0000000000..f5e1461f9d
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_process_status.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestProcessStatus(ModelSimple):
+ """
+ Status of a Synthetic test.
+
+ :param value: Must be one of ["not_scheduled", "scheduled", "finished", "finished_with_error"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "not_scheduled",
+ "scheduled",
+ "finished",
+ "finished_with_error",
+ }
+ NOT_SCHEDULED: ClassVar["SyntheticsTestProcessStatus"]
+ SCHEDULED: ClassVar["SyntheticsTestProcessStatus"]
+ FINISHED: ClassVar["SyntheticsTestProcessStatus"]
+ FINISHED_WITH_ERROR: ClassVar["SyntheticsTestProcessStatus"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestProcessStatus.NOT_SCHEDULED = SyntheticsTestProcessStatus("not_scheduled")
+SyntheticsTestProcessStatus.SCHEDULED = SyntheticsTestProcessStatus("scheduled")
+SyntheticsTestProcessStatus.FINISHED = SyntheticsTestProcessStatus("finished")
+SyntheticsTestProcessStatus.FINISHED_WITH_ERROR = SyntheticsTestProcessStatus("finished_with_error")
diff --git a/datadog_api_client/v1/model/synthetics_test_request.py b/datadog_api_client/v1/model/synthetics_test_request.py
new file mode 100644
index 0000000000..7ad21a6993
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request.py
@@ -0,0 +1,347 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_basic_auth import SyntheticsBasicAuth
+ from datadog_api_client.v1.model.synthetics_test_request_body_type import SyntheticsTestRequestBodyType
+ from datadog_api_client.v1.model.synthetics_test_call_type import SyntheticsTestCallType
+ from datadog_api_client.v1.model.synthetics_test_request_certificate import SyntheticsTestRequestCertificate
+ from datadog_api_client.v1.model.synthetics_test_request_dns_server_port import SyntheticsTestRequestDNSServerPort
+ from datadog_api_client.v1.model.synthetics_test_request_body_file import SyntheticsTestRequestBodyFile
+ from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+ from datadog_api_client.v1.model.synthetics_test_options_http_version import SyntheticsTestOptionsHTTPVersion
+ from datadog_api_client.v1.model.synthetics_mcp_protocol_version import SyntheticsMCPProtocolVersion
+ from datadog_api_client.v1.model.synthetics_test_metadata import SyntheticsTestMetadata
+ from datadog_api_client.v1.model.synthetics_test_request_port import SyntheticsTestRequestPort
+ from datadog_api_client.v1.model.synthetics_test_request_proxy import SyntheticsTestRequestProxy
+ from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+ from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+ from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+ from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+ from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+ from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+
+class SyntheticsTestRequest(ModelNormal):
+ validations = {
+ "number_of_packets": {
+ "inclusive_maximum": 10,
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_basic_auth import SyntheticsBasicAuth
+ from datadog_api_client.v1.model.synthetics_test_request_body_type import SyntheticsTestRequestBodyType
+ from datadog_api_client.v1.model.synthetics_test_call_type import SyntheticsTestCallType
+ from datadog_api_client.v1.model.synthetics_test_request_certificate import SyntheticsTestRequestCertificate
+ from datadog_api_client.v1.model.synthetics_test_request_dns_server_port import SyntheticsTestRequestDNSServerPort
+ from datadog_api_client.v1.model.synthetics_test_request_body_file import SyntheticsTestRequestBodyFile
+ from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+ from datadog_api_client.v1.model.synthetics_test_options_http_version import SyntheticsTestOptionsHTTPVersion
+ from datadog_api_client.v1.model.synthetics_mcp_protocol_version import SyntheticsMCPProtocolVersion
+ from datadog_api_client.v1.model.synthetics_test_metadata import SyntheticsTestMetadata
+ from datadog_api_client.v1.model.synthetics_test_request_port import SyntheticsTestRequestPort
+ from datadog_api_client.v1.model.synthetics_test_request_proxy import SyntheticsTestRequestProxy
+ return {
+ "allow_insecure": (bool,),
+ "basic_auth": (SyntheticsBasicAuth,),
+ "body": (str,),
+ "body_type": (SyntheticsTestRequestBodyType,),
+ "call_type": (SyntheticsTestCallType,),
+ "certificate": (SyntheticsTestRequestCertificate,),
+ "certificate_domains": ([str],),
+ "check_certificate_revocation": (bool,),
+ "compressed_json_descriptor": (str,),
+ "compressed_proto_file": (str,),
+ "disable_aia_intermediate_fetching": (bool,),
+ "dns_server": (str,),
+ "dns_server_port": (SyntheticsTestRequestDNSServerPort,),
+ "files": ([SyntheticsTestRequestBodyFile],),
+ "follow_redirects": (bool,),
+ "form": ({str: (str,)},),
+ "headers": (SyntheticsTestHeaders,),
+ "host": (str,),
+ "http_version": (SyntheticsTestOptionsHTTPVersion,),
+ "ignore_certificate_validation": (bool,),
+ "is_message_base64_encoded": (bool,),
+ "mcp_protocol_version": (SyntheticsMCPProtocolVersion,),
+ "message": (str,),
+ "metadata": (SyntheticsTestMetadata,),
+ "method": (str,),
+ "no_saving_response_body": (bool,),
+ "number_of_packets": (int,),
+ "persist_cookies": (bool,),
+ "port": (SyntheticsTestRequestPort,),
+ "proxy": (SyntheticsTestRequestProxy,),
+ "query": (dict,),
+ "servername": (str,),
+ "service": (str,),
+ "should_track_hops": (bool,),
+ "timeout": (float,),
+ "tool_args": ({str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)},),
+ "tool_name": (str,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "allow_insecure": "allow_insecure",
+ "basic_auth": "basicAuth",
+ "body": "body",
+ "body_type": "bodyType",
+ "call_type": "callType",
+ "certificate": "certificate",
+ "certificate_domains": "certificateDomains",
+ "check_certificate_revocation": "checkCertificateRevocation",
+ "compressed_json_descriptor": "compressedJsonDescriptor",
+ "compressed_proto_file": "compressedProtoFile",
+ "disable_aia_intermediate_fetching": "disableAiaIntermediateFetching",
+ "dns_server": "dnsServer",
+ "dns_server_port": "dnsServerPort",
+ "files": "files",
+ "follow_redirects": "follow_redirects",
+ "form": "form",
+ "headers": "headers",
+ "host": "host",
+ "http_version": "httpVersion",
+ "ignore_certificate_validation": "ignore_certificate_validation",
+ "is_message_base64_encoded": "isMessageBase64Encoded",
+ "mcp_protocol_version": "mcpProtocolVersion",
+ "message": "message",
+ "metadata": "metadata",
+ "method": "method",
+ "no_saving_response_body": "noSavingResponseBody",
+ "number_of_packets": "numberOfPackets",
+ "persist_cookies": "persistCookies",
+ "port": "port",
+ "proxy": "proxy",
+ "query": "query",
+ "servername": "servername",
+ "service": "service",
+ "should_track_hops": "shouldTrackHops",
+ "timeout": "timeout",
+ "tool_args": "toolArgs",
+ "tool_name": "toolName",
+ "url": "url",
+ }
+
+ def __init__(self_, allow_insecure: Union[bool, UnsetType]=unset, basic_auth: Union[SyntheticsBasicAuth, SyntheticsBasicAuthWeb, SyntheticsBasicAuthSigv4, SyntheticsBasicAuthNTLM, SyntheticsBasicAuthDigest, SyntheticsBasicAuthOauthClient, SyntheticsBasicAuthOauthROP, SyntheticsBasicAuthJWT, UnsetType]=unset, body: Union[str, UnsetType]=unset, body_type: Union[SyntheticsTestRequestBodyType, UnsetType]=unset, call_type: Union[SyntheticsTestCallType, UnsetType]=unset, certificate: Union[SyntheticsTestRequestCertificate, UnsetType]=unset, certificate_domains: Union[List[str], UnsetType]=unset, check_certificate_revocation: Union[bool, UnsetType]=unset, compressed_json_descriptor: Union[str, UnsetType]=unset, compressed_proto_file: Union[str, UnsetType]=unset, disable_aia_intermediate_fetching: Union[bool, UnsetType]=unset, dns_server: Union[str, UnsetType]=unset, dns_server_port: Union[SyntheticsTestRequestDNSServerPort, int, str, UnsetType]=unset, files: Union[List[SyntheticsTestRequestBodyFile], UnsetType]=unset, follow_redirects: Union[bool, UnsetType]=unset, form: Union[Dict[str, str], UnsetType]=unset, headers: Union[SyntheticsTestHeaders, UnsetType]=unset, host: Union[str, UnsetType]=unset, http_version: Union[SyntheticsTestOptionsHTTPVersion, UnsetType]=unset, ignore_certificate_validation: Union[bool, UnsetType]=unset, is_message_base64_encoded: Union[bool, UnsetType]=unset, mcp_protocol_version: Union[SyntheticsMCPProtocolVersion, UnsetType]=unset, message: Union[str, UnsetType]=unset, metadata: Union[SyntheticsTestMetadata, UnsetType]=unset, method: Union[str, UnsetType]=unset, no_saving_response_body: Union[bool, UnsetType]=unset, number_of_packets: Union[int, UnsetType]=unset, persist_cookies: Union[bool, UnsetType]=unset, port: Union[SyntheticsTestRequestPort, int, str, UnsetType]=unset, proxy: Union[SyntheticsTestRequestProxy, UnsetType]=unset, query: Union[dict, UnsetType]=unset, servername: Union[str, UnsetType]=unset, service: Union[str, UnsetType]=unset, should_track_hops: Union[bool, UnsetType]=unset, timeout: Union[float, UnsetType]=unset, tool_args: Union[Dict[str, Any], UnsetType]=unset, tool_name: Union[str, UnsetType]=unset, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object describing the Synthetic test request.
+
+ :param allow_insecure: Allows loading insecure content for an HTTP request in a multistep test step.
+ :type allow_insecure: bool, optional
+
+ :param basic_auth: Object to handle basic authentication when performing the test.
+ :type basic_auth: SyntheticsBasicAuth, optional
+
+ :param body: Body to include in the test.
+ :type body: str, optional
+
+ :param body_type: Type of the request body.
+ :type body_type: SyntheticsTestRequestBodyType, optional
+
+ :param call_type: The type of call to perform. Used by gRPC steps ( ``healthcheck`` , ``unary`` )
+ and MCP steps ( ``init`` , ``tool_list`` , ``tool_call`` ). Valid values depend on
+ the parent step's ``subtype``.
+ :type call_type: SyntheticsTestCallType, optional
+
+ :param certificate: Client certificate to use when performing the test request.
+ :type certificate: SyntheticsTestRequestCertificate, optional
+
+ :param certificate_domains: By default, the client certificate is applied on the domain of the starting URL for browser tests. If you want your client certificate to be applied on other domains instead, add them in ``certificateDomains``.
+ :type certificate_domains: [str], optional
+
+ :param check_certificate_revocation: Check for certificate revocation.
+ :type check_certificate_revocation: bool, optional
+
+ :param compressed_json_descriptor: A protobuf JSON descriptor that needs to be gzipped first then base64 encoded.
+ :type compressed_json_descriptor: str, optional
+
+ :param compressed_proto_file: A protobuf file that needs to be gzipped first then base64 encoded.
+ :type compressed_proto_file: str, optional
+
+ :param disable_aia_intermediate_fetching: Disable fetching intermediate certificates from AIA.
+ :type disable_aia_intermediate_fetching: bool, optional
+
+ :param dns_server: DNS server to use for DNS tests.
+ :type dns_server: str, optional
+
+ :param dns_server_port: DNS server port to use for DNS tests.
+ :type dns_server_port: SyntheticsTestRequestDNSServerPort, optional
+
+ :param files: Files to be used as part of the request in the test. Only valid if ``bodyType`` is ``multipart/form-data``.
+ :type files: [SyntheticsTestRequestBodyFile], optional
+
+ :param follow_redirects: Specifies whether or not the request follows redirects.
+ :type follow_redirects: bool, optional
+
+ :param form: Form to be used as part of the request in the test. Only valid if ``bodyType`` is ``multipart/form-data``.
+ :type form: {str: (str,)}, optional
+
+ :param headers: Headers to include when performing the test.
+ :type headers: SyntheticsTestHeaders, optional
+
+ :param host: Host name to perform the test with.
+ :type host: str, optional
+
+ :param http_version: HTTP version to use for a Synthetic test.
+ :type http_version: SyntheticsTestOptionsHTTPVersion, optional
+
+ :param ignore_certificate_validation: For SSL tests, whether the test should ignore certificate validation.
+ :type ignore_certificate_validation: bool, optional
+
+ :param is_message_base64_encoded: Whether the message is base64 encoded.
+ :type is_message_base64_encoded: bool, optional
+
+ :param mcp_protocol_version: The MCP protocol version used by the step. See https://modelcontextprotocol.io/specification.
+ :type mcp_protocol_version: SyntheticsMCPProtocolVersion, optional
+
+ :param message: Message to send for UDP or WebSocket tests.
+ :type message: str, optional
+
+ :param metadata: Metadata to include when performing the gRPC test.
+ :type metadata: SyntheticsTestMetadata, optional
+
+ :param method: Either the HTTP method/verb to use or a gRPC method available on the service set in the ``service`` field. Required if ``subtype`` is ``HTTP`` or if ``subtype`` is ``grpc`` and ``callType`` is ``unary``.
+ :type method: str, optional
+
+ :param no_saving_response_body: Determines whether or not to save the response body.
+ :type no_saving_response_body: bool, optional
+
+ :param number_of_packets: Number of pings to use per test.
+ :type number_of_packets: int, optional
+
+ :param persist_cookies: Persist cookies across redirects.
+ :type persist_cookies: bool, optional
+
+ :param port: Port to use when performing the test.
+ :type port: SyntheticsTestRequestPort, optional
+
+ :param proxy: The proxy to perform the test.
+ :type proxy: SyntheticsTestRequestProxy, optional
+
+ :param query: Query to use for the test.
+ :type query: dict, optional
+
+ :param servername: For SSL tests, it specifies on which server you want to initiate the TLS handshake,
+ allowing the server to present one of multiple possible certificates on
+ the same IP address and TCP port number.
+ :type servername: str, optional
+
+ :param service: The gRPC service on which you want to perform the gRPC call.
+ :type service: str, optional
+
+ :param should_track_hops: Turns on a traceroute probe to discover all gateways along the path to the host destination.
+ :type should_track_hops: bool, optional
+
+ :param timeout: Timeout in seconds for the test.
+ :type timeout: float, optional
+
+ :param tool_args: Arguments to pass to the MCP tool. Free-form object whose shape depends on the tool. Used when ``callType`` is ``tool_call``.
+ :type tool_args: {str: (bool, date, datetime, dict, float, int, list, str, UUID, none_type,)}, optional
+
+ :param tool_name: The name of the MCP tool to call. Required when ``callType`` is ``tool_call``.
+ :type tool_name: str, optional
+
+ :param url: URL to perform the test with.
+ :type url: str, optional
+ """
+ if allow_insecure is not unset:
+ kwargs["allow_insecure"] = allow_insecure
+ if basic_auth is not unset:
+ kwargs["basic_auth"] = basic_auth
+ if body is not unset:
+ kwargs["body"] = body
+ if body_type is not unset:
+ kwargs["body_type"] = body_type
+ if call_type is not unset:
+ kwargs["call_type"] = call_type
+ if certificate is not unset:
+ kwargs["certificate"] = certificate
+ if certificate_domains is not unset:
+ kwargs["certificate_domains"] = certificate_domains
+ if check_certificate_revocation is not unset:
+ kwargs["check_certificate_revocation"] = check_certificate_revocation
+ if compressed_json_descriptor is not unset:
+ kwargs["compressed_json_descriptor"] = compressed_json_descriptor
+ if compressed_proto_file is not unset:
+ kwargs["compressed_proto_file"] = compressed_proto_file
+ if disable_aia_intermediate_fetching is not unset:
+ kwargs["disable_aia_intermediate_fetching"] = disable_aia_intermediate_fetching
+ if dns_server is not unset:
+ kwargs["dns_server"] = dns_server
+ if dns_server_port is not unset:
+ kwargs["dns_server_port"] = dns_server_port
+ if files is not unset:
+ kwargs["files"] = files
+ if follow_redirects is not unset:
+ kwargs["follow_redirects"] = follow_redirects
+ if form is not unset:
+ kwargs["form"] = form
+ if headers is not unset:
+ kwargs["headers"] = headers
+ if host is not unset:
+ kwargs["host"] = host
+ if http_version is not unset:
+ kwargs["http_version"] = http_version
+ if ignore_certificate_validation is not unset:
+ kwargs["ignore_certificate_validation"] = ignore_certificate_validation
+ if is_message_base64_encoded is not unset:
+ kwargs["is_message_base64_encoded"] = is_message_base64_encoded
+ if mcp_protocol_version is not unset:
+ kwargs["mcp_protocol_version"] = mcp_protocol_version
+ if message is not unset:
+ kwargs["message"] = message
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if method is not unset:
+ kwargs["method"] = method
+ if no_saving_response_body is not unset:
+ kwargs["no_saving_response_body"] = no_saving_response_body
+ if number_of_packets is not unset:
+ kwargs["number_of_packets"] = number_of_packets
+ if persist_cookies is not unset:
+ kwargs["persist_cookies"] = persist_cookies
+ if port is not unset:
+ kwargs["port"] = port
+ if proxy is not unset:
+ kwargs["proxy"] = proxy
+ if query is not unset:
+ kwargs["query"] = query
+ if servername is not unset:
+ kwargs["servername"] = servername
+ if service is not unset:
+ kwargs["service"] = service
+ if should_track_hops is not unset:
+ kwargs["should_track_hops"] = should_track_hops
+ if timeout is not unset:
+ kwargs["timeout"] = timeout
+ if tool_args is not unset:
+ kwargs["tool_args"] = tool_args
+ if tool_name is not unset:
+ kwargs["tool_name"] = tool_name
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_request_body_file.py b/datadog_api_client/v1/model/synthetics_test_request_body_file.py
new file mode 100644
index 0000000000..713283edf0
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_body_file.py
@@ -0,0 +1,106 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestRequestBodyFile(ModelNormal):
+ validations = {
+ "content": {
+ "max_length": 3145728,
+ },
+ "name": {
+ "max_length": 1500,
+ },
+ "original_file_name": {
+ "max_length": 1500,
+ },
+ "size": {
+ "inclusive_maximum": 3145728,
+ "inclusive_minimum": 1,
+ },
+ "type": {
+ "max_length": 1500,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "bucket_key": (str,),
+ "content": (str,),
+ "encoding": (str,),
+ "name": (str,),
+ "original_file_name": (str,),
+ "size": (int,),
+ "type": (str,),
+ }
+ attribute_map = {
+ "bucket_key": "bucketKey",
+ "content": "content",
+ "encoding": "encoding",
+ "name": "name",
+ "original_file_name": "originalFileName",
+ "size": "size",
+ "type": "type",
+ }
+
+ def __init__(self_, bucket_key: Union[str, UnsetType]=unset, content: Union[str, UnsetType]=unset, encoding: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, original_file_name: Union[str, UnsetType]=unset, size: Union[int, UnsetType]=unset, type: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Object describing a file to be used as part of the request in the test.
+
+ :param bucket_key: Bucket key of the file.
+ :type bucket_key: str, optional
+
+ :param content: Content of the file.
+ :type content: str, optional
+
+ :param encoding: Encoding of the file content. The only supported value is ``base64`` , indicating the ``content`` field contains base64-encoded data.
+ :type encoding: str, optional
+
+ :param name: Name of the file.
+ :type name: str, optional
+
+ :param original_file_name: Original name of the file.
+ :type original_file_name: str, optional
+
+ :param size: Size of the file.
+ :type size: int, optional
+
+ :param type: Type of the file.
+ :type type: str, optional
+ """
+ if bucket_key is not unset:
+ kwargs["bucket_key"] = bucket_key
+ if content is not unset:
+ kwargs["content"] = content
+ if encoding is not unset:
+ kwargs["encoding"] = encoding
+ if name is not unset:
+ kwargs["name"] = name
+ if original_file_name is not unset:
+ kwargs["original_file_name"] = original_file_name
+ if size is not unset:
+ kwargs["size"] = size
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_request_body_type.py b/datadog_api_client/v1/model/synthetics_test_request_body_type.py
new file mode 100644
index 0000000000..484d456424
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_body_type.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestRequestBodyType(ModelSimple):
+ """
+ Type of the request body.
+
+ :param value: Must be one of ["text/plain", "application/json", "text/xml", "text/html", "application/x-www-form-urlencoded", "graphql", "application/octet-stream", "multipart/form-data"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "text/plain",
+ "application/json",
+ "text/xml",
+ "text/html",
+ "application/x-www-form-urlencoded",
+ "graphql",
+ "application/octet-stream",
+ "multipart/form-data",
+ }
+ TEXT_PLAIN: ClassVar["SyntheticsTestRequestBodyType"]
+ APPLICATION_JSON: ClassVar["SyntheticsTestRequestBodyType"]
+ TEXT_XML: ClassVar["SyntheticsTestRequestBodyType"]
+ TEXT_HTML: ClassVar["SyntheticsTestRequestBodyType"]
+ APPLICATION_X_WWW_FORM_URLENCODED: ClassVar["SyntheticsTestRequestBodyType"]
+ GRAPHQL: ClassVar["SyntheticsTestRequestBodyType"]
+ APPLICATION_OCTET_STREAM: ClassVar["SyntheticsTestRequestBodyType"]
+ MULTIPART_FORM_DATA: ClassVar["SyntheticsTestRequestBodyType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestRequestBodyType.TEXT_PLAIN = SyntheticsTestRequestBodyType("text/plain")
+SyntheticsTestRequestBodyType.APPLICATION_JSON = SyntheticsTestRequestBodyType("application/json")
+SyntheticsTestRequestBodyType.TEXT_XML = SyntheticsTestRequestBodyType("text/xml")
+SyntheticsTestRequestBodyType.TEXT_HTML = SyntheticsTestRequestBodyType("text/html")
+SyntheticsTestRequestBodyType.APPLICATION_X_WWW_FORM_URLENCODED = SyntheticsTestRequestBodyType("application/x-www-form-urlencoded")
+SyntheticsTestRequestBodyType.GRAPHQL = SyntheticsTestRequestBodyType("graphql")
+SyntheticsTestRequestBodyType.APPLICATION_OCTET_STREAM = SyntheticsTestRequestBodyType("application/octet-stream")
+SyntheticsTestRequestBodyType.MULTIPART_FORM_DATA = SyntheticsTestRequestBodyType("multipart/form-data")
diff --git a/datadog_api_client/v1/model/synthetics_test_request_certificate.py b/datadog_api_client/v1/model/synthetics_test_request_certificate.py
new file mode 100644
index 0000000000..d2622fafe9
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_certificate.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_request_certificate_item import SyntheticsTestRequestCertificateItem
+
+class SyntheticsTestRequestCertificate(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_request_certificate_item import SyntheticsTestRequestCertificateItem
+ return {
+ "cert": (SyntheticsTestRequestCertificateItem,),
+ "key": (SyntheticsTestRequestCertificateItem,),
+ }
+ attribute_map = {
+ "cert": "cert",
+ "key": "key",
+ }
+
+ def __init__(self_, cert: Union[SyntheticsTestRequestCertificateItem, UnsetType]=unset, key: Union[SyntheticsTestRequestCertificateItem, UnsetType]=unset, **kwargs):
+ """
+ Client certificate to use when performing the test request.
+
+ :param cert: Define a request certificate.
+ :type cert: SyntheticsTestRequestCertificateItem, optional
+
+ :param key: Define a request certificate.
+ :type key: SyntheticsTestRequestCertificateItem, optional
+ """
+ if cert is not unset:
+ kwargs["cert"] = cert
+ if key is not unset:
+ kwargs["key"] = key
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_request_certificate_item.py b/datadog_api_client/v1/model/synthetics_test_request_certificate_item.py
new file mode 100644
index 0000000000..b99e14d1e6
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_certificate_item.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestRequestCertificateItem(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "content": (str,),
+ "filename": (str,),
+ "updated_at": (str,),
+ }
+ attribute_map = {
+ "content": "content",
+ "filename": "filename",
+ "updated_at": "updatedAt",
+ }
+
+ def __init__(self_, content: Union[str, UnsetType]=unset, filename: Union[str, UnsetType]=unset, updated_at: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Define a request certificate.
+
+ :param content: Content of the certificate or key.
+ :type content: str, optional
+
+ :param filename: File name for the certificate or key.
+ :type filename: str, optional
+
+ :param updated_at: Date of update of the certificate or key, ISO format.
+ :type updated_at: str, optional
+ """
+ if content is not unset:
+ kwargs["content"] = content
+ if filename is not unset:
+ kwargs["filename"] = filename
+ if updated_at is not unset:
+ kwargs["updated_at"] = updated_at
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_request_dns_server_port.py b/datadog_api_client/v1/model/synthetics_test_request_dns_server_port.py
new file mode 100644
index 0000000000..266eb60792
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_dns_server_port.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestRequestDNSServerPort(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ DNS server port to use for DNS tests.
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ return {
+ "oneOf": [
+ int,
+ str,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_test_request_port.py b/datadog_api_client/v1/model/synthetics_test_request_port.py
new file mode 100644
index 0000000000..4773b048d1
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_port.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTestRequestPort(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Port to use when performing the test.
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ return {
+ "oneOf": [
+ int,
+ str,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/synthetics_test_request_proxy.py b/datadog_api_client/v1/model/synthetics_test_request_proxy.py
new file mode 100644
index 0000000000..d7a9b31175
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_request_proxy.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+
+class SyntheticsTestRequestProxy(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+ return {
+ "headers": (SyntheticsTestHeaders,),
+ "url": (str,),
+ }
+ attribute_map = {
+ "headers": "headers",
+ "url": "url",
+ }
+
+ def __init__(self_, url: str, headers: Union[SyntheticsTestHeaders, UnsetType]=unset, **kwargs):
+ """
+ The proxy to perform the test.
+
+ :param headers: Headers to include when performing the test.
+ :type headers: SyntheticsTestHeaders, optional
+
+ :param url: URL of the proxy to perform the test.
+ :type url: str
+ """
+ if headers is not unset:
+ kwargs["headers"] = headers
+ super().__init__(kwargs)
+
+
+ self_.url = url
diff --git a/datadog_api_client/v1/model/synthetics_test_restriction_policy_binding.py b/datadog_api_client/v1/model/synthetics_test_restriction_policy_binding.py
new file mode 100644
index 0000000000..07356e29d8
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_restriction_policy_binding.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_restriction_policy_binding_relation import SyntheticsTestRestrictionPolicyBindingRelation
+
+class SyntheticsTestRestrictionPolicyBinding(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_restriction_policy_binding_relation import SyntheticsTestRestrictionPolicyBindingRelation
+ return {
+ "principals": ([str],),
+ "relation": (SyntheticsTestRestrictionPolicyBindingRelation,),
+ }
+ attribute_map = {
+ "principals": "principals",
+ "relation": "relation",
+ }
+
+ def __init__(self_, principals: Union[List[str], UnsetType]=unset, relation: Union[SyntheticsTestRestrictionPolicyBindingRelation, UnsetType]=unset, **kwargs):
+ """
+ Objects describing the binding used for a mobile test.
+
+ :param principals: List of principals for a mobile test binding.
+ :type principals: [str], optional
+
+ :param relation: The type of relation for the binding.
+ :type relation: SyntheticsTestRestrictionPolicyBindingRelation, optional
+ """
+ if principals is not unset:
+ kwargs["principals"] = principals
+ if relation is not unset:
+ kwargs["relation"] = relation
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_test_restriction_policy_binding_relation.py b/datadog_api_client/v1/model/synthetics_test_restriction_policy_binding_relation.py
new file mode 100644
index 0000000000..b984eac1eb
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_restriction_policy_binding_relation.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsTestRestrictionPolicyBindingRelation(ModelSimple):
+ """
+ The type of relation for the binding.
+
+ :param value: Must be one of ["editor", "viewer"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "editor",
+ "viewer",
+ }
+ EDITOR: ClassVar["SyntheticsTestRestrictionPolicyBindingRelation"]
+ VIEWER: ClassVar["SyntheticsTestRestrictionPolicyBindingRelation"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsTestRestrictionPolicyBindingRelation.EDITOR = SyntheticsTestRestrictionPolicyBindingRelation("editor")
+SyntheticsTestRestrictionPolicyBindingRelation.VIEWER = SyntheticsTestRestrictionPolicyBindingRelation("viewer")
diff --git a/datadog_api_client/v1/model/synthetics_test_uptime.py b/datadog_api_client/v1/model/synthetics_test_uptime.py
new file mode 100644
index 0000000000..8b1b5edd26
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_test_uptime.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_uptime import SyntheticsUptime
+
+class SyntheticsTestUptime(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_uptime import SyntheticsUptime
+ return {
+ "from_ts": (int,),
+ "overall": (SyntheticsUptime,),
+ "public_id": (str,),
+ "to_ts": (int,),
+ }
+ attribute_map = {
+ "from_ts": "from_ts",
+ "overall": "overall",
+ "public_id": "public_id",
+ "to_ts": "to_ts",
+ }
+
+ def __init__(self_, from_ts: Union[int, UnsetType]=unset, overall: Union[SyntheticsUptime, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, to_ts: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Object containing the uptime for a Synthetic test ID.
+
+ :param from_ts: Timestamp in seconds for the start of uptime.
+ :type from_ts: int, optional
+
+ :param overall: Object containing the uptime information.
+ :type overall: SyntheticsUptime, optional
+
+ :param public_id: A Synthetic test ID.
+ :type public_id: str, optional
+
+ :param to_ts: Timestamp in seconds for the end of uptime.
+ :type to_ts: int, optional
+ """
+ if from_ts is not unset:
+ kwargs["from_ts"] = from_ts
+ if overall is not unset:
+ kwargs["overall"] = overall
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if to_ts is not unset:
+ kwargs["to_ts"] = to_ts
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_timing.py b/datadog_api_client/v1/model/synthetics_timing.py
new file mode 100644
index 0000000000..7ed860d333
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_timing.py
@@ -0,0 +1,103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTiming(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "dns": (float,),
+ "download": (float,),
+ "first_byte": (float,),
+ "handshake": (float,),
+ "redirect": (float,),
+ "ssl": (float,),
+ "tcp": (float,),
+ "total": (float,),
+ "wait": (float,),
+ }
+ attribute_map = {
+ "dns": "dns",
+ "download": "download",
+ "first_byte": "firstByte",
+ "handshake": "handshake",
+ "redirect": "redirect",
+ "ssl": "ssl",
+ "tcp": "tcp",
+ "total": "total",
+ "wait": "wait",
+ }
+
+ def __init__(self_, dns: Union[float, UnsetType]=unset, download: Union[float, UnsetType]=unset, first_byte: Union[float, UnsetType]=unset, handshake: Union[float, UnsetType]=unset, redirect: Union[float, UnsetType]=unset, ssl: Union[float, UnsetType]=unset, tcp: Union[float, UnsetType]=unset, total: Union[float, UnsetType]=unset, wait: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Object containing all metrics and their values collected for a Synthetic API test.
+ See the `Synthetic Monitoring Metrics documentation `_.
+
+ :param dns: The duration in millisecond of the DNS lookup.
+ :type dns: float, optional
+
+ :param download: The time in millisecond to download the response.
+ :type download: float, optional
+
+ :param first_byte: The time in millisecond to first byte.
+ :type first_byte: float, optional
+
+ :param handshake: The duration in millisecond of the TLS handshake.
+ :type handshake: float, optional
+
+ :param redirect: The time in millisecond spent during redirections.
+ :type redirect: float, optional
+
+ :param ssl: The duration in millisecond of the TLS handshake.
+ :type ssl: float, optional
+
+ :param tcp: Time in millisecond to establish the TCP connection.
+ :type tcp: float, optional
+
+ :param total: The overall time in millisecond the request took to be processed.
+ :type total: float, optional
+
+ :param wait: Time spent in millisecond waiting for a response.
+ :type wait: float, optional
+ """
+ if dns is not unset:
+ kwargs["dns"] = dns
+ if download is not unset:
+ kwargs["download"] = download
+ if first_byte is not unset:
+ kwargs["first_byte"] = first_byte
+ if handshake is not unset:
+ kwargs["handshake"] = handshake
+ if redirect is not unset:
+ kwargs["redirect"] = redirect
+ if ssl is not unset:
+ kwargs["ssl"] = ssl
+ if tcp is not unset:
+ kwargs["tcp"] = tcp
+ if total is not unset:
+ kwargs["total"] = total
+ if wait is not unset:
+ kwargs["wait"] = wait
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_trigger_body.py b/datadog_api_client/v1/model/synthetics_trigger_body.py
new file mode 100644
index 0000000000..5ae8192fc9
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_trigger_body.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_trigger_test import SyntheticsTriggerTest
+
+class SyntheticsTriggerBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_trigger_test import SyntheticsTriggerTest
+ return {
+ "tests": ([SyntheticsTriggerTest],),
+ }
+ attribute_map = {
+ "tests": "tests",
+ }
+
+ def __init__(self_, tests: List[SyntheticsTriggerTest], **kwargs):
+ """
+ Object describing the Synthetic tests to trigger.
+
+ :param tests: List of Synthetic tests.
+ :type tests: [SyntheticsTriggerTest]
+ """
+ super().__init__(kwargs)
+
+
+ self_.tests = tests
diff --git a/datadog_api_client/v1/model/synthetics_trigger_ci_test_location.py b/datadog_api_client/v1/model/synthetics_trigger_ci_test_location.py
new file mode 100644
index 0000000000..6ed27c3342
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_trigger_ci_test_location.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTriggerCITestLocation(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "id": (int,),
+ "name": (str,),
+ }
+ attribute_map = {
+ "id": "id",
+ "name": "name",
+ }
+
+ def __init__(self_, id: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Synthetic location.
+
+ :param id: Unique identifier of the location.
+ :type id: int, optional
+
+ :param name: Name of the location.
+ :type name: str, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if name is not unset:
+ kwargs["name"] = name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_trigger_ci_test_run_result.py b/datadog_api_client/v1/model/synthetics_trigger_ci_test_run_result.py
new file mode 100644
index 0000000000..436a11d99b
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_trigger_ci_test_run_result.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class SyntheticsTriggerCITestRunResult(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "device": (str,),
+ "location": (int,),
+ "public_id": (str,),
+ "result_id": (str,),
+ }
+ attribute_map = {
+ "device": "device",
+ "location": "location",
+ "public_id": "public_id",
+ "result_id": "result_id",
+ }
+
+ def __init__(self_, device: Union[str, UnsetType]=unset, location: Union[int, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, result_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Information about a single test run.
+
+ :param device: The device ID.
+ :type device: str, optional
+
+ :param location: The location ID of the test run.
+ :type location: int, optional
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str, optional
+
+ :param result_id: ID of the result.
+ :type result_id: str, optional
+ """
+ if device is not unset:
+ kwargs["device"] = device
+ if location is not unset:
+ kwargs["location"] = location
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if result_id is not unset:
+ kwargs["result_id"] = result_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_trigger_ci_tests_response.py b/datadog_api_client/v1/model/synthetics_trigger_ci_tests_response.py
new file mode 100644
index 0000000000..0aa48f0276
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_trigger_ci_tests_response.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_trigger_ci_test_location import SyntheticsTriggerCITestLocation
+ from datadog_api_client.v1.model.synthetics_trigger_ci_test_run_result import SyntheticsTriggerCITestRunResult
+
+class SyntheticsTriggerCITestsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_trigger_ci_test_location import SyntheticsTriggerCITestLocation
+ from datadog_api_client.v1.model.synthetics_trigger_ci_test_run_result import SyntheticsTriggerCITestRunResult
+ return {
+ "batch_id": (str, none_type),
+ "locations": ([SyntheticsTriggerCITestLocation],),
+ "results": ([SyntheticsTriggerCITestRunResult],),
+ "triggered_check_ids": ([str],),
+ }
+ attribute_map = {
+ "batch_id": "batch_id",
+ "locations": "locations",
+ "results": "results",
+ "triggered_check_ids": "triggered_check_ids",
+ }
+
+ def __init__(self_, batch_id: Union[str, none_type, UnsetType]=unset, locations: Union[List[SyntheticsTriggerCITestLocation], UnsetType]=unset, results: Union[List[SyntheticsTriggerCITestRunResult], UnsetType]=unset, triggered_check_ids: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Object containing information about the tests triggered.
+
+ :param batch_id: The public ID of the batch triggered.
+ :type batch_id: str, none_type, optional
+
+ :param locations: List of Synthetic locations.
+ :type locations: [SyntheticsTriggerCITestLocation], optional
+
+ :param results: Information about the tests runs.
+ :type results: [SyntheticsTriggerCITestRunResult], optional
+
+ :param triggered_check_ids: The public IDs of the Synthetic test triggered.
+ :type triggered_check_ids: [str], optional
+ """
+ if batch_id is not unset:
+ kwargs["batch_id"] = batch_id
+ if locations is not unset:
+ kwargs["locations"] = locations
+ if results is not unset:
+ kwargs["results"] = results
+ if triggered_check_ids is not unset:
+ kwargs["triggered_check_ids"] = triggered_check_ids
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_trigger_test.py b/datadog_api_client/v1/model/synthetics_trigger_test.py
new file mode 100644
index 0000000000..730b7c2385
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_trigger_test.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+
+class SyntheticsTriggerTest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+ return {
+ "metadata": (SyntheticsCIBatchMetadata,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "metadata": "metadata",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, public_id: str, metadata: Union[SyntheticsCIBatchMetadata, UnsetType]=unset, **kwargs):
+ """
+ Test configuration for Synthetics
+
+ :param metadata: Metadata for the Synthetic tests run.
+ :type metadata: SyntheticsCIBatchMetadata, optional
+
+ :param public_id: The public ID of the Synthetic test to trigger.
+ :type public_id: str
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ super().__init__(kwargs)
+
+
+ self_.public_id = public_id
diff --git a/datadog_api_client/v1/model/synthetics_update_test_pause_status_payload.py b/datadog_api_client/v1/model/synthetics_update_test_pause_status_payload.py
new file mode 100644
index 0000000000..59df6d40ce
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_update_test_pause_status_payload.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+
+class SyntheticsUpdateTestPauseStatusPayload(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+ return {
+ "new_status": (SyntheticsTestPauseStatus,),
+ }
+ attribute_map = {
+ "new_status": "new_status",
+ }
+
+ def __init__(self_, new_status: Union[SyntheticsTestPauseStatus, UnsetType]=unset, **kwargs):
+ """
+ Object to start or pause an existing Synthetic test.
+
+ :param new_status: Define whether you want to start ( ``live`` ) or pause ( ``paused`` ) a
+ Synthetic test.
+ :type new_status: SyntheticsTestPauseStatus, optional
+ """
+ if new_status is not unset:
+ kwargs["new_status"] = new_status
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_uptime.py b/datadog_api_client/v1/model/synthetics_uptime.py
new file mode 100644
index 0000000000..ba53140858
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_uptime.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+
+class SyntheticsUptime(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+ return {
+ "errors": ([SLOHistoryResponseErrorWithType], none_type),
+ "group": (str,),
+ "history": ([[float]],),
+ "span_precision": (float,),
+ "uptime": (float,),
+ }
+ attribute_map = {
+ "errors": "errors",
+ "group": "group",
+ "history": "history",
+ "span_precision": "span_precision",
+ "uptime": "uptime",
+ }
+
+ def __init__(self_, errors: Union[List[SLOHistoryResponseErrorWithType], none_type, UnsetType]=unset, group: Union[str, UnsetType]=unset, history: Union[List[List[float]], UnsetType]=unset, span_precision: Union[float, UnsetType]=unset, uptime: Union[float, UnsetType]=unset, **kwargs):
+ """
+ Object containing the uptime information.
+
+ :param errors: An array of error objects returned while querying the history data for the service level objective.
+ :type errors: [SLOHistoryResponseErrorWithType], none_type, optional
+
+ :param group: The location name
+ :type group: str, optional
+
+ :param history: The state transition history for the monitor, represented as an array of
+ pairs. Each pair is an array where the first element is the transition timestamp
+ in Unix epoch format (integer) and the second element is the state (integer).
+ For the state, an integer value of ``0`` indicates uptime, ``1`` indicates downtime,
+ and ``2`` indicates no data.
+ :type history: [[float]], optional
+
+ :param span_precision: The number of decimal places to which the SLI value is accurate for the given from-to timestamps.
+ :type span_precision: float, optional
+
+ :param uptime: The overall uptime.
+ :type uptime: float, optional
+ """
+ if errors is not unset:
+ kwargs["errors"] = errors
+ if group is not unset:
+ kwargs["group"] = group
+ if history is not unset:
+ kwargs["history"] = history
+ if span_precision is not unset:
+ kwargs["span_precision"] = span_precision
+ if uptime is not unset:
+ kwargs["uptime"] = uptime
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/synthetics_variable_parser.py b/datadog_api_client/v1/model/synthetics_variable_parser.py
new file mode 100644
index 0000000000..8132a4e372
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_variable_parser.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.synthetics_global_variable_parser_type import SyntheticsGlobalVariableParserType
+
+class SyntheticsVariableParser(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.synthetics_global_variable_parser_type import SyntheticsGlobalVariableParserType
+ return {
+ "type": (SyntheticsGlobalVariableParserType,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ "value": "value",
+ }
+
+ def __init__(self_, type: SyntheticsGlobalVariableParserType, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Details of the parser to use for the global variable.
+
+ :param type: Type of parser for a Synthetic global variable from a synthetics test.
+ :type type: SyntheticsGlobalVariableParserType
+
+ :param value: Regex or JSON path used for the parser. Not used with type ``raw``.
+ :type value: str, optional
+ """
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/synthetics_warning_type.py b/datadog_api_client/v1/model/synthetics_warning_type.py
new file mode 100644
index 0000000000..fcd874474a
--- /dev/null
+++ b/datadog_api_client/v1/model/synthetics_warning_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class SyntheticsWarningType(ModelSimple):
+ """
+ User locator used.
+
+ :param value: If omitted defaults to "user_locator". Must be one of ["user_locator"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "user_locator",
+ }
+ USER_LOCATOR: ClassVar["SyntheticsWarningType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+SyntheticsWarningType.USER_LOCATOR = SyntheticsWarningType("user_locator")
diff --git a/datadog_api_client/v1/model/table_widget_cell_display_mode.py b/datadog_api_client/v1/model/table_widget_cell_display_mode.py
new file mode 100644
index 0000000000..8ca4534f30
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_cell_display_mode.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetCellDisplayMode(ModelSimple):
+ """
+ Define a display mode for the table cell.
+
+ :param value: Must be one of ["number", "bar", "trend"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "number",
+ "bar",
+ "trend",
+ }
+ NUMBER: ClassVar["TableWidgetCellDisplayMode"]
+ BAR: ClassVar["TableWidgetCellDisplayMode"]
+ TREND: ClassVar["TableWidgetCellDisplayMode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetCellDisplayMode.NUMBER = TableWidgetCellDisplayMode("number")
+TableWidgetCellDisplayMode.BAR = TableWidgetCellDisplayMode("bar")
+TableWidgetCellDisplayMode.TREND = TableWidgetCellDisplayMode("trend")
diff --git a/datadog_api_client/v1/model/table_widget_definition.py b/datadog_api_client/v1/model/table_widget_definition.py
new file mode 100644
index 0000000000..33c54e26ae
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_definition.py
@@ -0,0 +1,131 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.table_widget_has_search_bar import TableWidgetHasSearchBar
+ from datadog_api_client.v1.model.table_widget_request import TableWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.table_widget_definition_type import TableWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class TableWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.table_widget_has_search_bar import TableWidgetHasSearchBar
+ from datadog_api_client.v1.model.table_widget_request import TableWidgetRequest
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.table_widget_definition_type import TableWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "has_search_bar": (TableWidgetHasSearchBar,),
+ "requests": ([TableWidgetRequest],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (TableWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "has_search_bar": "has_search_bar",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[TableWidgetRequest], type: TableWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, has_search_bar: Union[TableWidgetHasSearchBar, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The table visualization is available on dashboards. It displays columns of metrics grouped by tag key.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param has_search_bar: Controls the display of the search bar.
+ :type has_search_bar: TableWidgetHasSearchBar, optional
+
+ :param requests: Widget definition.
+ :type requests: [TableWidgetRequest]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the table widget.
+ :type type: TableWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if has_search_bar is not unset:
+ kwargs["has_search_bar"] = has_search_bar
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/table_widget_definition_type.py b/datadog_api_client/v1/model/table_widget_definition_type.py
new file mode 100644
index 0000000000..da2bc136b9
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetDefinitionType(ModelSimple):
+ """
+ Type of the table widget.
+
+ :param value: If omitted defaults to "query_table". Must be one of ["query_table"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "query_table",
+ }
+ QUERY_TABLE: ClassVar["TableWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetDefinitionType.QUERY_TABLE = TableWidgetDefinitionType("query_table")
diff --git a/datadog_api_client/v1/model/table_widget_has_search_bar.py b/datadog_api_client/v1/model/table_widget_has_search_bar.py
new file mode 100644
index 0000000000..e4355118a7
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_has_search_bar.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetHasSearchBar(ModelSimple):
+ """
+ Controls the display of the search bar.
+
+ :param value: Must be one of ["always", "never", "auto"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "always",
+ "never",
+ "auto",
+ }
+ ALWAYS: ClassVar["TableWidgetHasSearchBar"]
+ NEVER: ClassVar["TableWidgetHasSearchBar"]
+ AUTO: ClassVar["TableWidgetHasSearchBar"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetHasSearchBar.ALWAYS = TableWidgetHasSearchBar("always")
+TableWidgetHasSearchBar.NEVER = TableWidgetHasSearchBar("never")
+TableWidgetHasSearchBar.AUTO = TableWidgetHasSearchBar("auto")
diff --git a/datadog_api_client/v1/model/table_widget_request.py b/datadog_api_client/v1/model/table_widget_request.py
new file mode 100644
index 0000000000..9cc4813049
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_request.py
@@ -0,0 +1,230 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.apm_stats_query_definition import ApmStatsQueryDefinition
+ from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+
+class TableWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.apm_stats_query_definition import ApmStatsQueryDefinition
+ from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+ return {
+ "aggregator": (WidgetAggregator,),
+ "alias": (str,),
+ "apm_query": (LogQueryDefinition,),
+ "apm_stats_query": (ApmStatsQueryDefinition,),
+ "cell_display_mode": ([TableWidgetCellDisplayMode],),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "limit": (int,),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "order": (WidgetSort,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "sort": (WidgetSortBy,),
+ "text_formats": ([[TableWidgetTextFormatRule]],),
+ }
+ attribute_map = {
+ "aggregator": "aggregator",
+ "alias": "alias",
+ "apm_query": "apm_query",
+ "apm_stats_query": "apm_stats_query",
+ "cell_display_mode": "cell_display_mode",
+ "conditional_formats": "conditional_formats",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "limit": "limit",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "order": "order",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "sort": "sort",
+ "text_formats": "text_formats",
+ }
+
+ def __init__(self_, aggregator: Union[WidgetAggregator, UnsetType]=unset, alias: Union[str, UnsetType]=unset, apm_query: Union[LogQueryDefinition, UnsetType]=unset, apm_stats_query: Union[ApmStatsQueryDefinition, UnsetType]=unset, cell_display_mode: Union[List[TableWidgetCellDisplayMode], UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, limit: Union[int, UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, order: Union[WidgetSort, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, sort: Union[WidgetSortBy, UnsetType]=unset, text_formats: Union[List[List[TableWidgetTextFormatRule]], UnsetType]=unset, **kwargs):
+ """
+ Updated table widget.
+
+ :param aggregator: Aggregator used for the request.
+ :type aggregator: WidgetAggregator, optional
+
+ :param alias: The column name (defaults to the metric name).
+ :type alias: str, optional
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param apm_stats_query: The APM stats query for table and distributions widgets.
+ :type apm_stats_query: ApmStatsQueryDefinition, optional
+
+ :param cell_display_mode: A list of display modes for each table cell.
+ :type cell_display_mode: [TableWidgetCellDisplayMode], optional
+
+ :param conditional_formats: List of conditional formats.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param limit: For metric queries, the number of lines to show in the table. Only one request should have this property.
+ :type limit: int, optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Query definition. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param text_formats: List of text formats for columns produced by tags.
+ :type text_formats: [[TableWidgetTextFormatRule]], optional
+ """
+ if aggregator is not unset:
+ kwargs["aggregator"] = aggregator
+ if alias is not unset:
+ kwargs["alias"] = alias
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if apm_stats_query is not unset:
+ kwargs["apm_stats_query"] = apm_stats_query
+ if cell_display_mode is not unset:
+ kwargs["cell_display_mode"] = cell_display_mode
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if order is not unset:
+ kwargs["order"] = order
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if text_formats is not unset:
+ kwargs["text_formats"] = text_formats
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/table_widget_text_format_match.py b/datadog_api_client/v1/model/table_widget_text_format_match.py
new file mode 100644
index 0000000000..9e9b69037b
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_match.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.table_widget_text_format_match_type import TableWidgetTextFormatMatchType
+
+class TableWidgetTextFormatMatch(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.table_widget_text_format_match_type import TableWidgetTextFormatMatchType
+ return {
+ "type": (TableWidgetTextFormatMatchType,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ "value": "value",
+ }
+
+ def __init__(self_, type: TableWidgetTextFormatMatchType, value: str, **kwargs):
+ """
+ Match rule for the table widget text format.
+
+ :param type: Match or compare option.
+ :type type: TableWidgetTextFormatMatchType
+
+ :param value: Table Widget Match String.
+ :type value: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.value = value
diff --git a/datadog_api_client/v1/model/table_widget_text_format_match_type.py b/datadog_api_client/v1/model/table_widget_text_format_match_type.py
new file mode 100644
index 0000000000..51de15a4e1
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_match_type.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetTextFormatMatchType(ModelSimple):
+ """
+ Match or compare option.
+
+ :param value: Must be one of ["is", "is_not", "contains", "does_not_contain", "starts_with", "ends_with"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "is",
+ "is_not",
+ "contains",
+ "does_not_contain",
+ "starts_with",
+ "ends_with",
+ }
+ IS: ClassVar["TableWidgetTextFormatMatchType"]
+ IS_NOT: ClassVar["TableWidgetTextFormatMatchType"]
+ CONTAINS: ClassVar["TableWidgetTextFormatMatchType"]
+ DOES_NOT_CONTAIN: ClassVar["TableWidgetTextFormatMatchType"]
+ STARTS_WITH: ClassVar["TableWidgetTextFormatMatchType"]
+ ENDS_WITH: ClassVar["TableWidgetTextFormatMatchType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetTextFormatMatchType.IS = TableWidgetTextFormatMatchType("is")
+TableWidgetTextFormatMatchType.IS_NOT = TableWidgetTextFormatMatchType("is_not")
+TableWidgetTextFormatMatchType.CONTAINS = TableWidgetTextFormatMatchType("contains")
+TableWidgetTextFormatMatchType.DOES_NOT_CONTAIN = TableWidgetTextFormatMatchType("does_not_contain")
+TableWidgetTextFormatMatchType.STARTS_WITH = TableWidgetTextFormatMatchType("starts_with")
+TableWidgetTextFormatMatchType.ENDS_WITH = TableWidgetTextFormatMatchType("ends_with")
diff --git a/datadog_api_client/v1/model/table_widget_text_format_palette.py b/datadog_api_client/v1/model/table_widget_text_format_palette.py
new file mode 100644
index 0000000000..286491436f
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_palette.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetTextFormatPalette(ModelSimple):
+ """
+ Color-on-color palette to highlight replaced text.
+
+ :param value: If omitted defaults to "white_on_green". Must be one of ["white_on_red", "white_on_yellow", "white_on_green", "black_on_light_red", "black_on_light_yellow", "black_on_light_green", "red_on_white", "yellow_on_white", "green_on_white", "custom_bg", "custom_text"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "white_on_red",
+ "white_on_yellow",
+ "white_on_green",
+ "black_on_light_red",
+ "black_on_light_yellow",
+ "black_on_light_green",
+ "red_on_white",
+ "yellow_on_white",
+ "green_on_white",
+ "custom_bg",
+ "custom_text",
+ }
+ WHITE_ON_RED: ClassVar["TableWidgetTextFormatPalette"]
+ WHITE_ON_YELLOW: ClassVar["TableWidgetTextFormatPalette"]
+ WHITE_ON_GREEN: ClassVar["TableWidgetTextFormatPalette"]
+ BLACK_ON_LIGHT_RED: ClassVar["TableWidgetTextFormatPalette"]
+ BLACK_ON_LIGHT_YELLOW: ClassVar["TableWidgetTextFormatPalette"]
+ BLACK_ON_LIGHT_GREEN: ClassVar["TableWidgetTextFormatPalette"]
+ RED_ON_WHITE: ClassVar["TableWidgetTextFormatPalette"]
+ YELLOW_ON_WHITE: ClassVar["TableWidgetTextFormatPalette"]
+ GREEN_ON_WHITE: ClassVar["TableWidgetTextFormatPalette"]
+ CUSTOM_BG: ClassVar["TableWidgetTextFormatPalette"]
+ CUSTOM_TEXT: ClassVar["TableWidgetTextFormatPalette"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetTextFormatPalette.WHITE_ON_RED = TableWidgetTextFormatPalette("white_on_red")
+TableWidgetTextFormatPalette.WHITE_ON_YELLOW = TableWidgetTextFormatPalette("white_on_yellow")
+TableWidgetTextFormatPalette.WHITE_ON_GREEN = TableWidgetTextFormatPalette("white_on_green")
+TableWidgetTextFormatPalette.BLACK_ON_LIGHT_RED = TableWidgetTextFormatPalette("black_on_light_red")
+TableWidgetTextFormatPalette.BLACK_ON_LIGHT_YELLOW = TableWidgetTextFormatPalette("black_on_light_yellow")
+TableWidgetTextFormatPalette.BLACK_ON_LIGHT_GREEN = TableWidgetTextFormatPalette("black_on_light_green")
+TableWidgetTextFormatPalette.RED_ON_WHITE = TableWidgetTextFormatPalette("red_on_white")
+TableWidgetTextFormatPalette.YELLOW_ON_WHITE = TableWidgetTextFormatPalette("yellow_on_white")
+TableWidgetTextFormatPalette.GREEN_ON_WHITE = TableWidgetTextFormatPalette("green_on_white")
+TableWidgetTextFormatPalette.CUSTOM_BG = TableWidgetTextFormatPalette("custom_bg")
+TableWidgetTextFormatPalette.CUSTOM_TEXT = TableWidgetTextFormatPalette("custom_text")
diff --git a/datadog_api_client/v1/model/table_widget_text_format_replace.py b/datadog_api_client/v1/model/table_widget_text_format_replace.py
new file mode 100644
index 0000000000..e789fb544a
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_replace.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class TableWidgetTextFormatReplace(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Replace rule for the table widget text format.
+
+ :param type: Table widget text format replace all type.
+ :type type: TableWidgetTextFormatReplaceAllType
+
+ :param _with: Replace All type.
+ :type _with: str
+
+ :param substring: Text that will be replaced.
+ :type substring: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+ return {
+ "oneOf": [
+ TableWidgetTextFormatReplaceAll,
+ TableWidgetTextFormatReplaceSubstring,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/table_widget_text_format_replace_all.py b/datadog_api_client/v1/model/table_widget_text_format_replace_all.py
new file mode 100644
index 0000000000..e5c396d70f
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_replace_all.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all_type import TableWidgetTextFormatReplaceAllType
+
+class TableWidgetTextFormatReplaceAll(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all_type import TableWidgetTextFormatReplaceAllType
+ return {
+ "type": (TableWidgetTextFormatReplaceAllType,),
+ "_with": (str,),
+ }
+ attribute_map = {
+ "type": "type",
+ "_with": "with",
+ }
+
+ def __init__(self_, type: TableWidgetTextFormatReplaceAllType, _with: str, **kwargs):
+ """
+ Match All definition.
+
+ :param type: Table widget text format replace all type.
+ :type type: TableWidgetTextFormatReplaceAllType
+
+ :param _with: Replace All type.
+ :type _with: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_._with = _with
diff --git a/datadog_api_client/v1/model/table_widget_text_format_replace_all_type.py b/datadog_api_client/v1/model/table_widget_text_format_replace_all_type.py
new file mode 100644
index 0000000000..cedc0d49eb
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_replace_all_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetTextFormatReplaceAllType(ModelSimple):
+ """
+ Table widget text format replace all type.
+
+ :param value: If omitted defaults to "all". Must be one of ["all"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "all",
+ }
+ ALL: ClassVar["TableWidgetTextFormatReplaceAllType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetTextFormatReplaceAllType.ALL = TableWidgetTextFormatReplaceAllType("all")
diff --git a/datadog_api_client/v1/model/table_widget_text_format_replace_substring.py b/datadog_api_client/v1/model/table_widget_text_format_replace_substring.py
new file mode 100644
index 0000000000..99bf8c155f
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_replace_substring.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring_type import TableWidgetTextFormatReplaceSubstringType
+
+class TableWidgetTextFormatReplaceSubstring(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring_type import TableWidgetTextFormatReplaceSubstringType
+ return {
+ "substring": (str,),
+ "type": (TableWidgetTextFormatReplaceSubstringType,),
+ "_with": (str,),
+ }
+ attribute_map = {
+ "substring": "substring",
+ "type": "type",
+ "_with": "with",
+ }
+
+ def __init__(self_, substring: str, type: TableWidgetTextFormatReplaceSubstringType, _with: str, **kwargs):
+ """
+ Match Sub-string definition.
+
+ :param substring: Text that will be replaced.
+ :type substring: str
+
+ :param type: Table widget text format replace sub-string type.
+ :type type: TableWidgetTextFormatReplaceSubstringType
+
+ :param _with: Text that will replace original sub-string.
+ :type _with: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.substring = substring
+ self_.type = type
+ self_._with = _with
diff --git a/datadog_api_client/v1/model/table_widget_text_format_replace_substring_type.py b/datadog_api_client/v1/model/table_widget_text_format_replace_substring_type.py
new file mode 100644
index 0000000000..6a44927984
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_replace_substring_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TableWidgetTextFormatReplaceSubstringType(ModelSimple):
+ """
+ Table widget text format replace sub-string type.
+
+ :param value: If omitted defaults to "substring". Must be one of ["substring"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "substring",
+ }
+ SUBSTRING: ClassVar["TableWidgetTextFormatReplaceSubstringType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TableWidgetTextFormatReplaceSubstringType.SUBSTRING = TableWidgetTextFormatReplaceSubstringType("substring")
diff --git a/datadog_api_client/v1/model/table_widget_text_format_rule.py b/datadog_api_client/v1/model/table_widget_text_format_rule.py
new file mode 100644
index 0000000000..c0f8e3dd27
--- /dev/null
+++ b/datadog_api_client/v1/model/table_widget_text_format_rule.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.table_widget_text_format_match import TableWidgetTextFormatMatch
+ from datadog_api_client.v1.model.table_widget_text_format_palette import TableWidgetTextFormatPalette
+ from datadog_api_client.v1.model.table_widget_text_format_replace import TableWidgetTextFormatReplace
+ from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+ from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+
+class TableWidgetTextFormatRule(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.table_widget_text_format_match import TableWidgetTextFormatMatch
+ from datadog_api_client.v1.model.table_widget_text_format_palette import TableWidgetTextFormatPalette
+ from datadog_api_client.v1.model.table_widget_text_format_replace import TableWidgetTextFormatReplace
+ return {
+ "custom_bg_color": (str,),
+ "custom_fg_color": (str,),
+ "match": (TableWidgetTextFormatMatch,),
+ "palette": (TableWidgetTextFormatPalette,),
+ "replace": (TableWidgetTextFormatReplace,),
+ }
+ attribute_map = {
+ "custom_bg_color": "custom_bg_color",
+ "custom_fg_color": "custom_fg_color",
+ "match": "match",
+ "palette": "palette",
+ "replace": "replace",
+ }
+
+ def __init__(self_, match: TableWidgetTextFormatMatch, custom_bg_color: Union[str, UnsetType]=unset, custom_fg_color: Union[str, UnsetType]=unset, palette: Union[TableWidgetTextFormatPalette, UnsetType]=unset, replace: Union[TableWidgetTextFormatReplace, TableWidgetTextFormatReplaceAll, TableWidgetTextFormatReplaceSubstring, UnsetType]=unset, **kwargs):
+ """
+ Text format rules.
+
+ :param custom_bg_color: Hex representation of the custom background color. Used with custom background palette option.
+ :type custom_bg_color: str, optional
+
+ :param custom_fg_color: Hex representation of the custom text color. Used with custom text palette option.
+ :type custom_fg_color: str, optional
+
+ :param match: Match rule for the table widget text format.
+ :type match: TableWidgetTextFormatMatch
+
+ :param palette: Color-on-color palette to highlight replaced text.
+ :type palette: TableWidgetTextFormatPalette, optional
+
+ :param replace: Replace rule for the table widget text format.
+ :type replace: TableWidgetTextFormatReplace, optional
+ """
+ if custom_bg_color is not unset:
+ kwargs["custom_bg_color"] = custom_bg_color
+ if custom_fg_color is not unset:
+ kwargs["custom_fg_color"] = custom_fg_color
+ if palette is not unset:
+ kwargs["palette"] = palette
+ if replace is not unset:
+ kwargs["replace"] = replace
+ super().__init__(kwargs)
+
+
+ self_.match = match
diff --git a/datadog_api_client/v1/model/tag_to_hosts.py b/datadog_api_client/v1/model/tag_to_hosts.py
new file mode 100644
index 0000000000..cff902e8e3
--- /dev/null
+++ b/datadog_api_client/v1/model/tag_to_hosts.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class TagToHosts(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "tags": ({str: ([str],)},),
+ }
+ attribute_map = {
+ "tags": "tags",
+ }
+
+ def __init__(self_, tags: Union[Dict[str, List[str]], UnsetType]=unset, **kwargs):
+ """
+ In this object, the key is the tag, and the value is a list of host names that are reporting that tag.
+
+ :param tags: A mapping of tags to host names
+ :type tags: {str: ([str],)}, optional
+ """
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/target_format_type.py b/datadog_api_client/v1/model/target_format_type.py
new file mode 100644
index 0000000000..68588cc9cf
--- /dev/null
+++ b/datadog_api_client/v1/model/target_format_type.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TargetFormatType(ModelSimple):
+ """
+ If the `target_type` of the remapper is `attribute`, try to cast the value to a new specific type.
+ If the cast is not possible, the original type is kept. `string`, `integer`, or `double` are the possible types.
+ If the `target_type` is `tag`, this parameter may not be specified.
+
+ :param value: Must be one of ["auto", "string", "integer", "double"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "auto",
+ "string",
+ "integer",
+ "double",
+ }
+ AUTO: ClassVar["TargetFormatType"]
+ STRING: ClassVar["TargetFormatType"]
+ INTEGER: ClassVar["TargetFormatType"]
+ DOUBLE: ClassVar["TargetFormatType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TargetFormatType.AUTO = TargetFormatType("auto")
+TargetFormatType.STRING = TargetFormatType("string")
+TargetFormatType.INTEGER = TargetFormatType("integer")
+TargetFormatType.DOUBLE = TargetFormatType("double")
diff --git a/datadog_api_client/v1/model/timeseries_background.py b/datadog_api_client/v1/model/timeseries_background.py
new file mode 100644
index 0000000000..63d5f9a235
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_background.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.timeseries_background_type import TimeseriesBackgroundType
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+
+class TimeseriesBackground(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.timeseries_background_type import TimeseriesBackgroundType
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ return {
+ "type": (TimeseriesBackgroundType,),
+ "yaxis": (WidgetAxis,),
+ }
+ attribute_map = {
+ "type": "type",
+ "yaxis": "yaxis",
+ }
+
+ def __init__(self_, type: TimeseriesBackgroundType, yaxis: Union[WidgetAxis, UnsetType]=unset, **kwargs):
+ """
+ Set a timeseries on the widget background.
+
+ :param type: Timeseries is made using an area or bars.
+ :type type: TimeseriesBackgroundType
+
+ :param yaxis: Axis controls for the widget.
+ :type yaxis: WidgetAxis, optional
+ """
+ if yaxis is not unset:
+ kwargs["yaxis"] = yaxis
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/timeseries_background_type.py b/datadog_api_client/v1/model/timeseries_background_type.py
new file mode 100644
index 0000000000..66623ec7cc
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_background_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TimeseriesBackgroundType(ModelSimple):
+ """
+ Timeseries is made using an area or bars.
+
+ :param value: If omitted defaults to "area". Must be one of ["bars", "area"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "bars",
+ "area",
+ }
+ BARS: ClassVar["TimeseriesBackgroundType"]
+ AREA: ClassVar["TimeseriesBackgroundType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TimeseriesBackgroundType.BARS = TimeseriesBackgroundType("bars")
+TimeseriesBackgroundType.AREA = TimeseriesBackgroundType("area")
diff --git a/datadog_api_client/v1/model/timeseries_request_style.py b/datadog_api_client/v1/model/timeseries_request_style.py
new file mode 100644
index 0000000000..d51727364e
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_request_style.py
@@ -0,0 +1,84 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_line_type import WidgetLineType
+ from datadog_api_client.v1.model.widget_line_width import WidgetLineWidth
+ from datadog_api_client.v1.model.widget_style_order_by import WidgetStyleOrderBy
+
+class TimeseriesRequestStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_line_type import WidgetLineType
+ from datadog_api_client.v1.model.widget_line_width import WidgetLineWidth
+ from datadog_api_client.v1.model.widget_style_order_by import WidgetStyleOrderBy
+ return {
+ "has_value_labels": (bool,),
+ "line_type": (WidgetLineType,),
+ "line_width": (WidgetLineWidth,),
+ "order_by": (WidgetStyleOrderBy,),
+ "palette": (str,),
+ }
+ attribute_map = {
+ "has_value_labels": "has_value_labels",
+ "line_type": "line_type",
+ "line_width": "line_width",
+ "order_by": "order_by",
+ "palette": "palette",
+ }
+
+ def __init__(self_, has_value_labels: Union[bool, UnsetType]=unset, line_type: Union[WidgetLineType, UnsetType]=unset, line_width: Union[WidgetLineWidth, UnsetType]=unset, order_by: Union[WidgetStyleOrderBy, UnsetType]=unset, palette: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Define request widget style for timeseries widgets.
+
+ :param has_value_labels: If true, the value is displayed as a label relative to the data point.
+ :type has_value_labels: bool, optional
+
+ :param line_type: Type of lines displayed.
+ :type line_type: WidgetLineType, optional
+
+ :param line_width: Width of line displayed.
+ :type line_width: WidgetLineWidth, optional
+
+ :param order_by: How to order series in timeseries visualizations.
+
+ * ``tags`` : Order series alphabetically by tag name (default behavior)
+ * ``values`` : Order series by their current metric values (typically descending)
+ :type order_by: WidgetStyleOrderBy, optional
+
+ :param palette: Color palette to apply to the widget.
+ :type palette: str, optional
+ """
+ if has_value_labels is not unset:
+ kwargs["has_value_labels"] = has_value_labels
+ if line_type is not unset:
+ kwargs["line_type"] = line_type
+ if line_width is not unset:
+ kwargs["line_width"] = line_width
+ if order_by is not unset:
+ kwargs["order_by"] = order_by
+ if palette is not unset:
+ kwargs["palette"] = palette
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/timeseries_widget_definition.py b/datadog_api_client/v1/model/timeseries_widget_definition.py
new file mode 100644
index 0000000000..f55c08c1a7
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_widget_definition.py
@@ -0,0 +1,191 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_event import WidgetEvent
+ from datadog_api_client.v1.model.timeseries_widget_legend_column import TimeseriesWidgetLegendColumn
+ from datadog_api_client.v1.model.timeseries_widget_legend_layout import TimeseriesWidgetLegendLayout
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.timeseries_widget_request import TimeseriesWidgetRequest
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.timeseries_widget_definition_type import TimeseriesWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class TimeseriesWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.widget_event import WidgetEvent
+ from datadog_api_client.v1.model.timeseries_widget_legend_column import TimeseriesWidgetLegendColumn
+ from datadog_api_client.v1.model.timeseries_widget_legend_layout import TimeseriesWidgetLegendLayout
+ from datadog_api_client.v1.model.widget_marker import WidgetMarker
+ from datadog_api_client.v1.model.timeseries_widget_request import TimeseriesWidgetRequest
+ from datadog_api_client.v1.model.widget_axis import WidgetAxis
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.timeseries_widget_definition_type import TimeseriesWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "events": ([WidgetEvent],),
+ "legend_columns": ([TimeseriesWidgetLegendColumn],),
+ "legend_layout": (TimeseriesWidgetLegendLayout,),
+ "legend_size": (str,),
+ "markers": ([WidgetMarker],),
+ "requests": ([TimeseriesWidgetRequest],),
+ "right_yaxis": (WidgetAxis,),
+ "show_legend": (bool,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (TimeseriesWidgetDefinitionType,),
+ "yaxis": (WidgetAxis,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "events": "events",
+ "legend_columns": "legend_columns",
+ "legend_layout": "legend_layout",
+ "legend_size": "legend_size",
+ "markers": "markers",
+ "requests": "requests",
+ "right_yaxis": "right_yaxis",
+ "show_legend": "show_legend",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ "yaxis": "yaxis",
+ }
+
+ def __init__(self_, requests: List[TimeseriesWidgetRequest], type: TimeseriesWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, events: Union[List[WidgetEvent], UnsetType]=unset, legend_columns: Union[List[TimeseriesWidgetLegendColumn], UnsetType]=unset, legend_layout: Union[TimeseriesWidgetLegendLayout, UnsetType]=unset, legend_size: Union[str, UnsetType]=unset, markers: Union[List[WidgetMarker], UnsetType]=unset, right_yaxis: Union[WidgetAxis, UnsetType]=unset, show_legend: Union[bool, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, yaxis: Union[WidgetAxis, UnsetType]=unset, **kwargs):
+ """
+ The timeseries visualization allows you to display the evolution of one or more metrics, log events, or Indexed Spans over time.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param events: List of widget events. Deprecated - Use ``overlay`` request type instead. **Deprecated**.
+ :type events: [WidgetEvent], optional
+
+ :param legend_columns: Columns displayed in the legend.
+ :type legend_columns: [TimeseriesWidgetLegendColumn], optional
+
+ :param legend_layout: Layout of the legend.
+ :type legend_layout: TimeseriesWidgetLegendLayout, optional
+
+ :param legend_size: Available legend sizes for a widget. Should be one of "0", "2", "4", "8", "16", or "auto".
+ :type legend_size: str, optional
+
+ :param markers: List of markers.
+ :type markers: [WidgetMarker], optional
+
+ :param requests: List of timeseries widget requests.
+ :type requests: [TimeseriesWidgetRequest]
+
+ :param right_yaxis: Axis controls for the widget.
+ :type right_yaxis: WidgetAxis, optional
+
+ :param show_legend: (screenboard only) Show the legend for this widget.
+ :type show_legend: bool, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the timeseries widget.
+ :type type: TimeseriesWidgetDefinitionType
+
+ :param yaxis: Axis controls for the widget.
+ :type yaxis: WidgetAxis, optional
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if events is not unset:
+ kwargs["events"] = events
+ if legend_columns is not unset:
+ kwargs["legend_columns"] = legend_columns
+ if legend_layout is not unset:
+ kwargs["legend_layout"] = legend_layout
+ if legend_size is not unset:
+ kwargs["legend_size"] = legend_size
+ if markers is not unset:
+ kwargs["markers"] = markers
+ if right_yaxis is not unset:
+ kwargs["right_yaxis"] = right_yaxis
+ if show_legend is not unset:
+ kwargs["show_legend"] = show_legend
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ if yaxis is not unset:
+ kwargs["yaxis"] = yaxis
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/timeseries_widget_definition_type.py b/datadog_api_client/v1/model/timeseries_widget_definition_type.py
new file mode 100644
index 0000000000..baa4249d87
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TimeseriesWidgetDefinitionType(ModelSimple):
+ """
+ Type of the timeseries widget.
+
+ :param value: If omitted defaults to "timeseries". Must be one of ["timeseries"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "timeseries",
+ }
+ TIMESERIES: ClassVar["TimeseriesWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TimeseriesWidgetDefinitionType.TIMESERIES = TimeseriesWidgetDefinitionType("timeseries")
diff --git a/datadog_api_client/v1/model/timeseries_widget_expression_alias.py b/datadog_api_client/v1/model/timeseries_widget_expression_alias.py
new file mode 100644
index 0000000000..dfe97566ae
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_widget_expression_alias.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class TimeseriesWidgetExpressionAlias(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "alias_name": (str,),
+ "expression": (str,),
+ }
+ attribute_map = {
+ "alias_name": "alias_name",
+ "expression": "expression",
+ }
+
+ def __init__(self_, expression: str, alias_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Define an expression alias.
+
+ :param alias_name: Expression alias.
+ :type alias_name: str, optional
+
+ :param expression: Expression name.
+ :type expression: str
+ """
+ if alias_name is not unset:
+ kwargs["alias_name"] = alias_name
+ super().__init__(kwargs)
+
+
+ self_.expression = expression
diff --git a/datadog_api_client/v1/model/timeseries_widget_legend_column.py b/datadog_api_client/v1/model/timeseries_widget_legend_column.py
new file mode 100644
index 0000000000..8a697f40a6
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_widget_legend_column.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TimeseriesWidgetLegendColumn(ModelSimple):
+ """
+ Legend column.
+
+ :param value: Must be one of ["value", "avg", "sum", "min", "max"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "value",
+ "avg",
+ "sum",
+ "min",
+ "max",
+ }
+ VALUE: ClassVar["TimeseriesWidgetLegendColumn"]
+ AVG: ClassVar["TimeseriesWidgetLegendColumn"]
+ SUM: ClassVar["TimeseriesWidgetLegendColumn"]
+ MIN: ClassVar["TimeseriesWidgetLegendColumn"]
+ MAX: ClassVar["TimeseriesWidgetLegendColumn"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TimeseriesWidgetLegendColumn.VALUE = TimeseriesWidgetLegendColumn("value")
+TimeseriesWidgetLegendColumn.AVG = TimeseriesWidgetLegendColumn("avg")
+TimeseriesWidgetLegendColumn.SUM = TimeseriesWidgetLegendColumn("sum")
+TimeseriesWidgetLegendColumn.MIN = TimeseriesWidgetLegendColumn("min")
+TimeseriesWidgetLegendColumn.MAX = TimeseriesWidgetLegendColumn("max")
diff --git a/datadog_api_client/v1/model/timeseries_widget_legend_layout.py b/datadog_api_client/v1/model/timeseries_widget_legend_layout.py
new file mode 100644
index 0000000000..594b87b460
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_widget_legend_layout.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TimeseriesWidgetLegendLayout(ModelSimple):
+ """
+ Layout of the legend.
+
+ :param value: Must be one of ["auto", "horizontal", "vertical"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "auto",
+ "horizontal",
+ "vertical",
+ }
+ AUTO: ClassVar["TimeseriesWidgetLegendLayout"]
+ HORIZONTAL: ClassVar["TimeseriesWidgetLegendLayout"]
+ VERTICAL: ClassVar["TimeseriesWidgetLegendLayout"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TimeseriesWidgetLegendLayout.AUTO = TimeseriesWidgetLegendLayout("auto")
+TimeseriesWidgetLegendLayout.HORIZONTAL = TimeseriesWidgetLegendLayout("horizontal")
+TimeseriesWidgetLegendLayout.VERTICAL = TimeseriesWidgetLegendLayout("vertical")
diff --git a/datadog_api_client/v1/model/timeseries_widget_request.py b/datadog_api_client/v1/model/timeseries_widget_request.py
new file mode 100644
index 0000000000..4ac11ed481
--- /dev/null
+++ b/datadog_api_client/v1/model/timeseries_widget_request.py
@@ -0,0 +1,188 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_display_type import WidgetDisplayType
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.timeseries_widget_expression_alias import TimeseriesWidgetExpressionAlias
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.timeseries_request_style import TimeseriesRequestStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+
+class TimeseriesWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_display_type import WidgetDisplayType
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.timeseries_widget_expression_alias import TimeseriesWidgetExpressionAlias
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.timeseries_request_style import TimeseriesRequestStyle
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "audit_query": (LogQueryDefinition,),
+ "display_type": (WidgetDisplayType,),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "metadata": ([TimeseriesWidgetExpressionAlias],),
+ "network_query": (LogQueryDefinition,),
+ "on_right_yaxis": (bool,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "style": (TimeseriesRequestStyle,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "audit_query": "audit_query",
+ "display_type": "display_type",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "metadata": "metadata",
+ "network_query": "network_query",
+ "on_right_yaxis": "on_right_yaxis",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "style": "style",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, audit_query: Union[LogQueryDefinition, UnsetType]=unset, display_type: Union[WidgetDisplayType, UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, metadata: Union[List[TimeseriesWidgetExpressionAlias], UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, on_right_yaxis: Union[bool, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, style: Union[TimeseriesRequestStyle, UnsetType]=unset, **kwargs):
+ """
+ Updated timeseries widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param audit_query: The log query.
+ :type audit_query: LogQueryDefinition, optional
+
+ :param display_type: Type of display to use for the request.
+ :type display_type: WidgetDisplayType, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param metadata: Used to define expression aliases.
+ :type metadata: [TimeseriesWidgetExpressionAlias], optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param on_right_yaxis: Whether or not to display a second y-axis on the right.
+ :type on_right_yaxis: bool, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param style: Define request widget style for timeseries widgets.
+ :type style: TimeseriesRequestStyle, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if audit_query is not unset:
+ kwargs["audit_query"] = audit_query
+ if display_type is not unset:
+ kwargs["display_type"] = display_type
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if on_right_yaxis is not unset:
+ kwargs["on_right_yaxis"] = on_right_yaxis
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/toplist_widget_definition.py b/datadog_api_client/v1/model/toplist_widget_definition.py
new file mode 100644
index 0000000000..df90abd139
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_definition.py
@@ -0,0 +1,133 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.toplist_widget_request import ToplistWidgetRequest
+ from datadog_api_client.v1.model.toplist_widget_style import ToplistWidgetStyle
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.toplist_widget_definition_type import ToplistWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.toplist_widget_stacked import ToplistWidgetStacked
+ from datadog_api_client.v1.model.toplist_widget_flat import ToplistWidgetFlat
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class ToplistWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.toplist_widget_request import ToplistWidgetRequest
+ from datadog_api_client.v1.model.toplist_widget_style import ToplistWidgetStyle
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.toplist_widget_definition_type import ToplistWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": ([ToplistWidgetRequest],),
+ "style": (ToplistWidgetStyle,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (ToplistWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "style": "style",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[ToplistWidgetRequest], type: ToplistWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, style: Union[ToplistWidgetStyle, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The top list visualization enables you to display a list of Tag value like hostname or service with the most or least of any metric value, such as highest consumers of CPU, hosts with the least disk space, etc.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: List of top list widget requests.
+ :type requests: [ToplistWidgetRequest]
+
+ :param style: Style customization for a top list widget.
+ :type style: ToplistWidgetStyle, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the top list widget.
+ :type type: ToplistWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if style is not unset:
+ kwargs["style"] = style
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/toplist_widget_definition_type.py b/datadog_api_client/v1/model/toplist_widget_definition_type.py
new file mode 100644
index 0000000000..2bbc2da178
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ToplistWidgetDefinitionType(ModelSimple):
+ """
+ Type of the top list widget.
+
+ :param value: If omitted defaults to "toplist". Must be one of ["toplist"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "toplist",
+ }
+ TOPLIST: ClassVar["ToplistWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ToplistWidgetDefinitionType.TOPLIST = ToplistWidgetDefinitionType("toplist")
diff --git a/datadog_api_client/v1/model/toplist_widget_display.py b/datadog_api_client/v1/model/toplist_widget_display.py
new file mode 100644
index 0000000000..3ac3f29f83
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_display.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class ToplistWidgetDisplay(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Top list widget display options.
+
+ :param legend: Top list widget stacked legend behavior.
+ :type legend: ToplistWidgetLegend, optional
+
+ :param type: Top list widget stacked display type.
+ :type type: ToplistWidgetStackedType
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.toplist_widget_stacked import ToplistWidgetStacked
+ from datadog_api_client.v1.model.toplist_widget_flat import ToplistWidgetFlat
+ return {
+ "oneOf": [
+ ToplistWidgetStacked,
+ ToplistWidgetFlat,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/toplist_widget_flat.py b/datadog_api_client/v1/model/toplist_widget_flat.py
new file mode 100644
index 0000000000..f7578b5353
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_flat.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.toplist_widget_flat_type import ToplistWidgetFlatType
+
+class ToplistWidgetFlat(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.toplist_widget_flat_type import ToplistWidgetFlatType
+ return {
+ "type": (ToplistWidgetFlatType,),
+ }
+ attribute_map = {
+ "type": "type",
+ }
+
+ def __init__(self_, type: ToplistWidgetFlatType, **kwargs):
+ """
+ Top list widget flat display.
+
+ :param type: Top list widget flat display type.
+ :type type: ToplistWidgetFlatType
+ """
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/toplist_widget_flat_type.py b/datadog_api_client/v1/model/toplist_widget_flat_type.py
new file mode 100644
index 0000000000..0ef8d575dd
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_flat_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ToplistWidgetFlatType(ModelSimple):
+ """
+ Top list widget flat display type.
+
+ :param value: If omitted defaults to "flat". Must be one of ["flat"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "flat",
+ }
+ FLAT: ClassVar["ToplistWidgetFlatType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ToplistWidgetFlatType.FLAT = ToplistWidgetFlatType("flat")
diff --git a/datadog_api_client/v1/model/toplist_widget_legend.py b/datadog_api_client/v1/model/toplist_widget_legend.py
new file mode 100644
index 0000000000..f39ee74d12
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_legend.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ToplistWidgetLegend(ModelSimple):
+ """
+ Top list widget stacked legend behavior.
+
+ :param value: Must be one of ["automatic", "inline", "none"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "automatic",
+ "inline",
+ "none",
+ }
+ AUTOMATIC: ClassVar["ToplistWidgetLegend"]
+ INLINE: ClassVar["ToplistWidgetLegend"]
+ NONE: ClassVar["ToplistWidgetLegend"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ToplistWidgetLegend.AUTOMATIC = ToplistWidgetLegend("automatic")
+ToplistWidgetLegend.INLINE = ToplistWidgetLegend("inline")
+ToplistWidgetLegend.NONE = ToplistWidgetLegend("none")
diff --git a/datadog_api_client/v1/model/toplist_widget_request.py b/datadog_api_client/v1/model/toplist_widget_request.py
new file mode 100644
index 0000000000..6bf184f8ba
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_request.py
@@ -0,0 +1,188 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+
+class ToplistWidgetRequest(ModelNormal):
+ validations = {
+ "conditional_formats": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+ return {
+ "apm_query": (LogQueryDefinition,),
+ "audit_query": (LogQueryDefinition,),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "event_query": (LogQueryDefinition,),
+ "formulas": ([WidgetFormula],),
+ "log_query": (LogQueryDefinition,),
+ "network_query": (LogQueryDefinition,),
+ "process_query": (ProcessQueryDefinition,),
+ "profile_metrics_query": (LogQueryDefinition,),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "rum_query": (LogQueryDefinition,),
+ "security_query": (LogQueryDefinition,),
+ "sort": (WidgetSortBy,),
+ "style": (WidgetRequestStyle,),
+ }
+ attribute_map = {
+ "apm_query": "apm_query",
+ "audit_query": "audit_query",
+ "conditional_formats": "conditional_formats",
+ "event_query": "event_query",
+ "formulas": "formulas",
+ "log_query": "log_query",
+ "network_query": "network_query",
+ "process_query": "process_query",
+ "profile_metrics_query": "profile_metrics_query",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "rum_query": "rum_query",
+ "security_query": "security_query",
+ "sort": "sort",
+ "style": "style",
+ }
+
+ def __init__(self_, apm_query: Union[LogQueryDefinition, UnsetType]=unset, audit_query: Union[LogQueryDefinition, UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, event_query: Union[LogQueryDefinition, UnsetType]=unset, formulas: Union[List[WidgetFormula], UnsetType]=unset, log_query: Union[LogQueryDefinition, UnsetType]=unset, network_query: Union[LogQueryDefinition, UnsetType]=unset, process_query: Union[ProcessQueryDefinition, UnsetType]=unset, profile_metrics_query: Union[LogQueryDefinition, UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, rum_query: Union[LogQueryDefinition, UnsetType]=unset, security_query: Union[LogQueryDefinition, UnsetType]=unset, sort: Union[WidgetSortBy, UnsetType]=unset, style: Union[WidgetRequestStyle, UnsetType]=unset, **kwargs):
+ """
+ Updated top list widget.
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param audit_query: The log query.
+ :type audit_query: LogQueryDefinition, optional
+
+ :param conditional_formats: List of conditional formats.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param q: Widget query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param style: Define request widget style.
+ :type style: WidgetRequestStyle, optional
+ """
+ if apm_query is not unset:
+ kwargs["apm_query"] = apm_query
+ if audit_query is not unset:
+ kwargs["audit_query"] = audit_query
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if event_query is not unset:
+ kwargs["event_query"] = event_query
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if log_query is not unset:
+ kwargs["log_query"] = log_query
+ if network_query is not unset:
+ kwargs["network_query"] = network_query
+ if process_query is not unset:
+ kwargs["process_query"] = process_query
+ if profile_metrics_query is not unset:
+ kwargs["profile_metrics_query"] = profile_metrics_query
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if rum_query is not unset:
+ kwargs["rum_query"] = rum_query
+ if security_query is not unset:
+ kwargs["security_query"] = security_query
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/toplist_widget_scaling.py b/datadog_api_client/v1/model/toplist_widget_scaling.py
new file mode 100644
index 0000000000..5943e734d0
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_scaling.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ToplistWidgetScaling(ModelSimple):
+ """
+ Top list widget scaling definition.
+
+ :param value: Must be one of ["absolute", "relative"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "absolute",
+ "relative",
+ }
+ ABSOLUTE: ClassVar["ToplistWidgetScaling"]
+ RELATIVE: ClassVar["ToplistWidgetScaling"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ToplistWidgetScaling.ABSOLUTE = ToplistWidgetScaling("absolute")
+ToplistWidgetScaling.RELATIVE = ToplistWidgetScaling("relative")
diff --git a/datadog_api_client/v1/model/toplist_widget_stacked.py b/datadog_api_client/v1/model/toplist_widget_stacked.py
new file mode 100644
index 0000000000..30675d3ac7
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_stacked.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.toplist_widget_legend import ToplistWidgetLegend
+ from datadog_api_client.v1.model.toplist_widget_stacked_type import ToplistWidgetStackedType
+
+class ToplistWidgetStacked(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.toplist_widget_legend import ToplistWidgetLegend
+ from datadog_api_client.v1.model.toplist_widget_stacked_type import ToplistWidgetStackedType
+ return {
+ "legend": (ToplistWidgetLegend,),
+ "type": (ToplistWidgetStackedType,),
+ }
+ attribute_map = {
+ "legend": "legend",
+ "type": "type",
+ }
+
+ def __init__(self_, type: ToplistWidgetStackedType, legend: Union[ToplistWidgetLegend, UnsetType]=unset, **kwargs):
+ """
+ Top list widget stacked display options.
+
+ :param legend: Top list widget stacked legend behavior.
+ :type legend: ToplistWidgetLegend, optional
+
+ :param type: Top list widget stacked display type.
+ :type type: ToplistWidgetStackedType
+ """
+ if legend is not unset:
+ kwargs["legend"] = legend
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/toplist_widget_stacked_type.py b/datadog_api_client/v1/model/toplist_widget_stacked_type.py
new file mode 100644
index 0000000000..7baf551e0a
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_stacked_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ToplistWidgetStackedType(ModelSimple):
+ """
+ Top list widget stacked display type.
+
+ :param value: If omitted defaults to "stacked". Must be one of ["stacked"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "stacked",
+ }
+ STACKED: ClassVar["ToplistWidgetStackedType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ToplistWidgetStackedType.STACKED = ToplistWidgetStackedType("stacked")
diff --git a/datadog_api_client/v1/model/toplist_widget_style.py b/datadog_api_client/v1/model/toplist_widget_style.py
new file mode 100644
index 0000000000..4d08b9dabd
--- /dev/null
+++ b/datadog_api_client/v1/model/toplist_widget_style.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.toplist_widget_display import ToplistWidgetDisplay
+ from datadog_api_client.v1.model.toplist_widget_scaling import ToplistWidgetScaling
+ from datadog_api_client.v1.model.toplist_widget_stacked import ToplistWidgetStacked
+ from datadog_api_client.v1.model.toplist_widget_flat import ToplistWidgetFlat
+
+class ToplistWidgetStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.toplist_widget_display import ToplistWidgetDisplay
+ from datadog_api_client.v1.model.toplist_widget_scaling import ToplistWidgetScaling
+ return {
+ "display": (ToplistWidgetDisplay,),
+ "palette": (str,),
+ "scaling": (ToplistWidgetScaling,),
+ }
+ attribute_map = {
+ "display": "display",
+ "palette": "palette",
+ "scaling": "scaling",
+ }
+
+ def __init__(self_, display: Union[ToplistWidgetDisplay, ToplistWidgetStacked, ToplistWidgetFlat, UnsetType]=unset, palette: Union[str, UnsetType]=unset, scaling: Union[ToplistWidgetScaling, UnsetType]=unset, **kwargs):
+ """
+ Style customization for a top list widget.
+
+ :param display: Top list widget display options.
+ :type display: ToplistWidgetDisplay, optional
+
+ :param palette: Color palette to apply to the widget.
+ :type palette: str, optional
+
+ :param scaling: Top list widget scaling definition.
+ :type scaling: ToplistWidgetScaling, optional
+ """
+ if display is not unset:
+ kwargs["display"] = display
+ if palette is not unset:
+ kwargs["palette"] = palette
+ if scaling is not unset:
+ kwargs["scaling"] = scaling
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/topology_map_widget_definition.py b/datadog_api_client/v1/model/topology_map_widget_definition.py
new file mode 100644
index 0000000000..006ad94f8a
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_map_widget_definition.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class TopologyMapWidgetDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ This widget displays a topology of nodes and edges for different data sources. It replaces the service map widget.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: One Topology request.
+ :type requests: [TopologyRequestDataStreams]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the topology map widget.
+ :type type: TopologyMapWidgetDefinitionType
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.topology_map_widget_definition_data_streams import TopologyMapWidgetDefinitionDataStreams
+ from datadog_api_client.v1.model.topology_map_widget_definition_service_map import TopologyMapWidgetDefinitionServiceMap
+ return {
+ "oneOf": [
+ TopologyMapWidgetDefinitionDataStreams,
+ TopologyMapWidgetDefinitionServiceMap,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/topology_map_widget_definition_data_streams.py b/datadog_api_client/v1/model/topology_map_widget_definition_data_streams.py
new file mode 100644
index 0000000000..4b374a8a85
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_map_widget_definition_data_streams.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.topology_request_data_streams import TopologyRequestDataStreams
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.topology_map_widget_definition_type import TopologyMapWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class TopologyMapWidgetDefinitionDataStreams(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.topology_request_data_streams import TopologyRequestDataStreams
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.topology_map_widget_definition_type import TopologyMapWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": ([TopologyRequestDataStreams],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (TopologyMapWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[TopologyRequestDataStreams], type: TopologyMapWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Topology map widget backed by the data streams data source.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: One Topology request.
+ :type requests: [TopologyRequestDataStreams]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the topology map widget.
+ :type type: TopologyMapWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/topology_map_widget_definition_service_map.py b/datadog_api_client/v1/model/topology_map_widget_definition_service_map.py
new file mode 100644
index 0000000000..df4d28069f
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_map_widget_definition_service_map.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.topology_request_service_map import TopologyRequestServiceMap
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.topology_map_widget_definition_type import TopologyMapWidgetDefinitionType
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class TopologyMapWidgetDefinitionServiceMap(ModelNormal):
+ validations = {
+ "requests": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.topology_request_service_map import TopologyRequestServiceMap
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.topology_map_widget_definition_type import TopologyMapWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "requests": ([TopologyRequestServiceMap],),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (TopologyMapWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "description": "description",
+ "requests": "requests",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[TopologyRequestServiceMap], type: TopologyMapWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Topology map widget backed by the service map data source.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param requests: One Topology request.
+ :type requests: [TopologyRequestServiceMap]
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the topology map widget.
+ :type type: TopologyMapWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/topology_map_widget_definition_type.py b/datadog_api_client/v1/model/topology_map_widget_definition_type.py
new file mode 100644
index 0000000000..ce43954fa1
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_map_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TopologyMapWidgetDefinitionType(ModelSimple):
+ """
+ Type of the topology map widget.
+
+ :param value: If omitted defaults to "topology_map". Must be one of ["topology_map"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "topology_map",
+ }
+ TOPOLOGY_MAP: ClassVar["TopologyMapWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TopologyMapWidgetDefinitionType.TOPOLOGY_MAP = TopologyMapWidgetDefinitionType("topology_map")
diff --git a/datadog_api_client/v1/model/topology_query_data_streams.py b/datadog_api_client/v1/model/topology_query_data_streams.py
new file mode 100644
index 0000000000..02f8c6053c
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_query_data_streams.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.topology_query_data_streams_data_source import TopologyQueryDataStreamsDataSource
+
+class TopologyQueryDataStreams(ModelNormal):
+ validations = {
+ "filters": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.topology_query_data_streams_data_source import TopologyQueryDataStreamsDataSource
+ return {
+ "data_source": (TopologyQueryDataStreamsDataSource,),
+ "filters": ([str],),
+ "query_string": (str,),
+ "service": (str,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "filters": "filters",
+ "query_string": "query_string",
+ "service": "service",
+ }
+
+ def __init__(self_, data_source: TopologyQueryDataStreamsDataSource, filters: List[str], service: str, query_string: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Query to the data streams topology data source.
+
+ :param data_source: Name of the data source.
+ :type data_source: TopologyQueryDataStreamsDataSource
+
+ :param filters: Your environment and primary tag (or * if enabled for your account).
+ :type filters: [str]
+
+ :param query_string: A search string for filtering services. When set, this replaces the ``service`` field.
+ :type query_string: str, optional
+
+ :param service: (deprecated) Name of the service. Leave this empty and use query_string instead.
+ :type service: str
+ """
+ if query_string is not unset:
+ kwargs["query_string"] = query_string
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.filters = filters
+ self_.service = service
diff --git a/datadog_api_client/v1/model/topology_query_data_streams_data_source.py b/datadog_api_client/v1/model/topology_query_data_streams_data_source.py
new file mode 100644
index 0000000000..5dda47b107
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_query_data_streams_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TopologyQueryDataStreamsDataSource(ModelSimple):
+ """
+ Name of the data source.
+
+ :param value: If omitted defaults to "data_streams". Must be one of ["data_streams"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "data_streams",
+ }
+ DATA_STREAMS: ClassVar["TopologyQueryDataStreamsDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TopologyQueryDataStreamsDataSource.DATA_STREAMS = TopologyQueryDataStreamsDataSource("data_streams")
diff --git a/datadog_api_client/v1/model/topology_query_service_map.py b/datadog_api_client/v1/model/topology_query_service_map.py
new file mode 100644
index 0000000000..2f44cc2da8
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_query_service_map.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.topology_query_service_map_data_source import TopologyQueryServiceMapDataSource
+
+class TopologyQueryServiceMap(ModelNormal):
+ validations = {
+ "filters": {
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.topology_query_service_map_data_source import TopologyQueryServiceMapDataSource
+ return {
+ "data_source": (TopologyQueryServiceMapDataSource,),
+ "filters": ([str],),
+ "query_string": (str,),
+ "service": (str,),
+ }
+ attribute_map = {
+ "data_source": "data_source",
+ "filters": "filters",
+ "query_string": "query_string",
+ "service": "service",
+ }
+
+ def __init__(self_, data_source: TopologyQueryServiceMapDataSource, filters: List[str], service: str, query_string: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Query to the service map topology data source.
+
+ :param data_source: Name of the data source.
+ :type data_source: TopologyQueryServiceMapDataSource
+
+ :param filters: Your environment and primary tag (or * if enabled for your account).
+ :type filters: [str]
+
+ :param query_string: A search string for filtering services. When set, this replaces the ``service`` field.
+ :type query_string: str, optional
+
+ :param service: (deprecated) Name of the service. Leave this empty and use query_string instead.
+ :type service: str
+ """
+ if query_string is not unset:
+ kwargs["query_string"] = query_string
+ super().__init__(kwargs)
+
+
+ self_.data_source = data_source
+ self_.filters = filters
+ self_.service = service
diff --git a/datadog_api_client/v1/model/topology_query_service_map_data_source.py b/datadog_api_client/v1/model/topology_query_service_map_data_source.py
new file mode 100644
index 0000000000..f0c1b62775
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_query_service_map_data_source.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TopologyQueryServiceMapDataSource(ModelSimple):
+ """
+ Name of the data source.
+
+ :param value: If omitted defaults to "service_map". Must be one of ["service_map"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "service_map",
+ }
+ SERVICE_MAP: ClassVar["TopologyQueryServiceMapDataSource"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TopologyQueryServiceMapDataSource.SERVICE_MAP = TopologyQueryServiceMapDataSource("service_map")
diff --git a/datadog_api_client/v1/model/topology_request_data_streams.py b/datadog_api_client/v1/model/topology_request_data_streams.py
new file mode 100644
index 0000000000..b84d622299
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_request_data_streams.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.topology_query_data_streams import TopologyQueryDataStreams
+ from datadog_api_client.v1.model.topology_request_type import TopologyRequestType
+
+class TopologyRequestDataStreams(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.topology_query_data_streams import TopologyQueryDataStreams
+ from datadog_api_client.v1.model.topology_request_type import TopologyRequestType
+ return {
+ "query": (TopologyQueryDataStreams,),
+ "request_type": (TopologyRequestType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: Union[TopologyQueryDataStreams, UnsetType]=unset, request_type: Union[TopologyRequestType, UnsetType]=unset, **kwargs):
+ """
+ Request that returns nodes and edges from the data streams data source.
+
+ :param query: Query to the data streams topology data source.
+ :type query: TopologyQueryDataStreams, optional
+
+ :param request_type: Widget request type.
+ :type request_type: TopologyRequestType, optional
+ """
+ if query is not unset:
+ kwargs["query"] = query
+ if request_type is not unset:
+ kwargs["request_type"] = request_type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/topology_request_service_map.py b/datadog_api_client/v1/model/topology_request_service_map.py
new file mode 100644
index 0000000000..f057edaf8b
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_request_service_map.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.topology_query_service_map import TopologyQueryServiceMap
+ from datadog_api_client.v1.model.topology_request_type import TopologyRequestType
+
+class TopologyRequestServiceMap(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.topology_query_service_map import TopologyQueryServiceMap
+ from datadog_api_client.v1.model.topology_request_type import TopologyRequestType
+ return {
+ "query": (TopologyQueryServiceMap,),
+ "request_type": (TopologyRequestType,),
+ }
+ attribute_map = {
+ "query": "query",
+ "request_type": "request_type",
+ }
+
+ def __init__(self_, query: Union[TopologyQueryServiceMap, UnsetType]=unset, request_type: Union[TopologyRequestType, UnsetType]=unset, **kwargs):
+ """
+ Request that returns nodes and edges from the service map data source.
+
+ :param query: Query to the service map topology data source.
+ :type query: TopologyQueryServiceMap, optional
+
+ :param request_type: Widget request type.
+ :type request_type: TopologyRequestType, optional
+ """
+ if query is not unset:
+ kwargs["query"] = query
+ if request_type is not unset:
+ kwargs["request_type"] = request_type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/topology_request_type.py b/datadog_api_client/v1/model/topology_request_type.py
new file mode 100644
index 0000000000..4a88475c7e
--- /dev/null
+++ b/datadog_api_client/v1/model/topology_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TopologyRequestType(ModelSimple):
+ """
+ Widget request type.
+
+ :param value: If omitted defaults to "topology". Must be one of ["topology"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "topology",
+ }
+ TOPOLOGY: ClassVar["TopologyRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TopologyRequestType.TOPOLOGY = TopologyRequestType("topology")
diff --git a/datadog_api_client/v1/model/tree_map_color_by.py b/datadog_api_client/v1/model/tree_map_color_by.py
new file mode 100644
index 0000000000..8e31d5b850
--- /dev/null
+++ b/datadog_api_client/v1/model/tree_map_color_by.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TreeMapColorBy(ModelSimple):
+ """
+ (deprecated) The attribute formerly used to determine color in the widget.
+
+ :param value: If omitted defaults to "user". Must be one of ["user"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "user",
+ }
+ USER: ClassVar["TreeMapColorBy"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TreeMapColorBy.USER = TreeMapColorBy("user")
diff --git a/datadog_api_client/v1/model/tree_map_group_by.py b/datadog_api_client/v1/model/tree_map_group_by.py
new file mode 100644
index 0000000000..de7839a4ac
--- /dev/null
+++ b/datadog_api_client/v1/model/tree_map_group_by.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TreeMapGroupBy(ModelSimple):
+ """
+ (deprecated) The attribute formerly used to group elements in the widget.
+
+ :param value: Must be one of ["user", "family", "process"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "user",
+ "family",
+ "process",
+ }
+ USER: ClassVar["TreeMapGroupBy"]
+ FAMILY: ClassVar["TreeMapGroupBy"]
+ PROCESS: ClassVar["TreeMapGroupBy"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TreeMapGroupBy.USER = TreeMapGroupBy("user")
+TreeMapGroupBy.FAMILY = TreeMapGroupBy("family")
+TreeMapGroupBy.PROCESS = TreeMapGroupBy("process")
diff --git a/datadog_api_client/v1/model/tree_map_size_by.py b/datadog_api_client/v1/model/tree_map_size_by.py
new file mode 100644
index 0000000000..97e04f48fd
--- /dev/null
+++ b/datadog_api_client/v1/model/tree_map_size_by.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TreeMapSizeBy(ModelSimple):
+ """
+ (deprecated) The attribute formerly used to determine size in the widget.
+
+ :param value: Must be one of ["pct_cpu", "pct_mem"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "pct_cpu",
+ "pct_mem",
+ }
+ PCT_CPU: ClassVar["TreeMapSizeBy"]
+ PCT_MEM: ClassVar["TreeMapSizeBy"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TreeMapSizeBy.PCT_CPU = TreeMapSizeBy("pct_cpu")
+TreeMapSizeBy.PCT_MEM = TreeMapSizeBy("pct_mem")
diff --git a/datadog_api_client/v1/model/tree_map_widget_definition.py b/datadog_api_client/v1/model/tree_map_widget_definition.py
new file mode 100644
index 0000000000..48bd0a4f31
--- /dev/null
+++ b/datadog_api_client/v1/model/tree_map_widget_definition.py
@@ -0,0 +1,139 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.tree_map_color_by import TreeMapColorBy
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.tree_map_group_by import TreeMapGroupBy
+ from datadog_api_client.v1.model.tree_map_widget_request import TreeMapWidgetRequest
+ from datadog_api_client.v1.model.tree_map_size_by import TreeMapSizeBy
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.tree_map_widget_definition_type import TreeMapWidgetDefinitionType
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class TreeMapWidgetDefinition(ModelNormal):
+ validations = {
+ "requests": {
+ "max_items": 1,
+ "min_items": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.tree_map_color_by import TreeMapColorBy
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.tree_map_group_by import TreeMapGroupBy
+ from datadog_api_client.v1.model.tree_map_widget_request import TreeMapWidgetRequest
+ from datadog_api_client.v1.model.tree_map_size_by import TreeMapSizeBy
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.tree_map_widget_definition_type import TreeMapWidgetDefinitionType
+ return {
+ "color_by": (TreeMapColorBy,),
+ "custom_links": ([WidgetCustomLink],),
+ "description": (str,),
+ "group_by": (TreeMapGroupBy,),
+ "requests": ([TreeMapWidgetRequest],),
+ "size_by": (TreeMapSizeBy,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "type": (TreeMapWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "color_by": "color_by",
+ "custom_links": "custom_links",
+ "description": "description",
+ "group_by": "group_by",
+ "requests": "requests",
+ "size_by": "size_by",
+ "time": "time",
+ "title": "title",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[TreeMapWidgetRequest], type: TreeMapWidgetDefinitionType, color_by: Union[TreeMapColorBy, UnsetType]=unset, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, description: Union[str, UnsetType]=unset, group_by: Union[TreeMapGroupBy, UnsetType]=unset, size_by: Union[TreeMapSizeBy, UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The treemap visualization enables you to display hierarchical and nested data. It is well suited for queries that describe part-whole relationships, such as resource usage by availability zone, data center, or team.
+
+ :param color_by: (deprecated) The attribute formerly used to determine color in the widget. **Deprecated**.
+ :type color_by: TreeMapColorBy, optional
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param group_by: (deprecated) The attribute formerly used to group elements in the widget. **Deprecated**.
+ :type group_by: TreeMapGroupBy, optional
+
+ :param requests: List of treemap widget requests.
+ :type requests: [TreeMapWidgetRequest]
+
+ :param size_by: (deprecated) The attribute formerly used to determine size in the widget. **Deprecated**.
+ :type size_by: TreeMapSizeBy, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of your widget.
+ :type title: str, optional
+
+ :param type: Type of the treemap widget.
+ :type type: TreeMapWidgetDefinitionType
+ """
+ if color_by is not unset:
+ kwargs["color_by"] = color_by
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if description is not unset:
+ kwargs["description"] = description
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+ if size_by is not unset:
+ kwargs["size_by"] = size_by
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.type = type
diff --git a/datadog_api_client/v1/model/tree_map_widget_definition_type.py b/datadog_api_client/v1/model/tree_map_widget_definition_type.py
new file mode 100644
index 0000000000..4d24e7633e
--- /dev/null
+++ b/datadog_api_client/v1/model/tree_map_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class TreeMapWidgetDefinitionType(ModelSimple):
+ """
+ Type of the treemap widget.
+
+ :param value: If omitted defaults to "treemap". Must be one of ["treemap"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "treemap",
+ }
+ TREEMAP: ClassVar["TreeMapWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+TreeMapWidgetDefinitionType.TREEMAP = TreeMapWidgetDefinitionType("treemap")
diff --git a/datadog_api_client/v1/model/tree_map_widget_request.py b/datadog_api_client/v1/model/tree_map_widget_request.py
new file mode 100644
index 0000000000..d6f7d98363
--- /dev/null
+++ b/datadog_api_client/v1/model/tree_map_widget_request.py
@@ -0,0 +1,107 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+ from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+
+class TreeMapWidgetRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_formula import WidgetFormula
+ from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+ from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+ from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+ from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+ return {
+ "formulas": ([WidgetFormula],),
+ "q": (str,),
+ "queries": ([FormulaAndFunctionQueryDefinition],),
+ "response_format": (FormulaAndFunctionResponseFormat,),
+ "sort": (WidgetSortBy,),
+ "style": (WidgetRequestStyle,),
+ }
+ attribute_map = {
+ "formulas": "formulas",
+ "q": "q",
+ "queries": "queries",
+ "response_format": "response_format",
+ "sort": "sort",
+ "style": "style",
+ }
+
+ def __init__(self_, formulas: Union[List[WidgetFormula], UnsetType]=unset, q: Union[str, UnsetType]=unset, queries: Union[List[Union[FormulaAndFunctionQueryDefinition, FormulaAndFunctionMetricQueryDefinition, FormulaAndFunctionEventQueryDefinition, FormulaAndFunctionProcessQueryDefinition, FormulaAndFunctionApmDependencyStatsQueryDefinition, FormulaAndFunctionApmResourceStatsQueryDefinition, FormulaAndFunctionApmMetricsQueryDefinition, FormulaAndFunctionSLOQueryDefinition, FormulaAndFunctionCloudCostQueryDefinition, FormulaAndFunctionProductAnalyticsExtendedQueryDefinition, FormulaAndFunctionUserJourneyQueryDefinition, FormulaAndFunctionRetentionQueryDefinition]], UnsetType]=unset, response_format: Union[FormulaAndFunctionResponseFormat, UnsetType]=unset, sort: Union[WidgetSortBy, UnsetType]=unset, style: Union[WidgetRequestStyle, UnsetType]=unset, **kwargs):
+ """
+ An updated treemap widget.
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param q: The widget metrics query. Deprecated - Use ``queries`` and ``formulas`` instead. **Deprecated**.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param style: Define request widget style.
+ :type style: WidgetRequestStyle, optional
+ """
+ if formulas is not unset:
+ kwargs["formulas"] = formulas
+ if q is not unset:
+ kwargs["q"] = q
+ if queries is not unset:
+ kwargs["queries"] = queries
+ if response_format is not unset:
+ kwargs["response_format"] = response_format
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_analyzed_logs_hour.py b/datadog_api_client/v1/model/usage_analyzed_logs_hour.py
new file mode 100644
index 0000000000..a7df6c3edd
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_analyzed_logs_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageAnalyzedLogsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "analyzed_logs": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "analyzed_logs": "analyzed_logs",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, analyzed_logs: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The number of analyzed logs for each hour for a given organization.
+
+ :param analyzed_logs: Contains the number of analyzed logs.
+ :type analyzed_logs: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if analyzed_logs is not unset:
+ kwargs["analyzed_logs"] = analyzed_logs
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_analyzed_logs_response.py b/datadog_api_client/v1/model/usage_analyzed_logs_response.py
new file mode 100644
index 0000000000..fa97438245
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_analyzed_logs_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_analyzed_logs_hour import UsageAnalyzedLogsHour
+
+class UsageAnalyzedLogsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_analyzed_logs_hour import UsageAnalyzedLogsHour
+ return {
+ "usage": ([UsageAnalyzedLogsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageAnalyzedLogsHour], UnsetType]=unset, **kwargs):
+ """
+ A response containing the number of analyzed logs for each hour for a given organization.
+
+ :param usage: Get hourly usage for analyzed logs.
+ :type usage: [UsageAnalyzedLogsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_attribution_aggregates.py b/datadog_api_client/v1/model/usage_attribution_aggregates.py
new file mode 100644
index 0000000000..c786d49acf
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_attribution_aggregates.py
@@ -0,0 +1,40 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageAttributionAggregates(ModelSimple):
+ """
+ An array of available aggregates.
+
+
+ :type value: [UsageAttributionAggregatesBody]
+ """
+
+
+
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_attribution_aggregates_body import UsageAttributionAggregatesBody
+ return {
+ "value": ([UsageAttributionAggregatesBody],),
+ }
diff --git a/datadog_api_client/v1/model/usage_attribution_aggregates_body.py b/datadog_api_client/v1/model/usage_attribution_aggregates_body.py
new file mode 100644
index 0000000000..e2737a298e
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_attribution_aggregates_body.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageAttributionAggregatesBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "agg_type": (str,),
+ "field": (str,),
+ "value": (float,),
+ }
+ attribute_map = {
+ "agg_type": "agg_type",
+ "field": "field",
+ "value": "value",
+ }
+
+ def __init__(self_, agg_type: Union[str, UnsetType]=unset, field: Union[str, UnsetType]=unset, value: Union[float, UnsetType]=unset, **kwargs):
+ """
+ The object containing the aggregates.
+
+ :param agg_type: The aggregate type.
+ :type agg_type: str, optional
+
+ :param field: The field.
+ :type field: str, optional
+
+ :param value: The value for a given field.
+ :type value: float, optional
+ """
+ if agg_type is not unset:
+ kwargs["agg_type"] = agg_type
+ if field is not unset:
+ kwargs["field"] = field
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_attribution_tag_names.py b/datadog_api_client/v1/model/usage_attribution_tag_names.py
new file mode 100644
index 0000000000..a0699f3b0c
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_attribution_tag_names.py
@@ -0,0 +1,41 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageAttributionTagNames(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return ([str],)
+ _nullable = True
+
+ def __init__(self_, **kwargs):
+ """
+ Tag keys and values.
+
+ A ``null`` value here means that the requested tag breakdown cannot be applied because it does not match the `tags
+ configured for usage attribution `_.
+ In this scenario the API returns the total usage, not broken down by tags.
+ """
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_audit_logs_hour.py b/datadog_api_client/v1/model/usage_audit_logs_hour.py
new file mode 100644
index 0000000000..9d0fc132c6
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_audit_logs_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageAuditLogsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "lines_indexed": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "lines_indexed": "lines_indexed",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, lines_indexed: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Audit logs usage for a given organization for a given hour.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param lines_indexed: The total number of audit logs lines indexed during a given hour.
+ :type lines_indexed: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if lines_indexed is not unset:
+ kwargs["lines_indexed"] = lines_indexed
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_audit_logs_response.py b/datadog_api_client/v1/model/usage_audit_logs_response.py
new file mode 100644
index 0000000000..4a921f5e48
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_audit_logs_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_audit_logs_hour import UsageAuditLogsHour
+
+class UsageAuditLogsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_audit_logs_hour import UsageAuditLogsHour
+ return {
+ "usage": ([UsageAuditLogsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageAuditLogsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the audit logs usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for audit logs.
+ :type usage: [UsageAuditLogsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_billable_summary_body.py b/datadog_api_client/v1/model/usage_billable_summary_body.py
new file mode 100644
index 0000000000..20413bd012
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_billable_summary_body.py
@@ -0,0 +1,102 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageBillableSummaryBody(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "account_billable_usage": (int,),
+ "account_committed_usage": (int,),
+ "account_on_demand_usage": (int,),
+ "elapsed_usage_hours": (int,),
+ "first_billable_usage_hour": (datetime,),
+ "last_billable_usage_hour": (datetime,),
+ "org_billable_usage": (int,),
+ "percentage_in_account": (float,),
+ "usage_unit": (str,),
+ }
+ attribute_map = {
+ "account_billable_usage": "account_billable_usage",
+ "account_committed_usage": "account_committed_usage",
+ "account_on_demand_usage": "account_on_demand_usage",
+ "elapsed_usage_hours": "elapsed_usage_hours",
+ "first_billable_usage_hour": "first_billable_usage_hour",
+ "last_billable_usage_hour": "last_billable_usage_hour",
+ "org_billable_usage": "org_billable_usage",
+ "percentage_in_account": "percentage_in_account",
+ "usage_unit": "usage_unit",
+ }
+
+ def __init__(self_, account_billable_usage: Union[int, UnsetType]=unset, account_committed_usage: Union[int, UnsetType]=unset, account_on_demand_usage: Union[int, UnsetType]=unset, elapsed_usage_hours: Union[int, UnsetType]=unset, first_billable_usage_hour: Union[datetime, UnsetType]=unset, last_billable_usage_hour: Union[datetime, UnsetType]=unset, org_billable_usage: Union[int, UnsetType]=unset, percentage_in_account: Union[float, UnsetType]=unset, usage_unit: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Response with properties for each aggregated usage type.
+
+ :param account_billable_usage: The total account usage.
+ :type account_billable_usage: int, optional
+
+ :param account_committed_usage: The total account committed usage.
+ :type account_committed_usage: int, optional
+
+ :param account_on_demand_usage: The total account on-demand usage.
+ :type account_on_demand_usage: int, optional
+
+ :param elapsed_usage_hours: Elapsed usage hours for some billable product.
+ :type elapsed_usage_hours: int, optional
+
+ :param first_billable_usage_hour: The first billable hour for the org.
+ :type first_billable_usage_hour: datetime, optional
+
+ :param last_billable_usage_hour: The last billable hour for the org.
+ :type last_billable_usage_hour: datetime, optional
+
+ :param org_billable_usage: The number of units used within the billable timeframe.
+ :type org_billable_usage: int, optional
+
+ :param percentage_in_account: The percentage of account usage the org represents.
+ :type percentage_in_account: float, optional
+
+ :param usage_unit: Units pertaining to the usage.
+ :type usage_unit: str, optional
+ """
+ if account_billable_usage is not unset:
+ kwargs["account_billable_usage"] = account_billable_usage
+ if account_committed_usage is not unset:
+ kwargs["account_committed_usage"] = account_committed_usage
+ if account_on_demand_usage is not unset:
+ kwargs["account_on_demand_usage"] = account_on_demand_usage
+ if elapsed_usage_hours is not unset:
+ kwargs["elapsed_usage_hours"] = elapsed_usage_hours
+ if first_billable_usage_hour is not unset:
+ kwargs["first_billable_usage_hour"] = first_billable_usage_hour
+ if last_billable_usage_hour is not unset:
+ kwargs["last_billable_usage_hour"] = last_billable_usage_hour
+ if org_billable_usage is not unset:
+ kwargs["org_billable_usage"] = org_billable_usage
+ if percentage_in_account is not unset:
+ kwargs["percentage_in_account"] = percentage_in_account
+ if usage_unit is not unset:
+ kwargs["usage_unit"] = usage_unit
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_billable_summary_hour.py b/datadog_api_client/v1/model/usage_billable_summary_hour.py
new file mode 100644
index 0000000000..5cece17334
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_billable_summary_hour.py
@@ -0,0 +1,119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_billable_summary_keys import UsageBillableSummaryKeys
+
+class UsageBillableSummaryHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_billable_summary_keys import UsageBillableSummaryKeys
+ return {
+ "account_name": (str,),
+ "account_public_id": (str,),
+ "billing_plan": (str,),
+ "end_date": (datetime,),
+ "num_orgs": (int,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "ratio_in_month": (float,),
+ "region": (str,),
+ "start_date": (datetime,),
+ "usage": (UsageBillableSummaryKeys,),
+ }
+ attribute_map = {
+ "account_name": "account_name",
+ "account_public_id": "account_public_id",
+ "billing_plan": "billing_plan",
+ "end_date": "end_date",
+ "num_orgs": "num_orgs",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "ratio_in_month": "ratio_in_month",
+ "region": "region",
+ "start_date": "start_date",
+ "usage": "usage",
+ }
+
+ def __init__(self_, account_name: Union[str, UnsetType]=unset, account_public_id: Union[str, UnsetType]=unset, billing_plan: Union[str, UnsetType]=unset, end_date: Union[datetime, UnsetType]=unset, num_orgs: Union[int, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, ratio_in_month: Union[float, UnsetType]=unset, region: Union[str, UnsetType]=unset, start_date: Union[datetime, UnsetType]=unset, usage: Union[UsageBillableSummaryKeys, UnsetType]=unset, **kwargs):
+ """
+ Response with monthly summary of data billed by Datadog.
+
+ :param account_name: The account name.
+ :type account_name: str, optional
+
+ :param account_public_id: The account public ID.
+ :type account_public_id: str, optional
+
+ :param billing_plan: The billing plan (metadata). (Deprecated from June 2026) **Deprecated**.
+ :type billing_plan: str, optional
+
+ :param end_date: Shows the last date of usage.
+ :type end_date: datetime, optional
+
+ :param num_orgs: The number of organizations.
+ :type num_orgs: int, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param ratio_in_month: Shows usage aggregation for a billing period.
+ :type ratio_in_month: float, optional
+
+ :param region: The region of the organization.
+ :type region: str, optional
+
+ :param start_date: Shows the first date of usage.
+ :type start_date: datetime, optional
+
+ :param usage: Response with aggregated usage types.
+ :type usage: UsageBillableSummaryKeys, optional
+ """
+ if account_name is not unset:
+ kwargs["account_name"] = account_name
+ if account_public_id is not unset:
+ kwargs["account_public_id"] = account_public_id
+ if billing_plan is not unset:
+ kwargs["billing_plan"] = billing_plan
+ if end_date is not unset:
+ kwargs["end_date"] = end_date
+ if num_orgs is not unset:
+ kwargs["num_orgs"] = num_orgs
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if ratio_in_month is not unset:
+ kwargs["ratio_in_month"] = ratio_in_month
+ if region is not unset:
+ kwargs["region"] = region
+ if start_date is not unset:
+ kwargs["start_date"] = start_date
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_billable_summary_keys.py b/datadog_api_client/v1/model/usage_billable_summary_keys.py
new file mode 100644
index 0000000000..43cd801e6d
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_billable_summary_keys.py
@@ -0,0 +1,665 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_billable_summary_body import UsageBillableSummaryBody
+
+class UsageBillableSummaryKeys(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_billable_summary_body import UsageBillableSummaryBody
+ return {
+ "apm_fargate_average": (UsageBillableSummaryBody,),
+ "apm_fargate_sum": (UsageBillableSummaryBody,),
+ "apm_host_sum": (UsageBillableSummaryBody,),
+ "apm_host_top99p": (UsageBillableSummaryBody,),
+ "apm_profiler_host_sum": (UsageBillableSummaryBody,),
+ "apm_profiler_host_top99p": (UsageBillableSummaryBody,),
+ "apm_trace_search_sum": (UsageBillableSummaryBody,),
+ "application_security_fargate_average": (UsageBillableSummaryBody,),
+ "application_security_host_sum": (UsageBillableSummaryBody,),
+ "application_security_host_top99p": (UsageBillableSummaryBody,),
+ "ci_pipeline_indexed_spans_sum": (UsageBillableSummaryBody,),
+ "ci_pipeline_maximum": (UsageBillableSummaryBody,),
+ "ci_pipeline_sum": (UsageBillableSummaryBody,),
+ "ci_test_indexed_spans_sum": (UsageBillableSummaryBody,),
+ "ci_testing_maximum": (UsageBillableSummaryBody,),
+ "ci_testing_sum": (UsageBillableSummaryBody,),
+ "cloud_cost_management_average": (UsageBillableSummaryBody,),
+ "cloud_cost_management_sum": (UsageBillableSummaryBody,),
+ "cspm_container_sum": (UsageBillableSummaryBody,),
+ "cspm_host_sum": (UsageBillableSummaryBody,),
+ "cspm_host_top99p": (UsageBillableSummaryBody,),
+ "custom_event_sum": (UsageBillableSummaryBody,),
+ "cws_container_sum": (UsageBillableSummaryBody,),
+ "cws_host_sum": (UsageBillableSummaryBody,),
+ "cws_host_top99p": (UsageBillableSummaryBody,),
+ "dbm_host_sum": (UsageBillableSummaryBody,),
+ "dbm_host_top99p": (UsageBillableSummaryBody,),
+ "dbm_normalized_queries_average": (UsageBillableSummaryBody,),
+ "dbm_normalized_queries_sum": (UsageBillableSummaryBody,),
+ "fargate_container_apm_and_profiler_average": (UsageBillableSummaryBody,),
+ "fargate_container_apm_and_profiler_sum": (UsageBillableSummaryBody,),
+ "fargate_container_average": (UsageBillableSummaryBody,),
+ "fargate_container_profiler_average": (UsageBillableSummaryBody,),
+ "fargate_container_profiler_sum": (UsageBillableSummaryBody,),
+ "fargate_container_sum": (UsageBillableSummaryBody,),
+ "incident_management_maximum": (UsageBillableSummaryBody,),
+ "incident_management_sum": (UsageBillableSummaryBody,),
+ "infra_and_apm_host_sum": (UsageBillableSummaryBody,),
+ "infra_and_apm_host_top99p": (UsageBillableSummaryBody,),
+ "infra_container_sum": (UsageBillableSummaryBody,),
+ "infra_host_sum": (UsageBillableSummaryBody,),
+ "infra_host_top99p": (UsageBillableSummaryBody,),
+ "ingested_spans_sum": (UsageBillableSummaryBody,),
+ "ingested_timeseries_average": (UsageBillableSummaryBody,),
+ "ingested_timeseries_sum": (UsageBillableSummaryBody,),
+ "iot_sum": (UsageBillableSummaryBody,),
+ "iot_top99p": (UsageBillableSummaryBody,),
+ "lambda_function_average": (UsageBillableSummaryBody,),
+ "lambda_function_sum": (UsageBillableSummaryBody,),
+ "logs_forwarding_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_15day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_180day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_1day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_30day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_360day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_3day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_45day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_60day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_7day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_90day_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_custom_retention_sum": (UsageBillableSummaryBody,),
+ "logs_indexed_sum": (UsageBillableSummaryBody,),
+ "logs_ingested_sum": (UsageBillableSummaryBody,),
+ "network_device_sum": (UsageBillableSummaryBody,),
+ "network_device_top99p": (UsageBillableSummaryBody,),
+ "npm_flow_sum": (UsageBillableSummaryBody,),
+ "npm_host_sum": (UsageBillableSummaryBody,),
+ "npm_host_top99p": (UsageBillableSummaryBody,),
+ "observability_pipeline_sum": (UsageBillableSummaryBody,),
+ "online_archive_sum": (UsageBillableSummaryBody,),
+ "prof_container_sum": (UsageBillableSummaryBody,),
+ "prof_host_sum": (UsageBillableSummaryBody,),
+ "prof_host_top99p": (UsageBillableSummaryBody,),
+ "rum_lite_sum": (UsageBillableSummaryBody,),
+ "rum_replay_sum": (UsageBillableSummaryBody,),
+ "rum_sum": (UsageBillableSummaryBody,),
+ "rum_units_sum": (UsageBillableSummaryBody,),
+ "sensitive_data_scanner_sum": (UsageBillableSummaryBody,),
+ "serverless_apm_sum": (UsageBillableSummaryBody,),
+ "serverless_infra_average": (UsageBillableSummaryBody,),
+ "serverless_infra_sum": (UsageBillableSummaryBody,),
+ "serverless_invocation_sum": (UsageBillableSummaryBody,),
+ "siem_sum": (UsageBillableSummaryBody,),
+ "standard_timeseries_average": (UsageBillableSummaryBody,),
+ "synthetics_api_tests_sum": (UsageBillableSummaryBody,),
+ "synthetics_app_testing_maximum": (UsageBillableSummaryBody,),
+ "synthetics_browser_checks_sum": (UsageBillableSummaryBody,),
+ "timeseries_average": (UsageBillableSummaryBody,),
+ "timeseries_sum": (UsageBillableSummaryBody,),
+ }
+ attribute_map = {
+ "apm_fargate_average": "apm_fargate_average",
+ "apm_fargate_sum": "apm_fargate_sum",
+ "apm_host_sum": "apm_host_sum",
+ "apm_host_top99p": "apm_host_top99p",
+ "apm_profiler_host_sum": "apm_profiler_host_sum",
+ "apm_profiler_host_top99p": "apm_profiler_host_top99p",
+ "apm_trace_search_sum": "apm_trace_search_sum",
+ "application_security_fargate_average": "application_security_fargate_average",
+ "application_security_host_sum": "application_security_host_sum",
+ "application_security_host_top99p": "application_security_host_top99p",
+ "ci_pipeline_indexed_spans_sum": "ci_pipeline_indexed_spans_sum",
+ "ci_pipeline_maximum": "ci_pipeline_maximum",
+ "ci_pipeline_sum": "ci_pipeline_sum",
+ "ci_test_indexed_spans_sum": "ci_test_indexed_spans_sum",
+ "ci_testing_maximum": "ci_testing_maximum",
+ "ci_testing_sum": "ci_testing_sum",
+ "cloud_cost_management_average": "cloud_cost_management_average",
+ "cloud_cost_management_sum": "cloud_cost_management_sum",
+ "cspm_container_sum": "cspm_container_sum",
+ "cspm_host_sum": "cspm_host_sum",
+ "cspm_host_top99p": "cspm_host_top99p",
+ "custom_event_sum": "custom_event_sum",
+ "cws_container_sum": "cws_container_sum",
+ "cws_host_sum": "cws_host_sum",
+ "cws_host_top99p": "cws_host_top99p",
+ "dbm_host_sum": "dbm_host_sum",
+ "dbm_host_top99p": "dbm_host_top99p",
+ "dbm_normalized_queries_average": "dbm_normalized_queries_average",
+ "dbm_normalized_queries_sum": "dbm_normalized_queries_sum",
+ "fargate_container_apm_and_profiler_average": "fargate_container_apm_and_profiler_average",
+ "fargate_container_apm_and_profiler_sum": "fargate_container_apm_and_profiler_sum",
+ "fargate_container_average": "fargate_container_average",
+ "fargate_container_profiler_average": "fargate_container_profiler_average",
+ "fargate_container_profiler_sum": "fargate_container_profiler_sum",
+ "fargate_container_sum": "fargate_container_sum",
+ "incident_management_maximum": "incident_management_maximum",
+ "incident_management_sum": "incident_management_sum",
+ "infra_and_apm_host_sum": "infra_and_apm_host_sum",
+ "infra_and_apm_host_top99p": "infra_and_apm_host_top99p",
+ "infra_container_sum": "infra_container_sum",
+ "infra_host_sum": "infra_host_sum",
+ "infra_host_top99p": "infra_host_top99p",
+ "ingested_spans_sum": "ingested_spans_sum",
+ "ingested_timeseries_average": "ingested_timeseries_average",
+ "ingested_timeseries_sum": "ingested_timeseries_sum",
+ "iot_sum": "iot_sum",
+ "iot_top99p": "iot_top99p",
+ "lambda_function_average": "lambda_function_average",
+ "lambda_function_sum": "lambda_function_sum",
+ "logs_forwarding_sum": "logs_forwarding_sum",
+ "logs_indexed_15day_sum": "logs_indexed_15day_sum",
+ "logs_indexed_180day_sum": "logs_indexed_180day_sum",
+ "logs_indexed_1day_sum": "logs_indexed_1day_sum",
+ "logs_indexed_30day_sum": "logs_indexed_30day_sum",
+ "logs_indexed_360day_sum": "logs_indexed_360day_sum",
+ "logs_indexed_3day_sum": "logs_indexed_3day_sum",
+ "logs_indexed_45day_sum": "logs_indexed_45day_sum",
+ "logs_indexed_60day_sum": "logs_indexed_60day_sum",
+ "logs_indexed_7day_sum": "logs_indexed_7day_sum",
+ "logs_indexed_90day_sum": "logs_indexed_90day_sum",
+ "logs_indexed_custom_retention_sum": "logs_indexed_custom_retention_sum",
+ "logs_indexed_sum": "logs_indexed_sum",
+ "logs_ingested_sum": "logs_ingested_sum",
+ "network_device_sum": "network_device_sum",
+ "network_device_top99p": "network_device_top99p",
+ "npm_flow_sum": "npm_flow_sum",
+ "npm_host_sum": "npm_host_sum",
+ "npm_host_top99p": "npm_host_top99p",
+ "observability_pipeline_sum": "observability_pipeline_sum",
+ "online_archive_sum": "online_archive_sum",
+ "prof_container_sum": "prof_container_sum",
+ "prof_host_sum": "prof_host_sum",
+ "prof_host_top99p": "prof_host_top99p",
+ "rum_lite_sum": "rum_lite_sum",
+ "rum_replay_sum": "rum_replay_sum",
+ "rum_sum": "rum_sum",
+ "rum_units_sum": "rum_units_sum",
+ "sensitive_data_scanner_sum": "sensitive_data_scanner_sum",
+ "serverless_apm_sum": "serverless_apm_sum",
+ "serverless_infra_average": "serverless_infra_average",
+ "serverless_infra_sum": "serverless_infra_sum",
+ "serverless_invocation_sum": "serverless_invocation_sum",
+ "siem_sum": "siem_sum",
+ "standard_timeseries_average": "standard_timeseries_average",
+ "synthetics_api_tests_sum": "synthetics_api_tests_sum",
+ "synthetics_app_testing_maximum": "synthetics_app_testing_maximum",
+ "synthetics_browser_checks_sum": "synthetics_browser_checks_sum",
+ "timeseries_average": "timeseries_average",
+ "timeseries_sum": "timeseries_sum",
+ }
+
+ def __init__(self_, apm_fargate_average: Union[UsageBillableSummaryBody, UnsetType]=unset, apm_fargate_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, apm_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, apm_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, apm_profiler_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, apm_profiler_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, apm_trace_search_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, application_security_fargate_average: Union[UsageBillableSummaryBody, UnsetType]=unset, application_security_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, application_security_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, ci_pipeline_indexed_spans_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, ci_pipeline_maximum: Union[UsageBillableSummaryBody, UnsetType]=unset, ci_pipeline_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, ci_test_indexed_spans_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, ci_testing_maximum: Union[UsageBillableSummaryBody, UnsetType]=unset, ci_testing_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cloud_cost_management_average: Union[UsageBillableSummaryBody, UnsetType]=unset, cloud_cost_management_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cspm_container_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cspm_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cspm_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, custom_event_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cws_container_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cws_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, cws_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, dbm_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, dbm_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, dbm_normalized_queries_average: Union[UsageBillableSummaryBody, UnsetType]=unset, dbm_normalized_queries_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, fargate_container_apm_and_profiler_average: Union[UsageBillableSummaryBody, UnsetType]=unset, fargate_container_apm_and_profiler_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, fargate_container_average: Union[UsageBillableSummaryBody, UnsetType]=unset, fargate_container_profiler_average: Union[UsageBillableSummaryBody, UnsetType]=unset, fargate_container_profiler_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, fargate_container_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, incident_management_maximum: Union[UsageBillableSummaryBody, UnsetType]=unset, incident_management_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, infra_and_apm_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, infra_and_apm_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, infra_container_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, infra_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, infra_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, ingested_spans_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, ingested_timeseries_average: Union[UsageBillableSummaryBody, UnsetType]=unset, ingested_timeseries_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, iot_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, iot_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, lambda_function_average: Union[UsageBillableSummaryBody, UnsetType]=unset, lambda_function_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_forwarding_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_15day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_180day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_1day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_30day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_360day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_3day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_45day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_60day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_7day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_90day_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_custom_retention_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_indexed_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, logs_ingested_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, network_device_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, network_device_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, npm_flow_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, npm_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, npm_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, observability_pipeline_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, online_archive_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, prof_container_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, prof_host_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, prof_host_top99p: Union[UsageBillableSummaryBody, UnsetType]=unset, rum_lite_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, rum_replay_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, rum_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, rum_units_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, sensitive_data_scanner_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, serverless_apm_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, serverless_infra_average: Union[UsageBillableSummaryBody, UnsetType]=unset, serverless_infra_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, serverless_invocation_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, siem_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, standard_timeseries_average: Union[UsageBillableSummaryBody, UnsetType]=unset, synthetics_api_tests_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, synthetics_app_testing_maximum: Union[UsageBillableSummaryBody, UnsetType]=unset, synthetics_browser_checks_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, timeseries_average: Union[UsageBillableSummaryBody, UnsetType]=unset, timeseries_sum: Union[UsageBillableSummaryBody, UnsetType]=unset, **kwargs):
+ """
+ Response with aggregated usage types.
+
+ :param apm_fargate_average: Response with properties for each aggregated usage type.
+ :type apm_fargate_average: UsageBillableSummaryBody, optional
+
+ :param apm_fargate_sum: Response with properties for each aggregated usage type.
+ :type apm_fargate_sum: UsageBillableSummaryBody, optional
+
+ :param apm_host_sum: Response with properties for each aggregated usage type.
+ :type apm_host_sum: UsageBillableSummaryBody, optional
+
+ :param apm_host_top99p: Response with properties for each aggregated usage type.
+ :type apm_host_top99p: UsageBillableSummaryBody, optional
+
+ :param apm_profiler_host_sum: Response with properties for each aggregated usage type.
+ :type apm_profiler_host_sum: UsageBillableSummaryBody, optional
+
+ :param apm_profiler_host_top99p: Response with properties for each aggregated usage type.
+ :type apm_profiler_host_top99p: UsageBillableSummaryBody, optional
+
+ :param apm_trace_search_sum: Response with properties for each aggregated usage type.
+ :type apm_trace_search_sum: UsageBillableSummaryBody, optional
+
+ :param application_security_fargate_average: Response with properties for each aggregated usage type.
+ :type application_security_fargate_average: UsageBillableSummaryBody, optional
+
+ :param application_security_host_sum: Response with properties for each aggregated usage type.
+ :type application_security_host_sum: UsageBillableSummaryBody, optional
+
+ :param application_security_host_top99p: Response with properties for each aggregated usage type.
+ :type application_security_host_top99p: UsageBillableSummaryBody, optional
+
+ :param ci_pipeline_indexed_spans_sum: Response with properties for each aggregated usage type.
+ :type ci_pipeline_indexed_spans_sum: UsageBillableSummaryBody, optional
+
+ :param ci_pipeline_maximum: Response with properties for each aggregated usage type.
+ :type ci_pipeline_maximum: UsageBillableSummaryBody, optional
+
+ :param ci_pipeline_sum: Response with properties for each aggregated usage type.
+ :type ci_pipeline_sum: UsageBillableSummaryBody, optional
+
+ :param ci_test_indexed_spans_sum: Response with properties for each aggregated usage type.
+ :type ci_test_indexed_spans_sum: UsageBillableSummaryBody, optional
+
+ :param ci_testing_maximum: Response with properties for each aggregated usage type.
+ :type ci_testing_maximum: UsageBillableSummaryBody, optional
+
+ :param ci_testing_sum: Response with properties for each aggregated usage type.
+ :type ci_testing_sum: UsageBillableSummaryBody, optional
+
+ :param cloud_cost_management_average: Response with properties for each aggregated usage type.
+ :type cloud_cost_management_average: UsageBillableSummaryBody, optional
+
+ :param cloud_cost_management_sum: Response with properties for each aggregated usage type.
+ :type cloud_cost_management_sum: UsageBillableSummaryBody, optional
+
+ :param cspm_container_sum: Response with properties for each aggregated usage type.
+ :type cspm_container_sum: UsageBillableSummaryBody, optional
+
+ :param cspm_host_sum: Response with properties for each aggregated usage type.
+ :type cspm_host_sum: UsageBillableSummaryBody, optional
+
+ :param cspm_host_top99p: Response with properties for each aggregated usage type.
+ :type cspm_host_top99p: UsageBillableSummaryBody, optional
+
+ :param custom_event_sum: Response with properties for each aggregated usage type.
+ :type custom_event_sum: UsageBillableSummaryBody, optional
+
+ :param cws_container_sum: Response with properties for each aggregated usage type.
+ :type cws_container_sum: UsageBillableSummaryBody, optional
+
+ :param cws_host_sum: Response with properties for each aggregated usage type.
+ :type cws_host_sum: UsageBillableSummaryBody, optional
+
+ :param cws_host_top99p: Response with properties for each aggregated usage type.
+ :type cws_host_top99p: UsageBillableSummaryBody, optional
+
+ :param dbm_host_sum: Response with properties for each aggregated usage type.
+ :type dbm_host_sum: UsageBillableSummaryBody, optional
+
+ :param dbm_host_top99p: Response with properties for each aggregated usage type.
+ :type dbm_host_top99p: UsageBillableSummaryBody, optional
+
+ :param dbm_normalized_queries_average: Response with properties for each aggregated usage type.
+ :type dbm_normalized_queries_average: UsageBillableSummaryBody, optional
+
+ :param dbm_normalized_queries_sum: Response with properties for each aggregated usage type.
+ :type dbm_normalized_queries_sum: UsageBillableSummaryBody, optional
+
+ :param fargate_container_apm_and_profiler_average: Response with properties for each aggregated usage type.
+ :type fargate_container_apm_and_profiler_average: UsageBillableSummaryBody, optional
+
+ :param fargate_container_apm_and_profiler_sum: Response with properties for each aggregated usage type.
+ :type fargate_container_apm_and_profiler_sum: UsageBillableSummaryBody, optional
+
+ :param fargate_container_average: Response with properties for each aggregated usage type.
+ :type fargate_container_average: UsageBillableSummaryBody, optional
+
+ :param fargate_container_profiler_average: Response with properties for each aggregated usage type.
+ :type fargate_container_profiler_average: UsageBillableSummaryBody, optional
+
+ :param fargate_container_profiler_sum: Response with properties for each aggregated usage type.
+ :type fargate_container_profiler_sum: UsageBillableSummaryBody, optional
+
+ :param fargate_container_sum: Response with properties for each aggregated usage type.
+ :type fargate_container_sum: UsageBillableSummaryBody, optional
+
+ :param incident_management_maximum: Response with properties for each aggregated usage type.
+ :type incident_management_maximum: UsageBillableSummaryBody, optional
+
+ :param incident_management_sum: Response with properties for each aggregated usage type.
+ :type incident_management_sum: UsageBillableSummaryBody, optional
+
+ :param infra_and_apm_host_sum: Response with properties for each aggregated usage type.
+ :type infra_and_apm_host_sum: UsageBillableSummaryBody, optional
+
+ :param infra_and_apm_host_top99p: Response with properties for each aggregated usage type.
+ :type infra_and_apm_host_top99p: UsageBillableSummaryBody, optional
+
+ :param infra_container_sum: Response with properties for each aggregated usage type.
+ :type infra_container_sum: UsageBillableSummaryBody, optional
+
+ :param infra_host_sum: Response with properties for each aggregated usage type.
+ :type infra_host_sum: UsageBillableSummaryBody, optional
+
+ :param infra_host_top99p: Response with properties for each aggregated usage type.
+ :type infra_host_top99p: UsageBillableSummaryBody, optional
+
+ :param ingested_spans_sum: Response with properties for each aggregated usage type.
+ :type ingested_spans_sum: UsageBillableSummaryBody, optional
+
+ :param ingested_timeseries_average: Response with properties for each aggregated usage type.
+ :type ingested_timeseries_average: UsageBillableSummaryBody, optional
+
+ :param ingested_timeseries_sum: Response with properties for each aggregated usage type.
+ :type ingested_timeseries_sum: UsageBillableSummaryBody, optional
+
+ :param iot_sum: Response with properties for each aggregated usage type.
+ :type iot_sum: UsageBillableSummaryBody, optional
+
+ :param iot_top99p: Response with properties for each aggregated usage type.
+ :type iot_top99p: UsageBillableSummaryBody, optional
+
+ :param lambda_function_average: Response with properties for each aggregated usage type.
+ :type lambda_function_average: UsageBillableSummaryBody, optional
+
+ :param lambda_function_sum: Response with properties for each aggregated usage type.
+ :type lambda_function_sum: UsageBillableSummaryBody, optional
+
+ :param logs_forwarding_sum: Response with properties for each aggregated usage type.
+ :type logs_forwarding_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_15day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_15day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_180day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_180day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_1day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_1day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_30day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_30day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_360day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_360day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_3day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_3day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_45day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_45day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_60day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_60day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_7day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_7day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_90day_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_90day_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_custom_retention_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_custom_retention_sum: UsageBillableSummaryBody, optional
+
+ :param logs_indexed_sum: Response with properties for each aggregated usage type.
+ :type logs_indexed_sum: UsageBillableSummaryBody, optional
+
+ :param logs_ingested_sum: Response with properties for each aggregated usage type.
+ :type logs_ingested_sum: UsageBillableSummaryBody, optional
+
+ :param network_device_sum: Response with properties for each aggregated usage type.
+ :type network_device_sum: UsageBillableSummaryBody, optional
+
+ :param network_device_top99p: Response with properties for each aggregated usage type.
+ :type network_device_top99p: UsageBillableSummaryBody, optional
+
+ :param npm_flow_sum: Response with properties for each aggregated usage type.
+ :type npm_flow_sum: UsageBillableSummaryBody, optional
+
+ :param npm_host_sum: Response with properties for each aggregated usage type.
+ :type npm_host_sum: UsageBillableSummaryBody, optional
+
+ :param npm_host_top99p: Response with properties for each aggregated usage type.
+ :type npm_host_top99p: UsageBillableSummaryBody, optional
+
+ :param observability_pipeline_sum: Response with properties for each aggregated usage type.
+ :type observability_pipeline_sum: UsageBillableSummaryBody, optional
+
+ :param online_archive_sum: Response with properties for each aggregated usage type.
+ :type online_archive_sum: UsageBillableSummaryBody, optional
+
+ :param prof_container_sum: Response with properties for each aggregated usage type.
+ :type prof_container_sum: UsageBillableSummaryBody, optional
+
+ :param prof_host_sum: Response with properties for each aggregated usage type.
+ :type prof_host_sum: UsageBillableSummaryBody, optional
+
+ :param prof_host_top99p: Response with properties for each aggregated usage type.
+ :type prof_host_top99p: UsageBillableSummaryBody, optional
+
+ :param rum_lite_sum: Response with properties for each aggregated usage type.
+ :type rum_lite_sum: UsageBillableSummaryBody, optional
+
+ :param rum_replay_sum: Response with properties for each aggregated usage type.
+ :type rum_replay_sum: UsageBillableSummaryBody, optional
+
+ :param rum_sum: Response with properties for each aggregated usage type.
+ :type rum_sum: UsageBillableSummaryBody, optional
+
+ :param rum_units_sum: Response with properties for each aggregated usage type.
+ :type rum_units_sum: UsageBillableSummaryBody, optional
+
+ :param sensitive_data_scanner_sum: Response with properties for each aggregated usage type.
+ :type sensitive_data_scanner_sum: UsageBillableSummaryBody, optional
+
+ :param serverless_apm_sum: Response with properties for each aggregated usage type.
+ :type serverless_apm_sum: UsageBillableSummaryBody, optional
+
+ :param serverless_infra_average: Response with properties for each aggregated usage type.
+ :type serverless_infra_average: UsageBillableSummaryBody, optional
+
+ :param serverless_infra_sum: Response with properties for each aggregated usage type.
+ :type serverless_infra_sum: UsageBillableSummaryBody, optional
+
+ :param serverless_invocation_sum: Response with properties for each aggregated usage type.
+ :type serverless_invocation_sum: UsageBillableSummaryBody, optional
+
+ :param siem_sum: Response with properties for each aggregated usage type.
+ :type siem_sum: UsageBillableSummaryBody, optional
+
+ :param standard_timeseries_average: Response with properties for each aggregated usage type.
+ :type standard_timeseries_average: UsageBillableSummaryBody, optional
+
+ :param synthetics_api_tests_sum: Response with properties for each aggregated usage type.
+ :type synthetics_api_tests_sum: UsageBillableSummaryBody, optional
+
+ :param synthetics_app_testing_maximum: Response with properties for each aggregated usage type.
+ :type synthetics_app_testing_maximum: UsageBillableSummaryBody, optional
+
+ :param synthetics_browser_checks_sum: Response with properties for each aggregated usage type.
+ :type synthetics_browser_checks_sum: UsageBillableSummaryBody, optional
+
+ :param timeseries_average: Response with properties for each aggregated usage type.
+ :type timeseries_average: UsageBillableSummaryBody, optional
+
+ :param timeseries_sum: Response with properties for each aggregated usage type.
+ :type timeseries_sum: UsageBillableSummaryBody, optional
+ """
+ if apm_fargate_average is not unset:
+ kwargs["apm_fargate_average"] = apm_fargate_average
+ if apm_fargate_sum is not unset:
+ kwargs["apm_fargate_sum"] = apm_fargate_sum
+ if apm_host_sum is not unset:
+ kwargs["apm_host_sum"] = apm_host_sum
+ if apm_host_top99p is not unset:
+ kwargs["apm_host_top99p"] = apm_host_top99p
+ if apm_profiler_host_sum is not unset:
+ kwargs["apm_profiler_host_sum"] = apm_profiler_host_sum
+ if apm_profiler_host_top99p is not unset:
+ kwargs["apm_profiler_host_top99p"] = apm_profiler_host_top99p
+ if apm_trace_search_sum is not unset:
+ kwargs["apm_trace_search_sum"] = apm_trace_search_sum
+ if application_security_fargate_average is not unset:
+ kwargs["application_security_fargate_average"] = application_security_fargate_average
+ if application_security_host_sum is not unset:
+ kwargs["application_security_host_sum"] = application_security_host_sum
+ if application_security_host_top99p is not unset:
+ kwargs["application_security_host_top99p"] = application_security_host_top99p
+ if ci_pipeline_indexed_spans_sum is not unset:
+ kwargs["ci_pipeline_indexed_spans_sum"] = ci_pipeline_indexed_spans_sum
+ if ci_pipeline_maximum is not unset:
+ kwargs["ci_pipeline_maximum"] = ci_pipeline_maximum
+ if ci_pipeline_sum is not unset:
+ kwargs["ci_pipeline_sum"] = ci_pipeline_sum
+ if ci_test_indexed_spans_sum is not unset:
+ kwargs["ci_test_indexed_spans_sum"] = ci_test_indexed_spans_sum
+ if ci_testing_maximum is not unset:
+ kwargs["ci_testing_maximum"] = ci_testing_maximum
+ if ci_testing_sum is not unset:
+ kwargs["ci_testing_sum"] = ci_testing_sum
+ if cloud_cost_management_average is not unset:
+ kwargs["cloud_cost_management_average"] = cloud_cost_management_average
+ if cloud_cost_management_sum is not unset:
+ kwargs["cloud_cost_management_sum"] = cloud_cost_management_sum
+ if cspm_container_sum is not unset:
+ kwargs["cspm_container_sum"] = cspm_container_sum
+ if cspm_host_sum is not unset:
+ kwargs["cspm_host_sum"] = cspm_host_sum
+ if cspm_host_top99p is not unset:
+ kwargs["cspm_host_top99p"] = cspm_host_top99p
+ if custom_event_sum is not unset:
+ kwargs["custom_event_sum"] = custom_event_sum
+ if cws_container_sum is not unset:
+ kwargs["cws_container_sum"] = cws_container_sum
+ if cws_host_sum is not unset:
+ kwargs["cws_host_sum"] = cws_host_sum
+ if cws_host_top99p is not unset:
+ kwargs["cws_host_top99p"] = cws_host_top99p
+ if dbm_host_sum is not unset:
+ kwargs["dbm_host_sum"] = dbm_host_sum
+ if dbm_host_top99p is not unset:
+ kwargs["dbm_host_top99p"] = dbm_host_top99p
+ if dbm_normalized_queries_average is not unset:
+ kwargs["dbm_normalized_queries_average"] = dbm_normalized_queries_average
+ if dbm_normalized_queries_sum is not unset:
+ kwargs["dbm_normalized_queries_sum"] = dbm_normalized_queries_sum
+ if fargate_container_apm_and_profiler_average is not unset:
+ kwargs["fargate_container_apm_and_profiler_average"] = fargate_container_apm_and_profiler_average
+ if fargate_container_apm_and_profiler_sum is not unset:
+ kwargs["fargate_container_apm_and_profiler_sum"] = fargate_container_apm_and_profiler_sum
+ if fargate_container_average is not unset:
+ kwargs["fargate_container_average"] = fargate_container_average
+ if fargate_container_profiler_average is not unset:
+ kwargs["fargate_container_profiler_average"] = fargate_container_profiler_average
+ if fargate_container_profiler_sum is not unset:
+ kwargs["fargate_container_profiler_sum"] = fargate_container_profiler_sum
+ if fargate_container_sum is not unset:
+ kwargs["fargate_container_sum"] = fargate_container_sum
+ if incident_management_maximum is not unset:
+ kwargs["incident_management_maximum"] = incident_management_maximum
+ if incident_management_sum is not unset:
+ kwargs["incident_management_sum"] = incident_management_sum
+ if infra_and_apm_host_sum is not unset:
+ kwargs["infra_and_apm_host_sum"] = infra_and_apm_host_sum
+ if infra_and_apm_host_top99p is not unset:
+ kwargs["infra_and_apm_host_top99p"] = infra_and_apm_host_top99p
+ if infra_container_sum is not unset:
+ kwargs["infra_container_sum"] = infra_container_sum
+ if infra_host_sum is not unset:
+ kwargs["infra_host_sum"] = infra_host_sum
+ if infra_host_top99p is not unset:
+ kwargs["infra_host_top99p"] = infra_host_top99p
+ if ingested_spans_sum is not unset:
+ kwargs["ingested_spans_sum"] = ingested_spans_sum
+ if ingested_timeseries_average is not unset:
+ kwargs["ingested_timeseries_average"] = ingested_timeseries_average
+ if ingested_timeseries_sum is not unset:
+ kwargs["ingested_timeseries_sum"] = ingested_timeseries_sum
+ if iot_sum is not unset:
+ kwargs["iot_sum"] = iot_sum
+ if iot_top99p is not unset:
+ kwargs["iot_top99p"] = iot_top99p
+ if lambda_function_average is not unset:
+ kwargs["lambda_function_average"] = lambda_function_average
+ if lambda_function_sum is not unset:
+ kwargs["lambda_function_sum"] = lambda_function_sum
+ if logs_forwarding_sum is not unset:
+ kwargs["logs_forwarding_sum"] = logs_forwarding_sum
+ if logs_indexed_15day_sum is not unset:
+ kwargs["logs_indexed_15day_sum"] = logs_indexed_15day_sum
+ if logs_indexed_180day_sum is not unset:
+ kwargs["logs_indexed_180day_sum"] = logs_indexed_180day_sum
+ if logs_indexed_1day_sum is not unset:
+ kwargs["logs_indexed_1day_sum"] = logs_indexed_1day_sum
+ if logs_indexed_30day_sum is not unset:
+ kwargs["logs_indexed_30day_sum"] = logs_indexed_30day_sum
+ if logs_indexed_360day_sum is not unset:
+ kwargs["logs_indexed_360day_sum"] = logs_indexed_360day_sum
+ if logs_indexed_3day_sum is not unset:
+ kwargs["logs_indexed_3day_sum"] = logs_indexed_3day_sum
+ if logs_indexed_45day_sum is not unset:
+ kwargs["logs_indexed_45day_sum"] = logs_indexed_45day_sum
+ if logs_indexed_60day_sum is not unset:
+ kwargs["logs_indexed_60day_sum"] = logs_indexed_60day_sum
+ if logs_indexed_7day_sum is not unset:
+ kwargs["logs_indexed_7day_sum"] = logs_indexed_7day_sum
+ if logs_indexed_90day_sum is not unset:
+ kwargs["logs_indexed_90day_sum"] = logs_indexed_90day_sum
+ if logs_indexed_custom_retention_sum is not unset:
+ kwargs["logs_indexed_custom_retention_sum"] = logs_indexed_custom_retention_sum
+ if logs_indexed_sum is not unset:
+ kwargs["logs_indexed_sum"] = logs_indexed_sum
+ if logs_ingested_sum is not unset:
+ kwargs["logs_ingested_sum"] = logs_ingested_sum
+ if network_device_sum is not unset:
+ kwargs["network_device_sum"] = network_device_sum
+ if network_device_top99p is not unset:
+ kwargs["network_device_top99p"] = network_device_top99p
+ if npm_flow_sum is not unset:
+ kwargs["npm_flow_sum"] = npm_flow_sum
+ if npm_host_sum is not unset:
+ kwargs["npm_host_sum"] = npm_host_sum
+ if npm_host_top99p is not unset:
+ kwargs["npm_host_top99p"] = npm_host_top99p
+ if observability_pipeline_sum is not unset:
+ kwargs["observability_pipeline_sum"] = observability_pipeline_sum
+ if online_archive_sum is not unset:
+ kwargs["online_archive_sum"] = online_archive_sum
+ if prof_container_sum is not unset:
+ kwargs["prof_container_sum"] = prof_container_sum
+ if prof_host_sum is not unset:
+ kwargs["prof_host_sum"] = prof_host_sum
+ if prof_host_top99p is not unset:
+ kwargs["prof_host_top99p"] = prof_host_top99p
+ if rum_lite_sum is not unset:
+ kwargs["rum_lite_sum"] = rum_lite_sum
+ if rum_replay_sum is not unset:
+ kwargs["rum_replay_sum"] = rum_replay_sum
+ if rum_sum is not unset:
+ kwargs["rum_sum"] = rum_sum
+ if rum_units_sum is not unset:
+ kwargs["rum_units_sum"] = rum_units_sum
+ if sensitive_data_scanner_sum is not unset:
+ kwargs["sensitive_data_scanner_sum"] = sensitive_data_scanner_sum
+ if serverless_apm_sum is not unset:
+ kwargs["serverless_apm_sum"] = serverless_apm_sum
+ if serverless_infra_average is not unset:
+ kwargs["serverless_infra_average"] = serverless_infra_average
+ if serverless_infra_sum is not unset:
+ kwargs["serverless_infra_sum"] = serverless_infra_sum
+ if serverless_invocation_sum is not unset:
+ kwargs["serverless_invocation_sum"] = serverless_invocation_sum
+ if siem_sum is not unset:
+ kwargs["siem_sum"] = siem_sum
+ if standard_timeseries_average is not unset:
+ kwargs["standard_timeseries_average"] = standard_timeseries_average
+ if synthetics_api_tests_sum is not unset:
+ kwargs["synthetics_api_tests_sum"] = synthetics_api_tests_sum
+ if synthetics_app_testing_maximum is not unset:
+ kwargs["synthetics_app_testing_maximum"] = synthetics_app_testing_maximum
+ if synthetics_browser_checks_sum is not unset:
+ kwargs["synthetics_browser_checks_sum"] = synthetics_browser_checks_sum
+ if timeseries_average is not unset:
+ kwargs["timeseries_average"] = timeseries_average
+ if timeseries_sum is not unset:
+ kwargs["timeseries_sum"] = timeseries_sum
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_billable_summary_response.py b/datadog_api_client/v1/model/usage_billable_summary_response.py
new file mode 100644
index 0000000000..179a95fbbd
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_billable_summary_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_billable_summary_hour import UsageBillableSummaryHour
+
+class UsageBillableSummaryResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_billable_summary_hour import UsageBillableSummaryHour
+ return {
+ "usage": ([UsageBillableSummaryHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageBillableSummaryHour], UnsetType]=unset, **kwargs):
+ """
+ Response with monthly summary of data billed by Datadog.
+
+ :param usage: An array of objects regarding usage of billable summary.
+ :type usage: [UsageBillableSummaryHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_ci_visibility_hour.py b/datadog_api_client/v1/model/usage_ci_visibility_hour.py
new file mode 100644
index 0000000000..458280764e
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_ci_visibility_hour.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageCIVisibilityHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "ci_pipeline_indexed_spans": (int, none_type),
+ "ci_test_indexed_spans": (int, none_type),
+ "ci_visibility_itr_committers": (int, none_type),
+ "ci_visibility_pipeline_committers": (int, none_type),
+ "ci_visibility_test_committers": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "ci_pipeline_indexed_spans": "ci_pipeline_indexed_spans",
+ "ci_test_indexed_spans": "ci_test_indexed_spans",
+ "ci_visibility_itr_committers": "ci_visibility_itr_committers",
+ "ci_visibility_pipeline_committers": "ci_visibility_pipeline_committers",
+ "ci_visibility_test_committers": "ci_visibility_test_committers",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, ci_pipeline_indexed_spans: Union[int, none_type, UnsetType]=unset, ci_test_indexed_spans: Union[int, none_type, UnsetType]=unset, ci_visibility_itr_committers: Union[int, none_type, UnsetType]=unset, ci_visibility_pipeline_committers: Union[int, none_type, UnsetType]=unset, ci_visibility_test_committers: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ CI visibility usage in a given hour.
+
+ :param ci_pipeline_indexed_spans: The number of spans for pipelines in the queried hour.
+ :type ci_pipeline_indexed_spans: int, none_type, optional
+
+ :param ci_test_indexed_spans: The number of spans for tests in the queried hour.
+ :type ci_test_indexed_spans: int, none_type, optional
+
+ :param ci_visibility_itr_committers: Shows the total count of all active Git committers for Intelligent Test Runner in the current month. A committer is active if they commit at least 3 times in a given month.
+ :type ci_visibility_itr_committers: int, none_type, optional
+
+ :param ci_visibility_pipeline_committers: Shows the total count of all active Git committers for Pipelines in the current month. A committer is active if they commit at least 3 times in a given month.
+ :type ci_visibility_pipeline_committers: int, none_type, optional
+
+ :param ci_visibility_test_committers: The total count of all active Git committers for tests in the current month. A committer is active if they commit at least 3 times in a given month.
+ :type ci_visibility_test_committers: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if ci_pipeline_indexed_spans is not unset:
+ kwargs["ci_pipeline_indexed_spans"] = ci_pipeline_indexed_spans
+ if ci_test_indexed_spans is not unset:
+ kwargs["ci_test_indexed_spans"] = ci_test_indexed_spans
+ if ci_visibility_itr_committers is not unset:
+ kwargs["ci_visibility_itr_committers"] = ci_visibility_itr_committers
+ if ci_visibility_pipeline_committers is not unset:
+ kwargs["ci_visibility_pipeline_committers"] = ci_visibility_pipeline_committers
+ if ci_visibility_test_committers is not unset:
+ kwargs["ci_visibility_test_committers"] = ci_visibility_test_committers
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_ci_visibility_response.py b/datadog_api_client/v1/model/usage_ci_visibility_response.py
new file mode 100644
index 0000000000..94b44a44af
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_ci_visibility_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_ci_visibility_hour import UsageCIVisibilityHour
+
+class UsageCIVisibilityResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_ci_visibility_hour import UsageCIVisibilityHour
+ return {
+ "usage": ([UsageCIVisibilityHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageCIVisibilityHour], UnsetType]=unset, **kwargs):
+ """
+ CI visibility usage response
+
+ :param usage: Response containing CI visibility usage.
+ :type usage: [UsageCIVisibilityHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_cloud_security_posture_management_hour.py b/datadog_api_client/v1/model/usage_cloud_security_posture_management_hour.py
new file mode 100644
index 0000000000..8a3049dba6
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_cloud_security_posture_management_hour.py
@@ -0,0 +1,109 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageCloudSecurityPostureManagementHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "aas_host_count": (float, none_type),
+ "aws_host_count": (float, none_type),
+ "azure_host_count": (float, none_type),
+ "compliance_host_count": (float, none_type),
+ "container_count": (float, none_type),
+ "gcp_host_count": (float, none_type),
+ "host_count": (float, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "aas_host_count": "aas_host_count",
+ "aws_host_count": "aws_host_count",
+ "azure_host_count": "azure_host_count",
+ "compliance_host_count": "compliance_host_count",
+ "container_count": "container_count",
+ "gcp_host_count": "gcp_host_count",
+ "host_count": "host_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, aas_host_count: Union[float, none_type, UnsetType]=unset, aws_host_count: Union[float, none_type, UnsetType]=unset, azure_host_count: Union[float, none_type, UnsetType]=unset, compliance_host_count: Union[float, none_type, UnsetType]=unset, container_count: Union[float, none_type, UnsetType]=unset, gcp_host_count: Union[float, none_type, UnsetType]=unset, host_count: Union[float, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Cloud Security Management Pro usage for a given organization for a given hour.
+
+ :param aas_host_count: The number of Cloud Security Management Pro Azure app services hosts during a given hour.
+ :type aas_host_count: float, none_type, optional
+
+ :param aws_host_count: The number of Cloud Security Management Pro AWS hosts during a given hour.
+ :type aws_host_count: float, none_type, optional
+
+ :param azure_host_count: The number of Cloud Security Management Pro Azure hosts during a given hour.
+ :type azure_host_count: float, none_type, optional
+
+ :param compliance_host_count: The number of Cloud Security Management Pro hosts during a given hour.
+ :type compliance_host_count: float, none_type, optional
+
+ :param container_count: The total number of Cloud Security Management Pro containers during a given hour.
+ :type container_count: float, none_type, optional
+
+ :param gcp_host_count: The number of Cloud Security Management Pro GCP hosts during a given hour.
+ :type gcp_host_count: float, none_type, optional
+
+ :param host_count: The total number of Cloud Security Management Pro hosts during a given hour.
+ :type host_count: float, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if aas_host_count is not unset:
+ kwargs["aas_host_count"] = aas_host_count
+ if aws_host_count is not unset:
+ kwargs["aws_host_count"] = aws_host_count
+ if azure_host_count is not unset:
+ kwargs["azure_host_count"] = azure_host_count
+ if compliance_host_count is not unset:
+ kwargs["compliance_host_count"] = compliance_host_count
+ if container_count is not unset:
+ kwargs["container_count"] = container_count
+ if gcp_host_count is not unset:
+ kwargs["gcp_host_count"] = gcp_host_count
+ if host_count is not unset:
+ kwargs["host_count"] = host_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_cloud_security_posture_management_response.py b/datadog_api_client/v1/model/usage_cloud_security_posture_management_response.py
new file mode 100644
index 0000000000..95d37a2203
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_cloud_security_posture_management_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_cloud_security_posture_management_hour import UsageCloudSecurityPostureManagementHour
+
+class UsageCloudSecurityPostureManagementResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_cloud_security_posture_management_hour import UsageCloudSecurityPostureManagementHour
+ return {
+ "usage": ([UsageCloudSecurityPostureManagementHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageCloudSecurityPostureManagementHour], UnsetType]=unset, **kwargs):
+ """
+ The response containing the Cloud Security Management Pro usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for Cloud Security Management Pro.
+ :type usage: [UsageCloudSecurityPostureManagementHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_custom_reports_attributes.py b/datadog_api_client/v1/model/usage_custom_reports_attributes.py
new file mode 100644
index 0000000000..c34ebe1641
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_custom_reports_attributes.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageCustomReportsAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "computed_on": (str,),
+ "end_date": (str,),
+ "size": (int,),
+ "start_date": (str,),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "computed_on": "computed_on",
+ "end_date": "end_date",
+ "size": "size",
+ "start_date": "start_date",
+ "tags": "tags",
+ }
+
+ def __init__(self_, computed_on: Union[str, UnsetType]=unset, end_date: Union[str, UnsetType]=unset, size: Union[int, UnsetType]=unset, start_date: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ The response containing attributes for custom reports.
+
+ :param computed_on: The date the specified custom report was computed.
+ :type computed_on: str, optional
+
+ :param end_date: The ending date of custom report.
+ :type end_date: str, optional
+
+ :param size: size
+ :type size: int, optional
+
+ :param start_date: The starting date of custom report.
+ :type start_date: str, optional
+
+ :param tags: A list of tags to apply to custom reports.
+ :type tags: [str], optional
+ """
+ if computed_on is not unset:
+ kwargs["computed_on"] = computed_on
+ if end_date is not unset:
+ kwargs["end_date"] = end_date
+ if size is not unset:
+ kwargs["size"] = size
+ if start_date is not unset:
+ kwargs["start_date"] = start_date
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_custom_reports_data.py b/datadog_api_client/v1/model/usage_custom_reports_data.py
new file mode 100644
index 0000000000..4e7c74b0fe
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_custom_reports_data.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_custom_reports_attributes import UsageCustomReportsAttributes
+ from datadog_api_client.v1.model.usage_reports_type import UsageReportsType
+
+class UsageCustomReportsData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_custom_reports_attributes import UsageCustomReportsAttributes
+ from datadog_api_client.v1.model.usage_reports_type import UsageReportsType
+ return {
+ "attributes": (UsageCustomReportsAttributes,),
+ "id": (str,),
+ "type": (UsageReportsType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[UsageCustomReportsAttributes, UnsetType]=unset, id: Union[str, UnsetType]=unset, type: Union[UsageReportsType, UnsetType]=unset, **kwargs):
+ """
+ The response containing the date and type for custom reports.
+
+ :param attributes: The response containing attributes for custom reports.
+ :type attributes: UsageCustomReportsAttributes, optional
+
+ :param id: The date for specified custom reports.
+ :type id: str, optional
+
+ :param type: The type of reports.
+ :type type: UsageReportsType, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if id is not unset:
+ kwargs["id"] = id
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_custom_reports_meta.py b/datadog_api_client/v1/model/usage_custom_reports_meta.py
new file mode 100644
index 0000000000..4f223f95c2
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_custom_reports_meta.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_custom_reports_page import UsageCustomReportsPage
+
+class UsageCustomReportsMeta(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_custom_reports_page import UsageCustomReportsPage
+ return {
+ "page": (UsageCustomReportsPage,),
+ }
+ attribute_map = {
+ "page": "page",
+ }
+
+ def __init__(self_, page: Union[UsageCustomReportsPage, UnsetType]=unset, **kwargs):
+ """
+ The object containing document metadata.
+
+ :param page: The object containing page total count.
+ :type page: UsageCustomReportsPage, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_custom_reports_page.py b/datadog_api_client/v1/model/usage_custom_reports_page.py
new file mode 100644
index 0000000000..122b11ad38
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_custom_reports_page.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageCustomReportsPage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_count": (int,),
+ }
+ attribute_map = {
+ "total_count": "total_count",
+ }
+
+ def __init__(self_, total_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ The object containing page total count.
+
+ :param total_count: Total page count.
+ :type total_count: int, optional
+ """
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_custom_reports_response.py b/datadog_api_client/v1/model/usage_custom_reports_response.py
new file mode 100644
index 0000000000..4facf58a0e
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_custom_reports_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_custom_reports_data import UsageCustomReportsData
+ from datadog_api_client.v1.model.usage_custom_reports_meta import UsageCustomReportsMeta
+
+class UsageCustomReportsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_custom_reports_data import UsageCustomReportsData
+ from datadog_api_client.v1.model.usage_custom_reports_meta import UsageCustomReportsMeta
+ return {
+ "data": ([UsageCustomReportsData],),
+ "meta": (UsageCustomReportsMeta,),
+ }
+ attribute_map = {
+ "data": "data",
+ "meta": "meta",
+ }
+
+ def __init__(self_, data: Union[List[UsageCustomReportsData], UnsetType]=unset, meta: Union[UsageCustomReportsMeta, UnsetType]=unset, **kwargs):
+ """
+ Response containing available custom reports.
+
+ :param data: An array of available custom reports.
+ :type data: [UsageCustomReportsData], optional
+
+ :param meta: The object containing document metadata.
+ :type meta: UsageCustomReportsMeta, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if meta is not unset:
+ kwargs["meta"] = meta
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_cws_hour.py b/datadog_api_client/v1/model/usage_cws_hour.py
new file mode 100644
index 0000000000..b85a0c2dd6
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_cws_hour.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageCWSHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "cws_container_count": (int, none_type),
+ "cws_host_count": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "cws_container_count": "cws_container_count",
+ "cws_host_count": "cws_host_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, cws_container_count: Union[int, none_type, UnsetType]=unset, cws_host_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Cloud Workload Security usage for a given organization for a given hour.
+
+ :param cws_container_count: The total number of Cloud Workload Security container hours from the start of the given hour’s month until the given hour.
+ :type cws_container_count: int, none_type, optional
+
+ :param cws_host_count: The total number of Cloud Workload Security host hours from the start of the given hour’s month until the given hour.
+ :type cws_host_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if cws_container_count is not unset:
+ kwargs["cws_container_count"] = cws_container_count
+ if cws_host_count is not unset:
+ kwargs["cws_host_count"] = cws_host_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_cws_response.py b/datadog_api_client/v1/model/usage_cws_response.py
new file mode 100644
index 0000000000..61d334ce70
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_cws_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_cws_hour import UsageCWSHour
+
+class UsageCWSResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_cws_hour import UsageCWSHour
+ return {
+ "usage": ([UsageCWSHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageCWSHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the Cloud Workload Security usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for Cloud Workload Security.
+ :type usage: [UsageCWSHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_dbm_hour.py b/datadog_api_client/v1/model/usage_dbm_hour.py
new file mode 100644
index 0000000000..24f306bcff
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_dbm_hour.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageDBMHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "dbm_host_count": (int, none_type),
+ "dbm_queries_count": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "dbm_host_count": "dbm_host_count",
+ "dbm_queries_count": "dbm_queries_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, dbm_host_count: Union[int, none_type, UnsetType]=unset, dbm_queries_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Database Monitoring usage for a given organization for a given hour.
+
+ :param dbm_host_count: The total number of Database Monitoring host hours from the start of the given hour’s month until the given hour.
+ :type dbm_host_count: int, none_type, optional
+
+ :param dbm_queries_count: The total number of normalized Database Monitoring queries from the start of the given hour’s month until the given hour.
+ :type dbm_queries_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if dbm_host_count is not unset:
+ kwargs["dbm_host_count"] = dbm_host_count
+ if dbm_queries_count is not unset:
+ kwargs["dbm_queries_count"] = dbm_queries_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_dbm_response.py b/datadog_api_client/v1/model/usage_dbm_response.py
new file mode 100644
index 0000000000..cc93b5a1ed
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_dbm_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_dbm_hour import UsageDBMHour
+
+class UsageDBMResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_dbm_hour import UsageDBMHour
+ return {
+ "usage": ([UsageDBMHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageDBMHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the Database Monitoring usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for Database Monitoring
+ :type usage: [UsageDBMHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_fargate_hour.py b/datadog_api_client/v1/model/usage_fargate_hour.py
new file mode 100644
index 0000000000..fda2f445d9
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_fargate_hour.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageFargateHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "apm_fargate_count": (int, none_type),
+ "appsec_fargate_count": (int, none_type),
+ "avg_profiled_fargate_tasks": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "tasks_count": (int, none_type),
+ }
+ attribute_map = {
+ "apm_fargate_count": "apm_fargate_count",
+ "appsec_fargate_count": "appsec_fargate_count",
+ "avg_profiled_fargate_tasks": "avg_profiled_fargate_tasks",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "tasks_count": "tasks_count",
+ }
+
+ def __init__(self_, apm_fargate_count: Union[int, none_type, UnsetType]=unset, appsec_fargate_count: Union[int, none_type, UnsetType]=unset, avg_profiled_fargate_tasks: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, tasks_count: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ Number of Fargate tasks run and hourly usage.
+
+ :param apm_fargate_count: The high-water mark of APM ECS Fargate tasks during the given hour.
+ :type apm_fargate_count: int, none_type, optional
+
+ :param appsec_fargate_count: The Application Security Monitoring ECS Fargate tasks during the given hour.
+ :type appsec_fargate_count: int, none_type, optional
+
+ :param avg_profiled_fargate_tasks: The average profiled task count for Fargate Profiling.
+ :type avg_profiled_fargate_tasks: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param tasks_count: The number of Fargate tasks run.
+ :type tasks_count: int, none_type, optional
+ """
+ if apm_fargate_count is not unset:
+ kwargs["apm_fargate_count"] = apm_fargate_count
+ if appsec_fargate_count is not unset:
+ kwargs["appsec_fargate_count"] = appsec_fargate_count
+ if avg_profiled_fargate_tasks is not unset:
+ kwargs["avg_profiled_fargate_tasks"] = avg_profiled_fargate_tasks
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if tasks_count is not unset:
+ kwargs["tasks_count"] = tasks_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_fargate_response.py b/datadog_api_client/v1/model/usage_fargate_response.py
new file mode 100644
index 0000000000..631845ddb5
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_fargate_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_fargate_hour import UsageFargateHour
+
+class UsageFargateResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_fargate_hour import UsageFargateHour
+ return {
+ "usage": ([UsageFargateHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageFargateHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of Fargate tasks run and hourly usage.
+
+ :param usage: Array with the number of hourly Fargate tasks recorded for a given organization.
+ :type usage: [UsageFargateHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_host_hour.py b/datadog_api_client/v1/model/usage_host_hour.py
new file mode 100644
index 0000000000..3642b6ae11
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_host_hour.py
@@ -0,0 +1,167 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageHostHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "agent_host_count": (int, none_type),
+ "alibaba_host_count": (int, none_type),
+ "apm_azure_app_service_host_count": (int, none_type),
+ "apm_host_count": (int, none_type),
+ "aws_host_count": (int, none_type),
+ "azure_host_count": (int, none_type),
+ "container_count": (int, none_type),
+ "gcp_host_count": (int, none_type),
+ "heroku_host_count": (int, none_type),
+ "host_count": (int, none_type),
+ "hour": (datetime, none_type),
+ "infra_azure_app_service": (int, none_type),
+ "opentelemetry_apm_host_count": (int, none_type),
+ "opentelemetry_host_count": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ "vsphere_host_count": (int, none_type),
+ }
+ attribute_map = {
+ "agent_host_count": "agent_host_count",
+ "alibaba_host_count": "alibaba_host_count",
+ "apm_azure_app_service_host_count": "apm_azure_app_service_host_count",
+ "apm_host_count": "apm_host_count",
+ "aws_host_count": "aws_host_count",
+ "azure_host_count": "azure_host_count",
+ "container_count": "container_count",
+ "gcp_host_count": "gcp_host_count",
+ "heroku_host_count": "heroku_host_count",
+ "host_count": "host_count",
+ "hour": "hour",
+ "infra_azure_app_service": "infra_azure_app_service",
+ "opentelemetry_apm_host_count": "opentelemetry_apm_host_count",
+ "opentelemetry_host_count": "opentelemetry_host_count",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "vsphere_host_count": "vsphere_host_count",
+ }
+
+ def __init__(self_, agent_host_count: Union[int, none_type, UnsetType]=unset, alibaba_host_count: Union[int, none_type, UnsetType]=unset, apm_azure_app_service_host_count: Union[int, none_type, UnsetType]=unset, apm_host_count: Union[int, none_type, UnsetType]=unset, aws_host_count: Union[int, none_type, UnsetType]=unset, azure_host_count: Union[int, none_type, UnsetType]=unset, container_count: Union[int, none_type, UnsetType]=unset, gcp_host_count: Union[int, none_type, UnsetType]=unset, heroku_host_count: Union[int, none_type, UnsetType]=unset, host_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, none_type, UnsetType]=unset, infra_azure_app_service: Union[int, none_type, UnsetType]=unset, opentelemetry_apm_host_count: Union[int, none_type, UnsetType]=unset, opentelemetry_host_count: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, vsphere_host_count: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ Number of hosts/containers recorded for each hour for a given organization.
+
+ :param agent_host_count: Contains the total number of infrastructure hosts reporting
+ during a given hour that were running the Datadog Agent.
+ :type agent_host_count: int, none_type, optional
+
+ :param alibaba_host_count: Contains the total number of hosts that reported through Alibaba integration
+ (and were NOT running the Datadog Agent).
+ :type alibaba_host_count: int, none_type, optional
+
+ :param apm_azure_app_service_host_count: Contains the total number of Azure App Services hosts using APM.
+ :type apm_azure_app_service_host_count: int, none_type, optional
+
+ :param apm_host_count: Shows the total number of hosts using APM during the hour,
+ these are counted as billable (except during trial periods).
+ :type apm_host_count: int, none_type, optional
+
+ :param aws_host_count: Contains the total number of hosts that reported through the AWS integration
+ (and were NOT running the Datadog Agent).
+ :type aws_host_count: int, none_type, optional
+
+ :param azure_host_count: Contains the total number of hosts that reported through Azure integration
+ (and were NOT running the Datadog Agent).
+ :type azure_host_count: int, none_type, optional
+
+ :param container_count: Shows the total number of containers reported by the Docker integration during the hour.
+ :type container_count: int, none_type, optional
+
+ :param gcp_host_count: Contains the total number of hosts that reported through the Google Cloud integration
+ (and were NOT running the Datadog Agent).
+ :type gcp_host_count: int, none_type, optional
+
+ :param heroku_host_count: Contains the total number of Heroku dynos reported by the Datadog Agent.
+ :type heroku_host_count: int, none_type, optional
+
+ :param host_count: Contains the total number of billable infrastructure hosts reporting during a given hour.
+ This is the sum of ``agent_host_count`` , ``aws_host_count`` , and ``gcp_host_count``.
+ :type host_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, none_type, optional
+
+ :param infra_azure_app_service: Contains the total number of hosts that reported through the Azure App Services integration
+ (and were NOT running the Datadog Agent).
+ :type infra_azure_app_service: int, none_type, optional
+
+ :param opentelemetry_apm_host_count: Contains the total number of hosts using APM reported by Datadog exporter for the OpenTelemetry Collector.
+ :type opentelemetry_apm_host_count: int, none_type, optional
+
+ :param opentelemetry_host_count: Contains the total number of hosts reported by Datadog exporter for the OpenTelemetry Collector.
+ :type opentelemetry_host_count: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param vsphere_host_count: Contains the total number of hosts that reported through vSphere integration
+ (and were NOT running the Datadog Agent).
+ :type vsphere_host_count: int, none_type, optional
+ """
+ if agent_host_count is not unset:
+ kwargs["agent_host_count"] = agent_host_count
+ if alibaba_host_count is not unset:
+ kwargs["alibaba_host_count"] = alibaba_host_count
+ if apm_azure_app_service_host_count is not unset:
+ kwargs["apm_azure_app_service_host_count"] = apm_azure_app_service_host_count
+ if apm_host_count is not unset:
+ kwargs["apm_host_count"] = apm_host_count
+ if aws_host_count is not unset:
+ kwargs["aws_host_count"] = aws_host_count
+ if azure_host_count is not unset:
+ kwargs["azure_host_count"] = azure_host_count
+ if container_count is not unset:
+ kwargs["container_count"] = container_count
+ if gcp_host_count is not unset:
+ kwargs["gcp_host_count"] = gcp_host_count
+ if heroku_host_count is not unset:
+ kwargs["heroku_host_count"] = heroku_host_count
+ if host_count is not unset:
+ kwargs["host_count"] = host_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if infra_azure_app_service is not unset:
+ kwargs["infra_azure_app_service"] = infra_azure_app_service
+ if opentelemetry_apm_host_count is not unset:
+ kwargs["opentelemetry_apm_host_count"] = opentelemetry_apm_host_count
+ if opentelemetry_host_count is not unset:
+ kwargs["opentelemetry_host_count"] = opentelemetry_host_count
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if vsphere_host_count is not unset:
+ kwargs["vsphere_host_count"] = vsphere_host_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_hosts_response.py b/datadog_api_client/v1/model/usage_hosts_response.py
new file mode 100644
index 0000000000..722da19fc1
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_hosts_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_host_hour import UsageHostHour
+
+class UsageHostsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_host_hour import UsageHostHour
+ return {
+ "usage": ([UsageHostHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageHostHour], UnsetType]=unset, **kwargs):
+ """
+ Host usage response.
+
+ :param usage: An array of objects related to host usage.
+ :type usage: [UsageHostHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_incident_management_hour.py b/datadog_api_client/v1/model/usage_incident_management_hour.py
new file mode 100644
index 0000000000..cb9c495ed6
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_incident_management_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageIncidentManagementHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "monthly_active_users": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "monthly_active_users": "monthly_active_users",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, monthly_active_users: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Incident management usage for a given organization for a given hour.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param monthly_active_users: Contains the total number monthly active users from the start of the given hour's month until the given hour.
+ :type monthly_active_users: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if monthly_active_users is not unset:
+ kwargs["monthly_active_users"] = monthly_active_users
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_incident_management_response.py b/datadog_api_client/v1/model/usage_incident_management_response.py
new file mode 100644
index 0000000000..03a673b6e4
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_incident_management_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_incident_management_hour import UsageIncidentManagementHour
+
+class UsageIncidentManagementResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_incident_management_hour import UsageIncidentManagementHour
+ return {
+ "usage": ([UsageIncidentManagementHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageIncidentManagementHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the incident management usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for incident management.
+ :type usage: [UsageIncidentManagementHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_indexed_spans_hour.py b/datadog_api_client/v1/model/usage_indexed_spans_hour.py
new file mode 100644
index 0000000000..885a59a62a
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_indexed_spans_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageIndexedSpansHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "indexed_events_count": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "indexed_events_count": "indexed_events_count",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, indexed_events_count: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The hours of indexed spans usage.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param indexed_events_count: Contains the number of spans indexed.
+ :type indexed_events_count: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if indexed_events_count is not unset:
+ kwargs["indexed_events_count"] = indexed_events_count
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_indexed_spans_response.py b/datadog_api_client/v1/model/usage_indexed_spans_response.py
new file mode 100644
index 0000000000..c1a0819731
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_indexed_spans_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_indexed_spans_hour import UsageIndexedSpansHour
+
+class UsageIndexedSpansResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_indexed_spans_hour import UsageIndexedSpansHour
+ return {
+ "usage": ([UsageIndexedSpansHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageIndexedSpansHour], UnsetType]=unset, **kwargs):
+ """
+ A response containing indexed spans usage.
+
+ :param usage: Array with the number of hourly traces indexed for a given organization.
+ :type usage: [UsageIndexedSpansHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_ingested_spans_hour.py b/datadog_api_client/v1/model/usage_ingested_spans_hour.py
new file mode 100644
index 0000000000..87d3fc951e
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_ingested_spans_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageIngestedSpansHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "ingested_events_bytes": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "ingested_events_bytes": "ingested_events_bytes",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, ingested_events_bytes: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Ingested spans usage for a given organization for a given hour.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param ingested_events_bytes: Contains the total number of bytes ingested for APM spans during a given hour.
+ :type ingested_events_bytes: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if ingested_events_bytes is not unset:
+ kwargs["ingested_events_bytes"] = ingested_events_bytes
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_ingested_spans_response.py b/datadog_api_client/v1/model/usage_ingested_spans_response.py
new file mode 100644
index 0000000000..e5f542c1eb
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_ingested_spans_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_ingested_spans_hour import UsageIngestedSpansHour
+
+class UsageIngestedSpansResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_ingested_spans_hour import UsageIngestedSpansHour
+ return {
+ "usage": ([UsageIngestedSpansHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageIngestedSpansHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the ingested spans usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for ingested spans.
+ :type usage: [UsageIngestedSpansHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_iot_hour.py b/datadog_api_client/v1/model/usage_iot_hour.py
new file mode 100644
index 0000000000..c9f51f7a15
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_iot_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageIoTHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "iot_device_count": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "iot_device_count": "iot_device_count",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, iot_device_count: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ IoT usage for a given organization for a given hour.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param iot_device_count: The total number of IoT devices during a given hour.
+ :type iot_device_count: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if iot_device_count is not unset:
+ kwargs["iot_device_count"] = iot_device_count
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_iot_response.py b/datadog_api_client/v1/model/usage_iot_response.py
new file mode 100644
index 0000000000..64ef8fa588
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_iot_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_iot_hour import UsageIoTHour
+
+class UsageIoTResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_iot_hour import UsageIoTHour
+ return {
+ "usage": ([UsageIoTHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageIoTHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the IoT usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for IoT.
+ :type usage: [UsageIoTHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_lambda_hour.py b/datadog_api_client/v1/model/usage_lambda_hour.py
new file mode 100644
index 0000000000..912fb55ca7
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_lambda_hour.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageLambdaHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "func_count": (int, none_type),
+ "hour": (datetime,),
+ "invocations_sum": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "func_count": "func_count",
+ "hour": "hour",
+ "invocations_sum": "invocations_sum",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, func_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, invocations_sum: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Number of Lambda functions and sum of the invocations of all Lambda functions
+ for each hour for a given organization.
+
+ :param func_count: Contains the number of different functions for each region and AWS account.
+ :type func_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param invocations_sum: Contains the sum of invocations of all functions.
+ :type invocations_sum: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if func_count is not unset:
+ kwargs["func_count"] = func_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if invocations_sum is not unset:
+ kwargs["invocations_sum"] = invocations_sum
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_lambda_response.py b/datadog_api_client/v1/model/usage_lambda_response.py
new file mode 100644
index 0000000000..ff40f2bec8
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_lambda_response.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_lambda_hour import UsageLambdaHour
+
+class UsageLambdaResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_lambda_hour import UsageLambdaHour
+ return {
+ "usage": ([UsageLambdaHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageLambdaHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of Lambda functions and sum of the invocations of all Lambda functions
+ for each hour for a given organization.
+
+ :param usage: Get hourly usage for Lambda.
+ :type usage: [UsageLambdaHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_logs_by_index_hour.py b/datadog_api_client/v1/model/usage_logs_by_index_hour.py
new file mode 100644
index 0000000000..9d5550308a
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_logs_by_index_hour.py
@@ -0,0 +1,88 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageLogsByIndexHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "event_count": (int,),
+ "hour": (datetime,),
+ "index_id": (str,),
+ "index_name": (str,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "retention": (int,),
+ }
+ attribute_map = {
+ "event_count": "event_count",
+ "hour": "hour",
+ "index_id": "index_id",
+ "index_name": "index_name",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "retention": "retention",
+ }
+
+ def __init__(self_, event_count: Union[int, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, index_id: Union[str, UnsetType]=unset, index_name: Union[str, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, retention: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Number of indexed logs for each hour and index for a given organization.
+
+ :param event_count: The total number of indexed logs for the queried hour.
+ :type event_count: int, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param index_id: The index ID for this usage.
+ :type index_id: str, optional
+
+ :param index_name: The user specified name for this index ID.
+ :type index_name: str, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param retention: The retention period (in days) for this index ID.
+ :type retention: int, optional
+ """
+ if event_count is not unset:
+ kwargs["event_count"] = event_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if index_id is not unset:
+ kwargs["index_id"] = index_id
+ if index_name is not unset:
+ kwargs["index_name"] = index_name
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if retention is not unset:
+ kwargs["retention"] = retention
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_logs_by_index_response.py b/datadog_api_client/v1/model/usage_logs_by_index_response.py
new file mode 100644
index 0000000000..6ae2d0264b
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_logs_by_index_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_logs_by_index_hour import UsageLogsByIndexHour
+
+class UsageLogsByIndexResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_logs_by_index_hour import UsageLogsByIndexHour
+ return {
+ "usage": ([UsageLogsByIndexHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageLogsByIndexHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of indexed logs for each hour and index for a given organization.
+
+ :param usage: An array of objects regarding hourly usage of logs by index response.
+ :type usage: [UsageLogsByIndexHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_logs_by_retention_hour.py b/datadog_api_client/v1/model/usage_logs_by_retention_hour.py
new file mode 100644
index 0000000000..d8e4d59171
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_logs_by_retention_hour.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageLogsByRetentionHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "indexed_events_count": (int, none_type),
+ "live_indexed_events_count": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ "rehydrated_indexed_events_count": (int, none_type),
+ "retention": (str, none_type),
+ }
+ attribute_map = {
+ "indexed_events_count": "indexed_events_count",
+ "live_indexed_events_count": "live_indexed_events_count",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "rehydrated_indexed_events_count": "rehydrated_indexed_events_count",
+ "retention": "retention",
+ }
+
+ def __init__(self_, indexed_events_count: Union[int, none_type, UnsetType]=unset, live_indexed_events_count: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, rehydrated_indexed_events_count: Union[int, none_type, UnsetType]=unset, retention: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ The number of indexed logs for each hour for a given organization broken down by retention period.
+
+ :param indexed_events_count: Total logs indexed with this retention period during a given hour.
+ :type indexed_events_count: int, none_type, optional
+
+ :param live_indexed_events_count: Live logs indexed with this retention period during a given hour.
+ :type live_indexed_events_count: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param rehydrated_indexed_events_count: Rehydrated logs indexed with this retention period during a given hour.
+ :type rehydrated_indexed_events_count: int, none_type, optional
+
+ :param retention: The retention period in days or "custom" for all custom retention usage.
+ :type retention: str, none_type, optional
+ """
+ if indexed_events_count is not unset:
+ kwargs["indexed_events_count"] = indexed_events_count
+ if live_indexed_events_count is not unset:
+ kwargs["live_indexed_events_count"] = live_indexed_events_count
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if rehydrated_indexed_events_count is not unset:
+ kwargs["rehydrated_indexed_events_count"] = rehydrated_indexed_events_count
+ if retention is not unset:
+ kwargs["retention"] = retention
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_logs_by_retention_response.py b/datadog_api_client/v1/model/usage_logs_by_retention_response.py
new file mode 100644
index 0000000000..22f0e9baad
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_logs_by_retention_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_logs_by_retention_hour import UsageLogsByRetentionHour
+
+class UsageLogsByRetentionResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_logs_by_retention_hour import UsageLogsByRetentionHour
+ return {
+ "usage": ([UsageLogsByRetentionHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageLogsByRetentionHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the indexed logs usage broken down by retention period for an organization during a given hour.
+
+ :param usage: Get hourly usage for indexed logs by retention period.
+ :type usage: [UsageLogsByRetentionHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_logs_hour.py b/datadog_api_client/v1/model/usage_logs_hour.py
new file mode 100644
index 0000000000..e6780b06ba
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_logs_hour.py
@@ -0,0 +1,116 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageLogsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "billable_ingested_bytes": (int, none_type),
+ "hour": (datetime,),
+ "indexed_events_count": (int, none_type),
+ "ingested_events_bytes": (int, none_type),
+ "logs_forwarding_events_bytes": (int, none_type),
+ "logs_live_indexed_count": (int, none_type),
+ "logs_live_ingested_bytes": (int, none_type),
+ "logs_rehydrated_indexed_count": (int, none_type),
+ "logs_rehydrated_ingested_bytes": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "billable_ingested_bytes": "billable_ingested_bytes",
+ "hour": "hour",
+ "indexed_events_count": "indexed_events_count",
+ "ingested_events_bytes": "ingested_events_bytes",
+ "logs_forwarding_events_bytes": "logs_forwarding_events_bytes",
+ "logs_live_indexed_count": "logs_live_indexed_count",
+ "logs_live_ingested_bytes": "logs_live_ingested_bytes",
+ "logs_rehydrated_indexed_count": "logs_rehydrated_indexed_count",
+ "logs_rehydrated_ingested_bytes": "logs_rehydrated_ingested_bytes",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, billable_ingested_bytes: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, indexed_events_count: Union[int, none_type, UnsetType]=unset, ingested_events_bytes: Union[int, none_type, UnsetType]=unset, logs_forwarding_events_bytes: Union[int, none_type, UnsetType]=unset, logs_live_indexed_count: Union[int, none_type, UnsetType]=unset, logs_live_ingested_bytes: Union[int, none_type, UnsetType]=unset, logs_rehydrated_indexed_count: Union[int, none_type, UnsetType]=unset, logs_rehydrated_ingested_bytes: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Hour usage for logs.
+
+ :param billable_ingested_bytes: Contains the number of billable log bytes ingested.
+ :type billable_ingested_bytes: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param indexed_events_count: Contains the number of log events indexed.
+ :type indexed_events_count: int, none_type, optional
+
+ :param ingested_events_bytes: Contains the number of log bytes ingested.
+ :type ingested_events_bytes: int, none_type, optional
+
+ :param logs_forwarding_events_bytes: Contains the number of logs forwarded bytes (data available as of April 1st 2023)
+ :type logs_forwarding_events_bytes: int, none_type, optional
+
+ :param logs_live_indexed_count: Contains the number of live log events indexed (data available as of December 1, 2020).
+ :type logs_live_indexed_count: int, none_type, optional
+
+ :param logs_live_ingested_bytes: Contains the number of live log bytes ingested (data available as of December 1, 2020).
+ :type logs_live_ingested_bytes: int, none_type, optional
+
+ :param logs_rehydrated_indexed_count: Contains the number of rehydrated log events indexed (data available as of December 1, 2020).
+ :type logs_rehydrated_indexed_count: int, none_type, optional
+
+ :param logs_rehydrated_ingested_bytes: Contains the number of rehydrated log bytes ingested (data available as of December 1, 2020).
+ :type logs_rehydrated_ingested_bytes: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if billable_ingested_bytes is not unset:
+ kwargs["billable_ingested_bytes"] = billable_ingested_bytes
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if indexed_events_count is not unset:
+ kwargs["indexed_events_count"] = indexed_events_count
+ if ingested_events_bytes is not unset:
+ kwargs["ingested_events_bytes"] = ingested_events_bytes
+ if logs_forwarding_events_bytes is not unset:
+ kwargs["logs_forwarding_events_bytes"] = logs_forwarding_events_bytes
+ if logs_live_indexed_count is not unset:
+ kwargs["logs_live_indexed_count"] = logs_live_indexed_count
+ if logs_live_ingested_bytes is not unset:
+ kwargs["logs_live_ingested_bytes"] = logs_live_ingested_bytes
+ if logs_rehydrated_indexed_count is not unset:
+ kwargs["logs_rehydrated_indexed_count"] = logs_rehydrated_indexed_count
+ if logs_rehydrated_ingested_bytes is not unset:
+ kwargs["logs_rehydrated_ingested_bytes"] = logs_rehydrated_ingested_bytes
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_logs_response.py b/datadog_api_client/v1/model/usage_logs_response.py
new file mode 100644
index 0000000000..9342153226
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_logs_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_logs_hour import UsageLogsHour
+
+class UsageLogsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_logs_hour import UsageLogsHour
+ return {
+ "usage": ([UsageLogsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageLogsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of logs for each hour.
+
+ :param usage: An array of objects regarding hourly usage of logs.
+ :type usage: [UsageLogsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_metric_category.py b/datadog_api_client/v1/model/usage_metric_category.py
new file mode 100644
index 0000000000..64a2106dcf
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_metric_category.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class UsageMetricCategory(ModelSimple):
+ """
+ Contains the metric category.
+
+ :param value: Must be one of ["standard", "custom"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "standard",
+ "custom",
+ }
+ STANDARD: ClassVar["UsageMetricCategory"]
+ CUSTOM: ClassVar["UsageMetricCategory"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+UsageMetricCategory.STANDARD = UsageMetricCategory("standard")
+UsageMetricCategory.CUSTOM = UsageMetricCategory("custom")
diff --git a/datadog_api_client/v1/model/usage_network_flows_hour.py b/datadog_api_client/v1/model/usage_network_flows_hour.py
new file mode 100644
index 0000000000..abb6116b64
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_network_flows_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageNetworkFlowsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "indexed_events_count": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "indexed_events_count": "indexed_events_count",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, indexed_events_count: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Number of netflow events indexed for each hour for a given organization.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param indexed_events_count: Contains the number of netflow events indexed.
+ :type indexed_events_count: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if indexed_events_count is not unset:
+ kwargs["indexed_events_count"] = indexed_events_count
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_network_flows_response.py b/datadog_api_client/v1/model/usage_network_flows_response.py
new file mode 100644
index 0000000000..4d0b869c48
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_network_flows_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_network_flows_hour import UsageNetworkFlowsHour
+
+class UsageNetworkFlowsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_network_flows_hour import UsageNetworkFlowsHour
+ return {
+ "usage": ([UsageNetworkFlowsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageNetworkFlowsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of netflow events indexed for each hour for a given organization.
+
+ :param usage: Get hourly usage for Network Flows.
+ :type usage: [UsageNetworkFlowsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_network_hosts_hour.py b/datadog_api_client/v1/model/usage_network_hosts_hour.py
new file mode 100644
index 0000000000..987e3af97e
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_network_hosts_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageNetworkHostsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "host_count": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "host_count": "host_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, host_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Number of active NPM hosts for each hour for a given organization.
+
+ :param host_count: Contains the number of active NPM hosts.
+ :type host_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if host_count is not unset:
+ kwargs["host_count"] = host_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_network_hosts_response.py b/datadog_api_client/v1/model/usage_network_hosts_response.py
new file mode 100644
index 0000000000..1abec2162c
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_network_hosts_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_network_hosts_hour import UsageNetworkHostsHour
+
+class UsageNetworkHostsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_network_hosts_hour import UsageNetworkHostsHour
+ return {
+ "usage": ([UsageNetworkHostsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageNetworkHostsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of active NPM hosts for each hour for a given organization.
+
+ :param usage: Get hourly usage for NPM hosts.
+ :type usage: [UsageNetworkHostsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_online_archive_hour.py b/datadog_api_client/v1/model/usage_online_archive_hour.py
new file mode 100644
index 0000000000..8a55959944
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_online_archive_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageOnlineArchiveHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "online_archive_events_count": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "online_archive_events_count": "online_archive_events_count",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, online_archive_events_count: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Online Archive usage in a given hour.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param online_archive_events_count: Total count of online archived events within the hour.
+ :type online_archive_events_count: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if online_archive_events_count is not unset:
+ kwargs["online_archive_events_count"] = online_archive_events_count
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_online_archive_response.py b/datadog_api_client/v1/model/usage_online_archive_response.py
new file mode 100644
index 0000000000..2fdef932d0
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_online_archive_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_online_archive_hour import UsageOnlineArchiveHour
+
+class UsageOnlineArchiveResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_online_archive_hour import UsageOnlineArchiveHour
+ return {
+ "usage": ([UsageOnlineArchiveHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageOnlineArchiveHour], UnsetType]=unset, **kwargs):
+ """
+ Online Archive usage response.
+
+ :param usage: Response containing Online Archive usage.
+ :type usage: [UsageOnlineArchiveHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_profiling_hour.py b/datadog_api_client/v1/model/usage_profiling_hour.py
new file mode 100644
index 0000000000..901906acb2
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_profiling_hour.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageProfilingHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "aas_count": (int, none_type),
+ "avg_container_agent_count": (int, none_type),
+ "host_count": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "aas_count": "aas_count",
+ "avg_container_agent_count": "avg_container_agent_count",
+ "host_count": "host_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, aas_count: Union[int, none_type, UnsetType]=unset, avg_container_agent_count: Union[int, none_type, UnsetType]=unset, host_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The number of profiled hosts for each hour for a given organization.
+
+ :param aas_count: Contains the total number of profiled Azure app services reporting during a given hour.
+ :type aas_count: int, none_type, optional
+
+ :param avg_container_agent_count: Get average number of container agents for that hour.
+ :type avg_container_agent_count: int, none_type, optional
+
+ :param host_count: Contains the total number of profiled hosts reporting during a given hour.
+ :type host_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if aas_count is not unset:
+ kwargs["aas_count"] = aas_count
+ if avg_container_agent_count is not unset:
+ kwargs["avg_container_agent_count"] = avg_container_agent_count
+ if host_count is not unset:
+ kwargs["host_count"] = host_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_profiling_response.py b/datadog_api_client/v1/model/usage_profiling_response.py
new file mode 100644
index 0000000000..31d9fbe325
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_profiling_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_profiling_hour import UsageProfilingHour
+
+class UsageProfilingResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_profiling_hour import UsageProfilingHour
+ return {
+ "usage": ([UsageProfilingHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageProfilingHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of profiled hosts for each hour for a given organization.
+
+ :param usage: Get hourly usage for profiled hosts.
+ :type usage: [UsageProfilingHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_reports_type.py b/datadog_api_client/v1/model/usage_reports_type.py
new file mode 100644
index 0000000000..7f26006991
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_reports_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class UsageReportsType(ModelSimple):
+ """
+ The type of reports.
+
+ :param value: If omitted defaults to "reports". Must be one of ["reports"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "reports",
+ }
+ REPORTS: ClassVar["UsageReportsType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+UsageReportsType.REPORTS = UsageReportsType("reports")
diff --git a/datadog_api_client/v1/model/usage_rum_sessions_hour.py b/datadog_api_client/v1/model/usage_rum_sessions_hour.py
new file mode 100644
index 0000000000..a91223b0c4
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_rum_sessions_hour.py
@@ -0,0 +1,102 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageRumSessionsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "replay_session_count": (int,),
+ "session_count": (int, none_type),
+ "session_count_android": (int, none_type),
+ "session_count_flutter": (int, none_type),
+ "session_count_ios": (int, none_type),
+ "session_count_reactnative": (int, none_type),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "replay_session_count": "replay_session_count",
+ "session_count": "session_count",
+ "session_count_android": "session_count_android",
+ "session_count_flutter": "session_count_flutter",
+ "session_count_ios": "session_count_ios",
+ "session_count_reactnative": "session_count_reactnative",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, replay_session_count: Union[int, UnsetType]=unset, session_count: Union[int, none_type, UnsetType]=unset, session_count_android: Union[int, none_type, UnsetType]=unset, session_count_flutter: Union[int, none_type, UnsetType]=unset, session_count_ios: Union[int, none_type, UnsetType]=unset, session_count_reactnative: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ Number of RUM sessions recorded for each hour for a given organization.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param replay_session_count: Contains the number of RUM Session Replay counts (data available beginning November 1, 2021).
+ :type replay_session_count: int, optional
+
+ :param session_count: Contains the number of browser RUM lite Sessions.
+ :type session_count: int, none_type, optional
+
+ :param session_count_android: Contains the number of mobile RUM sessions on Android (data available beginning December 1, 2020).
+ :type session_count_android: int, none_type, optional
+
+ :param session_count_flutter: Contains the number of mobile RUM sessions on Flutter (data available beginning March 1, 2023).
+ :type session_count_flutter: int, none_type, optional
+
+ :param session_count_ios: Contains the number of mobile RUM sessions on iOS (data available beginning December 1, 2020).
+ :type session_count_ios: int, none_type, optional
+
+ :param session_count_reactnative: Contains the number of mobile RUM sessions on React Native (data available beginning May 1, 2022).
+ :type session_count_reactnative: int, none_type, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if replay_session_count is not unset:
+ kwargs["replay_session_count"] = replay_session_count
+ if session_count is not unset:
+ kwargs["session_count"] = session_count
+ if session_count_android is not unset:
+ kwargs["session_count_android"] = session_count_android
+ if session_count_flutter is not unset:
+ kwargs["session_count_flutter"] = session_count_flutter
+ if session_count_ios is not unset:
+ kwargs["session_count_ios"] = session_count_ios
+ if session_count_reactnative is not unset:
+ kwargs["session_count_reactnative"] = session_count_reactnative
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_rum_sessions_response.py b/datadog_api_client/v1/model/usage_rum_sessions_response.py
new file mode 100644
index 0000000000..81a4fbabff
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_rum_sessions_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_rum_sessions_hour import UsageRumSessionsHour
+
+class UsageRumSessionsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_rum_sessions_hour import UsageRumSessionsHour
+ return {
+ "usage": ([UsageRumSessionsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageRumSessionsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of RUM sessions for each hour for a given organization.
+
+ :param usage: Get hourly usage for RUM sessions.
+ :type usage: [UsageRumSessionsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_rum_units_hour.py b/datadog_api_client/v1/model/usage_rum_units_hour.py
new file mode 100644
index 0000000000..1b62ab956c
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_rum_units_hour.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageRumUnitsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "browser_rum_units": (int, none_type),
+ "mobile_rum_units": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ "rum_units": (int, none_type),
+ }
+ attribute_map = {
+ "browser_rum_units": "browser_rum_units",
+ "mobile_rum_units": "mobile_rum_units",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "rum_units": "rum_units",
+ }
+
+ def __init__(self_, browser_rum_units: Union[int, none_type, UnsetType]=unset, mobile_rum_units: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, rum_units: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ Number of RUM Units used for each hour for a given organization (data available as of November 1, 2021).
+
+ :param browser_rum_units: The number of browser RUM units.
+ :type browser_rum_units: int, none_type, optional
+
+ :param mobile_rum_units: The number of mobile RUM units.
+ :type mobile_rum_units: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param rum_units: Total RUM units across mobile and browser RUM.
+ :type rum_units: int, none_type, optional
+ """
+ if browser_rum_units is not unset:
+ kwargs["browser_rum_units"] = browser_rum_units
+ if mobile_rum_units is not unset:
+ kwargs["mobile_rum_units"] = mobile_rum_units
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if rum_units is not unset:
+ kwargs["rum_units"] = rum_units
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_rum_units_response.py b/datadog_api_client/v1/model/usage_rum_units_response.py
new file mode 100644
index 0000000000..1ba3f124fc
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_rum_units_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_rum_units_hour import UsageRumUnitsHour
+
+class UsageRumUnitsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_rum_units_hour import UsageRumUnitsHour
+ return {
+ "usage": ([UsageRumUnitsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageRumUnitsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of RUM Units for each hour for a given organization.
+
+ :param usage: Get hourly usage for RUM Units.
+ :type usage: [UsageRumUnitsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_sds_hour.py b/datadog_api_client/v1/model/usage_sds_hour.py
new file mode 100644
index 0000000000..5ab3097223
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_sds_hour.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSDSHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "apm_scanned_bytes": (int, none_type),
+ "events_scanned_bytes": (int, none_type),
+ "hour": (datetime,),
+ "logs_scanned_bytes": (int, none_type),
+ "org_name": (str,),
+ "public_id": (str,),
+ "rum_scanned_bytes": (int, none_type),
+ "total_scanned_bytes": (int, none_type),
+ }
+ attribute_map = {
+ "apm_scanned_bytes": "apm_scanned_bytes",
+ "events_scanned_bytes": "events_scanned_bytes",
+ "hour": "hour",
+ "logs_scanned_bytes": "logs_scanned_bytes",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "rum_scanned_bytes": "rum_scanned_bytes",
+ "total_scanned_bytes": "total_scanned_bytes",
+ }
+
+ def __init__(self_, apm_scanned_bytes: Union[int, none_type, UnsetType]=unset, events_scanned_bytes: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, logs_scanned_bytes: Union[int, none_type, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, rum_scanned_bytes: Union[int, none_type, UnsetType]=unset, total_scanned_bytes: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ Sensitive Data Scanner usage for a given organization for a given hour.
+
+ :param apm_scanned_bytes: The total number of bytes scanned of APM usage across all usage types by the Sensitive Data Scanner from the start of the given hour’s month until the given hour.
+ :type apm_scanned_bytes: int, none_type, optional
+
+ :param events_scanned_bytes: The total number of bytes scanned of Events usage across all usage types by the Sensitive Data Scanner from the start of the given hour’s month until the given hour.
+ :type events_scanned_bytes: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param logs_scanned_bytes: The total number of bytes scanned of logs usage by the Sensitive Data Scanner from the start of the given hour’s month until the given hour.
+ :type logs_scanned_bytes: int, none_type, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param rum_scanned_bytes: The total number of bytes scanned of RUM usage across all usage types by the Sensitive Data Scanner from the start of the given hour’s month until the given hour.
+ :type rum_scanned_bytes: int, none_type, optional
+
+ :param total_scanned_bytes: The total number of bytes scanned across all usage types by the Sensitive Data Scanner from the start of the given hour’s month until the given hour.
+ :type total_scanned_bytes: int, none_type, optional
+ """
+ if apm_scanned_bytes is not unset:
+ kwargs["apm_scanned_bytes"] = apm_scanned_bytes
+ if events_scanned_bytes is not unset:
+ kwargs["events_scanned_bytes"] = events_scanned_bytes
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if logs_scanned_bytes is not unset:
+ kwargs["logs_scanned_bytes"] = logs_scanned_bytes
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if rum_scanned_bytes is not unset:
+ kwargs["rum_scanned_bytes"] = rum_scanned_bytes
+ if total_scanned_bytes is not unset:
+ kwargs["total_scanned_bytes"] = total_scanned_bytes
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_sds_response.py b/datadog_api_client/v1/model/usage_sds_response.py
new file mode 100644
index 0000000000..f7832ed47c
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_sds_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_sds_hour import UsageSDSHour
+
+class UsageSDSResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_sds_hour import UsageSDSHour
+ return {
+ "usage": ([UsageSDSHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageSDSHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the Sensitive Data Scanner usage for each hour for a given organization.
+
+ :param usage: Get hourly usage for Sensitive Data Scanner.
+ :type usage: [UsageSDSHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_snmp_hour.py b/datadog_api_client/v1/model/usage_snmp_hour.py
new file mode 100644
index 0000000000..99712fc3d0
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_snmp_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSNMPHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ "snmp_devices": (int, none_type),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ "snmp_devices": "snmp_devices",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, snmp_devices: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ The number of SNMP devices for each hour for a given organization.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+
+ :param snmp_devices: Contains the number of SNMP devices.
+ :type snmp_devices: int, none_type, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if snmp_devices is not unset:
+ kwargs["snmp_devices"] = snmp_devices
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_snmp_response.py b/datadog_api_client/v1/model/usage_snmp_response.py
new file mode 100644
index 0000000000..4b318d85c0
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_snmp_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_snmp_hour import UsageSNMPHour
+
+class UsageSNMPResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_snmp_hour import UsageSNMPHour
+ return {
+ "usage": ([UsageSNMPHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageSNMPHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of SNMP devices for each hour for a given organization.
+
+ :param usage: Get hourly usage for SNMP devices.
+ :type usage: [UsageSNMPHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_sort.py b/datadog_api_client/v1/model/usage_sort.py
new file mode 100644
index 0000000000..1a8bf17277
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_sort.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class UsageSort(ModelSimple):
+ """
+ The field to sort by.
+
+ :param value: If omitted defaults to "start_date". Must be one of ["computed_on", "size", "start_date", "end_date"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "computed_on",
+ "size",
+ "start_date",
+ "end_date",
+ }
+ COMPUTED_ON: ClassVar["UsageSort"]
+ SIZE: ClassVar["UsageSort"]
+ START_DATE: ClassVar["UsageSort"]
+ END_DATE: ClassVar["UsageSort"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+UsageSort.COMPUTED_ON = UsageSort("computed_on")
+UsageSort.SIZE = UsageSort("size")
+UsageSort.START_DATE = UsageSort("start_date")
+UsageSort.END_DATE = UsageSort("end_date")
diff --git a/datadog_api_client/v1/model/usage_sort_direction.py b/datadog_api_client/v1/model/usage_sort_direction.py
new file mode 100644
index 0000000000..0998ceada7
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_sort_direction.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class UsageSortDirection(ModelSimple):
+ """
+ The direction to sort by.
+
+ :param value: If omitted defaults to "desc". Must be one of ["desc", "asc"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "desc",
+ "asc",
+ }
+ DESC: ClassVar["UsageSortDirection"]
+ ASC: ClassVar["UsageSortDirection"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+UsageSortDirection.DESC = UsageSortDirection("desc")
+UsageSortDirection.ASC = UsageSortDirection("asc")
diff --git a/datadog_api_client/v1/model/usage_specified_custom_reports_attributes.py b/datadog_api_client/v1/model/usage_specified_custom_reports_attributes.py
new file mode 100644
index 0000000000..1dd50e80c3
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_specified_custom_reports_attributes.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSpecifiedCustomReportsAttributes(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "computed_on": (str,),
+ "end_date": (str,),
+ "location": (str,),
+ "size": (int,),
+ "start_date": (str,),
+ "tags": ([str],),
+ }
+ attribute_map = {
+ "computed_on": "computed_on",
+ "end_date": "end_date",
+ "location": "location",
+ "size": "size",
+ "start_date": "start_date",
+ "tags": "tags",
+ }
+
+ def __init__(self_, computed_on: Union[str, UnsetType]=unset, end_date: Union[str, UnsetType]=unset, location: Union[str, UnsetType]=unset, size: Union[int, UnsetType]=unset, start_date: Union[str, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ The response containing attributes for specified custom reports.
+
+ :param computed_on: The date the specified custom report was computed.
+ :type computed_on: str, optional
+
+ :param end_date: The ending date of specified custom report.
+ :type end_date: str, optional
+
+ :param location: A downloadable file for the specified custom reporting file.
+ :type location: str, optional
+
+ :param size: size
+ :type size: int, optional
+
+ :param start_date: The starting date of specified custom report.
+ :type start_date: str, optional
+
+ :param tags: A list of tags to apply to specified custom reports.
+ :type tags: [str], optional
+ """
+ if computed_on is not unset:
+ kwargs["computed_on"] = computed_on
+ if end_date is not unset:
+ kwargs["end_date"] = end_date
+ if location is not unset:
+ kwargs["location"] = location
+ if size is not unset:
+ kwargs["size"] = size
+ if start_date is not unset:
+ kwargs["start_date"] = start_date
+ if tags is not unset:
+ kwargs["tags"] = tags
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_specified_custom_reports_data.py b/datadog_api_client/v1/model/usage_specified_custom_reports_data.py
new file mode 100644
index 0000000000..313602a31b
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_specified_custom_reports_data.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_specified_custom_reports_attributes import UsageSpecifiedCustomReportsAttributes
+ from datadog_api_client.v1.model.usage_reports_type import UsageReportsType
+
+class UsageSpecifiedCustomReportsData(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_specified_custom_reports_attributes import UsageSpecifiedCustomReportsAttributes
+ from datadog_api_client.v1.model.usage_reports_type import UsageReportsType
+ return {
+ "attributes": (UsageSpecifiedCustomReportsAttributes,),
+ "id": (str,),
+ "type": (UsageReportsType,),
+ }
+ attribute_map = {
+ "attributes": "attributes",
+ "id": "id",
+ "type": "type",
+ }
+
+ def __init__(self_, attributes: Union[UsageSpecifiedCustomReportsAttributes, UnsetType]=unset, id: Union[str, UnsetType]=unset, type: Union[UsageReportsType, UnsetType]=unset, **kwargs):
+ """
+ Response containing date and type for specified custom reports.
+
+ :param attributes: The response containing attributes for specified custom reports.
+ :type attributes: UsageSpecifiedCustomReportsAttributes, optional
+
+ :param id: The date for specified custom reports.
+ :type id: str, optional
+
+ :param type: The type of reports.
+ :type type: UsageReportsType, optional
+ """
+ if attributes is not unset:
+ kwargs["attributes"] = attributes
+ if id is not unset:
+ kwargs["id"] = id
+ if type is not unset:
+ kwargs["type"] = type
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_specified_custom_reports_meta.py b/datadog_api_client/v1/model/usage_specified_custom_reports_meta.py
new file mode 100644
index 0000000000..58b996fe32
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_specified_custom_reports_meta.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_specified_custom_reports_page import UsageSpecifiedCustomReportsPage
+
+class UsageSpecifiedCustomReportsMeta(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_specified_custom_reports_page import UsageSpecifiedCustomReportsPage
+ return {
+ "page": (UsageSpecifiedCustomReportsPage,),
+ }
+ attribute_map = {
+ "page": "page",
+ }
+
+ def __init__(self_, page: Union[UsageSpecifiedCustomReportsPage, UnsetType]=unset, **kwargs):
+ """
+ The object containing document metadata.
+
+ :param page: The object containing page total count for specified ID.
+ :type page: UsageSpecifiedCustomReportsPage, optional
+ """
+ if page is not unset:
+ kwargs["page"] = page
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_specified_custom_reports_page.py b/datadog_api_client/v1/model/usage_specified_custom_reports_page.py
new file mode 100644
index 0000000000..6e3b6fa977
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_specified_custom_reports_page.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSpecifiedCustomReportsPage(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "total_count": (int,),
+ }
+ attribute_map = {
+ "total_count": "total_count",
+ }
+
+ def __init__(self_, total_count: Union[int, UnsetType]=unset, **kwargs):
+ """
+ The object containing page total count for specified ID.
+
+ :param total_count: Total page count.
+ :type total_count: int, optional
+ """
+ if total_count is not unset:
+ kwargs["total_count"] = total_count
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_specified_custom_reports_response.py b/datadog_api_client/v1/model/usage_specified_custom_reports_response.py
new file mode 100644
index 0000000000..429e10c0e6
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_specified_custom_reports_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_specified_custom_reports_data import UsageSpecifiedCustomReportsData
+ from datadog_api_client.v1.model.usage_specified_custom_reports_meta import UsageSpecifiedCustomReportsMeta
+
+class UsageSpecifiedCustomReportsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_specified_custom_reports_data import UsageSpecifiedCustomReportsData
+ from datadog_api_client.v1.model.usage_specified_custom_reports_meta import UsageSpecifiedCustomReportsMeta
+ return {
+ "data": (UsageSpecifiedCustomReportsData,),
+ "meta": (UsageSpecifiedCustomReportsMeta,),
+ }
+ attribute_map = {
+ "data": "data",
+ "meta": "meta",
+ }
+
+ def __init__(self_, data: Union[UsageSpecifiedCustomReportsData, UnsetType]=unset, meta: Union[UsageSpecifiedCustomReportsMeta, UnsetType]=unset, **kwargs):
+ """
+ Returns available specified custom reports.
+
+ :param data: Response containing date and type for specified custom reports.
+ :type data: UsageSpecifiedCustomReportsData, optional
+
+ :param meta: The object containing document metadata.
+ :type meta: UsageSpecifiedCustomReportsMeta, optional
+ """
+ if data is not unset:
+ kwargs["data"] = data
+ if meta is not unset:
+ kwargs["meta"] = meta
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_summary_date.py b/datadog_api_client/v1/model/usage_summary_date.py
new file mode 100644
index 0000000000..b39711ed68
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_summary_date.py
@@ -0,0 +1,2158 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_summary_date_org import UsageSummaryDateOrg
+
+class UsageSummaryDate(ModelNormal):
+ # Cross-SDK semantic marker. In Python, typed fields are already accessible via
+ # bracket notation (model["key"]) through _data_store, so no runtime change is needed.
+ _keep_typed_in_additional_properties = True
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_summary_date_org import UsageSummaryDateOrg
+ return {
+ "agent_host_top99p": (int,),
+ "ai_credits_agent_builder_ai_credits_sum": (int,),
+ "ai_credits_bits_assistant_ai_credits_sum": (int,),
+ "ai_credits_bits_dev_ai_credits_sum": (int,),
+ "ai_credits_bits_sre_ai_credits_sum": (int,),
+ "ai_credits_sum": (int,),
+ "apm_azure_app_service_host_top99p": (int,),
+ "apm_devsecops_host_top99p": (int,),
+ "apm_enterprise_standalone_hosts_top99p": (int,),
+ "apm_fargate_count_avg": (int,),
+ "apm_host_top99p": (int,),
+ "apm_pro_standalone_hosts_top99p": (int,),
+ "appsec_fargate_count_avg": (int,),
+ "asm_serverless_sum": (int,),
+ "audit_logs_lines_indexed_sum": (int,),
+ "audit_trail_enabled_hwm": (int,),
+ "audit_trail_event_forwarding_events_sum": (int,),
+ "avg_profiled_fargate_tasks": (int,),
+ "aws_host_top99p": (int,),
+ "aws_lambda_func_count": (int,),
+ "aws_lambda_invocations_sum": (int,),
+ "azure_app_service_top99p": (int,),
+ "billable_ingested_bytes_sum": (int,),
+ "bits_ai_investigations_sum": (int,),
+ "browser_rum_lite_session_count_sum": (int,),
+ "browser_rum_replay_session_count_sum": (int,),
+ "browser_rum_units_sum": (int,),
+ "ccm_anthropic_spend_last": (int,),
+ "ccm_aws_spend_last": (int,),
+ "ccm_azure_spend_last": (int,),
+ "ccm_confluent_spend_last": (int,),
+ "ccm_databricks_spend_last": (int,),
+ "ccm_elastic_spend_last": (int,),
+ "ccm_fastly_spend_last": (int,),
+ "ccm_gcp_spend_last": (int,),
+ "ccm_github_spend_last": (int,),
+ "ccm_mongodb_spend_last": (int,),
+ "ccm_oci_spend_last": (int,),
+ "ccm_openai_spend_last": (int,),
+ "ccm_snowflake_spend_last": (int,),
+ "ccm_spend_monitored_ent_last": (int,),
+ "ccm_spend_monitored_pro_last": (int,),
+ "ccm_twilio_spend_last": (int,),
+ "ci_pipeline_indexed_spans_sum": (int,),
+ "ci_test_indexed_spans_sum": (int,),
+ "ci_visibility_itr_committers_hwm": (int,),
+ "ci_visibility_pipeline_committers_hwm": (int,),
+ "ci_visibility_test_committers_hwm": (int,),
+ "cloud_cost_management_aws_host_count_avg": (int,),
+ "cloud_cost_management_azure_host_count_avg": (int,),
+ "cloud_cost_management_gcp_host_count_avg": (int,),
+ "cloud_cost_management_host_count_avg": (int,),
+ "cloud_cost_management_oci_host_count_avg": (int,),
+ "cloud_siem_events_sum": (int,),
+ "cloud_siem_indexed_logs_sum": (int,),
+ "code_analysis_sa_committers_hwm": (int,),
+ "code_analysis_sca_committers_hwm": (int,),
+ "code_security_host_top99p": (int,),
+ "container_avg": (int,),
+ "container_excl_agent_avg": (int,),
+ "container_hwm": (int,),
+ "csm_container_enterprise_compliance_count_sum": (int,),
+ "csm_container_enterprise_cws_count_sum": (int,),
+ "csm_container_enterprise_total_count_sum": (int,),
+ "csm_host_enterprise_aas_host_count_top99p": (int,),
+ "csm_host_enterprise_aws_host_count_top99p": (int,),
+ "csm_host_enterprise_azure_host_count_top99p": (int,),
+ "csm_host_enterprise_compliance_host_count_top99p": (int,),
+ "csm_host_enterprise_cws_host_count_top99p": (int,),
+ "csm_host_enterprise_gcp_host_count_top99p": (int,),
+ "csm_host_enterprise_oci_host_count_top99p": (int,),
+ "csm_host_enterprise_total_host_count_top99p": (int,),
+ "csm_host_pro_hosts_agentless_scanners_sum": (int,),
+ "csm_host_pro_hosts_agentless_scanners_top99p": (int,),
+ "csm_host_pro_oci_host_count_top99p": (int,),
+ "cspm_aas_host_top99p": (int,),
+ "cspm_aws_host_top99p": (int,),
+ "cspm_azure_host_top99p": (int,),
+ "cspm_container_avg": (int,),
+ "cspm_container_hwm": (int,),
+ "cspm_gcp_host_top99p": (int,),
+ "cspm_host_top99p": (int,),
+ "cspm_hosts_agentless_scanners_sum": (int,),
+ "cspm_hosts_agentless_scanners_top99p": (int,),
+ "custom_ts_avg": (int,),
+ "cws_container_count_avg": (int,),
+ "cws_fargate_task_avg": (int,),
+ "cws_host_top99p": (int,),
+ "data_jobs_monitoring_host_hr_sum": (int,),
+ "data_stream_monitoring_host_count_sum": (int,),
+ "data_stream_monitoring_host_count_top99p": (int,),
+ "date": (datetime,),
+ "dbm_host_top99p": (int,),
+ "dbm_queries_count_avg": (int,),
+ "do_jobs_monitoring_orchestrators_job_hours_sum": (int,),
+ "eph_infra_host_agent_sum": (int,),
+ "eph_infra_host_alibaba_sum": (int,),
+ "eph_infra_host_aws_sum": (int,),
+ "eph_infra_host_azure_sum": (int,),
+ "eph_infra_host_basic_infra_basic_agent_sum": (int,),
+ "eph_infra_host_basic_infra_basic_vsphere_sum": (int,),
+ "eph_infra_host_basic_sum": (int,),
+ "eph_infra_host_ent_sum": (int,),
+ "eph_infra_host_gcp_sum": (int,),
+ "eph_infra_host_heroku_sum": (int,),
+ "eph_infra_host_only_aas_sum": (int,),
+ "eph_infra_host_only_vsphere_sum": (int,),
+ "eph_infra_host_opentelemetry_apm_sum": (int,),
+ "eph_infra_host_opentelemetry_sum": (int,),
+ "eph_infra_host_pro_sum": (int,),
+ "eph_infra_host_proplus_sum": (int,),
+ "eph_infra_host_proxmox_sum": (int,),
+ "error_tracking_apm_error_events_sum": (int,),
+ "error_tracking_error_events_sum": (int,),
+ "error_tracking_events_sum": (int,),
+ "error_tracking_rum_error_events_sum": (int,),
+ "event_management_correlation_correlated_events_sum": (int,),
+ "event_management_correlation_correlated_related_events_sum": (int,),
+ "event_management_correlation_sum": (int,),
+ "fargate_container_profiler_profiling_fargate_avg": (int,),
+ "fargate_container_profiler_profiling_fargate_eks_avg": (int,),
+ "fargate_tasks_count_avg": (int,),
+ "fargate_tasks_count_hwm": (int,),
+ "feature_flags_config_requests_sum": (int,),
+ "flex_logs_compute_large_avg": (int,),
+ "flex_logs_compute_medium_avg": (int,),
+ "flex_logs_compute_small_avg": (int,),
+ "flex_logs_compute_xlarge_avg": (int,),
+ "flex_logs_compute_xsmall_avg": (int,),
+ "flex_logs_starter_avg": (int,),
+ "flex_logs_starter_storage_index_avg": (int,),
+ "flex_logs_starter_storage_retention_adjustment_avg": (int,),
+ "flex_stored_logs_avg": (int,),
+ "forwarding_events_bytes_sum": (int,),
+ "gcp_host_top99p": (int,),
+ "heroku_host_top99p": (int,),
+ "incident_management_monthly_active_users_hwm": (int,),
+ "incident_management_seats_hwm": (int,),
+ "indexed_events_count_sum": (int,),
+ "indexed_points_sum": (int,),
+ "infra_cpu_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_basic_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_basic_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_aws_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_aws_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_azure_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_azure_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_gcp_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_gcp_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_agent_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_agent_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_aws_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_aws_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_azure_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_azure_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_gcp_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_gcp_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_nutanix_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_nutanix_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_sum": (int,),
+ "infra_cpu_sum": (int,),
+ "infra_edge_monitoring_devices_top99p": (int,),
+ "infra_host_basic_infra_basic_agent_top99p": (int,),
+ "infra_host_basic_infra_basic_vsphere_top99p": (int,),
+ "infra_host_basic_top99p": (int,),
+ "infra_host_top99p": (int,),
+ "infra_storage_mgmt_objects_count_avg": (int,),
+ "ingest_points_sum": (int,),
+ "ingested_events_bytes_sum": (int,),
+ "iot_apm_host_sum": (int,),
+ "iot_apm_host_top99p": (int,),
+ "iot_device_sum": (int,),
+ "iot_device_top99p": (int,),
+ "llm_observability_15day_retention_spans_sum": (int,),
+ "llm_observability_30day_retention_spans_sum": (int,),
+ "llm_observability_60day_retention_spans_sum": (int,),
+ "llm_observability_90day_retention_spans_sum": (int,),
+ "llm_observability_min_spend_sum": (int,),
+ "llm_observability_sum": (int,),
+ "logs_archive_search_gb_scanned_sum": (int,),
+ "metric_names_sum": (int,),
+ "mobile_rum_lite_session_count_sum": (int,),
+ "mobile_rum_session_count_android_sum": (int,),
+ "mobile_rum_session_count_flutter_sum": (int,),
+ "mobile_rum_session_count_ios_sum": (int,),
+ "mobile_rum_session_count_reactnative_sum": (int,),
+ "mobile_rum_session_count_roku_sum": (int,),
+ "mobile_rum_session_count_sum": (int,),
+ "mobile_rum_units_sum": (int,),
+ "ndm_netflow_events_sum": (int,),
+ "netflow_indexed_events_count_sum": (int,),
+ "network_device_wireless_top99p": (int,),
+ "network_path_sum": (int,),
+ "npm_host_top99p": (int,),
+ "observability_pipelines_bytes_processed_sum": (int,),
+ "oci_host_sum": (int,),
+ "oci_host_top99p": (int,),
+ "on_call_seat_hwm": (int,),
+ "online_archive_events_count_sum": (int,),
+ "opentelemetry_apm_host_top99p": (int,),
+ "opentelemetry_host_top99p": (int,),
+ "orgs": ([UsageSummaryDateOrg],),
+ "product_analytics_sum": (int,),
+ "profiling_aas_count_top99p": (int,),
+ "profiling_host_top99p": (int,),
+ "proxmox_host_sum": (int,),
+ "proxmox_host_top99p": (int,),
+ "published_app_hwm": (int,),
+ "rum_browser_and_mobile_session_count": (int,),
+ "rum_browser_legacy_session_count_sum": (int,),
+ "rum_browser_lite_session_count_sum": (int,),
+ "rum_browser_replay_session_count_sum": (int,),
+ "rum_indexed_sessions_sum": (int,),
+ "rum_ingested_sessions_sum": (int,),
+ "rum_lite_session_count_sum": (int,),
+ "rum_mobile_legacy_session_count_android_sum": (int,),
+ "rum_mobile_legacy_session_count_flutter_sum": (int,),
+ "rum_mobile_legacy_session_count_ios_sum": (int,),
+ "rum_mobile_legacy_session_count_reactnative_sum": (int,),
+ "rum_mobile_legacy_session_count_roku_sum": (int,),
+ "rum_mobile_lite_session_count_android_sum": (int,),
+ "rum_mobile_lite_session_count_flutter_sum": (int,),
+ "rum_mobile_lite_session_count_ios_sum": (int,),
+ "rum_mobile_lite_session_count_kotlinmultiplatform_sum": (int,),
+ "rum_mobile_lite_session_count_reactnative_sum": (int,),
+ "rum_mobile_lite_session_count_roku_sum": (int,),
+ "rum_mobile_lite_session_count_unity_sum": (int,),
+ "rum_mobile_replay_session_count_android_sum": (int,),
+ "rum_mobile_replay_session_count_ios_sum": (int,),
+ "rum_mobile_replay_session_count_kotlinmultiplatform_sum": (int,),
+ "rum_mobile_replay_session_count_reactnative_sum": (int,),
+ "rum_replay_session_count_sum": (int,),
+ "rum_session_count_sum": (int,),
+ "rum_session_replay_add_on_sum": (int,),
+ "rum_total_session_count_sum": (int,),
+ "rum_units_sum": (int,),
+ "sca_fargate_count_avg": (int,),
+ "sca_fargate_count_hwm": (int,),
+ "sds_apm_scanned_bytes_sum": (int,),
+ "sds_events_scanned_bytes_sum": (int,),
+ "sds_logs_scanned_bytes_sum": (int,),
+ "sds_rum_scanned_bytes_sum": (int,),
+ "sds_total_scanned_bytes_sum": (int,),
+ "serverless_apps_apm_apm_azure_appservice_instances_avg": (int,),
+ "serverless_apps_apm_apm_azure_azurefunction_instances_avg": (int,),
+ "serverless_apps_apm_apm_azure_containerapp_instances_avg": (int,),
+ "serverless_apps_apm_apm_fargate_ecs_tasks_avg": (int,),
+ "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg": (int,),
+ "serverless_apps_apm_apm_gcp_cloudrun_instances_avg": (int,),
+ "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_apm_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_apm_excl_fargate_avg": (int,),
+ "serverless_apps_azure_container_app_instances_avg": (int,),
+ "serverless_apps_azure_count_avg": (int,),
+ "serverless_apps_azure_function_app_instances_avg": (int,),
+ "serverless_apps_azure_web_app_instances_avg": (int,),
+ "serverless_apps_dsm_fargate_tasks_avg": (int,),
+ "serverless_apps_ecs_avg": (int,),
+ "serverless_apps_eks_avg": (int,),
+ "serverless_apps_excl_fargate_avg": (int,),
+ "serverless_apps_excl_fargate_azure_container_app_instances_avg": (int,),
+ "serverless_apps_excl_fargate_azure_function_app_instances_avg": (int,),
+ "serverless_apps_excl_fargate_azure_web_app_instances_avg": (int,),
+ "serverless_apps_excl_fargate_google_cloud_functions_instances_avg": (int,),
+ "serverless_apps_excl_fargate_google_cloud_run_instances_avg": (int,),
+ "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_google_cloud_functions_instances_avg": (int,),
+ "serverless_apps_google_cloud_run_instances_avg": (int,),
+ "serverless_apps_google_count_avg": (int,),
+ "serverless_apps_infra_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_total_count_avg": (int,),
+ "siem_12mo_retention_sum": (int,),
+ "siem_6mo_retention_sum": (int,),
+ "siem_analyzed_logs_add_on_count_sum": (int,),
+ "snmp_device_count_sum": (int,),
+ "snmp_device_count_top99p": (int,),
+ "synthetics_browser_check_calls_count_sum": (int,),
+ "synthetics_check_calls_count_sum": (int,),
+ "synthetics_mobile_test_runs_sum": (int,),
+ "synthetics_parallel_testing_max_slots_hwm": (int,),
+ "trace_search_indexed_events_count_sum": (int,),
+ "twol_ingested_events_bytes_sum": (int,),
+ "universal_service_monitoring_host_top99p": (int,),
+ "vsphere_host_top99p": (int,),
+ "vuln_management_host_count_top99p": (int,),
+ "workflow_executions_usage_sum": (int,),
+ }
+ attribute_map = {
+ "agent_host_top99p": "agent_host_top99p",
+ "ai_credits_agent_builder_ai_credits_sum": "ai_credits_agent_builder_ai_credits_sum",
+ "ai_credits_bits_assistant_ai_credits_sum": "ai_credits_bits_assistant_ai_credits_sum",
+ "ai_credits_bits_dev_ai_credits_sum": "ai_credits_bits_dev_ai_credits_sum",
+ "ai_credits_bits_sre_ai_credits_sum": "ai_credits_bits_sre_ai_credits_sum",
+ "ai_credits_sum": "ai_credits_sum",
+ "apm_azure_app_service_host_top99p": "apm_azure_app_service_host_top99p",
+ "apm_devsecops_host_top99p": "apm_devsecops_host_top99p",
+ "apm_enterprise_standalone_hosts_top99p": "apm_enterprise_standalone_hosts_top99p",
+ "apm_fargate_count_avg": "apm_fargate_count_avg",
+ "apm_host_top99p": "apm_host_top99p",
+ "apm_pro_standalone_hosts_top99p": "apm_pro_standalone_hosts_top99p",
+ "appsec_fargate_count_avg": "appsec_fargate_count_avg",
+ "asm_serverless_sum": "asm_serverless_sum",
+ "audit_logs_lines_indexed_sum": "audit_logs_lines_indexed_sum",
+ "audit_trail_enabled_hwm": "audit_trail_enabled_hwm",
+ "audit_trail_event_forwarding_events_sum": "audit_trail_event_forwarding_events_sum",
+ "avg_profiled_fargate_tasks": "avg_profiled_fargate_tasks",
+ "aws_host_top99p": "aws_host_top99p",
+ "aws_lambda_func_count": "aws_lambda_func_count",
+ "aws_lambda_invocations_sum": "aws_lambda_invocations_sum",
+ "azure_app_service_top99p": "azure_app_service_top99p",
+ "billable_ingested_bytes_sum": "billable_ingested_bytes_sum",
+ "bits_ai_investigations_sum": "bits_ai_investigations_sum",
+ "browser_rum_lite_session_count_sum": "browser_rum_lite_session_count_sum",
+ "browser_rum_replay_session_count_sum": "browser_rum_replay_session_count_sum",
+ "browser_rum_units_sum": "browser_rum_units_sum",
+ "ccm_anthropic_spend_last": "ccm_anthropic_spend_last",
+ "ccm_aws_spend_last": "ccm_aws_spend_last",
+ "ccm_azure_spend_last": "ccm_azure_spend_last",
+ "ccm_confluent_spend_last": "ccm_confluent_spend_last",
+ "ccm_databricks_spend_last": "ccm_databricks_spend_last",
+ "ccm_elastic_spend_last": "ccm_elastic_spend_last",
+ "ccm_fastly_spend_last": "ccm_fastly_spend_last",
+ "ccm_gcp_spend_last": "ccm_gcp_spend_last",
+ "ccm_github_spend_last": "ccm_github_spend_last",
+ "ccm_mongodb_spend_last": "ccm_mongodb_spend_last",
+ "ccm_oci_spend_last": "ccm_oci_spend_last",
+ "ccm_openai_spend_last": "ccm_openai_spend_last",
+ "ccm_snowflake_spend_last": "ccm_snowflake_spend_last",
+ "ccm_spend_monitored_ent_last": "ccm_spend_monitored_ent_last",
+ "ccm_spend_monitored_pro_last": "ccm_spend_monitored_pro_last",
+ "ccm_twilio_spend_last": "ccm_twilio_spend_last",
+ "ci_pipeline_indexed_spans_sum": "ci_pipeline_indexed_spans_sum",
+ "ci_test_indexed_spans_sum": "ci_test_indexed_spans_sum",
+ "ci_visibility_itr_committers_hwm": "ci_visibility_itr_committers_hwm",
+ "ci_visibility_pipeline_committers_hwm": "ci_visibility_pipeline_committers_hwm",
+ "ci_visibility_test_committers_hwm": "ci_visibility_test_committers_hwm",
+ "cloud_cost_management_aws_host_count_avg": "cloud_cost_management_aws_host_count_avg",
+ "cloud_cost_management_azure_host_count_avg": "cloud_cost_management_azure_host_count_avg",
+ "cloud_cost_management_gcp_host_count_avg": "cloud_cost_management_gcp_host_count_avg",
+ "cloud_cost_management_host_count_avg": "cloud_cost_management_host_count_avg",
+ "cloud_cost_management_oci_host_count_avg": "cloud_cost_management_oci_host_count_avg",
+ "cloud_siem_events_sum": "cloud_siem_events_sum",
+ "cloud_siem_indexed_logs_sum": "cloud_siem_indexed_logs_sum",
+ "code_analysis_sa_committers_hwm": "code_analysis_sa_committers_hwm",
+ "code_analysis_sca_committers_hwm": "code_analysis_sca_committers_hwm",
+ "code_security_host_top99p": "code_security_host_top99p",
+ "container_avg": "container_avg",
+ "container_excl_agent_avg": "container_excl_agent_avg",
+ "container_hwm": "container_hwm",
+ "csm_container_enterprise_compliance_count_sum": "csm_container_enterprise_compliance_count_sum",
+ "csm_container_enterprise_cws_count_sum": "csm_container_enterprise_cws_count_sum",
+ "csm_container_enterprise_total_count_sum": "csm_container_enterprise_total_count_sum",
+ "csm_host_enterprise_aas_host_count_top99p": "csm_host_enterprise_aas_host_count_top99p",
+ "csm_host_enterprise_aws_host_count_top99p": "csm_host_enterprise_aws_host_count_top99p",
+ "csm_host_enterprise_azure_host_count_top99p": "csm_host_enterprise_azure_host_count_top99p",
+ "csm_host_enterprise_compliance_host_count_top99p": "csm_host_enterprise_compliance_host_count_top99p",
+ "csm_host_enterprise_cws_host_count_top99p": "csm_host_enterprise_cws_host_count_top99p",
+ "csm_host_enterprise_gcp_host_count_top99p": "csm_host_enterprise_gcp_host_count_top99p",
+ "csm_host_enterprise_oci_host_count_top99p": "csm_host_enterprise_oci_host_count_top99p",
+ "csm_host_enterprise_total_host_count_top99p": "csm_host_enterprise_total_host_count_top99p",
+ "csm_host_pro_hosts_agentless_scanners_sum": "csm_host_pro_hosts_agentless_scanners_sum",
+ "csm_host_pro_hosts_agentless_scanners_top99p": "csm_host_pro_hosts_agentless_scanners_top99p",
+ "csm_host_pro_oci_host_count_top99p": "csm_host_pro_oci_host_count_top99p",
+ "cspm_aas_host_top99p": "cspm_aas_host_top99p",
+ "cspm_aws_host_top99p": "cspm_aws_host_top99p",
+ "cspm_azure_host_top99p": "cspm_azure_host_top99p",
+ "cspm_container_avg": "cspm_container_avg",
+ "cspm_container_hwm": "cspm_container_hwm",
+ "cspm_gcp_host_top99p": "cspm_gcp_host_top99p",
+ "cspm_host_top99p": "cspm_host_top99p",
+ "cspm_hosts_agentless_scanners_sum": "cspm_hosts_agentless_scanners_sum",
+ "cspm_hosts_agentless_scanners_top99p": "cspm_hosts_agentless_scanners_top99p",
+ "custom_ts_avg": "custom_ts_avg",
+ "cws_container_count_avg": "cws_container_count_avg",
+ "cws_fargate_task_avg": "cws_fargate_task_avg",
+ "cws_host_top99p": "cws_host_top99p",
+ "data_jobs_monitoring_host_hr_sum": "data_jobs_monitoring_host_hr_sum",
+ "data_stream_monitoring_host_count_sum": "data_stream_monitoring_host_count_sum",
+ "data_stream_monitoring_host_count_top99p": "data_stream_monitoring_host_count_top99p",
+ "date": "date",
+ "dbm_host_top99p": "dbm_host_top99p",
+ "dbm_queries_count_avg": "dbm_queries_count_avg",
+ "do_jobs_monitoring_orchestrators_job_hours_sum": "do_jobs_monitoring_orchestrators_job_hours_sum",
+ "eph_infra_host_agent_sum": "eph_infra_host_agent_sum",
+ "eph_infra_host_alibaba_sum": "eph_infra_host_alibaba_sum",
+ "eph_infra_host_aws_sum": "eph_infra_host_aws_sum",
+ "eph_infra_host_azure_sum": "eph_infra_host_azure_sum",
+ "eph_infra_host_basic_infra_basic_agent_sum": "eph_infra_host_basic_infra_basic_agent_sum",
+ "eph_infra_host_basic_infra_basic_vsphere_sum": "eph_infra_host_basic_infra_basic_vsphere_sum",
+ "eph_infra_host_basic_sum": "eph_infra_host_basic_sum",
+ "eph_infra_host_ent_sum": "eph_infra_host_ent_sum",
+ "eph_infra_host_gcp_sum": "eph_infra_host_gcp_sum",
+ "eph_infra_host_heroku_sum": "eph_infra_host_heroku_sum",
+ "eph_infra_host_only_aas_sum": "eph_infra_host_only_aas_sum",
+ "eph_infra_host_only_vsphere_sum": "eph_infra_host_only_vsphere_sum",
+ "eph_infra_host_opentelemetry_apm_sum": "eph_infra_host_opentelemetry_apm_sum",
+ "eph_infra_host_opentelemetry_sum": "eph_infra_host_opentelemetry_sum",
+ "eph_infra_host_pro_sum": "eph_infra_host_pro_sum",
+ "eph_infra_host_proplus_sum": "eph_infra_host_proplus_sum",
+ "eph_infra_host_proxmox_sum": "eph_infra_host_proxmox_sum",
+ "error_tracking_apm_error_events_sum": "error_tracking_apm_error_events_sum",
+ "error_tracking_error_events_sum": "error_tracking_error_events_sum",
+ "error_tracking_events_sum": "error_tracking_events_sum",
+ "error_tracking_rum_error_events_sum": "error_tracking_rum_error_events_sum",
+ "event_management_correlation_correlated_events_sum": "event_management_correlation_correlated_events_sum",
+ "event_management_correlation_correlated_related_events_sum": "event_management_correlation_correlated_related_events_sum",
+ "event_management_correlation_sum": "event_management_correlation_sum",
+ "fargate_container_profiler_profiling_fargate_avg": "fargate_container_profiler_profiling_fargate_avg",
+ "fargate_container_profiler_profiling_fargate_eks_avg": "fargate_container_profiler_profiling_fargate_eks_avg",
+ "fargate_tasks_count_avg": "fargate_tasks_count_avg",
+ "fargate_tasks_count_hwm": "fargate_tasks_count_hwm",
+ "feature_flags_config_requests_sum": "feature_flags_config_requests_sum",
+ "flex_logs_compute_large_avg": "flex_logs_compute_large_avg",
+ "flex_logs_compute_medium_avg": "flex_logs_compute_medium_avg",
+ "flex_logs_compute_small_avg": "flex_logs_compute_small_avg",
+ "flex_logs_compute_xlarge_avg": "flex_logs_compute_xlarge_avg",
+ "flex_logs_compute_xsmall_avg": "flex_logs_compute_xsmall_avg",
+ "flex_logs_starter_avg": "flex_logs_starter_avg",
+ "flex_logs_starter_storage_index_avg": "flex_logs_starter_storage_index_avg",
+ "flex_logs_starter_storage_retention_adjustment_avg": "flex_logs_starter_storage_retention_adjustment_avg",
+ "flex_stored_logs_avg": "flex_stored_logs_avg",
+ "forwarding_events_bytes_sum": "forwarding_events_bytes_sum",
+ "gcp_host_top99p": "gcp_host_top99p",
+ "heroku_host_top99p": "heroku_host_top99p",
+ "incident_management_monthly_active_users_hwm": "incident_management_monthly_active_users_hwm",
+ "incident_management_seats_hwm": "incident_management_seats_hwm",
+ "indexed_events_count_sum": "indexed_events_count_sum",
+ "indexed_points_sum": "indexed_points_sum",
+ "infra_cpu_avg": "infra_cpu_avg",
+ "infra_cpu_default_infra_host_vcpu_agent_avg": "infra_cpu_default_infra_host_vcpu_agent_avg",
+ "infra_cpu_default_infra_host_vcpu_agent_basic_avg": "infra_cpu_default_infra_host_vcpu_agent_basic_avg",
+ "infra_cpu_default_infra_host_vcpu_agent_basic_sum": "infra_cpu_default_infra_host_vcpu_agent_basic_sum",
+ "infra_cpu_default_infra_host_vcpu_agent_sum": "infra_cpu_default_infra_host_vcpu_agent_sum",
+ "infra_cpu_default_infra_host_vcpu_aws_avg": "infra_cpu_default_infra_host_vcpu_aws_avg",
+ "infra_cpu_default_infra_host_vcpu_aws_sum": "infra_cpu_default_infra_host_vcpu_aws_sum",
+ "infra_cpu_default_infra_host_vcpu_azure_avg": "infra_cpu_default_infra_host_vcpu_azure_avg",
+ "infra_cpu_default_infra_host_vcpu_azure_sum": "infra_cpu_default_infra_host_vcpu_azure_sum",
+ "infra_cpu_default_infra_host_vcpu_gcp_avg": "infra_cpu_default_infra_host_vcpu_gcp_avg",
+ "infra_cpu_default_infra_host_vcpu_gcp_sum": "infra_cpu_default_infra_host_vcpu_gcp_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_avg": "infra_cpu_default_infra_host_vcpu_nutanix_avg",
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg": "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg",
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_sum": "infra_cpu_default_infra_host_vcpu_nutanix_basic_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_sum": "infra_cpu_default_infra_host_vcpu_nutanix_sum",
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_avg": "infra_cpu_default_infra_host_vcpu_opentelemetry_avg",
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_sum": "infra_cpu_default_infra_host_vcpu_opentelemetry_sum",
+ "infra_cpu_observed_infra_host_vcpu_agent_avg": "infra_cpu_observed_infra_host_vcpu_agent_avg",
+ "infra_cpu_observed_infra_host_vcpu_agent_sum": "infra_cpu_observed_infra_host_vcpu_agent_sum",
+ "infra_cpu_observed_infra_host_vcpu_aws_avg": "infra_cpu_observed_infra_host_vcpu_aws_avg",
+ "infra_cpu_observed_infra_host_vcpu_aws_sum": "infra_cpu_observed_infra_host_vcpu_aws_sum",
+ "infra_cpu_observed_infra_host_vcpu_azure_avg": "infra_cpu_observed_infra_host_vcpu_azure_avg",
+ "infra_cpu_observed_infra_host_vcpu_azure_sum": "infra_cpu_observed_infra_host_vcpu_azure_sum",
+ "infra_cpu_observed_infra_host_vcpu_gcp_avg": "infra_cpu_observed_infra_host_vcpu_gcp_avg",
+ "infra_cpu_observed_infra_host_vcpu_gcp_sum": "infra_cpu_observed_infra_host_vcpu_gcp_sum",
+ "infra_cpu_observed_infra_host_vcpu_nutanix_avg": "infra_cpu_observed_infra_host_vcpu_nutanix_avg",
+ "infra_cpu_observed_infra_host_vcpu_nutanix_sum": "infra_cpu_observed_infra_host_vcpu_nutanix_sum",
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg": "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg",
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_sum": "infra_cpu_observed_infra_host_vcpu_opentelemetry_sum",
+ "infra_cpu_sum": "infra_cpu_sum",
+ "infra_edge_monitoring_devices_top99p": "infra_edge_monitoring_devices_top99p",
+ "infra_host_basic_infra_basic_agent_top99p": "infra_host_basic_infra_basic_agent_top99p",
+ "infra_host_basic_infra_basic_vsphere_top99p": "infra_host_basic_infra_basic_vsphere_top99p",
+ "infra_host_basic_top99p": "infra_host_basic_top99p",
+ "infra_host_top99p": "infra_host_top99p",
+ "infra_storage_mgmt_objects_count_avg": "infra_storage_mgmt_objects_count_avg",
+ "ingest_points_sum": "ingest_points_sum",
+ "ingested_events_bytes_sum": "ingested_events_bytes_sum",
+ "iot_apm_host_sum": "iot_apm_host_sum",
+ "iot_apm_host_top99p": "iot_apm_host_top99p",
+ "iot_device_sum": "iot_device_sum",
+ "iot_device_top99p": "iot_device_top99p",
+ "llm_observability_15day_retention_spans_sum": "llm_observability_15day_retention_spans_sum",
+ "llm_observability_30day_retention_spans_sum": "llm_observability_30day_retention_spans_sum",
+ "llm_observability_60day_retention_spans_sum": "llm_observability_60day_retention_spans_sum",
+ "llm_observability_90day_retention_spans_sum": "llm_observability_90day_retention_spans_sum",
+ "llm_observability_min_spend_sum": "llm_observability_min_spend_sum",
+ "llm_observability_sum": "llm_observability_sum",
+ "logs_archive_search_gb_scanned_sum": "logs_archive_search_gb_scanned_sum",
+ "metric_names_sum": "metric_names_sum",
+ "mobile_rum_lite_session_count_sum": "mobile_rum_lite_session_count_sum",
+ "mobile_rum_session_count_android_sum": "mobile_rum_session_count_android_sum",
+ "mobile_rum_session_count_flutter_sum": "mobile_rum_session_count_flutter_sum",
+ "mobile_rum_session_count_ios_sum": "mobile_rum_session_count_ios_sum",
+ "mobile_rum_session_count_reactnative_sum": "mobile_rum_session_count_reactnative_sum",
+ "mobile_rum_session_count_roku_sum": "mobile_rum_session_count_roku_sum",
+ "mobile_rum_session_count_sum": "mobile_rum_session_count_sum",
+ "mobile_rum_units_sum": "mobile_rum_units_sum",
+ "ndm_netflow_events_sum": "ndm_netflow_events_sum",
+ "netflow_indexed_events_count_sum": "netflow_indexed_events_count_sum",
+ "network_device_wireless_top99p": "network_device_wireless_top99p",
+ "network_path_sum": "network_path_sum",
+ "npm_host_top99p": "npm_host_top99p",
+ "observability_pipelines_bytes_processed_sum": "observability_pipelines_bytes_processed_sum",
+ "oci_host_sum": "oci_host_sum",
+ "oci_host_top99p": "oci_host_top99p",
+ "on_call_seat_hwm": "on_call_seat_hwm",
+ "online_archive_events_count_sum": "online_archive_events_count_sum",
+ "opentelemetry_apm_host_top99p": "opentelemetry_apm_host_top99p",
+ "opentelemetry_host_top99p": "opentelemetry_host_top99p",
+ "orgs": "orgs",
+ "product_analytics_sum": "product_analytics_sum",
+ "profiling_aas_count_top99p": "profiling_aas_count_top99p",
+ "profiling_host_top99p": "profiling_host_top99p",
+ "proxmox_host_sum": "proxmox_host_sum",
+ "proxmox_host_top99p": "proxmox_host_top99p",
+ "published_app_hwm": "published_app_hwm",
+ "rum_browser_and_mobile_session_count": "rum_browser_and_mobile_session_count",
+ "rum_browser_legacy_session_count_sum": "rum_browser_legacy_session_count_sum",
+ "rum_browser_lite_session_count_sum": "rum_browser_lite_session_count_sum",
+ "rum_browser_replay_session_count_sum": "rum_browser_replay_session_count_sum",
+ "rum_indexed_sessions_sum": "rum_indexed_sessions_sum",
+ "rum_ingested_sessions_sum": "rum_ingested_sessions_sum",
+ "rum_lite_session_count_sum": "rum_lite_session_count_sum",
+ "rum_mobile_legacy_session_count_android_sum": "rum_mobile_legacy_session_count_android_sum",
+ "rum_mobile_legacy_session_count_flutter_sum": "rum_mobile_legacy_session_count_flutter_sum",
+ "rum_mobile_legacy_session_count_ios_sum": "rum_mobile_legacy_session_count_ios_sum",
+ "rum_mobile_legacy_session_count_reactnative_sum": "rum_mobile_legacy_session_count_reactnative_sum",
+ "rum_mobile_legacy_session_count_roku_sum": "rum_mobile_legacy_session_count_roku_sum",
+ "rum_mobile_lite_session_count_android_sum": "rum_mobile_lite_session_count_android_sum",
+ "rum_mobile_lite_session_count_flutter_sum": "rum_mobile_lite_session_count_flutter_sum",
+ "rum_mobile_lite_session_count_ios_sum": "rum_mobile_lite_session_count_ios_sum",
+ "rum_mobile_lite_session_count_kotlinmultiplatform_sum": "rum_mobile_lite_session_count_kotlinmultiplatform_sum",
+ "rum_mobile_lite_session_count_reactnative_sum": "rum_mobile_lite_session_count_reactnative_sum",
+ "rum_mobile_lite_session_count_roku_sum": "rum_mobile_lite_session_count_roku_sum",
+ "rum_mobile_lite_session_count_unity_sum": "rum_mobile_lite_session_count_unity_sum",
+ "rum_mobile_replay_session_count_android_sum": "rum_mobile_replay_session_count_android_sum",
+ "rum_mobile_replay_session_count_ios_sum": "rum_mobile_replay_session_count_ios_sum",
+ "rum_mobile_replay_session_count_kotlinmultiplatform_sum": "rum_mobile_replay_session_count_kotlinmultiplatform_sum",
+ "rum_mobile_replay_session_count_reactnative_sum": "rum_mobile_replay_session_count_reactnative_sum",
+ "rum_replay_session_count_sum": "rum_replay_session_count_sum",
+ "rum_session_count_sum": "rum_session_count_sum",
+ "rum_session_replay_add_on_sum": "rum_session_replay_add_on_sum",
+ "rum_total_session_count_sum": "rum_total_session_count_sum",
+ "rum_units_sum": "rum_units_sum",
+ "sca_fargate_count_avg": "sca_fargate_count_avg",
+ "sca_fargate_count_hwm": "sca_fargate_count_hwm",
+ "sds_apm_scanned_bytes_sum": "sds_apm_scanned_bytes_sum",
+ "sds_events_scanned_bytes_sum": "sds_events_scanned_bytes_sum",
+ "sds_logs_scanned_bytes_sum": "sds_logs_scanned_bytes_sum",
+ "sds_rum_scanned_bytes_sum": "sds_rum_scanned_bytes_sum",
+ "sds_total_scanned_bytes_sum": "sds_total_scanned_bytes_sum",
+ "serverless_apps_apm_apm_azure_appservice_instances_avg": "serverless_apps_apm_apm_azure_appservice_instances_avg",
+ "serverless_apps_apm_apm_azure_azurefunction_instances_avg": "serverless_apps_apm_apm_azure_azurefunction_instances_avg",
+ "serverless_apps_apm_apm_azure_containerapp_instances_avg": "serverless_apps_apm_apm_azure_containerapp_instances_avg",
+ "serverless_apps_apm_apm_fargate_ecs_tasks_avg": "serverless_apps_apm_apm_fargate_ecs_tasks_avg",
+ "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg": "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg",
+ "serverless_apps_apm_apm_gcp_cloudrun_instances_avg": "serverless_apps_apm_apm_gcp_cloudrun_instances_avg",
+ "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg": "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_apm_avg": "serverless_apps_apm_avg",
+ "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg": "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg": "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg": "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg": "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg": "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg": "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_apm_excl_fargate_avg": "serverless_apps_apm_excl_fargate_avg",
+ "serverless_apps_azure_container_app_instances_avg": "serverless_apps_azure_container_app_instances_avg",
+ "serverless_apps_azure_count_avg": "serverless_apps_azure_count_avg",
+ "serverless_apps_azure_function_app_instances_avg": "serverless_apps_azure_function_app_instances_avg",
+ "serverless_apps_azure_web_app_instances_avg": "serverless_apps_azure_web_app_instances_avg",
+ "serverless_apps_dsm_fargate_tasks_avg": "serverless_apps_dsm_fargate_tasks_avg",
+ "serverless_apps_ecs_avg": "serverless_apps_ecs_avg",
+ "serverless_apps_eks_avg": "serverless_apps_eks_avg",
+ "serverless_apps_excl_fargate_avg": "serverless_apps_excl_fargate_avg",
+ "serverless_apps_excl_fargate_azure_container_app_instances_avg": "serverless_apps_excl_fargate_azure_container_app_instances_avg",
+ "serverless_apps_excl_fargate_azure_function_app_instances_avg": "serverless_apps_excl_fargate_azure_function_app_instances_avg",
+ "serverless_apps_excl_fargate_azure_web_app_instances_avg": "serverless_apps_excl_fargate_azure_web_app_instances_avg",
+ "serverless_apps_excl_fargate_google_cloud_functions_instances_avg": "serverless_apps_excl_fargate_google_cloud_functions_instances_avg",
+ "serverless_apps_excl_fargate_google_cloud_run_instances_avg": "serverless_apps_excl_fargate_google_cloud_run_instances_avg",
+ "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg": "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_google_cloud_functions_instances_avg": "serverless_apps_google_cloud_functions_instances_avg",
+ "serverless_apps_google_cloud_run_instances_avg": "serverless_apps_google_cloud_run_instances_avg",
+ "serverless_apps_google_count_avg": "serverless_apps_google_count_avg",
+ "serverless_apps_infra_gcp_gke_autopilot_pods_avg": "serverless_apps_infra_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_total_count_avg": "serverless_apps_total_count_avg",
+ "siem_12mo_retention_sum": "siem_12mo_retention_sum",
+ "siem_6mo_retention_sum": "siem_6mo_retention_sum",
+ "siem_analyzed_logs_add_on_count_sum": "siem_analyzed_logs_add_on_count_sum",
+ "snmp_device_count_sum": "snmp_device_count_sum",
+ "snmp_device_count_top99p": "snmp_device_count_top99p",
+ "synthetics_browser_check_calls_count_sum": "synthetics_browser_check_calls_count_sum",
+ "synthetics_check_calls_count_sum": "synthetics_check_calls_count_sum",
+ "synthetics_mobile_test_runs_sum": "synthetics_mobile_test_runs_sum",
+ "synthetics_parallel_testing_max_slots_hwm": "synthetics_parallel_testing_max_slots_hwm",
+ "trace_search_indexed_events_count_sum": "trace_search_indexed_events_count_sum",
+ "twol_ingested_events_bytes_sum": "twol_ingested_events_bytes_sum",
+ "universal_service_monitoring_host_top99p": "universal_service_monitoring_host_top99p",
+ "vsphere_host_top99p": "vsphere_host_top99p",
+ "vuln_management_host_count_top99p": "vuln_management_host_count_top99p",
+ "workflow_executions_usage_sum": "workflow_executions_usage_sum",
+ }
+
+ def __init__(self_, agent_host_top99p: Union[int, UnsetType]=unset, ai_credits_agent_builder_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_bits_assistant_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_bits_dev_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_bits_sre_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_sum: Union[int, UnsetType]=unset, apm_azure_app_service_host_top99p: Union[int, UnsetType]=unset, apm_devsecops_host_top99p: Union[int, UnsetType]=unset, apm_enterprise_standalone_hosts_top99p: Union[int, UnsetType]=unset, apm_fargate_count_avg: Union[int, UnsetType]=unset, apm_host_top99p: Union[int, UnsetType]=unset, apm_pro_standalone_hosts_top99p: Union[int, UnsetType]=unset, appsec_fargate_count_avg: Union[int, UnsetType]=unset, asm_serverless_sum: Union[int, UnsetType]=unset, audit_logs_lines_indexed_sum: Union[int, UnsetType]=unset, audit_trail_enabled_hwm: Union[int, UnsetType]=unset, audit_trail_event_forwarding_events_sum: Union[int, UnsetType]=unset, avg_profiled_fargate_tasks: Union[int, UnsetType]=unset, aws_host_top99p: Union[int, UnsetType]=unset, aws_lambda_func_count: Union[int, UnsetType]=unset, aws_lambda_invocations_sum: Union[int, UnsetType]=unset, azure_app_service_top99p: Union[int, UnsetType]=unset, billable_ingested_bytes_sum: Union[int, UnsetType]=unset, bits_ai_investigations_sum: Union[int, UnsetType]=unset, browser_rum_lite_session_count_sum: Union[int, UnsetType]=unset, browser_rum_replay_session_count_sum: Union[int, UnsetType]=unset, browser_rum_units_sum: Union[int, UnsetType]=unset, ccm_anthropic_spend_last: Union[int, UnsetType]=unset, ccm_aws_spend_last: Union[int, UnsetType]=unset, ccm_azure_spend_last: Union[int, UnsetType]=unset, ccm_confluent_spend_last: Union[int, UnsetType]=unset, ccm_databricks_spend_last: Union[int, UnsetType]=unset, ccm_elastic_spend_last: Union[int, UnsetType]=unset, ccm_fastly_spend_last: Union[int, UnsetType]=unset, ccm_gcp_spend_last: Union[int, UnsetType]=unset, ccm_github_spend_last: Union[int, UnsetType]=unset, ccm_mongodb_spend_last: Union[int, UnsetType]=unset, ccm_oci_spend_last: Union[int, UnsetType]=unset, ccm_openai_spend_last: Union[int, UnsetType]=unset, ccm_snowflake_spend_last: Union[int, UnsetType]=unset, ccm_spend_monitored_ent_last: Union[int, UnsetType]=unset, ccm_spend_monitored_pro_last: Union[int, UnsetType]=unset, ccm_twilio_spend_last: Union[int, UnsetType]=unset, ci_pipeline_indexed_spans_sum: Union[int, UnsetType]=unset, ci_test_indexed_spans_sum: Union[int, UnsetType]=unset, ci_visibility_itr_committers_hwm: Union[int, UnsetType]=unset, ci_visibility_pipeline_committers_hwm: Union[int, UnsetType]=unset, ci_visibility_test_committers_hwm: Union[int, UnsetType]=unset, cloud_cost_management_aws_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_azure_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_gcp_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_oci_host_count_avg: Union[int, UnsetType]=unset, cloud_siem_events_sum: Union[int, UnsetType]=unset, cloud_siem_indexed_logs_sum: Union[int, UnsetType]=unset, code_analysis_sa_committers_hwm: Union[int, UnsetType]=unset, code_analysis_sca_committers_hwm: Union[int, UnsetType]=unset, code_security_host_top99p: Union[int, UnsetType]=unset, container_avg: Union[int, UnsetType]=unset, container_excl_agent_avg: Union[int, UnsetType]=unset, container_hwm: Union[int, UnsetType]=unset, csm_container_enterprise_compliance_count_sum: Union[int, UnsetType]=unset, csm_container_enterprise_cws_count_sum: Union[int, UnsetType]=unset, csm_container_enterprise_total_count_sum: Union[int, UnsetType]=unset, csm_host_enterprise_aas_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_aws_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_azure_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_compliance_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_cws_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_gcp_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_oci_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_total_host_count_top99p: Union[int, UnsetType]=unset, csm_host_pro_hosts_agentless_scanners_sum: Union[int, UnsetType]=unset, csm_host_pro_hosts_agentless_scanners_top99p: Union[int, UnsetType]=unset, csm_host_pro_oci_host_count_top99p: Union[int, UnsetType]=unset, cspm_aas_host_top99p: Union[int, UnsetType]=unset, cspm_aws_host_top99p: Union[int, UnsetType]=unset, cspm_azure_host_top99p: Union[int, UnsetType]=unset, cspm_container_avg: Union[int, UnsetType]=unset, cspm_container_hwm: Union[int, UnsetType]=unset, cspm_gcp_host_top99p: Union[int, UnsetType]=unset, cspm_host_top99p: Union[int, UnsetType]=unset, cspm_hosts_agentless_scanners_sum: Union[int, UnsetType]=unset, cspm_hosts_agentless_scanners_top99p: Union[int, UnsetType]=unset, custom_ts_avg: Union[int, UnsetType]=unset, cws_container_count_avg: Union[int, UnsetType]=unset, cws_fargate_task_avg: Union[int, UnsetType]=unset, cws_host_top99p: Union[int, UnsetType]=unset, data_jobs_monitoring_host_hr_sum: Union[int, UnsetType]=unset, data_stream_monitoring_host_count_sum: Union[int, UnsetType]=unset, data_stream_monitoring_host_count_top99p: Union[int, UnsetType]=unset, date: Union[datetime, UnsetType]=unset, dbm_host_top99p: Union[int, UnsetType]=unset, dbm_queries_count_avg: Union[int, UnsetType]=unset, do_jobs_monitoring_orchestrators_job_hours_sum: Union[int, UnsetType]=unset, eph_infra_host_agent_sum: Union[int, UnsetType]=unset, eph_infra_host_alibaba_sum: Union[int, UnsetType]=unset, eph_infra_host_aws_sum: Union[int, UnsetType]=unset, eph_infra_host_azure_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_infra_basic_agent_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_infra_basic_vsphere_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_sum: Union[int, UnsetType]=unset, eph_infra_host_ent_sum: Union[int, UnsetType]=unset, eph_infra_host_gcp_sum: Union[int, UnsetType]=unset, eph_infra_host_heroku_sum: Union[int, UnsetType]=unset, eph_infra_host_only_aas_sum: Union[int, UnsetType]=unset, eph_infra_host_only_vsphere_sum: Union[int, UnsetType]=unset, eph_infra_host_opentelemetry_apm_sum: Union[int, UnsetType]=unset, eph_infra_host_opentelemetry_sum: Union[int, UnsetType]=unset, eph_infra_host_pro_sum: Union[int, UnsetType]=unset, eph_infra_host_proplus_sum: Union[int, UnsetType]=unset, eph_infra_host_proxmox_sum: Union[int, UnsetType]=unset, error_tracking_apm_error_events_sum: Union[int, UnsetType]=unset, error_tracking_error_events_sum: Union[int, UnsetType]=unset, error_tracking_events_sum: Union[int, UnsetType]=unset, error_tracking_rum_error_events_sum: Union[int, UnsetType]=unset, event_management_correlation_correlated_events_sum: Union[int, UnsetType]=unset, event_management_correlation_correlated_related_events_sum: Union[int, UnsetType]=unset, event_management_correlation_sum: Union[int, UnsetType]=unset, fargate_container_profiler_profiling_fargate_avg: Union[int, UnsetType]=unset, fargate_container_profiler_profiling_fargate_eks_avg: Union[int, UnsetType]=unset, fargate_tasks_count_avg: Union[int, UnsetType]=unset, fargate_tasks_count_hwm: Union[int, UnsetType]=unset, feature_flags_config_requests_sum: Union[int, UnsetType]=unset, flex_logs_compute_large_avg: Union[int, UnsetType]=unset, flex_logs_compute_medium_avg: Union[int, UnsetType]=unset, flex_logs_compute_small_avg: Union[int, UnsetType]=unset, flex_logs_compute_xlarge_avg: Union[int, UnsetType]=unset, flex_logs_compute_xsmall_avg: Union[int, UnsetType]=unset, flex_logs_starter_avg: Union[int, UnsetType]=unset, flex_logs_starter_storage_index_avg: Union[int, UnsetType]=unset, flex_logs_starter_storage_retention_adjustment_avg: Union[int, UnsetType]=unset, flex_stored_logs_avg: Union[int, UnsetType]=unset, forwarding_events_bytes_sum: Union[int, UnsetType]=unset, gcp_host_top99p: Union[int, UnsetType]=unset, heroku_host_top99p: Union[int, UnsetType]=unset, incident_management_monthly_active_users_hwm: Union[int, UnsetType]=unset, incident_management_seats_hwm: Union[int, UnsetType]=unset, indexed_events_count_sum: Union[int, UnsetType]=unset, indexed_points_sum: Union[int, UnsetType]=unset, infra_cpu_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_basic_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_basic_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_aws_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_aws_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_azure_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_azure_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_gcp_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_gcp_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_opentelemetry_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_opentelemetry_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_agent_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_agent_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_aws_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_aws_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_azure_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_azure_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_gcp_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_gcp_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_nutanix_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_nutanix_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: Union[int, UnsetType]=unset, infra_cpu_sum: Union[int, UnsetType]=unset, infra_edge_monitoring_devices_top99p: Union[int, UnsetType]=unset, infra_host_basic_infra_basic_agent_top99p: Union[int, UnsetType]=unset, infra_host_basic_infra_basic_vsphere_top99p: Union[int, UnsetType]=unset, infra_host_basic_top99p: Union[int, UnsetType]=unset, infra_host_top99p: Union[int, UnsetType]=unset, infra_storage_mgmt_objects_count_avg: Union[int, UnsetType]=unset, ingest_points_sum: Union[int, UnsetType]=unset, ingested_events_bytes_sum: Union[int, UnsetType]=unset, iot_apm_host_sum: Union[int, UnsetType]=unset, iot_apm_host_top99p: Union[int, UnsetType]=unset, iot_device_sum: Union[int, UnsetType]=unset, iot_device_top99p: Union[int, UnsetType]=unset, llm_observability_15day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_30day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_60day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_90day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_min_spend_sum: Union[int, UnsetType]=unset, llm_observability_sum: Union[int, UnsetType]=unset, logs_archive_search_gb_scanned_sum: Union[int, UnsetType]=unset, metric_names_sum: Union[int, UnsetType]=unset, mobile_rum_lite_session_count_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_android_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_flutter_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_ios_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_reactnative_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_roku_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_sum: Union[int, UnsetType]=unset, mobile_rum_units_sum: Union[int, UnsetType]=unset, ndm_netflow_events_sum: Union[int, UnsetType]=unset, netflow_indexed_events_count_sum: Union[int, UnsetType]=unset, network_device_wireless_top99p: Union[int, UnsetType]=unset, network_path_sum: Union[int, UnsetType]=unset, npm_host_top99p: Union[int, UnsetType]=unset, observability_pipelines_bytes_processed_sum: Union[int, UnsetType]=unset, oci_host_sum: Union[int, UnsetType]=unset, oci_host_top99p: Union[int, UnsetType]=unset, on_call_seat_hwm: Union[int, UnsetType]=unset, online_archive_events_count_sum: Union[int, UnsetType]=unset, opentelemetry_apm_host_top99p: Union[int, UnsetType]=unset, opentelemetry_host_top99p: Union[int, UnsetType]=unset, orgs: Union[List[UsageSummaryDateOrg], UnsetType]=unset, product_analytics_sum: Union[int, UnsetType]=unset, profiling_aas_count_top99p: Union[int, UnsetType]=unset, profiling_host_top99p: Union[int, UnsetType]=unset, proxmox_host_sum: Union[int, UnsetType]=unset, proxmox_host_top99p: Union[int, UnsetType]=unset, published_app_hwm: Union[int, UnsetType]=unset, rum_browser_and_mobile_session_count: Union[int, UnsetType]=unset, rum_browser_legacy_session_count_sum: Union[int, UnsetType]=unset, rum_browser_lite_session_count_sum: Union[int, UnsetType]=unset, rum_browser_replay_session_count_sum: Union[int, UnsetType]=unset, rum_indexed_sessions_sum: Union[int, UnsetType]=unset, rum_ingested_sessions_sum: Union[int, UnsetType]=unset, rum_lite_session_count_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_android_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_flutter_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_ios_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_reactnative_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_roku_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_android_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_flutter_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_ios_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_kotlinmultiplatform_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_reactnative_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_roku_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_unity_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_android_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_ios_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_kotlinmultiplatform_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_reactnative_sum: Union[int, UnsetType]=unset, rum_replay_session_count_sum: Union[int, UnsetType]=unset, rum_session_count_sum: Union[int, UnsetType]=unset, rum_session_replay_add_on_sum: Union[int, UnsetType]=unset, rum_total_session_count_sum: Union[int, UnsetType]=unset, rum_units_sum: Union[int, UnsetType]=unset, sca_fargate_count_avg: Union[int, UnsetType]=unset, sca_fargate_count_hwm: Union[int, UnsetType]=unset, sds_apm_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_events_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_logs_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_rum_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_total_scanned_bytes_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_appservice_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_azurefunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_containerapp_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_fargate_ecs_tasks_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_cloudfunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_cloudrun_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_apm_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_avg: Union[int, UnsetType]=unset, serverless_apps_azure_container_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_azure_count_avg: Union[int, UnsetType]=unset, serverless_apps_azure_function_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_azure_web_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_dsm_fargate_tasks_avg: Union[int, UnsetType]=unset, serverless_apps_ecs_avg: Union[int, UnsetType]=unset, serverless_apps_eks_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_container_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_function_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_web_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_google_cloud_functions_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_google_cloud_run_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_google_cloud_functions_instances_avg: Union[int, UnsetType]=unset, serverless_apps_google_cloud_run_instances_avg: Union[int, UnsetType]=unset, serverless_apps_google_count_avg: Union[int, UnsetType]=unset, serverless_apps_infra_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_total_count_avg: Union[int, UnsetType]=unset, siem_12mo_retention_sum: Union[int, UnsetType]=unset, siem_6mo_retention_sum: Union[int, UnsetType]=unset, siem_analyzed_logs_add_on_count_sum: Union[int, UnsetType]=unset, snmp_device_count_sum: Union[int, UnsetType]=unset, snmp_device_count_top99p: Union[int, UnsetType]=unset, synthetics_browser_check_calls_count_sum: Union[int, UnsetType]=unset, synthetics_check_calls_count_sum: Union[int, UnsetType]=unset, synthetics_mobile_test_runs_sum: Union[int, UnsetType]=unset, synthetics_parallel_testing_max_slots_hwm: Union[int, UnsetType]=unset, trace_search_indexed_events_count_sum: Union[int, UnsetType]=unset, twol_ingested_events_bytes_sum: Union[int, UnsetType]=unset, universal_service_monitoring_host_top99p: Union[int, UnsetType]=unset, vsphere_host_top99p: Union[int, UnsetType]=unset, vuln_management_host_count_top99p: Union[int, UnsetType]=unset, workflow_executions_usage_sum: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Response with hourly report of all data billed by Datadog for all organizations.
+
+ For SDK users only: all fields at this response level are accessible through the
+ ``additionalProperties`` map. Existing typed-field getters are unchanged. New billing
+ dimensions will not have typed-field getters. Use
+ `Get available fields for usage summary `_
+ to enumerate every available key.
+
+ :param agent_host_top99p: Shows the 99th percentile of all agent hosts over all hours in the current date for all organizations.
+ :type agent_host_top99p: int, optional
+
+ :param ai_credits_agent_builder_ai_credits_sum: Shows the sum of all AI credits used by Agent Builder over all hours in the current date for all organizations.
+ :type ai_credits_agent_builder_ai_credits_sum: int, optional
+
+ :param ai_credits_bits_assistant_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for all organizations.
+ :type ai_credits_bits_assistant_ai_credits_sum: int, optional
+
+ :param ai_credits_bits_dev_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for all organizations.
+ :type ai_credits_bits_dev_ai_credits_sum: int, optional
+
+ :param ai_credits_bits_sre_ai_credits_sum: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for all organizations.
+ :type ai_credits_bits_sre_ai_credits_sum: int, optional
+
+ :param ai_credits_sum: Shows the sum of all AI credits over all hours in the current date for all organizations.
+ :type ai_credits_sum: int, optional
+
+ :param apm_azure_app_service_host_top99p: Shows the 99th percentile of all Azure app services using APM over all hours in the current date all organizations.
+ :type apm_azure_app_service_host_top99p: int, optional
+
+ :param apm_devsecops_host_top99p: Shows the 99th percentile of all APM DevSecOps hosts over all hours in the current date for the given org.
+ :type apm_devsecops_host_top99p: int, optional
+
+ :param apm_enterprise_standalone_hosts_top99p: Shows the 99th percentile of all distinct standalone Enterprise hosts over all hours in the current date for all organizations.
+ :type apm_enterprise_standalone_hosts_top99p: int, optional
+
+ :param apm_fargate_count_avg: Shows the average of all APM ECS Fargate tasks over all hours in the current date for all organizations.
+ :type apm_fargate_count_avg: int, optional
+
+ :param apm_host_top99p: Shows the 99th percentile of all distinct APM hosts over all hours in the current date for all organizations.
+ :type apm_host_top99p: int, optional
+
+ :param apm_pro_standalone_hosts_top99p: Shows the 99th percentile of all distinct standalone Pro hosts over all hours in the current date for all organizations.
+ :type apm_pro_standalone_hosts_top99p: int, optional
+
+ :param appsec_fargate_count_avg: Shows the average of all Application Security Monitoring ECS Fargate tasks over all hours in the current date for all organizations.
+ :type appsec_fargate_count_avg: int, optional
+
+ :param asm_serverless_sum: Shows the sum of all Application Security Monitoring Serverless invocations over all hours in the current date for all organizations.
+ :type asm_serverless_sum: int, optional
+
+ :param audit_logs_lines_indexed_sum: Shows the sum of audit logs lines indexed over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type audit_logs_lines_indexed_sum: int, optional
+
+ :param audit_trail_enabled_hwm: Shows the number of organizations that had Audit Trail enabled in the current date.
+ :type audit_trail_enabled_hwm: int, optional
+
+ :param audit_trail_event_forwarding_events_sum: Shows the sum of all Audit Trail event forwarding events over all hours in the current date for all organizations.
+ :type audit_trail_event_forwarding_events_sum: int, optional
+
+ :param avg_profiled_fargate_tasks: The average total count for Fargate Container Profiler over all hours in the current date for all organizations.
+ :type avg_profiled_fargate_tasks: int, optional
+
+ :param aws_host_top99p: Shows the 99th percentile of all AWS hosts over all hours in the current date for all organizations.
+ :type aws_host_top99p: int, optional
+
+ :param aws_lambda_func_count: Shows the average of the number of functions that executed 1 or more times each hour in the current date for all organizations.
+ :type aws_lambda_func_count: int, optional
+
+ :param aws_lambda_invocations_sum: Shows the sum of all AWS Lambda invocations over all hours in the current date for all organizations.
+ :type aws_lambda_invocations_sum: int, optional
+
+ :param azure_app_service_top99p: Shows the 99th percentile of all Azure app services over all hours in the current date for all organizations.
+ :type azure_app_service_top99p: int, optional
+
+ :param billable_ingested_bytes_sum: Shows the sum of all log bytes ingested over all hours in the current date for all organizations.
+ :type billable_ingested_bytes_sum: int, optional
+
+ :param bits_ai_investigations_sum: Shows the sum of all Bits AI Investigations over all hours in the current date for all organizations.
+ :type bits_ai_investigations_sum: int, optional
+
+ :param browser_rum_lite_session_count_sum: Shows the sum of all browser lite sessions over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type browser_rum_lite_session_count_sum: int, optional
+
+ :param browser_rum_replay_session_count_sum: Shows the sum of all browser replay sessions over all hours in the current date for all organizations (To be deprecated on October 1st, 2024).
+ :type browser_rum_replay_session_count_sum: int, optional
+
+ :param browser_rum_units_sum: Shows the sum of all browser RUM units over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type browser_rum_units_sum: int, optional
+
+ :param ccm_anthropic_spend_last: Shows the last value of Anthropic cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_anthropic_spend_last: int, optional
+
+ :param ccm_aws_spend_last: Shows the last value of AWS cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_aws_spend_last: int, optional
+
+ :param ccm_azure_spend_last: Shows the last value of Azure cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_azure_spend_last: int, optional
+
+ :param ccm_confluent_spend_last: Shows the last value of Confluent cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_confluent_spend_last: int, optional
+
+ :param ccm_databricks_spend_last: Shows the last value of Databricks cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_databricks_spend_last: int, optional
+
+ :param ccm_elastic_spend_last: Shows the last value of Elastic cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_elastic_spend_last: int, optional
+
+ :param ccm_fastly_spend_last: Shows the last value of Fastly cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_fastly_spend_last: int, optional
+
+ :param ccm_gcp_spend_last: Shows the last value of GCP cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_gcp_spend_last: int, optional
+
+ :param ccm_github_spend_last: Shows the last value of GitHub cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_github_spend_last: int, optional
+
+ :param ccm_mongodb_spend_last: Shows the last value of MongoDB cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_mongodb_spend_last: int, optional
+
+ :param ccm_oci_spend_last: Shows the last value of OCI cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_oci_spend_last: int, optional
+
+ :param ccm_openai_spend_last: Shows the last value of OpenAI cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_openai_spend_last: int, optional
+
+ :param ccm_snowflake_spend_last: Shows the last value of Snowflake cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_snowflake_spend_last: int, optional
+
+ :param ccm_spend_monitored_ent_last: Shows the last value of the amount of cloud spend monitored for Enterprise over all hours in the current date for all organizations.
+ :type ccm_spend_monitored_ent_last: int, optional
+
+ :param ccm_spend_monitored_pro_last: Shows the last value of the amount of cloud spend monitored for Pro over all hours in the current date for all organizations.
+ :type ccm_spend_monitored_pro_last: int, optional
+
+ :param ccm_twilio_spend_last: Shows the last value of Twilio cloud spend monitored over all hours in the current date for all organizations.
+ :type ccm_twilio_spend_last: int, optional
+
+ :param ci_pipeline_indexed_spans_sum: Shows the sum of all CI pipeline indexed spans over all hours in the current month for all organizations.
+ :type ci_pipeline_indexed_spans_sum: int, optional
+
+ :param ci_test_indexed_spans_sum: Shows the sum of all CI test indexed spans over all hours in the current month for all organizations.
+ :type ci_test_indexed_spans_sum: int, optional
+
+ :param ci_visibility_itr_committers_hwm: Shows the high-water mark of all CI visibility intelligent test runner committers over all hours in the current month for all organizations.
+ :type ci_visibility_itr_committers_hwm: int, optional
+
+ :param ci_visibility_pipeline_committers_hwm: Shows the high-water mark of all CI visibility pipeline committers over all hours in the current month for all organizations.
+ :type ci_visibility_pipeline_committers_hwm: int, optional
+
+ :param ci_visibility_test_committers_hwm: Shows the high-water mark of all CI visibility test committers over all hours in the current month for all organizations.
+ :type ci_visibility_test_committers_hwm: int, optional
+
+ :param cloud_cost_management_aws_host_count_avg: Host count average of Cloud Cost Management for AWS for the given date and given organization.
+ :type cloud_cost_management_aws_host_count_avg: int, optional
+
+ :param cloud_cost_management_azure_host_count_avg: Host count average of Cloud Cost Management for Azure for the given date and given organization.
+ :type cloud_cost_management_azure_host_count_avg: int, optional
+
+ :param cloud_cost_management_gcp_host_count_avg: Host count average of Cloud Cost Management for GCP for the given date and given organization.
+ :type cloud_cost_management_gcp_host_count_avg: int, optional
+
+ :param cloud_cost_management_host_count_avg: Host count average of Cloud Cost Management for all cloud providers for the given date and given organization.
+ :type cloud_cost_management_host_count_avg: int, optional
+
+ :param cloud_cost_management_oci_host_count_avg: Average host count for Cloud Cost Management on OCI for the given date and organization.
+ :type cloud_cost_management_oci_host_count_avg: int, optional
+
+ :param cloud_siem_events_sum: Shows the sum of all Cloud Security Information and Event Management events over all hours in the current date for the given org.
+ :type cloud_siem_events_sum: int, optional
+
+ :param cloud_siem_indexed_logs_sum: Shows the sum of all Cloud SIEM Indexed Logs over all hours in the current date for the given org.
+ :type cloud_siem_indexed_logs_sum: int, optional
+
+ :param code_analysis_sa_committers_hwm: Shows the high-water mark of all Static Analysis committers over all hours in the current date for the given org.
+ :type code_analysis_sa_committers_hwm: int, optional
+
+ :param code_analysis_sca_committers_hwm: Shows the high-water mark of all static Software Composition Analysis committers over all hours in the current date for the given org.
+ :type code_analysis_sca_committers_hwm: int, optional
+
+ :param code_security_host_top99p: Shows the 99th percentile of all Code Security hosts over all hours in the current date for the given org.
+ :type code_security_host_top99p: int, optional
+
+ :param container_avg: Shows the average of all distinct containers over all hours in the current date for all organizations.
+ :type container_avg: int, optional
+
+ :param container_excl_agent_avg: Shows the average of containers without the Datadog Agent over all hours in the current date for all organizations.
+ :type container_excl_agent_avg: int, optional
+
+ :param container_hwm: Shows the high-water mark of all distinct containers over all hours in the current date for all organizations.
+ :type container_hwm: int, optional
+
+ :param csm_container_enterprise_compliance_count_sum: Shows the sum of all Cloud Security Management Enterprise compliance containers over all hours in the current date for the given org.
+ :type csm_container_enterprise_compliance_count_sum: int, optional
+
+ :param csm_container_enterprise_cws_count_sum: Shows the sum of all Cloud Security Management Enterprise Cloud Workload Security containers over all hours in the current date for the given org.
+ :type csm_container_enterprise_cws_count_sum: int, optional
+
+ :param csm_container_enterprise_total_count_sum: Shows the sum of all Cloud Security Management Enterprise containers over all hours in the current date for the given org.
+ :type csm_container_enterprise_total_count_sum: int, optional
+
+ :param csm_host_enterprise_aas_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise Azure app services hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_aas_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_aws_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise AWS hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_aws_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_azure_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise Azure hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_azure_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_compliance_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise compliance hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_compliance_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_cws_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise Cloud Workload Security hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_cws_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_gcp_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise GCP hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_gcp_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_oci_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise OCI hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_oci_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_total_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_total_host_count_top99p: int, optional
+
+ :param csm_host_pro_hosts_agentless_scanners_sum: Shows the sum of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for the given org.
+ :type csm_host_pro_hosts_agentless_scanners_sum: int, optional
+
+ :param csm_host_pro_hosts_agentless_scanners_top99p: Shows the 99th percentile of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for the given org.
+ :type csm_host_pro_hosts_agentless_scanners_top99p: int, optional
+
+ :param csm_host_pro_oci_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Pro OCI hosts over all hours in the current date for the given org.
+ :type csm_host_pro_oci_host_count_top99p: int, optional
+
+ :param cspm_aas_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro Azure app services hosts over all hours in the current date for all organizations.
+ :type cspm_aas_host_top99p: int, optional
+
+ :param cspm_aws_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro AWS hosts over all hours in the current date for all organizations.
+ :type cspm_aws_host_top99p: int, optional
+
+ :param cspm_azure_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro Azure hosts over all hours in the current date for all organizations.
+ :type cspm_azure_host_top99p: int, optional
+
+ :param cspm_container_avg: Shows the average number of Cloud Security Management Pro containers over all hours in the current date for all organizations.
+ :type cspm_container_avg: int, optional
+
+ :param cspm_container_hwm: Shows the high-water mark of Cloud Security Management Pro containers over all hours in the current date for all organizations.
+ :type cspm_container_hwm: int, optional
+
+ :param cspm_gcp_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro GCP hosts over all hours in the current date for all organizations.
+ :type cspm_gcp_host_top99p: int, optional
+
+ :param cspm_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro hosts over all hours in the current date for all organizations.
+ :type cspm_host_top99p: int, optional
+
+ :param cspm_hosts_agentless_scanners_sum: Shows the sum of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for all organizations.
+ :type cspm_hosts_agentless_scanners_sum: int, optional
+
+ :param cspm_hosts_agentless_scanners_top99p: Shows the 99th percentile of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for all organizations.
+ :type cspm_hosts_agentless_scanners_top99p: int, optional
+
+ :param custom_ts_avg: Shows the average number of distinct custom metrics over all hours in the current date for all organizations.
+ :type custom_ts_avg: int, optional
+
+ :param cws_container_count_avg: Shows the average of all distinct Cloud Workload Security containers over all hours in the current date for all organizations.
+ :type cws_container_count_avg: int, optional
+
+ :param cws_fargate_task_avg: Shows the average of all distinct Cloud Workload Security Fargate tasks over all hours in the current date for all organizations.
+ :type cws_fargate_task_avg: int, optional
+
+ :param cws_host_top99p: Shows the 99th percentile of all Cloud Workload Security hosts over all hours in the current date for all organizations.
+ :type cws_host_top99p: int, optional
+
+ :param data_jobs_monitoring_host_hr_sum: Shows the sum of all Data Jobs Monitoring hosts over all hours in the current date for the given org.
+ :type data_jobs_monitoring_host_hr_sum: int, optional
+
+ :param data_stream_monitoring_host_count_sum: Shows the sum of all Data Streams Monitoring hosts over all hours in the current date for all organizations.
+ :type data_stream_monitoring_host_count_sum: int, optional
+
+ :param data_stream_monitoring_host_count_top99p: Shows the 99th percentile of all Data Streams Monitoring hosts over all hours in the current date for all organizations.
+ :type data_stream_monitoring_host_count_top99p: int, optional
+
+ :param date: The date for the usage.
+ :type date: datetime, optional
+
+ :param dbm_host_top99p: Shows the 99th percentile of all Database Monitoring hosts over all hours in the current date for all organizations.
+ :type dbm_host_top99p: int, optional
+
+ :param dbm_queries_count_avg: Shows the average of all normalized Database Monitoring queries over all hours in the current date for all organizations.
+ :type dbm_queries_count_avg: int, optional
+
+ :param do_jobs_monitoring_orchestrators_job_hours_sum: Shows the sum of all orchestrator job hours over all hours in the current date for all organizations.
+ :type do_jobs_monitoring_orchestrators_job_hours_sum: int, optional
+
+ :param eph_infra_host_agent_sum: Shows the sum of all ephemeral infrastructure hosts with the Datadog Agent over all hours in the current date for the given org.
+ :type eph_infra_host_agent_sum: int, optional
+
+ :param eph_infra_host_alibaba_sum: Shows the sum of all ephemeral infrastructure hosts on Alibaba over all hours in the current date for the given org.
+ :type eph_infra_host_alibaba_sum: int, optional
+
+ :param eph_infra_host_aws_sum: Shows the sum of all ephemeral infrastructure hosts on AWS over all hours in the current date for the given org.
+ :type eph_infra_host_aws_sum: int, optional
+
+ :param eph_infra_host_azure_sum: Shows the sum of all ephemeral infrastructure hosts on Azure over all hours in the current date for the given org.
+ :type eph_infra_host_azure_sum: int, optional
+
+ :param eph_infra_host_basic_infra_basic_agent_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier with the Datadog Agent over all hours in the current date for all organizations.
+ :type eph_infra_host_basic_infra_basic_agent_sum: int, optional
+
+ :param eph_infra_host_basic_infra_basic_vsphere_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier on vSphere over all hours in the current date for all organizations.
+ :type eph_infra_host_basic_infra_basic_vsphere_sum: int, optional
+
+ :param eph_infra_host_basic_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier over all hours in the current date for all organizations.
+ :type eph_infra_host_basic_sum: int, optional
+
+ :param eph_infra_host_ent_sum: Shows the sum of all ephemeral infrastructure hosts for Enterprise over all hours in the current date for the given org.
+ :type eph_infra_host_ent_sum: int, optional
+
+ :param eph_infra_host_gcp_sum: Shows the sum of all ephemeral infrastructure hosts on GCP over all hours in the current date for the given org.
+ :type eph_infra_host_gcp_sum: int, optional
+
+ :param eph_infra_host_heroku_sum: Shows the sum of all ephemeral infrastructure hosts on Heroku over all hours in the current date for the given org.
+ :type eph_infra_host_heroku_sum: int, optional
+
+ :param eph_infra_host_only_aas_sum: Shows the sum of all ephemeral infrastructure hosts with only Azure App Services over all hours in the current date for the given org.
+ :type eph_infra_host_only_aas_sum: int, optional
+
+ :param eph_infra_host_only_vsphere_sum: Shows the sum of all ephemeral infrastructure hosts with only vSphere over all hours in the current date for the given org.
+ :type eph_infra_host_only_vsphere_sum: int, optional
+
+ :param eph_infra_host_opentelemetry_apm_sum: Shows the sum of all ephemeral APM hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for the given org.
+ :type eph_infra_host_opentelemetry_apm_sum: int, optional
+
+ :param eph_infra_host_opentelemetry_sum: Shows the sum of all ephemeral hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for the given org.
+ :type eph_infra_host_opentelemetry_sum: int, optional
+
+ :param eph_infra_host_pro_sum: Shows the sum of all ephemeral infrastructure hosts for Pro over all hours in the current date for the given org.
+ :type eph_infra_host_pro_sum: int, optional
+
+ :param eph_infra_host_proplus_sum: Shows the sum of all ephemeral infrastructure hosts for Pro Plus over all hours in the current date for the given org.
+ :type eph_infra_host_proplus_sum: int, optional
+
+ :param eph_infra_host_proxmox_sum: Sum of all ephemeral infrastructure hosts for Proxmox over all hours in the current date for all organizations.
+ :type eph_infra_host_proxmox_sum: int, optional
+
+ :param error_tracking_apm_error_events_sum: Shows the sum of all Error Tracking APM error events over all hours in the current date for the given org.
+ :type error_tracking_apm_error_events_sum: int, optional
+
+ :param error_tracking_error_events_sum: Shows the sum of all Error Tracking error events over all hours in the current date for the given org.
+ :type error_tracking_error_events_sum: int, optional
+
+ :param error_tracking_events_sum: Shows the sum of all Error Tracking events over all hours in the current date for the given org.
+ :type error_tracking_events_sum: int, optional
+
+ :param error_tracking_rum_error_events_sum: Shows the sum of all Error Tracking RUM error events over all hours in the current date for the given org.
+ :type error_tracking_rum_error_events_sum: int, optional
+
+ :param event_management_correlation_correlated_events_sum: Shows the sum of all Event Management correlated events over all hours in the current date for all organizations.
+ :type event_management_correlation_correlated_events_sum: int, optional
+
+ :param event_management_correlation_correlated_related_events_sum: Shows the sum of all Event Management correlated related events over all hours in the current date for all organizations.
+ :type event_management_correlation_correlated_related_events_sum: int, optional
+
+ :param event_management_correlation_sum: Shows the sum of all Event Management correlations over all hours in the current date for all organizations.
+ :type event_management_correlation_sum: int, optional
+
+ :param fargate_container_profiler_profiling_fargate_avg: The average number of Profiling Fargate tasks over all hours in the current date for all organizations.
+ :type fargate_container_profiler_profiling_fargate_avg: int, optional
+
+ :param fargate_container_profiler_profiling_fargate_eks_avg: The average number of Profiling Fargate Elastic Kubernetes Service tasks over all hours in the current date for all organizations.
+ :type fargate_container_profiler_profiling_fargate_eks_avg: int, optional
+
+ :param fargate_tasks_count_avg: Shows the high-watermark of all Fargate tasks over all hours in the current date for all organizations.
+ :type fargate_tasks_count_avg: int, optional
+
+ :param fargate_tasks_count_hwm: Shows the average of all Fargate tasks over all hours in the current date for all organizations.
+ :type fargate_tasks_count_hwm: int, optional
+
+ :param feature_flags_config_requests_sum: Shows the sum of all Feature Flags Client-Side SDK config requests over all hours in the current date for all organizations.
+ :type feature_flags_config_requests_sum: int, optional
+
+ :param flex_logs_compute_large_avg: Shows the average number of Flex Logs Compute Large Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_large_avg: int, optional
+
+ :param flex_logs_compute_medium_avg: Shows the average number of Flex Logs Compute Medium Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_medium_avg: int, optional
+
+ :param flex_logs_compute_small_avg: Shows the average number of Flex Logs Compute Small Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_small_avg: int, optional
+
+ :param flex_logs_compute_xlarge_avg: Shows the average number of Flex Logs Compute Extra Large Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_xlarge_avg: int, optional
+
+ :param flex_logs_compute_xsmall_avg: Shows the average number of Flex Logs Compute Extra Small Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_xsmall_avg: int, optional
+
+ :param flex_logs_starter_avg: Shows the average number of Flex Logs Starter Instances over all hours in the current date for the given org.
+ :type flex_logs_starter_avg: int, optional
+
+ :param flex_logs_starter_storage_index_avg: Shows the average number of Flex Logs Starter Storage Index Instances over all hours in the current date for the given org.
+ :type flex_logs_starter_storage_index_avg: int, optional
+
+ :param flex_logs_starter_storage_retention_adjustment_avg: Shows the average number of Flex Logs Starter Storage Retention Adjustment Instances over all hours in the current date for the given org.
+ :type flex_logs_starter_storage_retention_adjustment_avg: int, optional
+
+ :param flex_stored_logs_avg: Shows the average of all Flex Stored Logs over all hours in the current date for the given org.
+ :type flex_stored_logs_avg: int, optional
+
+ :param forwarding_events_bytes_sum: Shows the sum of all log bytes forwarded over all hours in the current date for all organizations.
+ :type forwarding_events_bytes_sum: int, optional
+
+ :param gcp_host_top99p: Shows the 99th percentile of all GCP hosts over all hours in the current date for all organizations.
+ :type gcp_host_top99p: int, optional
+
+ :param heroku_host_top99p: Shows the 99th percentile of all Heroku dynos over all hours in the current date for all organizations.
+ :type heroku_host_top99p: int, optional
+
+ :param incident_management_monthly_active_users_hwm: Shows the high-water mark of incident management monthly active users over all hours in the current date for all organizations.
+ :type incident_management_monthly_active_users_hwm: int, optional
+
+ :param incident_management_seats_hwm: Shows the high-water mark of Incident Management seats over all hours on the current date for all organizations.
+ :type incident_management_seats_hwm: int, optional
+
+ :param indexed_events_count_sum: Shows the sum of all log events indexed over all hours in the current date for all organizations.
+ :type indexed_events_count_sum: int, optional
+
+ :param indexed_points_sum: Shows the sum of all indexed custom metrics points over all hours in the current date for all organizations.
+ :type indexed_points_sum: int, optional
+
+ :param infra_cpu_avg: Shows the average of all Infrastructure vCPU cores over all hours in the current date for all organizations.
+ :type infra_cpu_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_avg: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_basic_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_basic_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_sum: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_aws_avg: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_aws_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_aws_sum: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_aws_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_azure_avg: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_azure_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_azure_sum: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_azure_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_gcp_avg: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_gcp_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_gcp_sum: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_gcp_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_avg: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_sum: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_opentelemetry_avg: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_opentelemetry_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_opentelemetry_sum: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_opentelemetry_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_agent_avg: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_agent_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_agent_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_agent_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_aws_avg: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_aws_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_aws_sum: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_aws_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_azure_avg: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_azure_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_azure_sum: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_azure_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_gcp_avg: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_gcp_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_gcp_sum: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_gcp_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_nutanix_avg: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_nutanix_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_nutanix_sum: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_nutanix_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: int, optional
+
+ :param infra_cpu_sum: Shows the sum of all Infrastructure vCPU cores over all hours in the current date for all organizations.
+ :type infra_cpu_sum: int, optional
+
+ :param infra_edge_monitoring_devices_top99p: Shows the 99th percentile of all Edge Devices Monitoring devices over all hours in the current date for all organizations.
+ :type infra_edge_monitoring_devices_top99p: int, optional
+
+ :param infra_host_basic_infra_basic_agent_top99p: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier with the Datadog Agent over all hours in the current date for all organizations.
+ :type infra_host_basic_infra_basic_agent_top99p: int, optional
+
+ :param infra_host_basic_infra_basic_vsphere_top99p: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier on vSphere over all hours in the current date for all organizations.
+ :type infra_host_basic_infra_basic_vsphere_top99p: int, optional
+
+ :param infra_host_basic_top99p: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier over all hours in the current date for all organizations.
+ :type infra_host_basic_top99p: int, optional
+
+ :param infra_host_top99p: Shows the 99th percentile of all distinct infrastructure hosts over all hours in the current date for all organizations.
+ :type infra_host_top99p: int, optional
+
+ :param infra_storage_mgmt_objects_count_avg: Shows the average number of storage management objects over all hours in the current date for all organizations.
+ :type infra_storage_mgmt_objects_count_avg: int, optional
+
+ :param ingest_points_sum: Shows the sum of all ingested custom metrics points over all hours in the current date for all organizations.
+ :type ingest_points_sum: int, optional
+
+ :param ingested_events_bytes_sum: Shows the sum of all log bytes ingested over all hours in the current date for all organizations.
+ :type ingested_events_bytes_sum: int, optional
+
+ :param iot_apm_host_sum: Shows the sum of all Application Performance Monitoring IoT hosts over all hours in the current date for all organizations.
+ :type iot_apm_host_sum: int, optional
+
+ :param iot_apm_host_top99p: Shows the 99th percentile of all Application Performance Monitoring IoT hosts over all hours in the current date for all organizations.
+ :type iot_apm_host_top99p: int, optional
+
+ :param iot_device_sum: Shows the sum of all IoT devices over all hours in the current date for all organizations.
+ :type iot_device_sum: int, optional
+
+ :param iot_device_top99p: Shows the 99th percentile of all IoT devices over all hours in the current date all organizations.
+ :type iot_device_top99p: int, optional
+
+ :param llm_observability_15day_retention_spans_sum: Shows the sum of all LLM Observability 15-day retention spans over all hours in the current date for all organizations.
+ :type llm_observability_15day_retention_spans_sum: int, optional
+
+ :param llm_observability_30day_retention_spans_sum: Shows the sum of all LLM Observability 30-day retention spans over all hours in the current date for all organizations.
+ :type llm_observability_30day_retention_spans_sum: int, optional
+
+ :param llm_observability_60day_retention_spans_sum: Shows the sum of all LLM Observability 60-day retention spans over all hours in the current date for all organizations.
+ :type llm_observability_60day_retention_spans_sum: int, optional
+
+ :param llm_observability_90day_retention_spans_sum: Shows the sum of all LLM Observability 90-day retention spans over all hours in the current date for all organizations.
+ :type llm_observability_90day_retention_spans_sum: int, optional
+
+ :param llm_observability_min_spend_sum: Sum of all LLM observability minimum spend over all hours in the current date for all organizations.
+ :type llm_observability_min_spend_sum: int, optional
+
+ :param llm_observability_sum: Sum of all LLM observability sessions over all hours in the current date for all organizations.
+ :type llm_observability_sum: int, optional
+
+ :param logs_archive_search_gb_scanned_sum: Shows the sum of all Logs Archive Search scanned data over all hours in the current date for all organizations.
+ :type logs_archive_search_gb_scanned_sum: int, optional
+
+ :param metric_names_sum: Shows the sum of all custom metric names over all hours in the current date for all organizations.
+ :type metric_names_sum: int, optional
+
+ :param mobile_rum_lite_session_count_sum: Shows the sum of all mobile lite sessions over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_lite_session_count_sum: int, optional
+
+ :param mobile_rum_session_count_android_sum: Shows the sum of all mobile RUM sessions on Android over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_android_sum: int, optional
+
+ :param mobile_rum_session_count_flutter_sum: Shows the sum of all mobile RUM sessions on Flutter over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_flutter_sum: int, optional
+
+ :param mobile_rum_session_count_ios_sum: Shows the sum of all mobile RUM sessions on iOS over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_ios_sum: int, optional
+
+ :param mobile_rum_session_count_reactnative_sum: Shows the sum of all mobile RUM sessions on React Native over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_reactnative_sum: int, optional
+
+ :param mobile_rum_session_count_roku_sum: Shows the sum of all mobile RUM sessions on Roku over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_roku_sum: int, optional
+
+ :param mobile_rum_session_count_sum: Shows the sum of all mobile RUM sessions over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_sum: int, optional
+
+ :param mobile_rum_units_sum: Shows the sum of all mobile RUM units over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_units_sum: int, optional
+
+ :param ndm_netflow_events_sum: Shows the sum of all Network Device Monitoring NetFlow events over all hours in the current date for the given org.
+ :type ndm_netflow_events_sum: int, optional
+
+ :param netflow_indexed_events_count_sum: Shows the sum of all Network flows indexed over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type netflow_indexed_events_count_sum: int, optional
+
+ :param network_device_wireless_top99p: Shows the 99th percentile of all Network Device Monitoring wireless devices over all hours in the current date for all organizations.
+ :type network_device_wireless_top99p: int, optional
+
+ :param network_path_sum: Shows the sum of all Network Path scheduled tests over all hours in the current date for all organizations.
+ :type network_path_sum: int, optional
+
+ :param npm_host_top99p: Shows the 99th percentile of all distinct Cloud Network Monitoring hosts (formerly known as Network hosts) over all hours in the current date for all organizations.
+ :type npm_host_top99p: int, optional
+
+ :param observability_pipelines_bytes_processed_sum: Sum of all observability pipelines bytes processed over all hours in the current date for the given org.
+ :type observability_pipelines_bytes_processed_sum: int, optional
+
+ :param oci_host_sum: Shows the sum of all Oracle Cloud Infrastructure hosts over all hours in the current date for the given org.
+ :type oci_host_sum: int, optional
+
+ :param oci_host_top99p: Shows the 99th percentile of all Oracle Cloud Infrastructure hosts over all hours in the current date for the given org.
+ :type oci_host_top99p: int, optional
+
+ :param on_call_seat_hwm: Shows the high-water mark of On-Call seats over all hours in the current date for all organizations.
+ :type on_call_seat_hwm: int, optional
+
+ :param online_archive_events_count_sum: Sum of all online archived events over all hours in the current date for all organizations.
+ :type online_archive_events_count_sum: int, optional
+
+ :param opentelemetry_apm_host_top99p: Shows the 99th percentile of APM hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for all organizations.
+ :type opentelemetry_apm_host_top99p: int, optional
+
+ :param opentelemetry_host_top99p: Shows the 99th percentile of all hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for all organizations.
+ :type opentelemetry_host_top99p: int, optional
+
+ :param orgs: Organizations associated with a user.
+ :type orgs: [UsageSummaryDateOrg], optional
+
+ :param product_analytics_sum: Sum of all product analytics sessions over all hours in the current date for all organizations.
+ :type product_analytics_sum: int, optional
+
+ :param profiling_aas_count_top99p: Shows the 99th percentile of all profiled Azure app services over all hours in the current date for all organizations.
+ :type profiling_aas_count_top99p: int, optional
+
+ :param profiling_host_top99p: Shows the 99th percentile of all profiled hosts over all hours within the current date for all organizations.
+ :type profiling_host_top99p: int, optional
+
+ :param proxmox_host_sum: Sum of all Proxmox hosts over all hours in the current date for all organizations.
+ :type proxmox_host_sum: int, optional
+
+ :param proxmox_host_top99p: 99th percentile of all Proxmox hosts over all hours in the current date for all organizations.
+ :type proxmox_host_top99p: int, optional
+
+ :param published_app_hwm: Shows the high-water mark of all published applications over all hours in the current date for all organizations.
+ :type published_app_hwm: int, optional
+
+ :param rum_browser_and_mobile_session_count: Shows the sum of all mobile sessions and all browser lite and legacy sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024).
+ :type rum_browser_and_mobile_session_count: int, optional
+
+ :param rum_browser_legacy_session_count_sum: Shows the sum of all browser RUM legacy sessions over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_browser_legacy_session_count_sum: int, optional
+
+ :param rum_browser_lite_session_count_sum: Shows the sum of all browser RUM lite sessions over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_browser_lite_session_count_sum: int, optional
+
+ :param rum_browser_replay_session_count_sum: Shows the sum of all browser RUM Session Replay counts over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_browser_replay_session_count_sum: int, optional
+
+ :param rum_indexed_sessions_sum: Sum of all RUM indexed sessions over all hours in the current date for all organizations.
+ :type rum_indexed_sessions_sum: int, optional
+
+ :param rum_ingested_sessions_sum: Sum of all RUM ingested sessions over all hours in the current date for all organizations.
+ :type rum_ingested_sessions_sum: int, optional
+
+ :param rum_lite_session_count_sum: Shows the sum of all RUM lite sessions (browser and mobile) over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_lite_session_count_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_android_sum: Shows the sum of all mobile RUM legacy sessions on Android over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_android_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_flutter_sum: Shows the sum of all mobile RUM legacy Sessions on Flutter over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_flutter_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_ios_sum: Shows the sum of all mobile RUM legacy sessions on iOS over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_ios_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_reactnative_sum: Shows the sum of all mobile RUM legacy sessions on React Native over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_reactnative_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_roku_sum: Shows the sum of all mobile RUM legacy sessions on Roku over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_roku_sum: int, optional
+
+ :param rum_mobile_lite_session_count_android_sum: Shows the sum of all mobile RUM lite sessions on Android over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_android_sum: int, optional
+
+ :param rum_mobile_lite_session_count_flutter_sum: Shows the sum of all mobile RUM lite sessions on Flutter over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_flutter_sum: int, optional
+
+ :param rum_mobile_lite_session_count_ios_sum: Shows the sum of all mobile RUM lite sessions on iOS over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_ios_sum: int, optional
+
+ :param rum_mobile_lite_session_count_kotlinmultiplatform_sum: Shows the sum of all mobile RUM lite sessions on Kotlin Multiplatform over all hours within the current date for all organizations.
+ :type rum_mobile_lite_session_count_kotlinmultiplatform_sum: int, optional
+
+ :param rum_mobile_lite_session_count_reactnative_sum: Shows the sum of all mobile RUM lite sessions on React Native over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_reactnative_sum: int, optional
+
+ :param rum_mobile_lite_session_count_roku_sum: Shows the sum of all mobile RUM lite sessions on Roku over all hours within the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_roku_sum: int, optional
+
+ :param rum_mobile_lite_session_count_unity_sum: Shows the sum of all mobile RUM lite sessions on Unity over all hours within the current date for all organizations.
+ :type rum_mobile_lite_session_count_unity_sum: int, optional
+
+ :param rum_mobile_replay_session_count_android_sum: Shows the sum of all mobile RUM replay sessions on Android over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_android_sum: int, optional
+
+ :param rum_mobile_replay_session_count_ios_sum: Shows the sum of all mobile RUM replay sessions on iOS over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_ios_sum: int, optional
+
+ :param rum_mobile_replay_session_count_kotlinmultiplatform_sum: Shows the sum of all mobile RUM replay sessions on Kotlin Multiplatform over all hours within the current date for all organizations.
+ :type rum_mobile_replay_session_count_kotlinmultiplatform_sum: int, optional
+
+ :param rum_mobile_replay_session_count_reactnative_sum: Shows the sum of all mobile RUM replay sessions on React Native over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_reactnative_sum: int, optional
+
+ :param rum_replay_session_count_sum: Shows the sum of all RUM Session Replay counts over all hours in the current date for all organizations (To be introduced on October 1st, 2024).
+ :type rum_replay_session_count_sum: int, optional
+
+ :param rum_session_count_sum: Shows the sum of all browser RUM lite sessions over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rum_session_count_sum: int, optional
+
+ :param rum_session_replay_add_on_sum: Sum of all RUM session replay add-on sessions over all hours in the current date for all organizations.
+ :type rum_session_replay_add_on_sum: int, optional
+
+ :param rum_total_session_count_sum: Shows the sum of RUM sessions (browser and mobile) over all hours in the current date for all organizations.
+ :type rum_total_session_count_sum: int, optional
+
+ :param rum_units_sum: Shows the sum of all browser and mobile RUM units over all hours in the current date for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rum_units_sum: int, optional
+
+ :param sca_fargate_count_avg: Shows the average of all Software Composition Analysis Fargate tasks over all hours in the current date for the given org.
+ :type sca_fargate_count_avg: int, optional
+
+ :param sca_fargate_count_hwm: Shows the sum of the high-water marks of all Software Composition Analysis Fargate tasks over all hours in the current date for the given org.
+ :type sca_fargate_count_hwm: int, optional
+
+ :param sds_apm_scanned_bytes_sum: Sum of all APM bytes scanned with sensitive data scanner over all hours in the current date for all organizations.
+ :type sds_apm_scanned_bytes_sum: int, optional
+
+ :param sds_events_scanned_bytes_sum: Sum of all event stream events bytes scanned with sensitive data scanner over all hours in the current date for all organizations.
+ :type sds_events_scanned_bytes_sum: int, optional
+
+ :param sds_logs_scanned_bytes_sum: Shows the sum of all bytes scanned of logs usage by the Sensitive Data Scanner over all hours in the current month for all organizations.
+ :type sds_logs_scanned_bytes_sum: int, optional
+
+ :param sds_rum_scanned_bytes_sum: Sum of all RUM bytes scanned with sensitive data scanner over all hours in the current date for all organizations.
+ :type sds_rum_scanned_bytes_sum: int, optional
+
+ :param sds_total_scanned_bytes_sum: Shows the sum of all bytes scanned across all usage types by the Sensitive Data Scanner over all hours in the current month for all organizations.
+ :type sds_total_scanned_bytes_sum: int, optional
+
+ :param serverless_apps_apm_apm_azure_appservice_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Azure App Service instances for the current date for all organizations.
+ :type serverless_apps_apm_apm_azure_appservice_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_azure_azurefunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Azure Function instances for the current date for all organizations.
+ :type serverless_apps_apm_apm_azure_azurefunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_azure_containerapp_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Azure Container App instances for the current date for all organizations.
+ :type serverless_apps_apm_apm_azure_containerapp_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_fargate_ecs_tasks_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Fargate Elastic Container Service tasks for the current date for all organizations.
+ :type serverless_apps_apm_apm_fargate_ecs_tasks_avg: int, optional
+
+ :param serverless_apps_apm_apm_gcp_cloudfunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Google Cloud Platform Cloud Function instances for the current date for all organizations.
+ :type serverless_apps_apm_apm_gcp_cloudfunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_gcp_cloudrun_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Google Cloud Platform Cloud Run instances for the current date for all organizations.
+ :type serverless_apps_apm_apm_gcp_cloudrun_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Google Kubernetes Engine Autopilot pods for the current date for all organizations.
+ :type serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_apm_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for the current date for all organizations.
+ :type serverless_apps_apm_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure App Service instances for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure Function instances for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure Container App instances for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Cloud Platform Cloud Function instances for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Cloud Platform Cloud Run instances for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Kubernetes Engine Autopilot pods for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for the current date for all organizations.
+ :type serverless_apps_apm_excl_fargate_avg: int, optional
+
+ :param serverless_apps_azure_container_app_instances_avg: Shows the average number of Serverless Apps for Azure Container App instances for the current date for all organizations.
+ :type serverless_apps_azure_container_app_instances_avg: int, optional
+
+ :param serverless_apps_azure_count_avg: Shows the average number of Serverless Apps for Azure for the given date and given org.
+ :type serverless_apps_azure_count_avg: int, optional
+
+ :param serverless_apps_azure_function_app_instances_avg: Shows the average number of Serverless Apps for Azure Function App instances for the current date for all organizations.
+ :type serverless_apps_azure_function_app_instances_avg: int, optional
+
+ :param serverless_apps_azure_web_app_instances_avg: Shows the average number of Serverless Apps for Azure Web App instances for the current date for all organizations.
+ :type serverless_apps_azure_web_app_instances_avg: int, optional
+
+ :param serverless_apps_dsm_fargate_tasks_avg: Shows the average number of DSM Fargate ECS tasks monitored under Serverless Apps DSM for the current date for all organizations.
+ :type serverless_apps_dsm_fargate_tasks_avg: int, optional
+
+ :param serverless_apps_ecs_avg: Shows the average number of Serverless Apps for Elastic Container Service for the current date for all organizations.
+ :type serverless_apps_ecs_avg: int, optional
+
+ :param serverless_apps_eks_avg: Shows the average number of Serverless Apps for Elastic Kubernetes Service for the current date for all organizations.
+ :type serverless_apps_eks_avg: int, optional
+
+ :param serverless_apps_excl_fargate_avg: Shows the average number of Serverless Apps excluding Fargate for the current date for all organizations.
+ :type serverless_apps_excl_fargate_avg: int, optional
+
+ :param serverless_apps_excl_fargate_azure_container_app_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Azure Container App instances for the current date for all organizations.
+ :type serverless_apps_excl_fargate_azure_container_app_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_azure_function_app_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Azure Function App instances for the current date for all organizations.
+ :type serverless_apps_excl_fargate_azure_function_app_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_azure_web_app_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Azure Web App instances for the current date for all organizations.
+ :type serverless_apps_excl_fargate_azure_web_app_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_google_cloud_functions_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Google Cloud Platform Cloud Functions instances for the current date for all organizations.
+ :type serverless_apps_excl_fargate_google_cloud_functions_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_google_cloud_run_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Google Cloud Platform Cloud Run instances for the current date for all organizations.
+ :type serverless_apps_excl_fargate_google_cloud_run_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps excluding Fargate for Google Kubernetes Engine Autopilot pods for the current date for all organizations.
+ :type serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_google_cloud_functions_instances_avg: Shows the average number of Serverless Apps for Google Cloud Platform Cloud Functions instances for the current date for all organizations.
+ :type serverless_apps_google_cloud_functions_instances_avg: int, optional
+
+ :param serverless_apps_google_cloud_run_instances_avg: Shows the average number of Serverless Apps for Google Cloud Platform Cloud Run instances for the current date for all organizations.
+ :type serverless_apps_google_cloud_run_instances_avg: int, optional
+
+ :param serverless_apps_google_count_avg: Shows the average number of Serverless Apps for Google Cloud for the given date and given org.
+ :type serverless_apps_google_count_avg: int, optional
+
+ :param serverless_apps_infra_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps for Google Kubernetes Engine Autopilot pods for the current date for all organizations.
+ :type serverless_apps_infra_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_total_count_avg: Shows the average number of Serverless Apps for Azure and Google Cloud for the given date and given org.
+ :type serverless_apps_total_count_avg: int, optional
+
+ :param siem_12mo_retention_sum: Shows the sum of Cloud SIEM Indexed Logs (12-month retention) over all hours in the current date for the given org.
+ :type siem_12mo_retention_sum: int, optional
+
+ :param siem_6mo_retention_sum: Shows the sum of Cloud SIEM Indexed Logs (6-month retention) over all hours in the current date for the given org.
+ :type siem_6mo_retention_sum: int, optional
+
+ :param siem_analyzed_logs_add_on_count_sum: Shows the sum of all log events analyzed by Cloud SIEM over all hours in the current date for the given org.
+ :type siem_analyzed_logs_add_on_count_sum: int, optional
+
+ :param snmp_device_count_sum: Shows the sum of all Network Device Monitoring devices over all hours in the current date for all organizations.
+ :type snmp_device_count_sum: int, optional
+
+ :param snmp_device_count_top99p: Shows the 99th percentile of all Network Device Monitoring devices over all hours in the current date for all organizations.
+ :type snmp_device_count_top99p: int, optional
+
+ :param synthetics_browser_check_calls_count_sum: Shows the sum of all Synthetic browser tests over all hours in the current date for all organizations.
+ :type synthetics_browser_check_calls_count_sum: int, optional
+
+ :param synthetics_check_calls_count_sum: Shows the sum of all Synthetic API tests over all hours in the current date for all organizations.
+ :type synthetics_check_calls_count_sum: int, optional
+
+ :param synthetics_mobile_test_runs_sum: Shows the sum of all Synthetic mobile application tests over all hours in the current date for all organizations.
+ :type synthetics_mobile_test_runs_sum: int, optional
+
+ :param synthetics_parallel_testing_max_slots_hwm: Shows the high-water mark of used synthetics parallel testing slots over all hours in the current date for all organizations.
+ :type synthetics_parallel_testing_max_slots_hwm: int, optional
+
+ :param trace_search_indexed_events_count_sum: Shows the sum of all Indexed Spans indexed over all hours in the current date for all organizations.
+ :type trace_search_indexed_events_count_sum: int, optional
+
+ :param twol_ingested_events_bytes_sum: Shows the sum of all ingested APM span bytes over all hours in the current date for all organizations.
+ :type twol_ingested_events_bytes_sum: int, optional
+
+ :param universal_service_monitoring_host_top99p: Shows the 99th percentile of all universal service management hosts over all hours in the current date for the given org.
+ :type universal_service_monitoring_host_top99p: int, optional
+
+ :param vsphere_host_top99p: Shows the 99th percentile of all vSphere hosts over all hours in the current date for all organizations.
+ :type vsphere_host_top99p: int, optional
+
+ :param vuln_management_host_count_top99p: Shows the 99th percentile of all Application Vulnerability Management hosts over all hours in the current date for the given org.
+ :type vuln_management_host_count_top99p: int, optional
+
+ :param workflow_executions_usage_sum: Sum of all workflows executed over all hours in the current date for all organizations.
+ :type workflow_executions_usage_sum: int, optional
+ """
+ if agent_host_top99p is not unset:
+ kwargs["agent_host_top99p"] = agent_host_top99p
+ if ai_credits_agent_builder_ai_credits_sum is not unset:
+ kwargs["ai_credits_agent_builder_ai_credits_sum"] = ai_credits_agent_builder_ai_credits_sum
+ if ai_credits_bits_assistant_ai_credits_sum is not unset:
+ kwargs["ai_credits_bits_assistant_ai_credits_sum"] = ai_credits_bits_assistant_ai_credits_sum
+ if ai_credits_bits_dev_ai_credits_sum is not unset:
+ kwargs["ai_credits_bits_dev_ai_credits_sum"] = ai_credits_bits_dev_ai_credits_sum
+ if ai_credits_bits_sre_ai_credits_sum is not unset:
+ kwargs["ai_credits_bits_sre_ai_credits_sum"] = ai_credits_bits_sre_ai_credits_sum
+ if ai_credits_sum is not unset:
+ kwargs["ai_credits_sum"] = ai_credits_sum
+ if apm_azure_app_service_host_top99p is not unset:
+ kwargs["apm_azure_app_service_host_top99p"] = apm_azure_app_service_host_top99p
+ if apm_devsecops_host_top99p is not unset:
+ kwargs["apm_devsecops_host_top99p"] = apm_devsecops_host_top99p
+ if apm_enterprise_standalone_hosts_top99p is not unset:
+ kwargs["apm_enterprise_standalone_hosts_top99p"] = apm_enterprise_standalone_hosts_top99p
+ if apm_fargate_count_avg is not unset:
+ kwargs["apm_fargate_count_avg"] = apm_fargate_count_avg
+ if apm_host_top99p is not unset:
+ kwargs["apm_host_top99p"] = apm_host_top99p
+ if apm_pro_standalone_hosts_top99p is not unset:
+ kwargs["apm_pro_standalone_hosts_top99p"] = apm_pro_standalone_hosts_top99p
+ if appsec_fargate_count_avg is not unset:
+ kwargs["appsec_fargate_count_avg"] = appsec_fargate_count_avg
+ if asm_serverless_sum is not unset:
+ kwargs["asm_serverless_sum"] = asm_serverless_sum
+ if audit_logs_lines_indexed_sum is not unset:
+ kwargs["audit_logs_lines_indexed_sum"] = audit_logs_lines_indexed_sum
+ if audit_trail_enabled_hwm is not unset:
+ kwargs["audit_trail_enabled_hwm"] = audit_trail_enabled_hwm
+ if audit_trail_event_forwarding_events_sum is not unset:
+ kwargs["audit_trail_event_forwarding_events_sum"] = audit_trail_event_forwarding_events_sum
+ if avg_profiled_fargate_tasks is not unset:
+ kwargs["avg_profiled_fargate_tasks"] = avg_profiled_fargate_tasks
+ if aws_host_top99p is not unset:
+ kwargs["aws_host_top99p"] = aws_host_top99p
+ if aws_lambda_func_count is not unset:
+ kwargs["aws_lambda_func_count"] = aws_lambda_func_count
+ if aws_lambda_invocations_sum is not unset:
+ kwargs["aws_lambda_invocations_sum"] = aws_lambda_invocations_sum
+ if azure_app_service_top99p is not unset:
+ kwargs["azure_app_service_top99p"] = azure_app_service_top99p
+ if billable_ingested_bytes_sum is not unset:
+ kwargs["billable_ingested_bytes_sum"] = billable_ingested_bytes_sum
+ if bits_ai_investigations_sum is not unset:
+ kwargs["bits_ai_investigations_sum"] = bits_ai_investigations_sum
+ if browser_rum_lite_session_count_sum is not unset:
+ kwargs["browser_rum_lite_session_count_sum"] = browser_rum_lite_session_count_sum
+ if browser_rum_replay_session_count_sum is not unset:
+ kwargs["browser_rum_replay_session_count_sum"] = browser_rum_replay_session_count_sum
+ if browser_rum_units_sum is not unset:
+ kwargs["browser_rum_units_sum"] = browser_rum_units_sum
+ if ccm_anthropic_spend_last is not unset:
+ kwargs["ccm_anthropic_spend_last"] = ccm_anthropic_spend_last
+ if ccm_aws_spend_last is not unset:
+ kwargs["ccm_aws_spend_last"] = ccm_aws_spend_last
+ if ccm_azure_spend_last is not unset:
+ kwargs["ccm_azure_spend_last"] = ccm_azure_spend_last
+ if ccm_confluent_spend_last is not unset:
+ kwargs["ccm_confluent_spend_last"] = ccm_confluent_spend_last
+ if ccm_databricks_spend_last is not unset:
+ kwargs["ccm_databricks_spend_last"] = ccm_databricks_spend_last
+ if ccm_elastic_spend_last is not unset:
+ kwargs["ccm_elastic_spend_last"] = ccm_elastic_spend_last
+ if ccm_fastly_spend_last is not unset:
+ kwargs["ccm_fastly_spend_last"] = ccm_fastly_spend_last
+ if ccm_gcp_spend_last is not unset:
+ kwargs["ccm_gcp_spend_last"] = ccm_gcp_spend_last
+ if ccm_github_spend_last is not unset:
+ kwargs["ccm_github_spend_last"] = ccm_github_spend_last
+ if ccm_mongodb_spend_last is not unset:
+ kwargs["ccm_mongodb_spend_last"] = ccm_mongodb_spend_last
+ if ccm_oci_spend_last is not unset:
+ kwargs["ccm_oci_spend_last"] = ccm_oci_spend_last
+ if ccm_openai_spend_last is not unset:
+ kwargs["ccm_openai_spend_last"] = ccm_openai_spend_last
+ if ccm_snowflake_spend_last is not unset:
+ kwargs["ccm_snowflake_spend_last"] = ccm_snowflake_spend_last
+ if ccm_spend_monitored_ent_last is not unset:
+ kwargs["ccm_spend_monitored_ent_last"] = ccm_spend_monitored_ent_last
+ if ccm_spend_monitored_pro_last is not unset:
+ kwargs["ccm_spend_monitored_pro_last"] = ccm_spend_monitored_pro_last
+ if ccm_twilio_spend_last is not unset:
+ kwargs["ccm_twilio_spend_last"] = ccm_twilio_spend_last
+ if ci_pipeline_indexed_spans_sum is not unset:
+ kwargs["ci_pipeline_indexed_spans_sum"] = ci_pipeline_indexed_spans_sum
+ if ci_test_indexed_spans_sum is not unset:
+ kwargs["ci_test_indexed_spans_sum"] = ci_test_indexed_spans_sum
+ if ci_visibility_itr_committers_hwm is not unset:
+ kwargs["ci_visibility_itr_committers_hwm"] = ci_visibility_itr_committers_hwm
+ if ci_visibility_pipeline_committers_hwm is not unset:
+ kwargs["ci_visibility_pipeline_committers_hwm"] = ci_visibility_pipeline_committers_hwm
+ if ci_visibility_test_committers_hwm is not unset:
+ kwargs["ci_visibility_test_committers_hwm"] = ci_visibility_test_committers_hwm
+ if cloud_cost_management_aws_host_count_avg is not unset:
+ kwargs["cloud_cost_management_aws_host_count_avg"] = cloud_cost_management_aws_host_count_avg
+ if cloud_cost_management_azure_host_count_avg is not unset:
+ kwargs["cloud_cost_management_azure_host_count_avg"] = cloud_cost_management_azure_host_count_avg
+ if cloud_cost_management_gcp_host_count_avg is not unset:
+ kwargs["cloud_cost_management_gcp_host_count_avg"] = cloud_cost_management_gcp_host_count_avg
+ if cloud_cost_management_host_count_avg is not unset:
+ kwargs["cloud_cost_management_host_count_avg"] = cloud_cost_management_host_count_avg
+ if cloud_cost_management_oci_host_count_avg is not unset:
+ kwargs["cloud_cost_management_oci_host_count_avg"] = cloud_cost_management_oci_host_count_avg
+ if cloud_siem_events_sum is not unset:
+ kwargs["cloud_siem_events_sum"] = cloud_siem_events_sum
+ if cloud_siem_indexed_logs_sum is not unset:
+ kwargs["cloud_siem_indexed_logs_sum"] = cloud_siem_indexed_logs_sum
+ if code_analysis_sa_committers_hwm is not unset:
+ kwargs["code_analysis_sa_committers_hwm"] = code_analysis_sa_committers_hwm
+ if code_analysis_sca_committers_hwm is not unset:
+ kwargs["code_analysis_sca_committers_hwm"] = code_analysis_sca_committers_hwm
+ if code_security_host_top99p is not unset:
+ kwargs["code_security_host_top99p"] = code_security_host_top99p
+ if container_avg is not unset:
+ kwargs["container_avg"] = container_avg
+ if container_excl_agent_avg is not unset:
+ kwargs["container_excl_agent_avg"] = container_excl_agent_avg
+ if container_hwm is not unset:
+ kwargs["container_hwm"] = container_hwm
+ if csm_container_enterprise_compliance_count_sum is not unset:
+ kwargs["csm_container_enterprise_compliance_count_sum"] = csm_container_enterprise_compliance_count_sum
+ if csm_container_enterprise_cws_count_sum is not unset:
+ kwargs["csm_container_enterprise_cws_count_sum"] = csm_container_enterprise_cws_count_sum
+ if csm_container_enterprise_total_count_sum is not unset:
+ kwargs["csm_container_enterprise_total_count_sum"] = csm_container_enterprise_total_count_sum
+ if csm_host_enterprise_aas_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_aas_host_count_top99p"] = csm_host_enterprise_aas_host_count_top99p
+ if csm_host_enterprise_aws_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_aws_host_count_top99p"] = csm_host_enterprise_aws_host_count_top99p
+ if csm_host_enterprise_azure_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_azure_host_count_top99p"] = csm_host_enterprise_azure_host_count_top99p
+ if csm_host_enterprise_compliance_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_compliance_host_count_top99p"] = csm_host_enterprise_compliance_host_count_top99p
+ if csm_host_enterprise_cws_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_cws_host_count_top99p"] = csm_host_enterprise_cws_host_count_top99p
+ if csm_host_enterprise_gcp_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_gcp_host_count_top99p"] = csm_host_enterprise_gcp_host_count_top99p
+ if csm_host_enterprise_oci_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_oci_host_count_top99p"] = csm_host_enterprise_oci_host_count_top99p
+ if csm_host_enterprise_total_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_total_host_count_top99p"] = csm_host_enterprise_total_host_count_top99p
+ if csm_host_pro_hosts_agentless_scanners_sum is not unset:
+ kwargs["csm_host_pro_hosts_agentless_scanners_sum"] = csm_host_pro_hosts_agentless_scanners_sum
+ if csm_host_pro_hosts_agentless_scanners_top99p is not unset:
+ kwargs["csm_host_pro_hosts_agentless_scanners_top99p"] = csm_host_pro_hosts_agentless_scanners_top99p
+ if csm_host_pro_oci_host_count_top99p is not unset:
+ kwargs["csm_host_pro_oci_host_count_top99p"] = csm_host_pro_oci_host_count_top99p
+ if cspm_aas_host_top99p is not unset:
+ kwargs["cspm_aas_host_top99p"] = cspm_aas_host_top99p
+ if cspm_aws_host_top99p is not unset:
+ kwargs["cspm_aws_host_top99p"] = cspm_aws_host_top99p
+ if cspm_azure_host_top99p is not unset:
+ kwargs["cspm_azure_host_top99p"] = cspm_azure_host_top99p
+ if cspm_container_avg is not unset:
+ kwargs["cspm_container_avg"] = cspm_container_avg
+ if cspm_container_hwm is not unset:
+ kwargs["cspm_container_hwm"] = cspm_container_hwm
+ if cspm_gcp_host_top99p is not unset:
+ kwargs["cspm_gcp_host_top99p"] = cspm_gcp_host_top99p
+ if cspm_host_top99p is not unset:
+ kwargs["cspm_host_top99p"] = cspm_host_top99p
+ if cspm_hosts_agentless_scanners_sum is not unset:
+ kwargs["cspm_hosts_agentless_scanners_sum"] = cspm_hosts_agentless_scanners_sum
+ if cspm_hosts_agentless_scanners_top99p is not unset:
+ kwargs["cspm_hosts_agentless_scanners_top99p"] = cspm_hosts_agentless_scanners_top99p
+ if custom_ts_avg is not unset:
+ kwargs["custom_ts_avg"] = custom_ts_avg
+ if cws_container_count_avg is not unset:
+ kwargs["cws_container_count_avg"] = cws_container_count_avg
+ if cws_fargate_task_avg is not unset:
+ kwargs["cws_fargate_task_avg"] = cws_fargate_task_avg
+ if cws_host_top99p is not unset:
+ kwargs["cws_host_top99p"] = cws_host_top99p
+ if data_jobs_monitoring_host_hr_sum is not unset:
+ kwargs["data_jobs_monitoring_host_hr_sum"] = data_jobs_monitoring_host_hr_sum
+ if data_stream_monitoring_host_count_sum is not unset:
+ kwargs["data_stream_monitoring_host_count_sum"] = data_stream_monitoring_host_count_sum
+ if data_stream_monitoring_host_count_top99p is not unset:
+ kwargs["data_stream_monitoring_host_count_top99p"] = data_stream_monitoring_host_count_top99p
+ if date is not unset:
+ kwargs["date"] = date
+ if dbm_host_top99p is not unset:
+ kwargs["dbm_host_top99p"] = dbm_host_top99p
+ if dbm_queries_count_avg is not unset:
+ kwargs["dbm_queries_count_avg"] = dbm_queries_count_avg
+ if do_jobs_monitoring_orchestrators_job_hours_sum is not unset:
+ kwargs["do_jobs_monitoring_orchestrators_job_hours_sum"] = do_jobs_monitoring_orchestrators_job_hours_sum
+ if eph_infra_host_agent_sum is not unset:
+ kwargs["eph_infra_host_agent_sum"] = eph_infra_host_agent_sum
+ if eph_infra_host_alibaba_sum is not unset:
+ kwargs["eph_infra_host_alibaba_sum"] = eph_infra_host_alibaba_sum
+ if eph_infra_host_aws_sum is not unset:
+ kwargs["eph_infra_host_aws_sum"] = eph_infra_host_aws_sum
+ if eph_infra_host_azure_sum is not unset:
+ kwargs["eph_infra_host_azure_sum"] = eph_infra_host_azure_sum
+ if eph_infra_host_basic_infra_basic_agent_sum is not unset:
+ kwargs["eph_infra_host_basic_infra_basic_agent_sum"] = eph_infra_host_basic_infra_basic_agent_sum
+ if eph_infra_host_basic_infra_basic_vsphere_sum is not unset:
+ kwargs["eph_infra_host_basic_infra_basic_vsphere_sum"] = eph_infra_host_basic_infra_basic_vsphere_sum
+ if eph_infra_host_basic_sum is not unset:
+ kwargs["eph_infra_host_basic_sum"] = eph_infra_host_basic_sum
+ if eph_infra_host_ent_sum is not unset:
+ kwargs["eph_infra_host_ent_sum"] = eph_infra_host_ent_sum
+ if eph_infra_host_gcp_sum is not unset:
+ kwargs["eph_infra_host_gcp_sum"] = eph_infra_host_gcp_sum
+ if eph_infra_host_heroku_sum is not unset:
+ kwargs["eph_infra_host_heroku_sum"] = eph_infra_host_heroku_sum
+ if eph_infra_host_only_aas_sum is not unset:
+ kwargs["eph_infra_host_only_aas_sum"] = eph_infra_host_only_aas_sum
+ if eph_infra_host_only_vsphere_sum is not unset:
+ kwargs["eph_infra_host_only_vsphere_sum"] = eph_infra_host_only_vsphere_sum
+ if eph_infra_host_opentelemetry_apm_sum is not unset:
+ kwargs["eph_infra_host_opentelemetry_apm_sum"] = eph_infra_host_opentelemetry_apm_sum
+ if eph_infra_host_opentelemetry_sum is not unset:
+ kwargs["eph_infra_host_opentelemetry_sum"] = eph_infra_host_opentelemetry_sum
+ if eph_infra_host_pro_sum is not unset:
+ kwargs["eph_infra_host_pro_sum"] = eph_infra_host_pro_sum
+ if eph_infra_host_proplus_sum is not unset:
+ kwargs["eph_infra_host_proplus_sum"] = eph_infra_host_proplus_sum
+ if eph_infra_host_proxmox_sum is not unset:
+ kwargs["eph_infra_host_proxmox_sum"] = eph_infra_host_proxmox_sum
+ if error_tracking_apm_error_events_sum is not unset:
+ kwargs["error_tracking_apm_error_events_sum"] = error_tracking_apm_error_events_sum
+ if error_tracking_error_events_sum is not unset:
+ kwargs["error_tracking_error_events_sum"] = error_tracking_error_events_sum
+ if error_tracking_events_sum is not unset:
+ kwargs["error_tracking_events_sum"] = error_tracking_events_sum
+ if error_tracking_rum_error_events_sum is not unset:
+ kwargs["error_tracking_rum_error_events_sum"] = error_tracking_rum_error_events_sum
+ if event_management_correlation_correlated_events_sum is not unset:
+ kwargs["event_management_correlation_correlated_events_sum"] = event_management_correlation_correlated_events_sum
+ if event_management_correlation_correlated_related_events_sum is not unset:
+ kwargs["event_management_correlation_correlated_related_events_sum"] = event_management_correlation_correlated_related_events_sum
+ if event_management_correlation_sum is not unset:
+ kwargs["event_management_correlation_sum"] = event_management_correlation_sum
+ if fargate_container_profiler_profiling_fargate_avg is not unset:
+ kwargs["fargate_container_profiler_profiling_fargate_avg"] = fargate_container_profiler_profiling_fargate_avg
+ if fargate_container_profiler_profiling_fargate_eks_avg is not unset:
+ kwargs["fargate_container_profiler_profiling_fargate_eks_avg"] = fargate_container_profiler_profiling_fargate_eks_avg
+ if fargate_tasks_count_avg is not unset:
+ kwargs["fargate_tasks_count_avg"] = fargate_tasks_count_avg
+ if fargate_tasks_count_hwm is not unset:
+ kwargs["fargate_tasks_count_hwm"] = fargate_tasks_count_hwm
+ if feature_flags_config_requests_sum is not unset:
+ kwargs["feature_flags_config_requests_sum"] = feature_flags_config_requests_sum
+ if flex_logs_compute_large_avg is not unset:
+ kwargs["flex_logs_compute_large_avg"] = flex_logs_compute_large_avg
+ if flex_logs_compute_medium_avg is not unset:
+ kwargs["flex_logs_compute_medium_avg"] = flex_logs_compute_medium_avg
+ if flex_logs_compute_small_avg is not unset:
+ kwargs["flex_logs_compute_small_avg"] = flex_logs_compute_small_avg
+ if flex_logs_compute_xlarge_avg is not unset:
+ kwargs["flex_logs_compute_xlarge_avg"] = flex_logs_compute_xlarge_avg
+ if flex_logs_compute_xsmall_avg is not unset:
+ kwargs["flex_logs_compute_xsmall_avg"] = flex_logs_compute_xsmall_avg
+ if flex_logs_starter_avg is not unset:
+ kwargs["flex_logs_starter_avg"] = flex_logs_starter_avg
+ if flex_logs_starter_storage_index_avg is not unset:
+ kwargs["flex_logs_starter_storage_index_avg"] = flex_logs_starter_storage_index_avg
+ if flex_logs_starter_storage_retention_adjustment_avg is not unset:
+ kwargs["flex_logs_starter_storage_retention_adjustment_avg"] = flex_logs_starter_storage_retention_adjustment_avg
+ if flex_stored_logs_avg is not unset:
+ kwargs["flex_stored_logs_avg"] = flex_stored_logs_avg
+ if forwarding_events_bytes_sum is not unset:
+ kwargs["forwarding_events_bytes_sum"] = forwarding_events_bytes_sum
+ if gcp_host_top99p is not unset:
+ kwargs["gcp_host_top99p"] = gcp_host_top99p
+ if heroku_host_top99p is not unset:
+ kwargs["heroku_host_top99p"] = heroku_host_top99p
+ if incident_management_monthly_active_users_hwm is not unset:
+ kwargs["incident_management_monthly_active_users_hwm"] = incident_management_monthly_active_users_hwm
+ if incident_management_seats_hwm is not unset:
+ kwargs["incident_management_seats_hwm"] = incident_management_seats_hwm
+ if indexed_events_count_sum is not unset:
+ kwargs["indexed_events_count_sum"] = indexed_events_count_sum
+ if indexed_points_sum is not unset:
+ kwargs["indexed_points_sum"] = indexed_points_sum
+ if infra_cpu_avg is not unset:
+ kwargs["infra_cpu_avg"] = infra_cpu_avg
+ if infra_cpu_default_infra_host_vcpu_agent_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_avg"] = infra_cpu_default_infra_host_vcpu_agent_avg
+ if infra_cpu_default_infra_host_vcpu_agent_basic_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_basic_avg"] = infra_cpu_default_infra_host_vcpu_agent_basic_avg
+ if infra_cpu_default_infra_host_vcpu_agent_basic_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_basic_sum"] = infra_cpu_default_infra_host_vcpu_agent_basic_sum
+ if infra_cpu_default_infra_host_vcpu_agent_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_sum"] = infra_cpu_default_infra_host_vcpu_agent_sum
+ if infra_cpu_default_infra_host_vcpu_aws_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_aws_avg"] = infra_cpu_default_infra_host_vcpu_aws_avg
+ if infra_cpu_default_infra_host_vcpu_aws_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_aws_sum"] = infra_cpu_default_infra_host_vcpu_aws_sum
+ if infra_cpu_default_infra_host_vcpu_azure_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_azure_avg"] = infra_cpu_default_infra_host_vcpu_azure_avg
+ if infra_cpu_default_infra_host_vcpu_azure_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_azure_sum"] = infra_cpu_default_infra_host_vcpu_azure_sum
+ if infra_cpu_default_infra_host_vcpu_gcp_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_gcp_avg"] = infra_cpu_default_infra_host_vcpu_gcp_avg
+ if infra_cpu_default_infra_host_vcpu_gcp_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_gcp_sum"] = infra_cpu_default_infra_host_vcpu_gcp_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_avg"] = infra_cpu_default_infra_host_vcpu_nutanix_avg
+ if infra_cpu_default_infra_host_vcpu_nutanix_basic_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_basic_avg"] = infra_cpu_default_infra_host_vcpu_nutanix_basic_avg
+ if infra_cpu_default_infra_host_vcpu_nutanix_basic_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_basic_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_basic_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_sum
+ if infra_cpu_default_infra_host_vcpu_opentelemetry_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_opentelemetry_avg"] = infra_cpu_default_infra_host_vcpu_opentelemetry_avg
+ if infra_cpu_default_infra_host_vcpu_opentelemetry_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_opentelemetry_sum"] = infra_cpu_default_infra_host_vcpu_opentelemetry_sum
+ if infra_cpu_observed_infra_host_vcpu_agent_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_agent_avg"] = infra_cpu_observed_infra_host_vcpu_agent_avg
+ if infra_cpu_observed_infra_host_vcpu_agent_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_agent_sum"] = infra_cpu_observed_infra_host_vcpu_agent_sum
+ if infra_cpu_observed_infra_host_vcpu_aws_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_aws_avg"] = infra_cpu_observed_infra_host_vcpu_aws_avg
+ if infra_cpu_observed_infra_host_vcpu_aws_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_aws_sum"] = infra_cpu_observed_infra_host_vcpu_aws_sum
+ if infra_cpu_observed_infra_host_vcpu_azure_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_azure_avg"] = infra_cpu_observed_infra_host_vcpu_azure_avg
+ if infra_cpu_observed_infra_host_vcpu_azure_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_azure_sum"] = infra_cpu_observed_infra_host_vcpu_azure_sum
+ if infra_cpu_observed_infra_host_vcpu_gcp_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_gcp_avg"] = infra_cpu_observed_infra_host_vcpu_gcp_avg
+ if infra_cpu_observed_infra_host_vcpu_gcp_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_gcp_sum"] = infra_cpu_observed_infra_host_vcpu_gcp_sum
+ if infra_cpu_observed_infra_host_vcpu_nutanix_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_nutanix_avg"] = infra_cpu_observed_infra_host_vcpu_nutanix_avg
+ if infra_cpu_observed_infra_host_vcpu_nutanix_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_nutanix_sum"] = infra_cpu_observed_infra_host_vcpu_nutanix_sum
+ if infra_cpu_observed_infra_host_vcpu_opentelemetry_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_opentelemetry_avg"] = infra_cpu_observed_infra_host_vcpu_opentelemetry_avg
+ if infra_cpu_observed_infra_host_vcpu_opentelemetry_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_opentelemetry_sum"] = infra_cpu_observed_infra_host_vcpu_opentelemetry_sum
+ if infra_cpu_sum is not unset:
+ kwargs["infra_cpu_sum"] = infra_cpu_sum
+ if infra_edge_monitoring_devices_top99p is not unset:
+ kwargs["infra_edge_monitoring_devices_top99p"] = infra_edge_monitoring_devices_top99p
+ if infra_host_basic_infra_basic_agent_top99p is not unset:
+ kwargs["infra_host_basic_infra_basic_agent_top99p"] = infra_host_basic_infra_basic_agent_top99p
+ if infra_host_basic_infra_basic_vsphere_top99p is not unset:
+ kwargs["infra_host_basic_infra_basic_vsphere_top99p"] = infra_host_basic_infra_basic_vsphere_top99p
+ if infra_host_basic_top99p is not unset:
+ kwargs["infra_host_basic_top99p"] = infra_host_basic_top99p
+ if infra_host_top99p is not unset:
+ kwargs["infra_host_top99p"] = infra_host_top99p
+ if infra_storage_mgmt_objects_count_avg is not unset:
+ kwargs["infra_storage_mgmt_objects_count_avg"] = infra_storage_mgmt_objects_count_avg
+ if ingest_points_sum is not unset:
+ kwargs["ingest_points_sum"] = ingest_points_sum
+ if ingested_events_bytes_sum is not unset:
+ kwargs["ingested_events_bytes_sum"] = ingested_events_bytes_sum
+ if iot_apm_host_sum is not unset:
+ kwargs["iot_apm_host_sum"] = iot_apm_host_sum
+ if iot_apm_host_top99p is not unset:
+ kwargs["iot_apm_host_top99p"] = iot_apm_host_top99p
+ if iot_device_sum is not unset:
+ kwargs["iot_device_sum"] = iot_device_sum
+ if iot_device_top99p is not unset:
+ kwargs["iot_device_top99p"] = iot_device_top99p
+ if llm_observability_15day_retention_spans_sum is not unset:
+ kwargs["llm_observability_15day_retention_spans_sum"] = llm_observability_15day_retention_spans_sum
+ if llm_observability_30day_retention_spans_sum is not unset:
+ kwargs["llm_observability_30day_retention_spans_sum"] = llm_observability_30day_retention_spans_sum
+ if llm_observability_60day_retention_spans_sum is not unset:
+ kwargs["llm_observability_60day_retention_spans_sum"] = llm_observability_60day_retention_spans_sum
+ if llm_observability_90day_retention_spans_sum is not unset:
+ kwargs["llm_observability_90day_retention_spans_sum"] = llm_observability_90day_retention_spans_sum
+ if llm_observability_min_spend_sum is not unset:
+ kwargs["llm_observability_min_spend_sum"] = llm_observability_min_spend_sum
+ if llm_observability_sum is not unset:
+ kwargs["llm_observability_sum"] = llm_observability_sum
+ if logs_archive_search_gb_scanned_sum is not unset:
+ kwargs["logs_archive_search_gb_scanned_sum"] = logs_archive_search_gb_scanned_sum
+ if metric_names_sum is not unset:
+ kwargs["metric_names_sum"] = metric_names_sum
+ if mobile_rum_lite_session_count_sum is not unset:
+ kwargs["mobile_rum_lite_session_count_sum"] = mobile_rum_lite_session_count_sum
+ if mobile_rum_session_count_android_sum is not unset:
+ kwargs["mobile_rum_session_count_android_sum"] = mobile_rum_session_count_android_sum
+ if mobile_rum_session_count_flutter_sum is not unset:
+ kwargs["mobile_rum_session_count_flutter_sum"] = mobile_rum_session_count_flutter_sum
+ if mobile_rum_session_count_ios_sum is not unset:
+ kwargs["mobile_rum_session_count_ios_sum"] = mobile_rum_session_count_ios_sum
+ if mobile_rum_session_count_reactnative_sum is not unset:
+ kwargs["mobile_rum_session_count_reactnative_sum"] = mobile_rum_session_count_reactnative_sum
+ if mobile_rum_session_count_roku_sum is not unset:
+ kwargs["mobile_rum_session_count_roku_sum"] = mobile_rum_session_count_roku_sum
+ if mobile_rum_session_count_sum is not unset:
+ kwargs["mobile_rum_session_count_sum"] = mobile_rum_session_count_sum
+ if mobile_rum_units_sum is not unset:
+ kwargs["mobile_rum_units_sum"] = mobile_rum_units_sum
+ if ndm_netflow_events_sum is not unset:
+ kwargs["ndm_netflow_events_sum"] = ndm_netflow_events_sum
+ if netflow_indexed_events_count_sum is not unset:
+ kwargs["netflow_indexed_events_count_sum"] = netflow_indexed_events_count_sum
+ if network_device_wireless_top99p is not unset:
+ kwargs["network_device_wireless_top99p"] = network_device_wireless_top99p
+ if network_path_sum is not unset:
+ kwargs["network_path_sum"] = network_path_sum
+ if npm_host_top99p is not unset:
+ kwargs["npm_host_top99p"] = npm_host_top99p
+ if observability_pipelines_bytes_processed_sum is not unset:
+ kwargs["observability_pipelines_bytes_processed_sum"] = observability_pipelines_bytes_processed_sum
+ if oci_host_sum is not unset:
+ kwargs["oci_host_sum"] = oci_host_sum
+ if oci_host_top99p is not unset:
+ kwargs["oci_host_top99p"] = oci_host_top99p
+ if on_call_seat_hwm is not unset:
+ kwargs["on_call_seat_hwm"] = on_call_seat_hwm
+ if online_archive_events_count_sum is not unset:
+ kwargs["online_archive_events_count_sum"] = online_archive_events_count_sum
+ if opentelemetry_apm_host_top99p is not unset:
+ kwargs["opentelemetry_apm_host_top99p"] = opentelemetry_apm_host_top99p
+ if opentelemetry_host_top99p is not unset:
+ kwargs["opentelemetry_host_top99p"] = opentelemetry_host_top99p
+ if orgs is not unset:
+ kwargs["orgs"] = orgs
+ if product_analytics_sum is not unset:
+ kwargs["product_analytics_sum"] = product_analytics_sum
+ if profiling_aas_count_top99p is not unset:
+ kwargs["profiling_aas_count_top99p"] = profiling_aas_count_top99p
+ if profiling_host_top99p is not unset:
+ kwargs["profiling_host_top99p"] = profiling_host_top99p
+ if proxmox_host_sum is not unset:
+ kwargs["proxmox_host_sum"] = proxmox_host_sum
+ if proxmox_host_top99p is not unset:
+ kwargs["proxmox_host_top99p"] = proxmox_host_top99p
+ if published_app_hwm is not unset:
+ kwargs["published_app_hwm"] = published_app_hwm
+ if rum_browser_and_mobile_session_count is not unset:
+ kwargs["rum_browser_and_mobile_session_count"] = rum_browser_and_mobile_session_count
+ if rum_browser_legacy_session_count_sum is not unset:
+ kwargs["rum_browser_legacy_session_count_sum"] = rum_browser_legacy_session_count_sum
+ if rum_browser_lite_session_count_sum is not unset:
+ kwargs["rum_browser_lite_session_count_sum"] = rum_browser_lite_session_count_sum
+ if rum_browser_replay_session_count_sum is not unset:
+ kwargs["rum_browser_replay_session_count_sum"] = rum_browser_replay_session_count_sum
+ if rum_indexed_sessions_sum is not unset:
+ kwargs["rum_indexed_sessions_sum"] = rum_indexed_sessions_sum
+ if rum_ingested_sessions_sum is not unset:
+ kwargs["rum_ingested_sessions_sum"] = rum_ingested_sessions_sum
+ if rum_lite_session_count_sum is not unset:
+ kwargs["rum_lite_session_count_sum"] = rum_lite_session_count_sum
+ if rum_mobile_legacy_session_count_android_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_android_sum"] = rum_mobile_legacy_session_count_android_sum
+ if rum_mobile_legacy_session_count_flutter_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_flutter_sum"] = rum_mobile_legacy_session_count_flutter_sum
+ if rum_mobile_legacy_session_count_ios_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_ios_sum"] = rum_mobile_legacy_session_count_ios_sum
+ if rum_mobile_legacy_session_count_reactnative_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_reactnative_sum"] = rum_mobile_legacy_session_count_reactnative_sum
+ if rum_mobile_legacy_session_count_roku_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_roku_sum"] = rum_mobile_legacy_session_count_roku_sum
+ if rum_mobile_lite_session_count_android_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_android_sum"] = rum_mobile_lite_session_count_android_sum
+ if rum_mobile_lite_session_count_flutter_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_flutter_sum"] = rum_mobile_lite_session_count_flutter_sum
+ if rum_mobile_lite_session_count_ios_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_ios_sum"] = rum_mobile_lite_session_count_ios_sum
+ if rum_mobile_lite_session_count_kotlinmultiplatform_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_kotlinmultiplatform_sum"] = rum_mobile_lite_session_count_kotlinmultiplatform_sum
+ if rum_mobile_lite_session_count_reactnative_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_reactnative_sum"] = rum_mobile_lite_session_count_reactnative_sum
+ if rum_mobile_lite_session_count_roku_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_roku_sum"] = rum_mobile_lite_session_count_roku_sum
+ if rum_mobile_lite_session_count_unity_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_unity_sum"] = rum_mobile_lite_session_count_unity_sum
+ if rum_mobile_replay_session_count_android_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_android_sum"] = rum_mobile_replay_session_count_android_sum
+ if rum_mobile_replay_session_count_ios_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_ios_sum"] = rum_mobile_replay_session_count_ios_sum
+ if rum_mobile_replay_session_count_kotlinmultiplatform_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_kotlinmultiplatform_sum"] = rum_mobile_replay_session_count_kotlinmultiplatform_sum
+ if rum_mobile_replay_session_count_reactnative_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_reactnative_sum"] = rum_mobile_replay_session_count_reactnative_sum
+ if rum_replay_session_count_sum is not unset:
+ kwargs["rum_replay_session_count_sum"] = rum_replay_session_count_sum
+ if rum_session_count_sum is not unset:
+ kwargs["rum_session_count_sum"] = rum_session_count_sum
+ if rum_session_replay_add_on_sum is not unset:
+ kwargs["rum_session_replay_add_on_sum"] = rum_session_replay_add_on_sum
+ if rum_total_session_count_sum is not unset:
+ kwargs["rum_total_session_count_sum"] = rum_total_session_count_sum
+ if rum_units_sum is not unset:
+ kwargs["rum_units_sum"] = rum_units_sum
+ if sca_fargate_count_avg is not unset:
+ kwargs["sca_fargate_count_avg"] = sca_fargate_count_avg
+ if sca_fargate_count_hwm is not unset:
+ kwargs["sca_fargate_count_hwm"] = sca_fargate_count_hwm
+ if sds_apm_scanned_bytes_sum is not unset:
+ kwargs["sds_apm_scanned_bytes_sum"] = sds_apm_scanned_bytes_sum
+ if sds_events_scanned_bytes_sum is not unset:
+ kwargs["sds_events_scanned_bytes_sum"] = sds_events_scanned_bytes_sum
+ if sds_logs_scanned_bytes_sum is not unset:
+ kwargs["sds_logs_scanned_bytes_sum"] = sds_logs_scanned_bytes_sum
+ if sds_rum_scanned_bytes_sum is not unset:
+ kwargs["sds_rum_scanned_bytes_sum"] = sds_rum_scanned_bytes_sum
+ if sds_total_scanned_bytes_sum is not unset:
+ kwargs["sds_total_scanned_bytes_sum"] = sds_total_scanned_bytes_sum
+ if serverless_apps_apm_apm_azure_appservice_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_azure_appservice_instances_avg"] = serverless_apps_apm_apm_azure_appservice_instances_avg
+ if serverless_apps_apm_apm_azure_azurefunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_azure_azurefunction_instances_avg"] = serverless_apps_apm_apm_azure_azurefunction_instances_avg
+ if serverless_apps_apm_apm_azure_containerapp_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_azure_containerapp_instances_avg"] = serverless_apps_apm_apm_azure_containerapp_instances_avg
+ if serverless_apps_apm_apm_fargate_ecs_tasks_avg is not unset:
+ kwargs["serverless_apps_apm_apm_fargate_ecs_tasks_avg"] = serverless_apps_apm_apm_fargate_ecs_tasks_avg
+ if serverless_apps_apm_apm_gcp_cloudfunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_cloudfunction_instances_avg"] = serverless_apps_apm_apm_gcp_cloudfunction_instances_avg
+ if serverless_apps_apm_apm_gcp_cloudrun_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_cloudrun_instances_avg"] = serverless_apps_apm_apm_gcp_cloudrun_instances_avg
+ if serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg"] = serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg
+ if serverless_apps_apm_avg is not unset:
+ kwargs["serverless_apps_apm_avg"] = serverless_apps_apm_avg
+ if serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg"] = serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg"] = serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg"] = serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg"] = serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg"] = serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg"] = serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg
+ if serverless_apps_apm_excl_fargate_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_avg"] = serverless_apps_apm_excl_fargate_avg
+ if serverless_apps_azure_container_app_instances_avg is not unset:
+ kwargs["serverless_apps_azure_container_app_instances_avg"] = serverless_apps_azure_container_app_instances_avg
+ if serverless_apps_azure_count_avg is not unset:
+ kwargs["serverless_apps_azure_count_avg"] = serverless_apps_azure_count_avg
+ if serverless_apps_azure_function_app_instances_avg is not unset:
+ kwargs["serverless_apps_azure_function_app_instances_avg"] = serverless_apps_azure_function_app_instances_avg
+ if serverless_apps_azure_web_app_instances_avg is not unset:
+ kwargs["serverless_apps_azure_web_app_instances_avg"] = serverless_apps_azure_web_app_instances_avg
+ if serverless_apps_dsm_fargate_tasks_avg is not unset:
+ kwargs["serverless_apps_dsm_fargate_tasks_avg"] = serverless_apps_dsm_fargate_tasks_avg
+ if serverless_apps_ecs_avg is not unset:
+ kwargs["serverless_apps_ecs_avg"] = serverless_apps_ecs_avg
+ if serverless_apps_eks_avg is not unset:
+ kwargs["serverless_apps_eks_avg"] = serverless_apps_eks_avg
+ if serverless_apps_excl_fargate_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_avg"] = serverless_apps_excl_fargate_avg
+ if serverless_apps_excl_fargate_azure_container_app_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_container_app_instances_avg"] = serverless_apps_excl_fargate_azure_container_app_instances_avg
+ if serverless_apps_excl_fargate_azure_function_app_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_function_app_instances_avg"] = serverless_apps_excl_fargate_azure_function_app_instances_avg
+ if serverless_apps_excl_fargate_azure_web_app_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_web_app_instances_avg"] = serverless_apps_excl_fargate_azure_web_app_instances_avg
+ if serverless_apps_excl_fargate_google_cloud_functions_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_google_cloud_functions_instances_avg"] = serverless_apps_excl_fargate_google_cloud_functions_instances_avg
+ if serverless_apps_excl_fargate_google_cloud_run_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_google_cloud_run_instances_avg"] = serverless_apps_excl_fargate_google_cloud_run_instances_avg
+ if serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg"] = serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg
+ if serverless_apps_google_cloud_functions_instances_avg is not unset:
+ kwargs["serverless_apps_google_cloud_functions_instances_avg"] = serverless_apps_google_cloud_functions_instances_avg
+ if serverless_apps_google_cloud_run_instances_avg is not unset:
+ kwargs["serverless_apps_google_cloud_run_instances_avg"] = serverless_apps_google_cloud_run_instances_avg
+ if serverless_apps_google_count_avg is not unset:
+ kwargs["serverless_apps_google_count_avg"] = serverless_apps_google_count_avg
+ if serverless_apps_infra_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_infra_gcp_gke_autopilot_pods_avg"] = serverless_apps_infra_gcp_gke_autopilot_pods_avg
+ if serverless_apps_total_count_avg is not unset:
+ kwargs["serverless_apps_total_count_avg"] = serverless_apps_total_count_avg
+ if siem_12mo_retention_sum is not unset:
+ kwargs["siem_12mo_retention_sum"] = siem_12mo_retention_sum
+ if siem_6mo_retention_sum is not unset:
+ kwargs["siem_6mo_retention_sum"] = siem_6mo_retention_sum
+ if siem_analyzed_logs_add_on_count_sum is not unset:
+ kwargs["siem_analyzed_logs_add_on_count_sum"] = siem_analyzed_logs_add_on_count_sum
+ if snmp_device_count_sum is not unset:
+ kwargs["snmp_device_count_sum"] = snmp_device_count_sum
+ if snmp_device_count_top99p is not unset:
+ kwargs["snmp_device_count_top99p"] = snmp_device_count_top99p
+ if synthetics_browser_check_calls_count_sum is not unset:
+ kwargs["synthetics_browser_check_calls_count_sum"] = synthetics_browser_check_calls_count_sum
+ if synthetics_check_calls_count_sum is not unset:
+ kwargs["synthetics_check_calls_count_sum"] = synthetics_check_calls_count_sum
+ if synthetics_mobile_test_runs_sum is not unset:
+ kwargs["synthetics_mobile_test_runs_sum"] = synthetics_mobile_test_runs_sum
+ if synthetics_parallel_testing_max_slots_hwm is not unset:
+ kwargs["synthetics_parallel_testing_max_slots_hwm"] = synthetics_parallel_testing_max_slots_hwm
+ if trace_search_indexed_events_count_sum is not unset:
+ kwargs["trace_search_indexed_events_count_sum"] = trace_search_indexed_events_count_sum
+ if twol_ingested_events_bytes_sum is not unset:
+ kwargs["twol_ingested_events_bytes_sum"] = twol_ingested_events_bytes_sum
+ if universal_service_monitoring_host_top99p is not unset:
+ kwargs["universal_service_monitoring_host_top99p"] = universal_service_monitoring_host_top99p
+ if vsphere_host_top99p is not unset:
+ kwargs["vsphere_host_top99p"] = vsphere_host_top99p
+ if vuln_management_host_count_top99p is not unset:
+ kwargs["vuln_management_host_count_top99p"] = vuln_management_host_count_top99p
+ if workflow_executions_usage_sum is not unset:
+ kwargs["workflow_executions_usage_sum"] = workflow_executions_usage_sum
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_summary_date_org.py b/datadog_api_client/v1/model/usage_summary_date_org.py
new file mode 100644
index 0000000000..fab6cff086
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_summary_date_org.py
@@ -0,0 +1,2197 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSummaryDateOrg(ModelNormal):
+ # Cross-SDK semantic marker. In Python, typed fields are already accessible via
+ # bracket notation (model["key"]) through _data_store, so no runtime change is needed.
+ _keep_typed_in_additional_properties = True
+ @cached_property
+ def openapi_types(_):
+ return {
+ "account_name": (str,),
+ "account_public_id": (str,),
+ "agent_host_top99p": (int,),
+ "ai_credits_agent_builder_ai_credits_sum": (int,),
+ "ai_credits_bits_assistant_ai_credits_sum": (int,),
+ "ai_credits_bits_dev_ai_credits_sum": (int,),
+ "ai_credits_bits_sre_ai_credits_sum": (int,),
+ "ai_credits_sum": (int,),
+ "apm_azure_app_service_host_top99p": (int,),
+ "apm_devsecops_host_top99p": (int,),
+ "apm_enterprise_standalone_hosts_top99p": (int,),
+ "apm_fargate_count_avg": (int,),
+ "apm_host_top99p": (int,),
+ "apm_pro_standalone_hosts_top99p": (int,),
+ "appsec_fargate_count_avg": (int,),
+ "asm_serverless_sum": (int,),
+ "audit_logs_lines_indexed_sum": (int,),
+ "audit_trail_enabled_hwm": (int,),
+ "audit_trail_event_forwarding_events_sum": (int,),
+ "avg_profiled_fargate_tasks": (int,),
+ "aws_host_top99p": (int,),
+ "aws_lambda_func_count": (int,),
+ "aws_lambda_invocations_sum": (int,),
+ "azure_app_service_top99p": (int,),
+ "billable_ingested_bytes_sum": (int,),
+ "bits_ai_investigations_sum": (int,),
+ "browser_rum_lite_session_count_sum": (int,),
+ "browser_rum_replay_session_count_sum": (int,),
+ "browser_rum_units_sum": (int,),
+ "ccm_anthropic_spend_last": (int,),
+ "ccm_aws_spend_last": (int,),
+ "ccm_azure_spend_last": (int,),
+ "ccm_confluent_spend_last": (int,),
+ "ccm_databricks_spend_last": (int,),
+ "ccm_elastic_spend_last": (int,),
+ "ccm_fastly_spend_last": (int,),
+ "ccm_gcp_spend_last": (int,),
+ "ccm_github_spend_last": (int,),
+ "ccm_mongodb_spend_last": (int,),
+ "ccm_oci_spend_last": (int,),
+ "ccm_openai_spend_last": (int,),
+ "ccm_snowflake_spend_last": (int,),
+ "ccm_spend_monitored_ent_last": (int,),
+ "ccm_spend_monitored_pro_last": (int,),
+ "ccm_twilio_spend_last": (int,),
+ "ci_pipeline_indexed_spans_sum": (int,),
+ "ci_test_indexed_spans_sum": (int,),
+ "ci_visibility_itr_committers_hwm": (int,),
+ "ci_visibility_pipeline_committers_hwm": (int,),
+ "ci_visibility_test_committers_hwm": (int,),
+ "cloud_cost_management_aws_host_count_avg": (int,),
+ "cloud_cost_management_azure_host_count_avg": (int,),
+ "cloud_cost_management_gcp_host_count_avg": (int,),
+ "cloud_cost_management_host_count_avg": (int,),
+ "cloud_cost_management_oci_host_count_avg": (int,),
+ "cloud_siem_events_sum": (int,),
+ "cloud_siem_indexed_logs_sum": (int,),
+ "code_analysis_sa_committers_hwm": (int,),
+ "code_analysis_sca_committers_hwm": (int,),
+ "code_security_host_top99p": (int,),
+ "container_avg": (int,),
+ "container_excl_agent_avg": (int,),
+ "container_hwm": (int,),
+ "csm_container_enterprise_compliance_count_sum": (int,),
+ "csm_container_enterprise_cws_count_sum": (int,),
+ "csm_container_enterprise_total_count_sum": (int,),
+ "csm_host_enterprise_aas_host_count_top99p": (int,),
+ "csm_host_enterprise_aws_host_count_top99p": (int,),
+ "csm_host_enterprise_azure_host_count_top99p": (int,),
+ "csm_host_enterprise_compliance_host_count_top99p": (int,),
+ "csm_host_enterprise_cws_host_count_top99p": (int,),
+ "csm_host_enterprise_gcp_host_count_top99p": (int,),
+ "csm_host_enterprise_oci_host_count_top99p": (int,),
+ "csm_host_enterprise_total_host_count_top99p": (int,),
+ "csm_host_pro_hosts_agentless_scanners_sum": (int,),
+ "csm_host_pro_hosts_agentless_scanners_top99p": (int,),
+ "csm_host_pro_oci_host_count_top99p": (int,),
+ "cspm_aas_host_top99p": (int,),
+ "cspm_aws_host_top99p": (int,),
+ "cspm_azure_host_top99p": (int,),
+ "cspm_container_avg": (int,),
+ "cspm_container_hwm": (int,),
+ "cspm_gcp_host_top99p": (int,),
+ "cspm_host_top99p": (int,),
+ "cspm_hosts_agentless_scanners_sum": (int,),
+ "cspm_hosts_agentless_scanners_top99p": (int,),
+ "custom_historical_ts_avg": (int,),
+ "custom_live_ts_avg": (int,),
+ "custom_ts_avg": (int,),
+ "cws_container_count_avg": (int,),
+ "cws_fargate_task_avg": (int,),
+ "cws_host_top99p": (int,),
+ "data_jobs_monitoring_host_hr_sum": (int,),
+ "data_stream_monitoring_host_count_sum": (int,),
+ "data_stream_monitoring_host_count_top99p": (int,),
+ "dbm_host_top99p_sum": (int,),
+ "dbm_queries_avg_sum": (int,),
+ "do_jobs_monitoring_orchestrators_job_hours_sum": (int,),
+ "eph_infra_host_agent_sum": (int,),
+ "eph_infra_host_alibaba_sum": (int,),
+ "eph_infra_host_aws_sum": (int,),
+ "eph_infra_host_azure_sum": (int,),
+ "eph_infra_host_basic_infra_basic_agent_sum": (int,),
+ "eph_infra_host_basic_infra_basic_vsphere_sum": (int,),
+ "eph_infra_host_basic_sum": (int,),
+ "eph_infra_host_ent_sum": (int,),
+ "eph_infra_host_gcp_sum": (int,),
+ "eph_infra_host_heroku_sum": (int,),
+ "eph_infra_host_only_aas_sum": (int,),
+ "eph_infra_host_only_vsphere_sum": (int,),
+ "eph_infra_host_opentelemetry_apm_sum": (int,),
+ "eph_infra_host_opentelemetry_sum": (int,),
+ "eph_infra_host_pro_sum": (int,),
+ "eph_infra_host_proplus_sum": (int,),
+ "eph_infra_host_proxmox_sum": (int,),
+ "error_tracking_apm_error_events_sum": (int,),
+ "error_tracking_error_events_sum": (int,),
+ "error_tracking_events_sum": (int,),
+ "error_tracking_rum_error_events_sum": (int,),
+ "event_management_correlation_correlated_events_sum": (int,),
+ "event_management_correlation_correlated_related_events_sum": (int,),
+ "event_management_correlation_sum": (int,),
+ "fargate_container_profiler_profiling_fargate_avg": (int,),
+ "fargate_container_profiler_profiling_fargate_eks_avg": (int,),
+ "fargate_tasks_count_avg": (int,),
+ "fargate_tasks_count_hwm": (int,),
+ "feature_flags_config_requests_sum": (int,),
+ "flex_logs_compute_large_avg": (int,),
+ "flex_logs_compute_medium_avg": (int,),
+ "flex_logs_compute_small_avg": (int,),
+ "flex_logs_compute_xlarge_avg": (int,),
+ "flex_logs_compute_xsmall_avg": (int,),
+ "flex_logs_starter_avg": (int,),
+ "flex_logs_starter_storage_index_avg": (int,),
+ "flex_logs_starter_storage_retention_adjustment_avg": (int,),
+ "flex_stored_logs_avg": (int,),
+ "forwarding_events_bytes_sum": (int,),
+ "gcp_host_top99p": (int,),
+ "heroku_host_top99p": (int,),
+ "id": (str,),
+ "incident_management_monthly_active_users_hwm": (int,),
+ "incident_management_seats_hwm": (int,),
+ "indexed_events_count_sum": (int,),
+ "indexed_points_sum": (int,),
+ "infra_cpu_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_basic_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_basic_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_aws_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_aws_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_azure_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_azure_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_gcp_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_gcp_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_avg": (int,),
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_agent_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_agent_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_aws_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_aws_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_azure_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_azure_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_gcp_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_gcp_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_nutanix_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_nutanix_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg": (int,),
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_sum": (int,),
+ "infra_cpu_sum": (int,),
+ "infra_edge_monitoring_devices_top99p": (int,),
+ "infra_host_basic_infra_basic_agent_top99p": (int,),
+ "infra_host_basic_infra_basic_vsphere_top99p": (int,),
+ "infra_host_basic_top99p": (int,),
+ "infra_host_top99p": (int,),
+ "infra_storage_mgmt_objects_count_avg": (int,),
+ "ingest_points_sum": (int,),
+ "ingested_events_bytes_sum": (int,),
+ "iot_apm_host_sum": (int,),
+ "iot_apm_host_top99p": (int,),
+ "iot_device_agg_sum": (int,),
+ "iot_device_top99p_sum": (int,),
+ "llm_observability_15day_retention_spans_sum": (int,),
+ "llm_observability_30day_retention_spans_sum": (int,),
+ "llm_observability_60day_retention_spans_sum": (int,),
+ "llm_observability_90day_retention_spans_sum": (int,),
+ "llm_observability_min_spend_sum": (int,),
+ "llm_observability_sum": (int,),
+ "logs_archive_search_gb_scanned_sum": (int,),
+ "metric_names_sum": (int,),
+ "mobile_rum_lite_session_count_sum": (int,),
+ "mobile_rum_session_count_android_sum": (int,),
+ "mobile_rum_session_count_flutter_sum": (int,),
+ "mobile_rum_session_count_ios_sum": (int,),
+ "mobile_rum_session_count_reactnative_sum": (int,),
+ "mobile_rum_session_count_roku_sum": (int,),
+ "mobile_rum_session_count_sum": (int,),
+ "mobile_rum_units_sum": (int,),
+ "name": (str,),
+ "ndm_netflow_events_sum": (int,),
+ "netflow_indexed_events_count_sum": (int,),
+ "network_device_wireless_top99p": (int,),
+ "network_path_sum": (int,),
+ "npm_host_top99p": (int,),
+ "observability_pipelines_bytes_processed_sum": (int,),
+ "oci_host_sum": (int,),
+ "oci_host_top99p": (int,),
+ "on_call_seat_hwm": (int,),
+ "online_archive_events_count_sum": (int,),
+ "opentelemetry_apm_host_top99p": (int,),
+ "opentelemetry_host_top99p": (int,),
+ "product_analytics_sum": (int,),
+ "profiling_aas_count_top99p": (int,),
+ "profiling_host_top99p": (int,),
+ "proxmox_host_sum": (int,),
+ "proxmox_host_top99p": (int,),
+ "public_id": (str,),
+ "published_app_hwm": (int,),
+ "region": (str,),
+ "rum_browser_and_mobile_session_count": (int,),
+ "rum_browser_legacy_session_count_sum": (int,),
+ "rum_browser_lite_session_count_sum": (int,),
+ "rum_browser_replay_session_count_sum": (int,),
+ "rum_indexed_sessions_sum": (int,),
+ "rum_ingested_sessions_sum": (int,),
+ "rum_lite_session_count_sum": (int,),
+ "rum_mobile_legacy_session_count_android_sum": (int,),
+ "rum_mobile_legacy_session_count_flutter_sum": (int,),
+ "rum_mobile_legacy_session_count_ios_sum": (int,),
+ "rum_mobile_legacy_session_count_reactnative_sum": (int,),
+ "rum_mobile_legacy_session_count_roku_sum": (int,),
+ "rum_mobile_lite_session_count_android_sum": (int,),
+ "rum_mobile_lite_session_count_flutter_sum": (int,),
+ "rum_mobile_lite_session_count_ios_sum": (int,),
+ "rum_mobile_lite_session_count_kotlinmultiplatform_sum": (int,),
+ "rum_mobile_lite_session_count_reactnative_sum": (int,),
+ "rum_mobile_lite_session_count_roku_sum": (int,),
+ "rum_mobile_lite_session_count_unity_sum": (int,),
+ "rum_mobile_replay_session_count_android_sum": (int,),
+ "rum_mobile_replay_session_count_ios_sum": (int,),
+ "rum_mobile_replay_session_count_kotlinmultiplatform_sum": (int,),
+ "rum_mobile_replay_session_count_reactnative_sum": (int,),
+ "rum_replay_session_count_sum": (int,),
+ "rum_session_count_sum": (int,),
+ "rum_session_replay_add_on_sum": (int,),
+ "rum_total_session_count_sum": (int,),
+ "rum_units_sum": (int,),
+ "sca_fargate_count_avg": (int,),
+ "sca_fargate_count_hwm": (int,),
+ "sds_apm_scanned_bytes_sum": (int,),
+ "sds_events_scanned_bytes_sum": (int,),
+ "sds_logs_scanned_bytes_sum": (int,),
+ "sds_rum_scanned_bytes_sum": (int,),
+ "sds_total_scanned_bytes_sum": (int,),
+ "serverless_apps_apm_apm_azure_appservice_instances_avg": (int,),
+ "serverless_apps_apm_apm_azure_azurefunction_instances_avg": (int,),
+ "serverless_apps_apm_apm_azure_containerapp_instances_avg": (int,),
+ "serverless_apps_apm_apm_fargate_ecs_tasks_avg": (int,),
+ "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg": (int,),
+ "serverless_apps_apm_apm_gcp_cloudrun_instances_avg": (int,),
+ "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_apm_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_apm_excl_fargate_avg": (int,),
+ "serverless_apps_azure_container_app_instances_avg": (int,),
+ "serverless_apps_azure_count_avg": (int,),
+ "serverless_apps_azure_function_app_instances_avg": (int,),
+ "serverless_apps_azure_web_app_instances_avg": (int,),
+ "serverless_apps_dsm_fargate_tasks_avg": (int,),
+ "serverless_apps_ecs_avg": (int,),
+ "serverless_apps_eks_avg": (int,),
+ "serverless_apps_excl_fargate_avg": (int,),
+ "serverless_apps_excl_fargate_azure_container_app_instances_avg": (int,),
+ "serverless_apps_excl_fargate_azure_function_app_instances_avg": (int,),
+ "serverless_apps_excl_fargate_azure_web_app_instances_avg": (int,),
+ "serverless_apps_excl_fargate_google_cloud_functions_instances_avg": (int,),
+ "serverless_apps_excl_fargate_google_cloud_run_instances_avg": (int,),
+ "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_google_cloud_functions_instances_avg": (int,),
+ "serverless_apps_google_cloud_run_instances_avg": (int,),
+ "serverless_apps_google_count_avg": (int,),
+ "serverless_apps_infra_gcp_gke_autopilot_pods_avg": (int,),
+ "serverless_apps_total_count_avg": (int,),
+ "siem_12mo_retention_sum": (int,),
+ "siem_6mo_retention_sum": (int,),
+ "siem_analyzed_logs_add_on_count_sum": (int,),
+ "snmp_device_count_sum": (int,),
+ "snmp_device_count_top99p": (int,),
+ "synthetics_browser_check_calls_count_sum": (int,),
+ "synthetics_check_calls_count_sum": (int,),
+ "synthetics_mobile_test_runs_sum": (int,),
+ "synthetics_parallel_testing_max_slots_hwm": (int,),
+ "trace_search_indexed_events_count_sum": (int,),
+ "twol_ingested_events_bytes_sum": (int,),
+ "universal_service_monitoring_host_top99p": (int,),
+ "vsphere_host_top99p": (int,),
+ "vuln_management_host_count_top99p": (int,),
+ "workflow_executions_usage_sum": (int,),
+ }
+ attribute_map = {
+ "account_name": "account_name",
+ "account_public_id": "account_public_id",
+ "agent_host_top99p": "agent_host_top99p",
+ "ai_credits_agent_builder_ai_credits_sum": "ai_credits_agent_builder_ai_credits_sum",
+ "ai_credits_bits_assistant_ai_credits_sum": "ai_credits_bits_assistant_ai_credits_sum",
+ "ai_credits_bits_dev_ai_credits_sum": "ai_credits_bits_dev_ai_credits_sum",
+ "ai_credits_bits_sre_ai_credits_sum": "ai_credits_bits_sre_ai_credits_sum",
+ "ai_credits_sum": "ai_credits_sum",
+ "apm_azure_app_service_host_top99p": "apm_azure_app_service_host_top99p",
+ "apm_devsecops_host_top99p": "apm_devsecops_host_top99p",
+ "apm_enterprise_standalone_hosts_top99p": "apm_enterprise_standalone_hosts_top99p",
+ "apm_fargate_count_avg": "apm_fargate_count_avg",
+ "apm_host_top99p": "apm_host_top99p",
+ "apm_pro_standalone_hosts_top99p": "apm_pro_standalone_hosts_top99p",
+ "appsec_fargate_count_avg": "appsec_fargate_count_avg",
+ "asm_serverless_sum": "asm_serverless_sum",
+ "audit_logs_lines_indexed_sum": "audit_logs_lines_indexed_sum",
+ "audit_trail_enabled_hwm": "audit_trail_enabled_hwm",
+ "audit_trail_event_forwarding_events_sum": "audit_trail_event_forwarding_events_sum",
+ "avg_profiled_fargate_tasks": "avg_profiled_fargate_tasks",
+ "aws_host_top99p": "aws_host_top99p",
+ "aws_lambda_func_count": "aws_lambda_func_count",
+ "aws_lambda_invocations_sum": "aws_lambda_invocations_sum",
+ "azure_app_service_top99p": "azure_app_service_top99p",
+ "billable_ingested_bytes_sum": "billable_ingested_bytes_sum",
+ "bits_ai_investigations_sum": "bits_ai_investigations_sum",
+ "browser_rum_lite_session_count_sum": "browser_rum_lite_session_count_sum",
+ "browser_rum_replay_session_count_sum": "browser_rum_replay_session_count_sum",
+ "browser_rum_units_sum": "browser_rum_units_sum",
+ "ccm_anthropic_spend_last": "ccm_anthropic_spend_last",
+ "ccm_aws_spend_last": "ccm_aws_spend_last",
+ "ccm_azure_spend_last": "ccm_azure_spend_last",
+ "ccm_confluent_spend_last": "ccm_confluent_spend_last",
+ "ccm_databricks_spend_last": "ccm_databricks_spend_last",
+ "ccm_elastic_spend_last": "ccm_elastic_spend_last",
+ "ccm_fastly_spend_last": "ccm_fastly_spend_last",
+ "ccm_gcp_spend_last": "ccm_gcp_spend_last",
+ "ccm_github_spend_last": "ccm_github_spend_last",
+ "ccm_mongodb_spend_last": "ccm_mongodb_spend_last",
+ "ccm_oci_spend_last": "ccm_oci_spend_last",
+ "ccm_openai_spend_last": "ccm_openai_spend_last",
+ "ccm_snowflake_spend_last": "ccm_snowflake_spend_last",
+ "ccm_spend_monitored_ent_last": "ccm_spend_monitored_ent_last",
+ "ccm_spend_monitored_pro_last": "ccm_spend_monitored_pro_last",
+ "ccm_twilio_spend_last": "ccm_twilio_spend_last",
+ "ci_pipeline_indexed_spans_sum": "ci_pipeline_indexed_spans_sum",
+ "ci_test_indexed_spans_sum": "ci_test_indexed_spans_sum",
+ "ci_visibility_itr_committers_hwm": "ci_visibility_itr_committers_hwm",
+ "ci_visibility_pipeline_committers_hwm": "ci_visibility_pipeline_committers_hwm",
+ "ci_visibility_test_committers_hwm": "ci_visibility_test_committers_hwm",
+ "cloud_cost_management_aws_host_count_avg": "cloud_cost_management_aws_host_count_avg",
+ "cloud_cost_management_azure_host_count_avg": "cloud_cost_management_azure_host_count_avg",
+ "cloud_cost_management_gcp_host_count_avg": "cloud_cost_management_gcp_host_count_avg",
+ "cloud_cost_management_host_count_avg": "cloud_cost_management_host_count_avg",
+ "cloud_cost_management_oci_host_count_avg": "cloud_cost_management_oci_host_count_avg",
+ "cloud_siem_events_sum": "cloud_siem_events_sum",
+ "cloud_siem_indexed_logs_sum": "cloud_siem_indexed_logs_sum",
+ "code_analysis_sa_committers_hwm": "code_analysis_sa_committers_hwm",
+ "code_analysis_sca_committers_hwm": "code_analysis_sca_committers_hwm",
+ "code_security_host_top99p": "code_security_host_top99p",
+ "container_avg": "container_avg",
+ "container_excl_agent_avg": "container_excl_agent_avg",
+ "container_hwm": "container_hwm",
+ "csm_container_enterprise_compliance_count_sum": "csm_container_enterprise_compliance_count_sum",
+ "csm_container_enterprise_cws_count_sum": "csm_container_enterprise_cws_count_sum",
+ "csm_container_enterprise_total_count_sum": "csm_container_enterprise_total_count_sum",
+ "csm_host_enterprise_aas_host_count_top99p": "csm_host_enterprise_aas_host_count_top99p",
+ "csm_host_enterprise_aws_host_count_top99p": "csm_host_enterprise_aws_host_count_top99p",
+ "csm_host_enterprise_azure_host_count_top99p": "csm_host_enterprise_azure_host_count_top99p",
+ "csm_host_enterprise_compliance_host_count_top99p": "csm_host_enterprise_compliance_host_count_top99p",
+ "csm_host_enterprise_cws_host_count_top99p": "csm_host_enterprise_cws_host_count_top99p",
+ "csm_host_enterprise_gcp_host_count_top99p": "csm_host_enterprise_gcp_host_count_top99p",
+ "csm_host_enterprise_oci_host_count_top99p": "csm_host_enterprise_oci_host_count_top99p",
+ "csm_host_enterprise_total_host_count_top99p": "csm_host_enterprise_total_host_count_top99p",
+ "csm_host_pro_hosts_agentless_scanners_sum": "csm_host_pro_hosts_agentless_scanners_sum",
+ "csm_host_pro_hosts_agentless_scanners_top99p": "csm_host_pro_hosts_agentless_scanners_top99p",
+ "csm_host_pro_oci_host_count_top99p": "csm_host_pro_oci_host_count_top99p",
+ "cspm_aas_host_top99p": "cspm_aas_host_top99p",
+ "cspm_aws_host_top99p": "cspm_aws_host_top99p",
+ "cspm_azure_host_top99p": "cspm_azure_host_top99p",
+ "cspm_container_avg": "cspm_container_avg",
+ "cspm_container_hwm": "cspm_container_hwm",
+ "cspm_gcp_host_top99p": "cspm_gcp_host_top99p",
+ "cspm_host_top99p": "cspm_host_top99p",
+ "cspm_hosts_agentless_scanners_sum": "cspm_hosts_agentless_scanners_sum",
+ "cspm_hosts_agentless_scanners_top99p": "cspm_hosts_agentless_scanners_top99p",
+ "custom_historical_ts_avg": "custom_historical_ts_avg",
+ "custom_live_ts_avg": "custom_live_ts_avg",
+ "custom_ts_avg": "custom_ts_avg",
+ "cws_container_count_avg": "cws_container_count_avg",
+ "cws_fargate_task_avg": "cws_fargate_task_avg",
+ "cws_host_top99p": "cws_host_top99p",
+ "data_jobs_monitoring_host_hr_sum": "data_jobs_monitoring_host_hr_sum",
+ "data_stream_monitoring_host_count_sum": "data_stream_monitoring_host_count_sum",
+ "data_stream_monitoring_host_count_top99p": "data_stream_monitoring_host_count_top99p",
+ "dbm_host_top99p_sum": "dbm_host_top99p_sum",
+ "dbm_queries_avg_sum": "dbm_queries_avg_sum",
+ "do_jobs_monitoring_orchestrators_job_hours_sum": "do_jobs_monitoring_orchestrators_job_hours_sum",
+ "eph_infra_host_agent_sum": "eph_infra_host_agent_sum",
+ "eph_infra_host_alibaba_sum": "eph_infra_host_alibaba_sum",
+ "eph_infra_host_aws_sum": "eph_infra_host_aws_sum",
+ "eph_infra_host_azure_sum": "eph_infra_host_azure_sum",
+ "eph_infra_host_basic_infra_basic_agent_sum": "eph_infra_host_basic_infra_basic_agent_sum",
+ "eph_infra_host_basic_infra_basic_vsphere_sum": "eph_infra_host_basic_infra_basic_vsphere_sum",
+ "eph_infra_host_basic_sum": "eph_infra_host_basic_sum",
+ "eph_infra_host_ent_sum": "eph_infra_host_ent_sum",
+ "eph_infra_host_gcp_sum": "eph_infra_host_gcp_sum",
+ "eph_infra_host_heroku_sum": "eph_infra_host_heroku_sum",
+ "eph_infra_host_only_aas_sum": "eph_infra_host_only_aas_sum",
+ "eph_infra_host_only_vsphere_sum": "eph_infra_host_only_vsphere_sum",
+ "eph_infra_host_opentelemetry_apm_sum": "eph_infra_host_opentelemetry_apm_sum",
+ "eph_infra_host_opentelemetry_sum": "eph_infra_host_opentelemetry_sum",
+ "eph_infra_host_pro_sum": "eph_infra_host_pro_sum",
+ "eph_infra_host_proplus_sum": "eph_infra_host_proplus_sum",
+ "eph_infra_host_proxmox_sum": "eph_infra_host_proxmox_sum",
+ "error_tracking_apm_error_events_sum": "error_tracking_apm_error_events_sum",
+ "error_tracking_error_events_sum": "error_tracking_error_events_sum",
+ "error_tracking_events_sum": "error_tracking_events_sum",
+ "error_tracking_rum_error_events_sum": "error_tracking_rum_error_events_sum",
+ "event_management_correlation_correlated_events_sum": "event_management_correlation_correlated_events_sum",
+ "event_management_correlation_correlated_related_events_sum": "event_management_correlation_correlated_related_events_sum",
+ "event_management_correlation_sum": "event_management_correlation_sum",
+ "fargate_container_profiler_profiling_fargate_avg": "fargate_container_profiler_profiling_fargate_avg",
+ "fargate_container_profiler_profiling_fargate_eks_avg": "fargate_container_profiler_profiling_fargate_eks_avg",
+ "fargate_tasks_count_avg": "fargate_tasks_count_avg",
+ "fargate_tasks_count_hwm": "fargate_tasks_count_hwm",
+ "feature_flags_config_requests_sum": "feature_flags_config_requests_sum",
+ "flex_logs_compute_large_avg": "flex_logs_compute_large_avg",
+ "flex_logs_compute_medium_avg": "flex_logs_compute_medium_avg",
+ "flex_logs_compute_small_avg": "flex_logs_compute_small_avg",
+ "flex_logs_compute_xlarge_avg": "flex_logs_compute_xlarge_avg",
+ "flex_logs_compute_xsmall_avg": "flex_logs_compute_xsmall_avg",
+ "flex_logs_starter_avg": "flex_logs_starter_avg",
+ "flex_logs_starter_storage_index_avg": "flex_logs_starter_storage_index_avg",
+ "flex_logs_starter_storage_retention_adjustment_avg": "flex_logs_starter_storage_retention_adjustment_avg",
+ "flex_stored_logs_avg": "flex_stored_logs_avg",
+ "forwarding_events_bytes_sum": "forwarding_events_bytes_sum",
+ "gcp_host_top99p": "gcp_host_top99p",
+ "heroku_host_top99p": "heroku_host_top99p",
+ "id": "id",
+ "incident_management_monthly_active_users_hwm": "incident_management_monthly_active_users_hwm",
+ "incident_management_seats_hwm": "incident_management_seats_hwm",
+ "indexed_events_count_sum": "indexed_events_count_sum",
+ "indexed_points_sum": "indexed_points_sum",
+ "infra_cpu_avg": "infra_cpu_avg",
+ "infra_cpu_default_infra_host_vcpu_agent_avg": "infra_cpu_default_infra_host_vcpu_agent_avg",
+ "infra_cpu_default_infra_host_vcpu_agent_basic_avg": "infra_cpu_default_infra_host_vcpu_agent_basic_avg",
+ "infra_cpu_default_infra_host_vcpu_agent_basic_sum": "infra_cpu_default_infra_host_vcpu_agent_basic_sum",
+ "infra_cpu_default_infra_host_vcpu_agent_sum": "infra_cpu_default_infra_host_vcpu_agent_sum",
+ "infra_cpu_default_infra_host_vcpu_aws_avg": "infra_cpu_default_infra_host_vcpu_aws_avg",
+ "infra_cpu_default_infra_host_vcpu_aws_sum": "infra_cpu_default_infra_host_vcpu_aws_sum",
+ "infra_cpu_default_infra_host_vcpu_azure_avg": "infra_cpu_default_infra_host_vcpu_azure_avg",
+ "infra_cpu_default_infra_host_vcpu_azure_sum": "infra_cpu_default_infra_host_vcpu_azure_sum",
+ "infra_cpu_default_infra_host_vcpu_gcp_avg": "infra_cpu_default_infra_host_vcpu_gcp_avg",
+ "infra_cpu_default_infra_host_vcpu_gcp_sum": "infra_cpu_default_infra_host_vcpu_gcp_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_avg": "infra_cpu_default_infra_host_vcpu_nutanix_avg",
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg": "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg",
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_sum": "infra_cpu_default_infra_host_vcpu_nutanix_basic_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_sum": "infra_cpu_default_infra_host_vcpu_nutanix_sum",
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_avg": "infra_cpu_default_infra_host_vcpu_opentelemetry_avg",
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_sum": "infra_cpu_default_infra_host_vcpu_opentelemetry_sum",
+ "infra_cpu_observed_infra_host_vcpu_agent_avg": "infra_cpu_observed_infra_host_vcpu_agent_avg",
+ "infra_cpu_observed_infra_host_vcpu_agent_sum": "infra_cpu_observed_infra_host_vcpu_agent_sum",
+ "infra_cpu_observed_infra_host_vcpu_aws_avg": "infra_cpu_observed_infra_host_vcpu_aws_avg",
+ "infra_cpu_observed_infra_host_vcpu_aws_sum": "infra_cpu_observed_infra_host_vcpu_aws_sum",
+ "infra_cpu_observed_infra_host_vcpu_azure_avg": "infra_cpu_observed_infra_host_vcpu_azure_avg",
+ "infra_cpu_observed_infra_host_vcpu_azure_sum": "infra_cpu_observed_infra_host_vcpu_azure_sum",
+ "infra_cpu_observed_infra_host_vcpu_gcp_avg": "infra_cpu_observed_infra_host_vcpu_gcp_avg",
+ "infra_cpu_observed_infra_host_vcpu_gcp_sum": "infra_cpu_observed_infra_host_vcpu_gcp_sum",
+ "infra_cpu_observed_infra_host_vcpu_nutanix_avg": "infra_cpu_observed_infra_host_vcpu_nutanix_avg",
+ "infra_cpu_observed_infra_host_vcpu_nutanix_sum": "infra_cpu_observed_infra_host_vcpu_nutanix_sum",
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg": "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg",
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_sum": "infra_cpu_observed_infra_host_vcpu_opentelemetry_sum",
+ "infra_cpu_sum": "infra_cpu_sum",
+ "infra_edge_monitoring_devices_top99p": "infra_edge_monitoring_devices_top99p",
+ "infra_host_basic_infra_basic_agent_top99p": "infra_host_basic_infra_basic_agent_top99p",
+ "infra_host_basic_infra_basic_vsphere_top99p": "infra_host_basic_infra_basic_vsphere_top99p",
+ "infra_host_basic_top99p": "infra_host_basic_top99p",
+ "infra_host_top99p": "infra_host_top99p",
+ "infra_storage_mgmt_objects_count_avg": "infra_storage_mgmt_objects_count_avg",
+ "ingest_points_sum": "ingest_points_sum",
+ "ingested_events_bytes_sum": "ingested_events_bytes_sum",
+ "iot_apm_host_sum": "iot_apm_host_sum",
+ "iot_apm_host_top99p": "iot_apm_host_top99p",
+ "iot_device_agg_sum": "iot_device_agg_sum",
+ "iot_device_top99p_sum": "iot_device_top99p_sum",
+ "llm_observability_15day_retention_spans_sum": "llm_observability_15day_retention_spans_sum",
+ "llm_observability_30day_retention_spans_sum": "llm_observability_30day_retention_spans_sum",
+ "llm_observability_60day_retention_spans_sum": "llm_observability_60day_retention_spans_sum",
+ "llm_observability_90day_retention_spans_sum": "llm_observability_90day_retention_spans_sum",
+ "llm_observability_min_spend_sum": "llm_observability_min_spend_sum",
+ "llm_observability_sum": "llm_observability_sum",
+ "logs_archive_search_gb_scanned_sum": "logs_archive_search_gb_scanned_sum",
+ "metric_names_sum": "metric_names_sum",
+ "mobile_rum_lite_session_count_sum": "mobile_rum_lite_session_count_sum",
+ "mobile_rum_session_count_android_sum": "mobile_rum_session_count_android_sum",
+ "mobile_rum_session_count_flutter_sum": "mobile_rum_session_count_flutter_sum",
+ "mobile_rum_session_count_ios_sum": "mobile_rum_session_count_ios_sum",
+ "mobile_rum_session_count_reactnative_sum": "mobile_rum_session_count_reactnative_sum",
+ "mobile_rum_session_count_roku_sum": "mobile_rum_session_count_roku_sum",
+ "mobile_rum_session_count_sum": "mobile_rum_session_count_sum",
+ "mobile_rum_units_sum": "mobile_rum_units_sum",
+ "name": "name",
+ "ndm_netflow_events_sum": "ndm_netflow_events_sum",
+ "netflow_indexed_events_count_sum": "netflow_indexed_events_count_sum",
+ "network_device_wireless_top99p": "network_device_wireless_top99p",
+ "network_path_sum": "network_path_sum",
+ "npm_host_top99p": "npm_host_top99p",
+ "observability_pipelines_bytes_processed_sum": "observability_pipelines_bytes_processed_sum",
+ "oci_host_sum": "oci_host_sum",
+ "oci_host_top99p": "oci_host_top99p",
+ "on_call_seat_hwm": "on_call_seat_hwm",
+ "online_archive_events_count_sum": "online_archive_events_count_sum",
+ "opentelemetry_apm_host_top99p": "opentelemetry_apm_host_top99p",
+ "opentelemetry_host_top99p": "opentelemetry_host_top99p",
+ "product_analytics_sum": "product_analytics_sum",
+ "profiling_aas_count_top99p": "profiling_aas_count_top99p",
+ "profiling_host_top99p": "profiling_host_top99p",
+ "proxmox_host_sum": "proxmox_host_sum",
+ "proxmox_host_top99p": "proxmox_host_top99p",
+ "public_id": "public_id",
+ "published_app_hwm": "published_app_hwm",
+ "region": "region",
+ "rum_browser_and_mobile_session_count": "rum_browser_and_mobile_session_count",
+ "rum_browser_legacy_session_count_sum": "rum_browser_legacy_session_count_sum",
+ "rum_browser_lite_session_count_sum": "rum_browser_lite_session_count_sum",
+ "rum_browser_replay_session_count_sum": "rum_browser_replay_session_count_sum",
+ "rum_indexed_sessions_sum": "rum_indexed_sessions_sum",
+ "rum_ingested_sessions_sum": "rum_ingested_sessions_sum",
+ "rum_lite_session_count_sum": "rum_lite_session_count_sum",
+ "rum_mobile_legacy_session_count_android_sum": "rum_mobile_legacy_session_count_android_sum",
+ "rum_mobile_legacy_session_count_flutter_sum": "rum_mobile_legacy_session_count_flutter_sum",
+ "rum_mobile_legacy_session_count_ios_sum": "rum_mobile_legacy_session_count_ios_sum",
+ "rum_mobile_legacy_session_count_reactnative_sum": "rum_mobile_legacy_session_count_reactnative_sum",
+ "rum_mobile_legacy_session_count_roku_sum": "rum_mobile_legacy_session_count_roku_sum",
+ "rum_mobile_lite_session_count_android_sum": "rum_mobile_lite_session_count_android_sum",
+ "rum_mobile_lite_session_count_flutter_sum": "rum_mobile_lite_session_count_flutter_sum",
+ "rum_mobile_lite_session_count_ios_sum": "rum_mobile_lite_session_count_ios_sum",
+ "rum_mobile_lite_session_count_kotlinmultiplatform_sum": "rum_mobile_lite_session_count_kotlinmultiplatform_sum",
+ "rum_mobile_lite_session_count_reactnative_sum": "rum_mobile_lite_session_count_reactnative_sum",
+ "rum_mobile_lite_session_count_roku_sum": "rum_mobile_lite_session_count_roku_sum",
+ "rum_mobile_lite_session_count_unity_sum": "rum_mobile_lite_session_count_unity_sum",
+ "rum_mobile_replay_session_count_android_sum": "rum_mobile_replay_session_count_android_sum",
+ "rum_mobile_replay_session_count_ios_sum": "rum_mobile_replay_session_count_ios_sum",
+ "rum_mobile_replay_session_count_kotlinmultiplatform_sum": "rum_mobile_replay_session_count_kotlinmultiplatform_sum",
+ "rum_mobile_replay_session_count_reactnative_sum": "rum_mobile_replay_session_count_reactnative_sum",
+ "rum_replay_session_count_sum": "rum_replay_session_count_sum",
+ "rum_session_count_sum": "rum_session_count_sum",
+ "rum_session_replay_add_on_sum": "rum_session_replay_add_on_sum",
+ "rum_total_session_count_sum": "rum_total_session_count_sum",
+ "rum_units_sum": "rum_units_sum",
+ "sca_fargate_count_avg": "sca_fargate_count_avg",
+ "sca_fargate_count_hwm": "sca_fargate_count_hwm",
+ "sds_apm_scanned_bytes_sum": "sds_apm_scanned_bytes_sum",
+ "sds_events_scanned_bytes_sum": "sds_events_scanned_bytes_sum",
+ "sds_logs_scanned_bytes_sum": "sds_logs_scanned_bytes_sum",
+ "sds_rum_scanned_bytes_sum": "sds_rum_scanned_bytes_sum",
+ "sds_total_scanned_bytes_sum": "sds_total_scanned_bytes_sum",
+ "serverless_apps_apm_apm_azure_appservice_instances_avg": "serverless_apps_apm_apm_azure_appservice_instances_avg",
+ "serverless_apps_apm_apm_azure_azurefunction_instances_avg": "serverless_apps_apm_apm_azure_azurefunction_instances_avg",
+ "serverless_apps_apm_apm_azure_containerapp_instances_avg": "serverless_apps_apm_apm_azure_containerapp_instances_avg",
+ "serverless_apps_apm_apm_fargate_ecs_tasks_avg": "serverless_apps_apm_apm_fargate_ecs_tasks_avg",
+ "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg": "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg",
+ "serverless_apps_apm_apm_gcp_cloudrun_instances_avg": "serverless_apps_apm_apm_gcp_cloudrun_instances_avg",
+ "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg": "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_apm_avg": "serverless_apps_apm_avg",
+ "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg": "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg": "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg": "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg": "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg": "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg",
+ "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg": "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_apm_excl_fargate_avg": "serverless_apps_apm_excl_fargate_avg",
+ "serverless_apps_azure_container_app_instances_avg": "serverless_apps_azure_container_app_instances_avg",
+ "serverless_apps_azure_count_avg": "serverless_apps_azure_count_avg",
+ "serverless_apps_azure_function_app_instances_avg": "serverless_apps_azure_function_app_instances_avg",
+ "serverless_apps_azure_web_app_instances_avg": "serverless_apps_azure_web_app_instances_avg",
+ "serverless_apps_dsm_fargate_tasks_avg": "serverless_apps_dsm_fargate_tasks_avg",
+ "serverless_apps_ecs_avg": "serverless_apps_ecs_avg",
+ "serverless_apps_eks_avg": "serverless_apps_eks_avg",
+ "serverless_apps_excl_fargate_avg": "serverless_apps_excl_fargate_avg",
+ "serverless_apps_excl_fargate_azure_container_app_instances_avg": "serverless_apps_excl_fargate_azure_container_app_instances_avg",
+ "serverless_apps_excl_fargate_azure_function_app_instances_avg": "serverless_apps_excl_fargate_azure_function_app_instances_avg",
+ "serverless_apps_excl_fargate_azure_web_app_instances_avg": "serverless_apps_excl_fargate_azure_web_app_instances_avg",
+ "serverless_apps_excl_fargate_google_cloud_functions_instances_avg": "serverless_apps_excl_fargate_google_cloud_functions_instances_avg",
+ "serverless_apps_excl_fargate_google_cloud_run_instances_avg": "serverless_apps_excl_fargate_google_cloud_run_instances_avg",
+ "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg": "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_google_cloud_functions_instances_avg": "serverless_apps_google_cloud_functions_instances_avg",
+ "serverless_apps_google_cloud_run_instances_avg": "serverless_apps_google_cloud_run_instances_avg",
+ "serverless_apps_google_count_avg": "serverless_apps_google_count_avg",
+ "serverless_apps_infra_gcp_gke_autopilot_pods_avg": "serverless_apps_infra_gcp_gke_autopilot_pods_avg",
+ "serverless_apps_total_count_avg": "serverless_apps_total_count_avg",
+ "siem_12mo_retention_sum": "siem_12mo_retention_sum",
+ "siem_6mo_retention_sum": "siem_6mo_retention_sum",
+ "siem_analyzed_logs_add_on_count_sum": "siem_analyzed_logs_add_on_count_sum",
+ "snmp_device_count_sum": "snmp_device_count_sum",
+ "snmp_device_count_top99p": "snmp_device_count_top99p",
+ "synthetics_browser_check_calls_count_sum": "synthetics_browser_check_calls_count_sum",
+ "synthetics_check_calls_count_sum": "synthetics_check_calls_count_sum",
+ "synthetics_mobile_test_runs_sum": "synthetics_mobile_test_runs_sum",
+ "synthetics_parallel_testing_max_slots_hwm": "synthetics_parallel_testing_max_slots_hwm",
+ "trace_search_indexed_events_count_sum": "trace_search_indexed_events_count_sum",
+ "twol_ingested_events_bytes_sum": "twol_ingested_events_bytes_sum",
+ "universal_service_monitoring_host_top99p": "universal_service_monitoring_host_top99p",
+ "vsphere_host_top99p": "vsphere_host_top99p",
+ "vuln_management_host_count_top99p": "vuln_management_host_count_top99p",
+ "workflow_executions_usage_sum": "workflow_executions_usage_sum",
+ }
+
+ def __init__(self_, account_name: Union[str, UnsetType]=unset, account_public_id: Union[str, UnsetType]=unset, agent_host_top99p: Union[int, UnsetType]=unset, ai_credits_agent_builder_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_bits_assistant_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_bits_dev_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_bits_sre_ai_credits_sum: Union[int, UnsetType]=unset, ai_credits_sum: Union[int, UnsetType]=unset, apm_azure_app_service_host_top99p: Union[int, UnsetType]=unset, apm_devsecops_host_top99p: Union[int, UnsetType]=unset, apm_enterprise_standalone_hosts_top99p: Union[int, UnsetType]=unset, apm_fargate_count_avg: Union[int, UnsetType]=unset, apm_host_top99p: Union[int, UnsetType]=unset, apm_pro_standalone_hosts_top99p: Union[int, UnsetType]=unset, appsec_fargate_count_avg: Union[int, UnsetType]=unset, asm_serverless_sum: Union[int, UnsetType]=unset, audit_logs_lines_indexed_sum: Union[int, UnsetType]=unset, audit_trail_enabled_hwm: Union[int, UnsetType]=unset, audit_trail_event_forwarding_events_sum: Union[int, UnsetType]=unset, avg_profiled_fargate_tasks: Union[int, UnsetType]=unset, aws_host_top99p: Union[int, UnsetType]=unset, aws_lambda_func_count: Union[int, UnsetType]=unset, aws_lambda_invocations_sum: Union[int, UnsetType]=unset, azure_app_service_top99p: Union[int, UnsetType]=unset, billable_ingested_bytes_sum: Union[int, UnsetType]=unset, bits_ai_investigations_sum: Union[int, UnsetType]=unset, browser_rum_lite_session_count_sum: Union[int, UnsetType]=unset, browser_rum_replay_session_count_sum: Union[int, UnsetType]=unset, browser_rum_units_sum: Union[int, UnsetType]=unset, ccm_anthropic_spend_last: Union[int, UnsetType]=unset, ccm_aws_spend_last: Union[int, UnsetType]=unset, ccm_azure_spend_last: Union[int, UnsetType]=unset, ccm_confluent_spend_last: Union[int, UnsetType]=unset, ccm_databricks_spend_last: Union[int, UnsetType]=unset, ccm_elastic_spend_last: Union[int, UnsetType]=unset, ccm_fastly_spend_last: Union[int, UnsetType]=unset, ccm_gcp_spend_last: Union[int, UnsetType]=unset, ccm_github_spend_last: Union[int, UnsetType]=unset, ccm_mongodb_spend_last: Union[int, UnsetType]=unset, ccm_oci_spend_last: Union[int, UnsetType]=unset, ccm_openai_spend_last: Union[int, UnsetType]=unset, ccm_snowflake_spend_last: Union[int, UnsetType]=unset, ccm_spend_monitored_ent_last: Union[int, UnsetType]=unset, ccm_spend_monitored_pro_last: Union[int, UnsetType]=unset, ccm_twilio_spend_last: Union[int, UnsetType]=unset, ci_pipeline_indexed_spans_sum: Union[int, UnsetType]=unset, ci_test_indexed_spans_sum: Union[int, UnsetType]=unset, ci_visibility_itr_committers_hwm: Union[int, UnsetType]=unset, ci_visibility_pipeline_committers_hwm: Union[int, UnsetType]=unset, ci_visibility_test_committers_hwm: Union[int, UnsetType]=unset, cloud_cost_management_aws_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_azure_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_gcp_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_host_count_avg: Union[int, UnsetType]=unset, cloud_cost_management_oci_host_count_avg: Union[int, UnsetType]=unset, cloud_siem_events_sum: Union[int, UnsetType]=unset, cloud_siem_indexed_logs_sum: Union[int, UnsetType]=unset, code_analysis_sa_committers_hwm: Union[int, UnsetType]=unset, code_analysis_sca_committers_hwm: Union[int, UnsetType]=unset, code_security_host_top99p: Union[int, UnsetType]=unset, container_avg: Union[int, UnsetType]=unset, container_excl_agent_avg: Union[int, UnsetType]=unset, container_hwm: Union[int, UnsetType]=unset, csm_container_enterprise_compliance_count_sum: Union[int, UnsetType]=unset, csm_container_enterprise_cws_count_sum: Union[int, UnsetType]=unset, csm_container_enterprise_total_count_sum: Union[int, UnsetType]=unset, csm_host_enterprise_aas_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_aws_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_azure_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_compliance_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_cws_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_gcp_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_oci_host_count_top99p: Union[int, UnsetType]=unset, csm_host_enterprise_total_host_count_top99p: Union[int, UnsetType]=unset, csm_host_pro_hosts_agentless_scanners_sum: Union[int, UnsetType]=unset, csm_host_pro_hosts_agentless_scanners_top99p: Union[int, UnsetType]=unset, csm_host_pro_oci_host_count_top99p: Union[int, UnsetType]=unset, cspm_aas_host_top99p: Union[int, UnsetType]=unset, cspm_aws_host_top99p: Union[int, UnsetType]=unset, cspm_azure_host_top99p: Union[int, UnsetType]=unset, cspm_container_avg: Union[int, UnsetType]=unset, cspm_container_hwm: Union[int, UnsetType]=unset, cspm_gcp_host_top99p: Union[int, UnsetType]=unset, cspm_host_top99p: Union[int, UnsetType]=unset, cspm_hosts_agentless_scanners_sum: Union[int, UnsetType]=unset, cspm_hosts_agentless_scanners_top99p: Union[int, UnsetType]=unset, custom_historical_ts_avg: Union[int, UnsetType]=unset, custom_live_ts_avg: Union[int, UnsetType]=unset, custom_ts_avg: Union[int, UnsetType]=unset, cws_container_count_avg: Union[int, UnsetType]=unset, cws_fargate_task_avg: Union[int, UnsetType]=unset, cws_host_top99p: Union[int, UnsetType]=unset, data_jobs_monitoring_host_hr_sum: Union[int, UnsetType]=unset, data_stream_monitoring_host_count_sum: Union[int, UnsetType]=unset, data_stream_monitoring_host_count_top99p: Union[int, UnsetType]=unset, dbm_host_top99p_sum: Union[int, UnsetType]=unset, dbm_queries_avg_sum: Union[int, UnsetType]=unset, do_jobs_monitoring_orchestrators_job_hours_sum: Union[int, UnsetType]=unset, eph_infra_host_agent_sum: Union[int, UnsetType]=unset, eph_infra_host_alibaba_sum: Union[int, UnsetType]=unset, eph_infra_host_aws_sum: Union[int, UnsetType]=unset, eph_infra_host_azure_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_infra_basic_agent_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_infra_basic_vsphere_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_sum: Union[int, UnsetType]=unset, eph_infra_host_ent_sum: Union[int, UnsetType]=unset, eph_infra_host_gcp_sum: Union[int, UnsetType]=unset, eph_infra_host_heroku_sum: Union[int, UnsetType]=unset, eph_infra_host_only_aas_sum: Union[int, UnsetType]=unset, eph_infra_host_only_vsphere_sum: Union[int, UnsetType]=unset, eph_infra_host_opentelemetry_apm_sum: Union[int, UnsetType]=unset, eph_infra_host_opentelemetry_sum: Union[int, UnsetType]=unset, eph_infra_host_pro_sum: Union[int, UnsetType]=unset, eph_infra_host_proplus_sum: Union[int, UnsetType]=unset, eph_infra_host_proxmox_sum: Union[int, UnsetType]=unset, error_tracking_apm_error_events_sum: Union[int, UnsetType]=unset, error_tracking_error_events_sum: Union[int, UnsetType]=unset, error_tracking_events_sum: Union[int, UnsetType]=unset, error_tracking_rum_error_events_sum: Union[int, UnsetType]=unset, event_management_correlation_correlated_events_sum: Union[int, UnsetType]=unset, event_management_correlation_correlated_related_events_sum: Union[int, UnsetType]=unset, event_management_correlation_sum: Union[int, UnsetType]=unset, fargate_container_profiler_profiling_fargate_avg: Union[int, UnsetType]=unset, fargate_container_profiler_profiling_fargate_eks_avg: Union[int, UnsetType]=unset, fargate_tasks_count_avg: Union[int, UnsetType]=unset, fargate_tasks_count_hwm: Union[int, UnsetType]=unset, feature_flags_config_requests_sum: Union[int, UnsetType]=unset, flex_logs_compute_large_avg: Union[int, UnsetType]=unset, flex_logs_compute_medium_avg: Union[int, UnsetType]=unset, flex_logs_compute_small_avg: Union[int, UnsetType]=unset, flex_logs_compute_xlarge_avg: Union[int, UnsetType]=unset, flex_logs_compute_xsmall_avg: Union[int, UnsetType]=unset, flex_logs_starter_avg: Union[int, UnsetType]=unset, flex_logs_starter_storage_index_avg: Union[int, UnsetType]=unset, flex_logs_starter_storage_retention_adjustment_avg: Union[int, UnsetType]=unset, flex_stored_logs_avg: Union[int, UnsetType]=unset, forwarding_events_bytes_sum: Union[int, UnsetType]=unset, gcp_host_top99p: Union[int, UnsetType]=unset, heroku_host_top99p: Union[int, UnsetType]=unset, id: Union[str, UnsetType]=unset, incident_management_monthly_active_users_hwm: Union[int, UnsetType]=unset, incident_management_seats_hwm: Union[int, UnsetType]=unset, indexed_events_count_sum: Union[int, UnsetType]=unset, indexed_points_sum: Union[int, UnsetType]=unset, infra_cpu_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_basic_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_basic_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_aws_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_aws_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_azure_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_azure_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_gcp_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_gcp_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_opentelemetry_avg: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_opentelemetry_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_agent_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_agent_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_aws_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_aws_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_azure_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_azure_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_gcp_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_gcp_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_nutanix_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_nutanix_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: Union[int, UnsetType]=unset, infra_cpu_sum: Union[int, UnsetType]=unset, infra_edge_monitoring_devices_top99p: Union[int, UnsetType]=unset, infra_host_basic_infra_basic_agent_top99p: Union[int, UnsetType]=unset, infra_host_basic_infra_basic_vsphere_top99p: Union[int, UnsetType]=unset, infra_host_basic_top99p: Union[int, UnsetType]=unset, infra_host_top99p: Union[int, UnsetType]=unset, infra_storage_mgmt_objects_count_avg: Union[int, UnsetType]=unset, ingest_points_sum: Union[int, UnsetType]=unset, ingested_events_bytes_sum: Union[int, UnsetType]=unset, iot_apm_host_sum: Union[int, UnsetType]=unset, iot_apm_host_top99p: Union[int, UnsetType]=unset, iot_device_agg_sum: Union[int, UnsetType]=unset, iot_device_top99p_sum: Union[int, UnsetType]=unset, llm_observability_15day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_30day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_60day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_90day_retention_spans_sum: Union[int, UnsetType]=unset, llm_observability_min_spend_sum: Union[int, UnsetType]=unset, llm_observability_sum: Union[int, UnsetType]=unset, logs_archive_search_gb_scanned_sum: Union[int, UnsetType]=unset, metric_names_sum: Union[int, UnsetType]=unset, mobile_rum_lite_session_count_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_android_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_flutter_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_ios_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_reactnative_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_roku_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_sum: Union[int, UnsetType]=unset, mobile_rum_units_sum: Union[int, UnsetType]=unset, name: Union[str, UnsetType]=unset, ndm_netflow_events_sum: Union[int, UnsetType]=unset, netflow_indexed_events_count_sum: Union[int, UnsetType]=unset, network_device_wireless_top99p: Union[int, UnsetType]=unset, network_path_sum: Union[int, UnsetType]=unset, npm_host_top99p: Union[int, UnsetType]=unset, observability_pipelines_bytes_processed_sum: Union[int, UnsetType]=unset, oci_host_sum: Union[int, UnsetType]=unset, oci_host_top99p: Union[int, UnsetType]=unset, on_call_seat_hwm: Union[int, UnsetType]=unset, online_archive_events_count_sum: Union[int, UnsetType]=unset, opentelemetry_apm_host_top99p: Union[int, UnsetType]=unset, opentelemetry_host_top99p: Union[int, UnsetType]=unset, product_analytics_sum: Union[int, UnsetType]=unset, profiling_aas_count_top99p: Union[int, UnsetType]=unset, profiling_host_top99p: Union[int, UnsetType]=unset, proxmox_host_sum: Union[int, UnsetType]=unset, proxmox_host_top99p: Union[int, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, published_app_hwm: Union[int, UnsetType]=unset, region: Union[str, UnsetType]=unset, rum_browser_and_mobile_session_count: Union[int, UnsetType]=unset, rum_browser_legacy_session_count_sum: Union[int, UnsetType]=unset, rum_browser_lite_session_count_sum: Union[int, UnsetType]=unset, rum_browser_replay_session_count_sum: Union[int, UnsetType]=unset, rum_indexed_sessions_sum: Union[int, UnsetType]=unset, rum_ingested_sessions_sum: Union[int, UnsetType]=unset, rum_lite_session_count_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_android_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_flutter_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_ios_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_reactnative_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_roku_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_android_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_flutter_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_ios_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_kotlinmultiplatform_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_reactnative_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_roku_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_unity_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_android_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_ios_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_kotlinmultiplatform_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_reactnative_sum: Union[int, UnsetType]=unset, rum_replay_session_count_sum: Union[int, UnsetType]=unset, rum_session_count_sum: Union[int, UnsetType]=unset, rum_session_replay_add_on_sum: Union[int, UnsetType]=unset, rum_total_session_count_sum: Union[int, UnsetType]=unset, rum_units_sum: Union[int, UnsetType]=unset, sca_fargate_count_avg: Union[int, UnsetType]=unset, sca_fargate_count_hwm: Union[int, UnsetType]=unset, sds_apm_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_events_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_logs_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_rum_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_total_scanned_bytes_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_appservice_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_azurefunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_containerapp_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_fargate_ecs_tasks_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_cloudfunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_cloudrun_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_apm_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_avg: Union[int, UnsetType]=unset, serverless_apps_azure_container_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_azure_count_avg: Union[int, UnsetType]=unset, serverless_apps_azure_function_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_azure_web_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_dsm_fargate_tasks_avg: Union[int, UnsetType]=unset, serverless_apps_ecs_avg: Union[int, UnsetType]=unset, serverless_apps_eks_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_container_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_function_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_web_app_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_google_cloud_functions_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_google_cloud_run_instances_avg: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_google_cloud_functions_instances_avg: Union[int, UnsetType]=unset, serverless_apps_google_cloud_run_instances_avg: Union[int, UnsetType]=unset, serverless_apps_google_count_avg: Union[int, UnsetType]=unset, serverless_apps_infra_gcp_gke_autopilot_pods_avg: Union[int, UnsetType]=unset, serverless_apps_total_count_avg: Union[int, UnsetType]=unset, siem_12mo_retention_sum: Union[int, UnsetType]=unset, siem_6mo_retention_sum: Union[int, UnsetType]=unset, siem_analyzed_logs_add_on_count_sum: Union[int, UnsetType]=unset, snmp_device_count_sum: Union[int, UnsetType]=unset, snmp_device_count_top99p: Union[int, UnsetType]=unset, synthetics_browser_check_calls_count_sum: Union[int, UnsetType]=unset, synthetics_check_calls_count_sum: Union[int, UnsetType]=unset, synthetics_mobile_test_runs_sum: Union[int, UnsetType]=unset, synthetics_parallel_testing_max_slots_hwm: Union[int, UnsetType]=unset, trace_search_indexed_events_count_sum: Union[int, UnsetType]=unset, twol_ingested_events_bytes_sum: Union[int, UnsetType]=unset, universal_service_monitoring_host_top99p: Union[int, UnsetType]=unset, vsphere_host_top99p: Union[int, UnsetType]=unset, vuln_management_host_count_top99p: Union[int, UnsetType]=unset, workflow_executions_usage_sum: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Global hourly report of all data billed by Datadog for a given organization.
+
+ For SDK users only: all fields at this response level are accessible through the
+ ``additionalProperties`` map. Existing typed-field getters are unchanged. New billing
+ dimensions will not have typed-field getters. Use
+ `Get available fields for usage summary `_
+ to enumerate every available key.
+
+ :param account_name: The account name.
+ :type account_name: str, optional
+
+ :param account_public_id: The account public id.
+ :type account_public_id: str, optional
+
+ :param agent_host_top99p: Shows the 99th percentile of all agent hosts over all hours in the current date for the given org.
+ :type agent_host_top99p: int, optional
+
+ :param ai_credits_agent_builder_ai_credits_sum: Shows the sum of all AI credits used by Agent Builder over all hours in the current date for the given org.
+ :type ai_credits_agent_builder_ai_credits_sum: int, optional
+
+ :param ai_credits_bits_assistant_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current date for the given org.
+ :type ai_credits_bits_assistant_ai_credits_sum: int, optional
+
+ :param ai_credits_bits_dev_ai_credits_sum: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current date for the given org.
+ :type ai_credits_bits_dev_ai_credits_sum: int, optional
+
+ :param ai_credits_bits_sre_ai_credits_sum: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current date for the given org.
+ :type ai_credits_bits_sre_ai_credits_sum: int, optional
+
+ :param ai_credits_sum: Shows the sum of all AI credits over all hours in the current date for the given org.
+ :type ai_credits_sum: int, optional
+
+ :param apm_azure_app_service_host_top99p: Shows the 99th percentile of all Azure app services using APM over all hours in the current date for the given org.
+ :type apm_azure_app_service_host_top99p: int, optional
+
+ :param apm_devsecops_host_top99p: Shows the 99th percentile of all APM DevSecOps hosts over all hours in the current date for the given org.
+ :type apm_devsecops_host_top99p: int, optional
+
+ :param apm_enterprise_standalone_hosts_top99p: Shows the 99th percentile of all distinct standalone Enterprise hosts over all hours in the current date for the given org.
+ :type apm_enterprise_standalone_hosts_top99p: int, optional
+
+ :param apm_fargate_count_avg: Shows the average of all APM ECS Fargate tasks over all hours in the current month for the given org.
+ :type apm_fargate_count_avg: int, optional
+
+ :param apm_host_top99p: Shows the 99th percentile of all distinct APM hosts over all hours in the current date for the given org.
+ :type apm_host_top99p: int, optional
+
+ :param apm_pro_standalone_hosts_top99p: Shows the 99th percentile of all distinct standalone Pro hosts over all hours in the current date for the given org.
+ :type apm_pro_standalone_hosts_top99p: int, optional
+
+ :param appsec_fargate_count_avg: Shows the average of all Application Security Monitoring ECS Fargate tasks over all hours in the current month for the given org.
+ :type appsec_fargate_count_avg: int, optional
+
+ :param asm_serverless_sum: Shows the sum of all Application Security Monitoring Serverless invocations over all hours in the current month for the given org.
+ :type asm_serverless_sum: int, optional
+
+ :param audit_logs_lines_indexed_sum: Shows the sum of all audit logs lines indexed over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type audit_logs_lines_indexed_sum: int, optional
+
+ :param audit_trail_enabled_hwm: Shows whether Audit Trail is enabled for the current date for the given org.
+ :type audit_trail_enabled_hwm: int, optional
+
+ :param audit_trail_event_forwarding_events_sum: Shows the sum of all Audit Trail event forwarding events over all hours in the current date for the given org.
+ :type audit_trail_event_forwarding_events_sum: int, optional
+
+ :param avg_profiled_fargate_tasks: The average total count for Fargate Container Profiler over all hours in the current month for the given org.
+ :type avg_profiled_fargate_tasks: int, optional
+
+ :param aws_host_top99p: Shows the 99th percentile of all AWS hosts over all hours in the current date for the given org.
+ :type aws_host_top99p: int, optional
+
+ :param aws_lambda_func_count: Shows the sum of all AWS Lambda invocations over all hours in the current date for the given org.
+ :type aws_lambda_func_count: int, optional
+
+ :param aws_lambda_invocations_sum: Shows the sum of all AWS Lambda invocations over all hours in the current date for the given org.
+ :type aws_lambda_invocations_sum: int, optional
+
+ :param azure_app_service_top99p: Shows the 99th percentile of all Azure app services over all hours in the current date for the given org.
+ :type azure_app_service_top99p: int, optional
+
+ :param billable_ingested_bytes_sum: Shows the sum of all log bytes ingested over all hours in the current date for the given org.
+ :type billable_ingested_bytes_sum: int, optional
+
+ :param bits_ai_investigations_sum: Shows the sum of all Bits AI Investigations over all hours in the current date for the given org.
+ :type bits_ai_investigations_sum: int, optional
+
+ :param browser_rum_lite_session_count_sum: Shows the sum of all browser lite sessions over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type browser_rum_lite_session_count_sum: int, optional
+
+ :param browser_rum_replay_session_count_sum: Shows the sum of all browser replay sessions over all hours in the current date for the given org (To be deprecated on October 1st, 2024).
+ :type browser_rum_replay_session_count_sum: int, optional
+
+ :param browser_rum_units_sum: Shows the sum of all browser RUM units over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type browser_rum_units_sum: int, optional
+
+ :param ccm_anthropic_spend_last: Shows the last value of Anthropic cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_anthropic_spend_last: int, optional
+
+ :param ccm_aws_spend_last: Shows the last value of AWS cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_aws_spend_last: int, optional
+
+ :param ccm_azure_spend_last: Shows the last value of Azure cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_azure_spend_last: int, optional
+
+ :param ccm_confluent_spend_last: Shows the last value of Confluent cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_confluent_spend_last: int, optional
+
+ :param ccm_databricks_spend_last: Shows the last value of Databricks cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_databricks_spend_last: int, optional
+
+ :param ccm_elastic_spend_last: Shows the last value of Elastic cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_elastic_spend_last: int, optional
+
+ :param ccm_fastly_spend_last: Shows the last value of Fastly cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_fastly_spend_last: int, optional
+
+ :param ccm_gcp_spend_last: Shows the last value of GCP cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_gcp_spend_last: int, optional
+
+ :param ccm_github_spend_last: Shows the last value of GitHub cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_github_spend_last: int, optional
+
+ :param ccm_mongodb_spend_last: Shows the last value of MongoDB cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_mongodb_spend_last: int, optional
+
+ :param ccm_oci_spend_last: Shows the last value of OCI cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_oci_spend_last: int, optional
+
+ :param ccm_openai_spend_last: Shows the last value of OpenAI cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_openai_spend_last: int, optional
+
+ :param ccm_snowflake_spend_last: Shows the last value of Snowflake cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_snowflake_spend_last: int, optional
+
+ :param ccm_spend_monitored_ent_last: Shows the last value of the amount of cloud spend monitored for Enterprise over all hours in the current date for the given org.
+ :type ccm_spend_monitored_ent_last: int, optional
+
+ :param ccm_spend_monitored_pro_last: Shows the last value of the amount of cloud spend monitored for Pro over all hours in the current date for the given org.
+ :type ccm_spend_monitored_pro_last: int, optional
+
+ :param ccm_twilio_spend_last: Shows the last value of Twilio cloud spend monitored over all hours in the current date for the given org.
+ :type ccm_twilio_spend_last: int, optional
+
+ :param ci_pipeline_indexed_spans_sum: Shows the sum of all CI pipeline indexed spans over all hours in the current date for the given org.
+ :type ci_pipeline_indexed_spans_sum: int, optional
+
+ :param ci_test_indexed_spans_sum: Shows the sum of all CI test indexed spans over all hours in the current date for the given org.
+ :type ci_test_indexed_spans_sum: int, optional
+
+ :param ci_visibility_itr_committers_hwm: Shows the high-water mark of all CI visibility intelligent test runner committers over all hours in the current date for the given org.
+ :type ci_visibility_itr_committers_hwm: int, optional
+
+ :param ci_visibility_pipeline_committers_hwm: Shows the high-water mark of all CI visibility pipeline committers over all hours in the current date for the given org.
+ :type ci_visibility_pipeline_committers_hwm: int, optional
+
+ :param ci_visibility_test_committers_hwm: Shows the high-water mark of all CI visibility test committers over all hours in the current date for the given org.
+ :type ci_visibility_test_committers_hwm: int, optional
+
+ :param cloud_cost_management_aws_host_count_avg: Host count average of Cloud Cost Management for AWS for the given date and given org.
+ :type cloud_cost_management_aws_host_count_avg: int, optional
+
+ :param cloud_cost_management_azure_host_count_avg: Host count average of Cloud Cost Management for Azure for the given date and given org.
+ :type cloud_cost_management_azure_host_count_avg: int, optional
+
+ :param cloud_cost_management_gcp_host_count_avg: Host count average of Cloud Cost Management for GCP for the given date and given org.
+ :type cloud_cost_management_gcp_host_count_avg: int, optional
+
+ :param cloud_cost_management_host_count_avg: Host count average of Cloud Cost Management for all cloud providers for the given date and given org.
+ :type cloud_cost_management_host_count_avg: int, optional
+
+ :param cloud_cost_management_oci_host_count_avg: Average host count for Cloud Cost Management on OCI for the given date and organization.
+ :type cloud_cost_management_oci_host_count_avg: int, optional
+
+ :param cloud_siem_events_sum: Shows the sum of all Cloud Security Information and Event Management events over all hours in the current date for the given org.
+ :type cloud_siem_events_sum: int, optional
+
+ :param cloud_siem_indexed_logs_sum: Shows the sum of all Cloud SIEM Indexed Logs over all hours in the current date for the given org.
+ :type cloud_siem_indexed_logs_sum: int, optional
+
+ :param code_analysis_sa_committers_hwm: Shows the high-water mark of all Static Analysis committers over all hours in the current date for the given org.
+ :type code_analysis_sa_committers_hwm: int, optional
+
+ :param code_analysis_sca_committers_hwm: Shows the high-water mark of all static Software Composition Analysis committers over all hours in the current date for the given org.
+ :type code_analysis_sca_committers_hwm: int, optional
+
+ :param code_security_host_top99p: Shows the 99th percentile of all Code Security hosts over all hours in the current date for the given org.
+ :type code_security_host_top99p: int, optional
+
+ :param container_avg: Shows the average of all distinct containers over all hours in the current date for the given org.
+ :type container_avg: int, optional
+
+ :param container_excl_agent_avg: Shows the average of containers without the Datadog Agent over all hours in the current date for the given organization.
+ :type container_excl_agent_avg: int, optional
+
+ :param container_hwm: Shows the high-water mark of all distinct containers over all hours in the current date for the given org.
+ :type container_hwm: int, optional
+
+ :param csm_container_enterprise_compliance_count_sum: Shows the sum of all Cloud Security Management Enterprise compliance containers over all hours in the current date for the given org.
+ :type csm_container_enterprise_compliance_count_sum: int, optional
+
+ :param csm_container_enterprise_cws_count_sum: Shows the sum of all Cloud Security Management Enterprise Cloud Workload Security containers over all hours in the current date for the given org.
+ :type csm_container_enterprise_cws_count_sum: int, optional
+
+ :param csm_container_enterprise_total_count_sum: Shows the sum of all Cloud Security Management Enterprise containers over all hours in the current date for the given org.
+ :type csm_container_enterprise_total_count_sum: int, optional
+
+ :param csm_host_enterprise_aas_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise Azure app services hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_aas_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_aws_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise AWS hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_aws_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_azure_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise Azure hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_azure_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_compliance_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise compliance hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_compliance_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_cws_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise Cloud Workload Security hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_cws_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_gcp_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise GCP hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_gcp_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_oci_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise OCI hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_oci_host_count_top99p: int, optional
+
+ :param csm_host_enterprise_total_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Enterprise hosts over all hours in the current date for the given org.
+ :type csm_host_enterprise_total_host_count_top99p: int, optional
+
+ :param csm_host_pro_hosts_agentless_scanners_sum: Shows the sum of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for the given org.
+ :type csm_host_pro_hosts_agentless_scanners_sum: int, optional
+
+ :param csm_host_pro_hosts_agentless_scanners_top99p: Shows the 99th percentile of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for the given org.
+ :type csm_host_pro_hosts_agentless_scanners_top99p: int, optional
+
+ :param csm_host_pro_oci_host_count_top99p: Shows the 99th percentile of all Cloud Security Management Pro OCI hosts over all hours in the current date for the given org.
+ :type csm_host_pro_oci_host_count_top99p: int, optional
+
+ :param cspm_aas_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro Azure app services hosts over all hours in the current date for the given org.
+ :type cspm_aas_host_top99p: int, optional
+
+ :param cspm_aws_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro AWS hosts over all hours in the current date for the given org.
+ :type cspm_aws_host_top99p: int, optional
+
+ :param cspm_azure_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro Azure hosts over all hours in the current date for the given org.
+ :type cspm_azure_host_top99p: int, optional
+
+ :param cspm_container_avg: Shows the average number of Cloud Security Management Pro containers over all hours in the current date for the given org.
+ :type cspm_container_avg: int, optional
+
+ :param cspm_container_hwm: Shows the high-water mark of Cloud Security Management Pro containers over all hours in the current date for the given org.
+ :type cspm_container_hwm: int, optional
+
+ :param cspm_gcp_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro GCP hosts over all hours in the current date for the given org.
+ :type cspm_gcp_host_top99p: int, optional
+
+ :param cspm_host_top99p: Shows the 99th percentile of all Cloud Security Management Pro hosts over all hours in the current date for the given org.
+ :type cspm_host_top99p: int, optional
+
+ :param cspm_hosts_agentless_scanners_sum: Shows the sum of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for the given org.
+ :type cspm_hosts_agentless_scanners_sum: int, optional
+
+ :param cspm_hosts_agentless_scanners_top99p: Shows the 99th percentile of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current date for the given org.
+ :type cspm_hosts_agentless_scanners_top99p: int, optional
+
+ :param custom_historical_ts_avg: Shows the average number of distinct historical custom metrics over all hours in the current date for the given org.
+ :type custom_historical_ts_avg: int, optional
+
+ :param custom_live_ts_avg: Shows the average number of distinct live custom metrics over all hours in the current date for the given org.
+ :type custom_live_ts_avg: int, optional
+
+ :param custom_ts_avg: Shows the average number of distinct custom metrics over all hours in the current date for the given org.
+ :type custom_ts_avg: int, optional
+
+ :param cws_container_count_avg: Shows the average of all distinct Cloud Workload Security containers over all hours in the current date for the given org.
+ :type cws_container_count_avg: int, optional
+
+ :param cws_fargate_task_avg: Shows the average of all distinct Cloud Workload Security Fargate tasks over all hours in the current date for the given org.
+ :type cws_fargate_task_avg: int, optional
+
+ :param cws_host_top99p: Shows the 99th percentile of all Cloud Workload Security hosts over all hours in the current date for the given org.
+ :type cws_host_top99p: int, optional
+
+ :param data_jobs_monitoring_host_hr_sum: Shows the sum of all Data Jobs Monitoring hosts over all hours in the current date for the given org.
+ :type data_jobs_monitoring_host_hr_sum: int, optional
+
+ :param data_stream_monitoring_host_count_sum: Shows the sum of all Data Streams Monitoring hosts over all hours in the current date for the given org.
+ :type data_stream_monitoring_host_count_sum: int, optional
+
+ :param data_stream_monitoring_host_count_top99p: Shows the 99th percentile of all Data Streams Monitoring hosts over all hours in the current date for the given org.
+ :type data_stream_monitoring_host_count_top99p: int, optional
+
+ :param dbm_host_top99p_sum: Shows the 99th percentile of all Database Monitoring hosts over all hours in the current month for the given org.
+ :type dbm_host_top99p_sum: int, optional
+
+ :param dbm_queries_avg_sum: Shows the average of all distinct Database Monitoring normalized queries over all hours in the current month for the given org.
+ :type dbm_queries_avg_sum: int, optional
+
+ :param do_jobs_monitoring_orchestrators_job_hours_sum: Shows the sum of all orchestrator job hours over all hours in the current date for the given org.
+ :type do_jobs_monitoring_orchestrators_job_hours_sum: int, optional
+
+ :param eph_infra_host_agent_sum: Shows the sum of all ephemeral infrastructure hosts with the Datadog Agent over all hours in the current date for the given org.
+ :type eph_infra_host_agent_sum: int, optional
+
+ :param eph_infra_host_alibaba_sum: Shows the sum of all ephemeral infrastructure hosts on Alibaba over all hours in the current date for the given org.
+ :type eph_infra_host_alibaba_sum: int, optional
+
+ :param eph_infra_host_aws_sum: Shows the sum of all ephemeral infrastructure hosts on AWS over all hours in the current date for the given org.
+ :type eph_infra_host_aws_sum: int, optional
+
+ :param eph_infra_host_azure_sum: Shows the sum of all ephemeral infrastructure hosts on Azure over all hours in the current date for the given org.
+ :type eph_infra_host_azure_sum: int, optional
+
+ :param eph_infra_host_basic_infra_basic_agent_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier with the Datadog Agent over all hours in the current date for the given org.
+ :type eph_infra_host_basic_infra_basic_agent_sum: int, optional
+
+ :param eph_infra_host_basic_infra_basic_vsphere_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier on vSphere over all hours in the current date for the given org.
+ :type eph_infra_host_basic_infra_basic_vsphere_sum: int, optional
+
+ :param eph_infra_host_basic_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier over all hours in the current date for the given org.
+ :type eph_infra_host_basic_sum: int, optional
+
+ :param eph_infra_host_ent_sum: Shows the sum of all ephemeral infrastructure hosts for Enterprise over all hours in the current date for the given org.
+ :type eph_infra_host_ent_sum: int, optional
+
+ :param eph_infra_host_gcp_sum: Shows the sum of all ephemeral infrastructure hosts on GCP over all hours in the current date for the given org.
+ :type eph_infra_host_gcp_sum: int, optional
+
+ :param eph_infra_host_heroku_sum: Shows the sum of all ephemeral infrastructure hosts on Heroku over all hours in the current date for the given org.
+ :type eph_infra_host_heroku_sum: int, optional
+
+ :param eph_infra_host_only_aas_sum: Shows the sum of all ephemeral infrastructure hosts with only Azure App Services over all hours in the current date for the given org.
+ :type eph_infra_host_only_aas_sum: int, optional
+
+ :param eph_infra_host_only_vsphere_sum: Shows the sum of all ephemeral infrastructure hosts with only vSphere over all hours in the current date for the given org.
+ :type eph_infra_host_only_vsphere_sum: int, optional
+
+ :param eph_infra_host_opentelemetry_apm_sum: Shows the sum of all ephemeral APM hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for the given org.
+ :type eph_infra_host_opentelemetry_apm_sum: int, optional
+
+ :param eph_infra_host_opentelemetry_sum: Shows the sum of all ephemeral hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for the given org.
+ :type eph_infra_host_opentelemetry_sum: int, optional
+
+ :param eph_infra_host_pro_sum: Shows the sum of all ephemeral infrastructure hosts for Pro over all hours in the current date for the given org.
+ :type eph_infra_host_pro_sum: int, optional
+
+ :param eph_infra_host_proplus_sum: Shows the sum of all ephemeral infrastructure hosts for Pro Plus over all hours in the current date for the given org.
+ :type eph_infra_host_proplus_sum: int, optional
+
+ :param eph_infra_host_proxmox_sum: Sum of all ephemeral infrastructure hosts for Proxmox over all hours in the current date for the given organization.
+ :type eph_infra_host_proxmox_sum: int, optional
+
+ :param error_tracking_apm_error_events_sum: Shows the sum of all Error Tracking APM error events over all hours in the current date for the given org.
+ :type error_tracking_apm_error_events_sum: int, optional
+
+ :param error_tracking_error_events_sum: Shows the sum of all Error Tracking error events over all hours in the current date for the given org.
+ :type error_tracking_error_events_sum: int, optional
+
+ :param error_tracking_events_sum: Shows the sum of all Error Tracking events over all hours in the current date for the given org.
+ :type error_tracking_events_sum: int, optional
+
+ :param error_tracking_rum_error_events_sum: Shows the sum of all Error Tracking RUM error events over all hours in the current date for the given org.
+ :type error_tracking_rum_error_events_sum: int, optional
+
+ :param event_management_correlation_correlated_events_sum: Shows the sum of all Event Management correlated events over all hours in the current date for the given org.
+ :type event_management_correlation_correlated_events_sum: int, optional
+
+ :param event_management_correlation_correlated_related_events_sum: Shows the sum of all Event Management correlated related events over all hours in the current date for the given org.
+ :type event_management_correlation_correlated_related_events_sum: int, optional
+
+ :param event_management_correlation_sum: Shows the sum of all Event Management correlations over all hours in the current date for the given org.
+ :type event_management_correlation_sum: int, optional
+
+ :param fargate_container_profiler_profiling_fargate_avg: The average number of Profiling Fargate tasks over all hours in the current month for the given org.
+ :type fargate_container_profiler_profiling_fargate_avg: int, optional
+
+ :param fargate_container_profiler_profiling_fargate_eks_avg: The average number of Profiling Fargate Elastic Kubernetes Service tasks over all hours in the current month for the given org.
+ :type fargate_container_profiler_profiling_fargate_eks_avg: int, optional
+
+ :param fargate_tasks_count_avg: The average task count for Fargate.
+ :type fargate_tasks_count_avg: int, optional
+
+ :param fargate_tasks_count_hwm: Shows the high-water mark of all Fargate tasks over all hours in the current date for the given org.
+ :type fargate_tasks_count_hwm: int, optional
+
+ :param feature_flags_config_requests_sum: Shows the sum of all Feature Flags Client-Side SDK config requests over all hours in the current date for the given org.
+ :type feature_flags_config_requests_sum: int, optional
+
+ :param flex_logs_compute_large_avg: Shows the average number of Flex Logs Compute Large Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_large_avg: int, optional
+
+ :param flex_logs_compute_medium_avg: Shows the average number of Flex Logs Compute Medium Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_medium_avg: int, optional
+
+ :param flex_logs_compute_small_avg: Shows the average number of Flex Logs Compute Small Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_small_avg: int, optional
+
+ :param flex_logs_compute_xlarge_avg: Shows the average number of Flex Logs Compute Extra Large Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_xlarge_avg: int, optional
+
+ :param flex_logs_compute_xsmall_avg: Shows the average number of Flex Logs Compute Extra Small Instances over all hours in the current date for the given org.
+ :type flex_logs_compute_xsmall_avg: int, optional
+
+ :param flex_logs_starter_avg: Shows the average number of Flex Logs Starter Instances over all hours in the current date for the given org.
+ :type flex_logs_starter_avg: int, optional
+
+ :param flex_logs_starter_storage_index_avg: Shows the average number of Flex Logs Starter Storage Index Instances over all hours in the current date for the given org.
+ :type flex_logs_starter_storage_index_avg: int, optional
+
+ :param flex_logs_starter_storage_retention_adjustment_avg: Shows the average number of Flex Logs Starter Storage Retention Adjustment Instances over all hours in the current date for the given org.
+ :type flex_logs_starter_storage_retention_adjustment_avg: int, optional
+
+ :param flex_stored_logs_avg: Shows the average of all Flex Stored Logs over all hours in the current date for the given org.
+ :type flex_stored_logs_avg: int, optional
+
+ :param forwarding_events_bytes_sum: Shows the sum of all log bytes forwarded over all hours in the current date for the given org.
+ :type forwarding_events_bytes_sum: int, optional
+
+ :param gcp_host_top99p: Shows the 99th percentile of all GCP hosts over all hours in the current date for the given org.
+ :type gcp_host_top99p: int, optional
+
+ :param heroku_host_top99p: Shows the 99th percentile of all Heroku dynos over all hours in the current date for the given org.
+ :type heroku_host_top99p: int, optional
+
+ :param id: The organization id.
+ :type id: str, optional
+
+ :param incident_management_monthly_active_users_hwm: Shows the high-water mark of incident management monthly active users over all hours in the current date for the given org.
+ :type incident_management_monthly_active_users_hwm: int, optional
+
+ :param incident_management_seats_hwm: Shows the high-water mark of Incident Management seats over all hours on the current date for the given organization.
+ :type incident_management_seats_hwm: int, optional
+
+ :param indexed_events_count_sum: Shows the sum of all log events indexed over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type indexed_events_count_sum: int, optional
+
+ :param indexed_points_sum: Shows the sum of all indexed custom metrics points over all hours in the current date for the given org.
+ :type indexed_points_sum: int, optional
+
+ :param infra_cpu_avg: Shows the average of all Infrastructure vCPU cores over all hours in the current date for the given org.
+ :type infra_cpu_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_avg: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_agent_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_agent_basic_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_agent_basic_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_sum: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_agent_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_aws_avg: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_aws_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_aws_sum: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_aws_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_azure_avg: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_azure_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_azure_sum: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_azure_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_gcp_avg: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_gcp_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_gcp_sum: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_gcp_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_avg: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_basic_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_basic_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_sum: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_opentelemetry_avg: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_opentelemetry_avg: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_opentelemetry_sum: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org.
+ :type infra_cpu_default_infra_host_vcpu_opentelemetry_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_agent_avg: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_agent_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_agent_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_agent_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_aws_avg: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_aws_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_aws_sum: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_aws_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_azure_avg: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_azure_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_azure_sum: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_azure_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_gcp_avg: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_gcp_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_gcp_sum: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_gcp_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_nutanix_avg: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_nutanix_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_nutanix_sum: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_nutanix_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_opentelemetry_avg: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current date for the given org.
+ :type infra_cpu_observed_infra_host_vcpu_opentelemetry_sum: int, optional
+
+ :param infra_cpu_sum: Shows the sum of all Infrastructure vCPU cores over all hours in the current date for the given org.
+ :type infra_cpu_sum: int, optional
+
+ :param infra_edge_monitoring_devices_top99p: Shows the 99th percentile of all Edge Devices Monitoring devices over all hours in the current date for the given org.
+ :type infra_edge_monitoring_devices_top99p: int, optional
+
+ :param infra_host_basic_infra_basic_agent_top99p: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier with the Datadog Agent over all hours in the current date for the given org.
+ :type infra_host_basic_infra_basic_agent_top99p: int, optional
+
+ :param infra_host_basic_infra_basic_vsphere_top99p: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier on vSphere over all hours in the current date for the given org.
+ :type infra_host_basic_infra_basic_vsphere_top99p: int, optional
+
+ :param infra_host_basic_top99p: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier over all hours in the current date for the given org.
+ :type infra_host_basic_top99p: int, optional
+
+ :param infra_host_top99p: Shows the 99th percentile of all distinct infrastructure hosts over all hours in the current date for the given org.
+ :type infra_host_top99p: int, optional
+
+ :param infra_storage_mgmt_objects_count_avg: Shows the average number of storage management objects over all hours in the current date for the given org.
+ :type infra_storage_mgmt_objects_count_avg: int, optional
+
+ :param ingest_points_sum: Shows the sum of all ingested custom metrics points over all hours in the current date for the given org.
+ :type ingest_points_sum: int, optional
+
+ :param ingested_events_bytes_sum: Shows the sum of all log bytes ingested over all hours in the current date for the given org.
+ :type ingested_events_bytes_sum: int, optional
+
+ :param iot_apm_host_sum: Shows the sum of all Application Performance Monitoring IoT hosts over all hours in the current date for the given org.
+ :type iot_apm_host_sum: int, optional
+
+ :param iot_apm_host_top99p: Shows the 99th percentile of all Application Performance Monitoring IoT hosts over all hours in the current date for the given org.
+ :type iot_apm_host_top99p: int, optional
+
+ :param iot_device_agg_sum: Shows the sum of all IoT devices over all hours in the current date for the given org.
+ :type iot_device_agg_sum: int, optional
+
+ :param iot_device_top99p_sum: Shows the 99th percentile of all IoT devices over all hours in the current date for the given org.
+ :type iot_device_top99p_sum: int, optional
+
+ :param llm_observability_15day_retention_spans_sum: Shows the sum of all LLM Observability 15-day retention spans over all hours in the current date for the given org.
+ :type llm_observability_15day_retention_spans_sum: int, optional
+
+ :param llm_observability_30day_retention_spans_sum: Shows the sum of all LLM Observability 30-day retention spans over all hours in the current date for the given org.
+ :type llm_observability_30day_retention_spans_sum: int, optional
+
+ :param llm_observability_60day_retention_spans_sum: Shows the sum of all LLM Observability 60-day retention spans over all hours in the current date for the given org.
+ :type llm_observability_60day_retention_spans_sum: int, optional
+
+ :param llm_observability_90day_retention_spans_sum: Shows the sum of all LLM Observability 90-day retention spans over all hours in the current date for the given org.
+ :type llm_observability_90day_retention_spans_sum: int, optional
+
+ :param llm_observability_min_spend_sum: Shows the sum of all LLM Observability minimum spend over all hours in the current date for the given org.
+ :type llm_observability_min_spend_sum: int, optional
+
+ :param llm_observability_sum: Shows the sum of all LLM observability sessions over all hours in the current date for the given org.
+ :type llm_observability_sum: int, optional
+
+ :param logs_archive_search_gb_scanned_sum: Shows the sum of all Logs Archive Search scanned data over all hours in the current date for the given org.
+ :type logs_archive_search_gb_scanned_sum: int, optional
+
+ :param metric_names_sum: Shows the sum of all custom metric names over all hours in the current date for the given org.
+ :type metric_names_sum: int, optional
+
+ :param mobile_rum_lite_session_count_sum: Shows the sum of all mobile lite sessions over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_lite_session_count_sum: int, optional
+
+ :param mobile_rum_session_count_android_sum: Shows the sum of all mobile RUM sessions on Android over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_android_sum: int, optional
+
+ :param mobile_rum_session_count_flutter_sum: Shows the sum of all mobile RUM sessions on Flutter over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_flutter_sum: int, optional
+
+ :param mobile_rum_session_count_ios_sum: Shows the sum of all mobile RUM sessions on iOS over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_ios_sum: int, optional
+
+ :param mobile_rum_session_count_reactnative_sum: Shows the sum of all mobile RUM sessions on React Native over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_reactnative_sum: int, optional
+
+ :param mobile_rum_session_count_roku_sum: Shows the sum of all mobile RUM sessions on Roku over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_roku_sum: int, optional
+
+ :param mobile_rum_session_count_sum: Shows the sum of all mobile RUM sessions over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_sum: int, optional
+
+ :param mobile_rum_units_sum: Shows the sum of all mobile RUM units over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_units_sum: int, optional
+
+ :param name: The organization name.
+ :type name: str, optional
+
+ :param ndm_netflow_events_sum: Shows the sum of all Network Device Monitoring NetFlow events over all hours in the current date for the given org.
+ :type ndm_netflow_events_sum: int, optional
+
+ :param netflow_indexed_events_count_sum: Shows the sum of all Network flows indexed over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type netflow_indexed_events_count_sum: int, optional
+
+ :param network_device_wireless_top99p: Shows the 99th percentile of all Network Device Monitoring wireless devices over all hours in the current date for the given org.
+ :type network_device_wireless_top99p: int, optional
+
+ :param network_path_sum: Shows the sum of all Network Path scheduled tests over all hours in the current date for the given org.
+ :type network_path_sum: int, optional
+
+ :param npm_host_top99p: Shows the 99th percentile of all distinct Cloud Network Monitoring hosts (formerly known as Network hosts) over all hours in the current date for the given org.
+ :type npm_host_top99p: int, optional
+
+ :param observability_pipelines_bytes_processed_sum: Sum of all observability pipelines bytes processed over all hours in the current date for the given org.
+ :type observability_pipelines_bytes_processed_sum: int, optional
+
+ :param oci_host_sum: Shows the sum of all Oracle Cloud Infrastructure hosts over all hours in the current date for the given org.
+ :type oci_host_sum: int, optional
+
+ :param oci_host_top99p: Shows the 99th percentile of all Oracle Cloud Infrastructure hosts over all hours in the current date for the given org.
+ :type oci_host_top99p: int, optional
+
+ :param on_call_seat_hwm: Shows the high-water mark of On-Call seats over all hours in the current date for the given org.
+ :type on_call_seat_hwm: int, optional
+
+ :param online_archive_events_count_sum: Sum of all online archived events over all hours in the current date for the given org.
+ :type online_archive_events_count_sum: int, optional
+
+ :param opentelemetry_apm_host_top99p: Shows the 99th percentile of APM hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for the given org.
+ :type opentelemetry_apm_host_top99p: int, optional
+
+ :param opentelemetry_host_top99p: Shows the 99th percentile of all hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current date for the given org.
+ :type opentelemetry_host_top99p: int, optional
+
+ :param product_analytics_sum: Shows the sum of all product analytics sessions over all hours in the current date for the given org.
+ :type product_analytics_sum: int, optional
+
+ :param profiling_aas_count_top99p: Shows the 99th percentile of all profiled Azure app services over all hours in the current date for all organizations.
+ :type profiling_aas_count_top99p: int, optional
+
+ :param profiling_host_top99p: Shows the 99th percentile of all profiled hosts over all hours within the current date for the given org.
+ :type profiling_host_top99p: int, optional
+
+ :param proxmox_host_sum: Sum of all Proxmox hosts over all hours in the current date for the given organization.
+ :type proxmox_host_sum: int, optional
+
+ :param proxmox_host_top99p: 99th percentile of all Proxmox hosts over all hours in the current date for the given organization.
+ :type proxmox_host_top99p: int, optional
+
+ :param public_id: The organization public id.
+ :type public_id: str, optional
+
+ :param published_app_hwm: Shows the high-water mark of all published applications over all hours in the current date for the given org.
+ :type published_app_hwm: int, optional
+
+ :param region: The region of the organization.
+ :type region: str, optional
+
+ :param rum_browser_and_mobile_session_count: Shows the sum of all mobile sessions and all browser lite and legacy sessions over all hours in the current date for the given org (To be deprecated on October 1st, 2024).
+ :type rum_browser_and_mobile_session_count: int, optional
+
+ :param rum_browser_legacy_session_count_sum: Shows the sum of all browser RUM legacy sessions over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_browser_legacy_session_count_sum: int, optional
+
+ :param rum_browser_lite_session_count_sum: Shows the sum of all browser RUM lite sessions over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_browser_lite_session_count_sum: int, optional
+
+ :param rum_browser_replay_session_count_sum: Shows the sum of all browser RUM Session Replay counts over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_browser_replay_session_count_sum: int, optional
+
+ :param rum_indexed_sessions_sum: Shows the sum of all RUM indexed sessions over all hours in the current date for the given org.
+ :type rum_indexed_sessions_sum: int, optional
+
+ :param rum_ingested_sessions_sum: Shows the sum of all RUM ingested sessions over all hours in the current date for the given org.
+ :type rum_ingested_sessions_sum: int, optional
+
+ :param rum_lite_session_count_sum: Shows the sum of all RUM lite sessions (browser and mobile) over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_lite_session_count_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_android_sum: Shows the sum of all mobile RUM legacy sessions on Android over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_android_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_flutter_sum: Shows the sum of all mobile RUM legacy sessions on Flutter over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_flutter_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_ios_sum: Shows the sum of all mobile RUM legacy sessions on iOS over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_ios_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_reactnative_sum: Shows the sum of all mobile RUM legacy sessions on React Native over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_reactnative_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_roku_sum: Shows the sum of all mobile RUM legacy sessions on Roku over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_roku_sum: int, optional
+
+ :param rum_mobile_lite_session_count_android_sum: Shows the sum of all mobile RUM lite sessions on Android over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_android_sum: int, optional
+
+ :param rum_mobile_lite_session_count_flutter_sum: Shows the sum of all mobile RUM lite sessions on Flutter over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_flutter_sum: int, optional
+
+ :param rum_mobile_lite_session_count_ios_sum: Shows the sum of all mobile RUM lite sessions on iOS over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_ios_sum: int, optional
+
+ :param rum_mobile_lite_session_count_kotlinmultiplatform_sum: Shows the sum of all mobile RUM lite sessions on Kotlin Multiplatform over all hours within the current date for the given org.
+ :type rum_mobile_lite_session_count_kotlinmultiplatform_sum: int, optional
+
+ :param rum_mobile_lite_session_count_reactnative_sum: Shows the sum of all mobile RUM lite sessions on React Native over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_reactnative_sum: int, optional
+
+ :param rum_mobile_lite_session_count_roku_sum: Shows the sum of all mobile RUM lite sessions on Roku over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_roku_sum: int, optional
+
+ :param rum_mobile_lite_session_count_unity_sum: Shows the sum of all mobile RUM lite sessions on Unity over all hours within the current date for the given org.
+ :type rum_mobile_lite_session_count_unity_sum: int, optional
+
+ :param rum_mobile_replay_session_count_android_sum: Shows the sum of all mobile RUM replay sessions on Android over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_android_sum: int, optional
+
+ :param rum_mobile_replay_session_count_ios_sum: Shows the sum of all mobile RUM replay sessions on iOS over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_ios_sum: int, optional
+
+ :param rum_mobile_replay_session_count_kotlinmultiplatform_sum: Shows the sum of all mobile RUM replay sessions on Kotlin Multiplatform over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_kotlinmultiplatform_sum: int, optional
+
+ :param rum_mobile_replay_session_count_reactnative_sum: Shows the sum of all mobile RUM replay sessions on React Native over all hours within the current date for the given org.
+ :type rum_mobile_replay_session_count_reactnative_sum: int, optional
+
+ :param rum_replay_session_count_sum: Shows the sum of all RUM Session Replay counts over all hours in the current date for the given org (To be introduced on October 1st, 2024).
+ :type rum_replay_session_count_sum: int, optional
+
+ :param rum_session_count_sum: Shows the sum of all browser RUM lite sessions over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rum_session_count_sum: int, optional
+
+ :param rum_session_replay_add_on_sum: Shows the sum of all RUM session replay add-on sessions over all hours in the current date for the given org.
+ :type rum_session_replay_add_on_sum: int, optional
+
+ :param rum_total_session_count_sum: Shows the sum of RUM sessions (browser and mobile) over all hours in the current date for the given org.
+ :type rum_total_session_count_sum: int, optional
+
+ :param rum_units_sum: Shows the sum of all browser and mobile RUM units over all hours in the current date for the given org (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rum_units_sum: int, optional
+
+ :param sca_fargate_count_avg: Shows the average of all Software Composition Analysis Fargate tasks over all hours in the current date for the given org.
+ :type sca_fargate_count_avg: int, optional
+
+ :param sca_fargate_count_hwm: Shows the sum of the high-water marks of all Software Composition Analysis Fargate tasks over all hours in the current date for the given org.
+ :type sca_fargate_count_hwm: int, optional
+
+ :param sds_apm_scanned_bytes_sum: Sum of all APM bytes scanned with sensitive data scanner over all hours in the current date for the given org.
+ :type sds_apm_scanned_bytes_sum: int, optional
+
+ :param sds_events_scanned_bytes_sum: Sum of all event stream events bytes scanned with sensitive data scanner over all hours in the current date for the given org.
+ :type sds_events_scanned_bytes_sum: int, optional
+
+ :param sds_logs_scanned_bytes_sum: Shows the sum of all bytes scanned of logs usage by the Sensitive Data Scanner over all hours in the current month for the given org.
+ :type sds_logs_scanned_bytes_sum: int, optional
+
+ :param sds_rum_scanned_bytes_sum: Sum of all RUM bytes scanned with sensitive data scanner over all hours in the current date for the given org.
+ :type sds_rum_scanned_bytes_sum: int, optional
+
+ :param sds_total_scanned_bytes_sum: Shows the sum of all bytes scanned across all usage types by the Sensitive Data Scanner over all hours in the current month for the given org.
+ :type sds_total_scanned_bytes_sum: int, optional
+
+ :param serverless_apps_apm_apm_azure_appservice_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Azure App Service instances for the given date and given org.
+ :type serverless_apps_apm_apm_azure_appservice_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_azure_azurefunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Azure Function instances for the given date and given org.
+ :type serverless_apps_apm_apm_azure_azurefunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_azure_containerapp_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Azure Container App instances for the given date and given org.
+ :type serverless_apps_apm_apm_azure_containerapp_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_fargate_ecs_tasks_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Fargate Elastic Container Service tasks for the given date and given org.
+ :type serverless_apps_apm_apm_fargate_ecs_tasks_avg: int, optional
+
+ :param serverless_apps_apm_apm_gcp_cloudfunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Google Cloud Platform Cloud Function instances for the given date and given org.
+ :type serverless_apps_apm_apm_gcp_cloudfunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_gcp_cloudrun_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Google Cloud Platform Cloud Run instances for the given date and given org.
+ :type serverless_apps_apm_apm_gcp_cloudrun_instances_avg: int, optional
+
+ :param serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for Google Kubernetes Engine Autopilot pods for the given date and given org.
+ :type serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_apm_avg: Shows the average number of Serverless Apps with Application Performance Monitoring for the given date and given org.
+ :type serverless_apps_apm_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure App Service instances for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure Function instances for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure Container App instances for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Cloud Platform Cloud Function instances for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Cloud Platform Cloud Run instances for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Kubernetes Engine Autopilot pods for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_apm_excl_fargate_avg: Shows the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for the given date and given org.
+ :type serverless_apps_apm_excl_fargate_avg: int, optional
+
+ :param serverless_apps_azure_container_app_instances_avg: Shows the average number of Serverless Apps for Azure Container App instances for the given date and given org.
+ :type serverless_apps_azure_container_app_instances_avg: int, optional
+
+ :param serverless_apps_azure_count_avg: Shows the average number of Serverless Apps for Azure for the given date and given org.
+ :type serverless_apps_azure_count_avg: int, optional
+
+ :param serverless_apps_azure_function_app_instances_avg: Shows the average number of Serverless Apps for Azure Function App instances for the given date and given org.
+ :type serverless_apps_azure_function_app_instances_avg: int, optional
+
+ :param serverless_apps_azure_web_app_instances_avg: Shows the average number of Serverless Apps for Azure Web App instances for the given date and given org.
+ :type serverless_apps_azure_web_app_instances_avg: int, optional
+
+ :param serverless_apps_dsm_fargate_tasks_avg: Shows the average number of DSM Fargate ECS tasks monitored under Serverless Apps DSM for the given date and given org.
+ :type serverless_apps_dsm_fargate_tasks_avg: int, optional
+
+ :param serverless_apps_ecs_avg: Shows the average number of Serverless Apps for Elastic Container Service for the given date and given org.
+ :type serverless_apps_ecs_avg: int, optional
+
+ :param serverless_apps_eks_avg: Shows the average number of Serverless Apps for Elastic Kubernetes Service for the given date and given org.
+ :type serverless_apps_eks_avg: int, optional
+
+ :param serverless_apps_excl_fargate_avg: Shows the average number of Serverless Apps excluding Fargate for the given date and given org.
+ :type serverless_apps_excl_fargate_avg: int, optional
+
+ :param serverless_apps_excl_fargate_azure_container_app_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Azure Container App instances for the given date and given org.
+ :type serverless_apps_excl_fargate_azure_container_app_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_azure_function_app_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Azure Function App instances for the given date and given org.
+ :type serverless_apps_excl_fargate_azure_function_app_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_azure_web_app_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Azure Web App instances for the given date and given org.
+ :type serverless_apps_excl_fargate_azure_web_app_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_google_cloud_functions_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Google Cloud Platform Cloud Functions instances for the given date and given org.
+ :type serverless_apps_excl_fargate_google_cloud_functions_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_google_cloud_run_instances_avg: Shows the average number of Serverless Apps excluding Fargate for Google Cloud Platform Cloud Run instances for the given date and given org.
+ :type serverless_apps_excl_fargate_google_cloud_run_instances_avg: int, optional
+
+ :param serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps excluding Fargate for Google Kubernetes Engine Autopilot pods for the given date and given org.
+ :type serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_google_cloud_functions_instances_avg: Shows the average number of Serverless Apps for Google Cloud Platform Cloud Functions instances for the given date and given org.
+ :type serverless_apps_google_cloud_functions_instances_avg: int, optional
+
+ :param serverless_apps_google_cloud_run_instances_avg: Shows the average number of Serverless Apps for Google Cloud Platform Cloud Run instances for the given date and given org.
+ :type serverless_apps_google_cloud_run_instances_avg: int, optional
+
+ :param serverless_apps_google_count_avg: Shows the average number of Serverless Apps for Google Cloud for the given date and given org.
+ :type serverless_apps_google_count_avg: int, optional
+
+ :param serverless_apps_infra_gcp_gke_autopilot_pods_avg: Shows the average number of Serverless Apps for Google Kubernetes Engine Autopilot pods for the given date and given org.
+ :type serverless_apps_infra_gcp_gke_autopilot_pods_avg: int, optional
+
+ :param serverless_apps_total_count_avg: Shows the average number of Serverless Apps for Azure and Google Cloud for the given date and given org.
+ :type serverless_apps_total_count_avg: int, optional
+
+ :param siem_12mo_retention_sum: Shows the sum of Cloud SIEM Indexed Logs (12-month retention) over all hours in the current date for the given org.
+ :type siem_12mo_retention_sum: int, optional
+
+ :param siem_6mo_retention_sum: Shows the sum of Cloud SIEM Indexed Logs (6-month retention) over all hours in the current date for the given org.
+ :type siem_6mo_retention_sum: int, optional
+
+ :param siem_analyzed_logs_add_on_count_sum: Shows the sum of all log events analyzed by Cloud SIEM over all hours in the current date for the given org.
+ :type siem_analyzed_logs_add_on_count_sum: int, optional
+
+ :param snmp_device_count_sum: Shows the sum of all Network Device Monitoring devices over all hours in the current date for the given org.
+ :type snmp_device_count_sum: int, optional
+
+ :param snmp_device_count_top99p: Shows the 99th percentile of all Network Device Monitoring devices over all hours in the current date for the given org.
+ :type snmp_device_count_top99p: int, optional
+
+ :param synthetics_browser_check_calls_count_sum: Shows the sum of all Synthetic browser tests over all hours in the current date for the given org.
+ :type synthetics_browser_check_calls_count_sum: int, optional
+
+ :param synthetics_check_calls_count_sum: Shows the sum of all Synthetic API tests over all hours in the current date for the given org.
+ :type synthetics_check_calls_count_sum: int, optional
+
+ :param synthetics_mobile_test_runs_sum: Shows the sum of all Synthetic mobile application tests over all hours in the current date for the given org.
+ :type synthetics_mobile_test_runs_sum: int, optional
+
+ :param synthetics_parallel_testing_max_slots_hwm: Shows the high-water mark of used synthetics parallel testing slots over all hours in the current date for the given org.
+ :type synthetics_parallel_testing_max_slots_hwm: int, optional
+
+ :param trace_search_indexed_events_count_sum: Shows the sum of all Indexed Spans indexed over all hours in the current date for the given org.
+ :type trace_search_indexed_events_count_sum: int, optional
+
+ :param twol_ingested_events_bytes_sum: Shows the sum of all ingested APM span bytes over all hours in the current date for the given org.
+ :type twol_ingested_events_bytes_sum: int, optional
+
+ :param universal_service_monitoring_host_top99p: Shows the 99th percentile of all Universal Service Monitoring hosts over all hours in the current date for the given org.
+ :type universal_service_monitoring_host_top99p: int, optional
+
+ :param vsphere_host_top99p: Shows the 99th percentile of all vSphere hosts over all hours in the current date for the given org.
+ :type vsphere_host_top99p: int, optional
+
+ :param vuln_management_host_count_top99p: Shows the 99th percentile of all Application Vulnerability Management hosts over all hours in the current date for the given org.
+ :type vuln_management_host_count_top99p: int, optional
+
+ :param workflow_executions_usage_sum: Sum of all workflows executed over all hours in the current date for the given org.
+ :type workflow_executions_usage_sum: int, optional
+ """
+ if account_name is not unset:
+ kwargs["account_name"] = account_name
+ if account_public_id is not unset:
+ kwargs["account_public_id"] = account_public_id
+ if agent_host_top99p is not unset:
+ kwargs["agent_host_top99p"] = agent_host_top99p
+ if ai_credits_agent_builder_ai_credits_sum is not unset:
+ kwargs["ai_credits_agent_builder_ai_credits_sum"] = ai_credits_agent_builder_ai_credits_sum
+ if ai_credits_bits_assistant_ai_credits_sum is not unset:
+ kwargs["ai_credits_bits_assistant_ai_credits_sum"] = ai_credits_bits_assistant_ai_credits_sum
+ if ai_credits_bits_dev_ai_credits_sum is not unset:
+ kwargs["ai_credits_bits_dev_ai_credits_sum"] = ai_credits_bits_dev_ai_credits_sum
+ if ai_credits_bits_sre_ai_credits_sum is not unset:
+ kwargs["ai_credits_bits_sre_ai_credits_sum"] = ai_credits_bits_sre_ai_credits_sum
+ if ai_credits_sum is not unset:
+ kwargs["ai_credits_sum"] = ai_credits_sum
+ if apm_azure_app_service_host_top99p is not unset:
+ kwargs["apm_azure_app_service_host_top99p"] = apm_azure_app_service_host_top99p
+ if apm_devsecops_host_top99p is not unset:
+ kwargs["apm_devsecops_host_top99p"] = apm_devsecops_host_top99p
+ if apm_enterprise_standalone_hosts_top99p is not unset:
+ kwargs["apm_enterprise_standalone_hosts_top99p"] = apm_enterprise_standalone_hosts_top99p
+ if apm_fargate_count_avg is not unset:
+ kwargs["apm_fargate_count_avg"] = apm_fargate_count_avg
+ if apm_host_top99p is not unset:
+ kwargs["apm_host_top99p"] = apm_host_top99p
+ if apm_pro_standalone_hosts_top99p is not unset:
+ kwargs["apm_pro_standalone_hosts_top99p"] = apm_pro_standalone_hosts_top99p
+ if appsec_fargate_count_avg is not unset:
+ kwargs["appsec_fargate_count_avg"] = appsec_fargate_count_avg
+ if asm_serverless_sum is not unset:
+ kwargs["asm_serverless_sum"] = asm_serverless_sum
+ if audit_logs_lines_indexed_sum is not unset:
+ kwargs["audit_logs_lines_indexed_sum"] = audit_logs_lines_indexed_sum
+ if audit_trail_enabled_hwm is not unset:
+ kwargs["audit_trail_enabled_hwm"] = audit_trail_enabled_hwm
+ if audit_trail_event_forwarding_events_sum is not unset:
+ kwargs["audit_trail_event_forwarding_events_sum"] = audit_trail_event_forwarding_events_sum
+ if avg_profiled_fargate_tasks is not unset:
+ kwargs["avg_profiled_fargate_tasks"] = avg_profiled_fargate_tasks
+ if aws_host_top99p is not unset:
+ kwargs["aws_host_top99p"] = aws_host_top99p
+ if aws_lambda_func_count is not unset:
+ kwargs["aws_lambda_func_count"] = aws_lambda_func_count
+ if aws_lambda_invocations_sum is not unset:
+ kwargs["aws_lambda_invocations_sum"] = aws_lambda_invocations_sum
+ if azure_app_service_top99p is not unset:
+ kwargs["azure_app_service_top99p"] = azure_app_service_top99p
+ if billable_ingested_bytes_sum is not unset:
+ kwargs["billable_ingested_bytes_sum"] = billable_ingested_bytes_sum
+ if bits_ai_investigations_sum is not unset:
+ kwargs["bits_ai_investigations_sum"] = bits_ai_investigations_sum
+ if browser_rum_lite_session_count_sum is not unset:
+ kwargs["browser_rum_lite_session_count_sum"] = browser_rum_lite_session_count_sum
+ if browser_rum_replay_session_count_sum is not unset:
+ kwargs["browser_rum_replay_session_count_sum"] = browser_rum_replay_session_count_sum
+ if browser_rum_units_sum is not unset:
+ kwargs["browser_rum_units_sum"] = browser_rum_units_sum
+ if ccm_anthropic_spend_last is not unset:
+ kwargs["ccm_anthropic_spend_last"] = ccm_anthropic_spend_last
+ if ccm_aws_spend_last is not unset:
+ kwargs["ccm_aws_spend_last"] = ccm_aws_spend_last
+ if ccm_azure_spend_last is not unset:
+ kwargs["ccm_azure_spend_last"] = ccm_azure_spend_last
+ if ccm_confluent_spend_last is not unset:
+ kwargs["ccm_confluent_spend_last"] = ccm_confluent_spend_last
+ if ccm_databricks_spend_last is not unset:
+ kwargs["ccm_databricks_spend_last"] = ccm_databricks_spend_last
+ if ccm_elastic_spend_last is not unset:
+ kwargs["ccm_elastic_spend_last"] = ccm_elastic_spend_last
+ if ccm_fastly_spend_last is not unset:
+ kwargs["ccm_fastly_spend_last"] = ccm_fastly_spend_last
+ if ccm_gcp_spend_last is not unset:
+ kwargs["ccm_gcp_spend_last"] = ccm_gcp_spend_last
+ if ccm_github_spend_last is not unset:
+ kwargs["ccm_github_spend_last"] = ccm_github_spend_last
+ if ccm_mongodb_spend_last is not unset:
+ kwargs["ccm_mongodb_spend_last"] = ccm_mongodb_spend_last
+ if ccm_oci_spend_last is not unset:
+ kwargs["ccm_oci_spend_last"] = ccm_oci_spend_last
+ if ccm_openai_spend_last is not unset:
+ kwargs["ccm_openai_spend_last"] = ccm_openai_spend_last
+ if ccm_snowflake_spend_last is not unset:
+ kwargs["ccm_snowflake_spend_last"] = ccm_snowflake_spend_last
+ if ccm_spend_monitored_ent_last is not unset:
+ kwargs["ccm_spend_monitored_ent_last"] = ccm_spend_monitored_ent_last
+ if ccm_spend_monitored_pro_last is not unset:
+ kwargs["ccm_spend_monitored_pro_last"] = ccm_spend_monitored_pro_last
+ if ccm_twilio_spend_last is not unset:
+ kwargs["ccm_twilio_spend_last"] = ccm_twilio_spend_last
+ if ci_pipeline_indexed_spans_sum is not unset:
+ kwargs["ci_pipeline_indexed_spans_sum"] = ci_pipeline_indexed_spans_sum
+ if ci_test_indexed_spans_sum is not unset:
+ kwargs["ci_test_indexed_spans_sum"] = ci_test_indexed_spans_sum
+ if ci_visibility_itr_committers_hwm is not unset:
+ kwargs["ci_visibility_itr_committers_hwm"] = ci_visibility_itr_committers_hwm
+ if ci_visibility_pipeline_committers_hwm is not unset:
+ kwargs["ci_visibility_pipeline_committers_hwm"] = ci_visibility_pipeline_committers_hwm
+ if ci_visibility_test_committers_hwm is not unset:
+ kwargs["ci_visibility_test_committers_hwm"] = ci_visibility_test_committers_hwm
+ if cloud_cost_management_aws_host_count_avg is not unset:
+ kwargs["cloud_cost_management_aws_host_count_avg"] = cloud_cost_management_aws_host_count_avg
+ if cloud_cost_management_azure_host_count_avg is not unset:
+ kwargs["cloud_cost_management_azure_host_count_avg"] = cloud_cost_management_azure_host_count_avg
+ if cloud_cost_management_gcp_host_count_avg is not unset:
+ kwargs["cloud_cost_management_gcp_host_count_avg"] = cloud_cost_management_gcp_host_count_avg
+ if cloud_cost_management_host_count_avg is not unset:
+ kwargs["cloud_cost_management_host_count_avg"] = cloud_cost_management_host_count_avg
+ if cloud_cost_management_oci_host_count_avg is not unset:
+ kwargs["cloud_cost_management_oci_host_count_avg"] = cloud_cost_management_oci_host_count_avg
+ if cloud_siem_events_sum is not unset:
+ kwargs["cloud_siem_events_sum"] = cloud_siem_events_sum
+ if cloud_siem_indexed_logs_sum is not unset:
+ kwargs["cloud_siem_indexed_logs_sum"] = cloud_siem_indexed_logs_sum
+ if code_analysis_sa_committers_hwm is not unset:
+ kwargs["code_analysis_sa_committers_hwm"] = code_analysis_sa_committers_hwm
+ if code_analysis_sca_committers_hwm is not unset:
+ kwargs["code_analysis_sca_committers_hwm"] = code_analysis_sca_committers_hwm
+ if code_security_host_top99p is not unset:
+ kwargs["code_security_host_top99p"] = code_security_host_top99p
+ if container_avg is not unset:
+ kwargs["container_avg"] = container_avg
+ if container_excl_agent_avg is not unset:
+ kwargs["container_excl_agent_avg"] = container_excl_agent_avg
+ if container_hwm is not unset:
+ kwargs["container_hwm"] = container_hwm
+ if csm_container_enterprise_compliance_count_sum is not unset:
+ kwargs["csm_container_enterprise_compliance_count_sum"] = csm_container_enterprise_compliance_count_sum
+ if csm_container_enterprise_cws_count_sum is not unset:
+ kwargs["csm_container_enterprise_cws_count_sum"] = csm_container_enterprise_cws_count_sum
+ if csm_container_enterprise_total_count_sum is not unset:
+ kwargs["csm_container_enterprise_total_count_sum"] = csm_container_enterprise_total_count_sum
+ if csm_host_enterprise_aas_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_aas_host_count_top99p"] = csm_host_enterprise_aas_host_count_top99p
+ if csm_host_enterprise_aws_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_aws_host_count_top99p"] = csm_host_enterprise_aws_host_count_top99p
+ if csm_host_enterprise_azure_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_azure_host_count_top99p"] = csm_host_enterprise_azure_host_count_top99p
+ if csm_host_enterprise_compliance_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_compliance_host_count_top99p"] = csm_host_enterprise_compliance_host_count_top99p
+ if csm_host_enterprise_cws_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_cws_host_count_top99p"] = csm_host_enterprise_cws_host_count_top99p
+ if csm_host_enterprise_gcp_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_gcp_host_count_top99p"] = csm_host_enterprise_gcp_host_count_top99p
+ if csm_host_enterprise_oci_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_oci_host_count_top99p"] = csm_host_enterprise_oci_host_count_top99p
+ if csm_host_enterprise_total_host_count_top99p is not unset:
+ kwargs["csm_host_enterprise_total_host_count_top99p"] = csm_host_enterprise_total_host_count_top99p
+ if csm_host_pro_hosts_agentless_scanners_sum is not unset:
+ kwargs["csm_host_pro_hosts_agentless_scanners_sum"] = csm_host_pro_hosts_agentless_scanners_sum
+ if csm_host_pro_hosts_agentless_scanners_top99p is not unset:
+ kwargs["csm_host_pro_hosts_agentless_scanners_top99p"] = csm_host_pro_hosts_agentless_scanners_top99p
+ if csm_host_pro_oci_host_count_top99p is not unset:
+ kwargs["csm_host_pro_oci_host_count_top99p"] = csm_host_pro_oci_host_count_top99p
+ if cspm_aas_host_top99p is not unset:
+ kwargs["cspm_aas_host_top99p"] = cspm_aas_host_top99p
+ if cspm_aws_host_top99p is not unset:
+ kwargs["cspm_aws_host_top99p"] = cspm_aws_host_top99p
+ if cspm_azure_host_top99p is not unset:
+ kwargs["cspm_azure_host_top99p"] = cspm_azure_host_top99p
+ if cspm_container_avg is not unset:
+ kwargs["cspm_container_avg"] = cspm_container_avg
+ if cspm_container_hwm is not unset:
+ kwargs["cspm_container_hwm"] = cspm_container_hwm
+ if cspm_gcp_host_top99p is not unset:
+ kwargs["cspm_gcp_host_top99p"] = cspm_gcp_host_top99p
+ if cspm_host_top99p is not unset:
+ kwargs["cspm_host_top99p"] = cspm_host_top99p
+ if cspm_hosts_agentless_scanners_sum is not unset:
+ kwargs["cspm_hosts_agentless_scanners_sum"] = cspm_hosts_agentless_scanners_sum
+ if cspm_hosts_agentless_scanners_top99p is not unset:
+ kwargs["cspm_hosts_agentless_scanners_top99p"] = cspm_hosts_agentless_scanners_top99p
+ if custom_historical_ts_avg is not unset:
+ kwargs["custom_historical_ts_avg"] = custom_historical_ts_avg
+ if custom_live_ts_avg is not unset:
+ kwargs["custom_live_ts_avg"] = custom_live_ts_avg
+ if custom_ts_avg is not unset:
+ kwargs["custom_ts_avg"] = custom_ts_avg
+ if cws_container_count_avg is not unset:
+ kwargs["cws_container_count_avg"] = cws_container_count_avg
+ if cws_fargate_task_avg is not unset:
+ kwargs["cws_fargate_task_avg"] = cws_fargate_task_avg
+ if cws_host_top99p is not unset:
+ kwargs["cws_host_top99p"] = cws_host_top99p
+ if data_jobs_monitoring_host_hr_sum is not unset:
+ kwargs["data_jobs_monitoring_host_hr_sum"] = data_jobs_monitoring_host_hr_sum
+ if data_stream_monitoring_host_count_sum is not unset:
+ kwargs["data_stream_monitoring_host_count_sum"] = data_stream_monitoring_host_count_sum
+ if data_stream_monitoring_host_count_top99p is not unset:
+ kwargs["data_stream_monitoring_host_count_top99p"] = data_stream_monitoring_host_count_top99p
+ if dbm_host_top99p_sum is not unset:
+ kwargs["dbm_host_top99p_sum"] = dbm_host_top99p_sum
+ if dbm_queries_avg_sum is not unset:
+ kwargs["dbm_queries_avg_sum"] = dbm_queries_avg_sum
+ if do_jobs_monitoring_orchestrators_job_hours_sum is not unset:
+ kwargs["do_jobs_monitoring_orchestrators_job_hours_sum"] = do_jobs_monitoring_orchestrators_job_hours_sum
+ if eph_infra_host_agent_sum is not unset:
+ kwargs["eph_infra_host_agent_sum"] = eph_infra_host_agent_sum
+ if eph_infra_host_alibaba_sum is not unset:
+ kwargs["eph_infra_host_alibaba_sum"] = eph_infra_host_alibaba_sum
+ if eph_infra_host_aws_sum is not unset:
+ kwargs["eph_infra_host_aws_sum"] = eph_infra_host_aws_sum
+ if eph_infra_host_azure_sum is not unset:
+ kwargs["eph_infra_host_azure_sum"] = eph_infra_host_azure_sum
+ if eph_infra_host_basic_infra_basic_agent_sum is not unset:
+ kwargs["eph_infra_host_basic_infra_basic_agent_sum"] = eph_infra_host_basic_infra_basic_agent_sum
+ if eph_infra_host_basic_infra_basic_vsphere_sum is not unset:
+ kwargs["eph_infra_host_basic_infra_basic_vsphere_sum"] = eph_infra_host_basic_infra_basic_vsphere_sum
+ if eph_infra_host_basic_sum is not unset:
+ kwargs["eph_infra_host_basic_sum"] = eph_infra_host_basic_sum
+ if eph_infra_host_ent_sum is not unset:
+ kwargs["eph_infra_host_ent_sum"] = eph_infra_host_ent_sum
+ if eph_infra_host_gcp_sum is not unset:
+ kwargs["eph_infra_host_gcp_sum"] = eph_infra_host_gcp_sum
+ if eph_infra_host_heroku_sum is not unset:
+ kwargs["eph_infra_host_heroku_sum"] = eph_infra_host_heroku_sum
+ if eph_infra_host_only_aas_sum is not unset:
+ kwargs["eph_infra_host_only_aas_sum"] = eph_infra_host_only_aas_sum
+ if eph_infra_host_only_vsphere_sum is not unset:
+ kwargs["eph_infra_host_only_vsphere_sum"] = eph_infra_host_only_vsphere_sum
+ if eph_infra_host_opentelemetry_apm_sum is not unset:
+ kwargs["eph_infra_host_opentelemetry_apm_sum"] = eph_infra_host_opentelemetry_apm_sum
+ if eph_infra_host_opentelemetry_sum is not unset:
+ kwargs["eph_infra_host_opentelemetry_sum"] = eph_infra_host_opentelemetry_sum
+ if eph_infra_host_pro_sum is not unset:
+ kwargs["eph_infra_host_pro_sum"] = eph_infra_host_pro_sum
+ if eph_infra_host_proplus_sum is not unset:
+ kwargs["eph_infra_host_proplus_sum"] = eph_infra_host_proplus_sum
+ if eph_infra_host_proxmox_sum is not unset:
+ kwargs["eph_infra_host_proxmox_sum"] = eph_infra_host_proxmox_sum
+ if error_tracking_apm_error_events_sum is not unset:
+ kwargs["error_tracking_apm_error_events_sum"] = error_tracking_apm_error_events_sum
+ if error_tracking_error_events_sum is not unset:
+ kwargs["error_tracking_error_events_sum"] = error_tracking_error_events_sum
+ if error_tracking_events_sum is not unset:
+ kwargs["error_tracking_events_sum"] = error_tracking_events_sum
+ if error_tracking_rum_error_events_sum is not unset:
+ kwargs["error_tracking_rum_error_events_sum"] = error_tracking_rum_error_events_sum
+ if event_management_correlation_correlated_events_sum is not unset:
+ kwargs["event_management_correlation_correlated_events_sum"] = event_management_correlation_correlated_events_sum
+ if event_management_correlation_correlated_related_events_sum is not unset:
+ kwargs["event_management_correlation_correlated_related_events_sum"] = event_management_correlation_correlated_related_events_sum
+ if event_management_correlation_sum is not unset:
+ kwargs["event_management_correlation_sum"] = event_management_correlation_sum
+ if fargate_container_profiler_profiling_fargate_avg is not unset:
+ kwargs["fargate_container_profiler_profiling_fargate_avg"] = fargate_container_profiler_profiling_fargate_avg
+ if fargate_container_profiler_profiling_fargate_eks_avg is not unset:
+ kwargs["fargate_container_profiler_profiling_fargate_eks_avg"] = fargate_container_profiler_profiling_fargate_eks_avg
+ if fargate_tasks_count_avg is not unset:
+ kwargs["fargate_tasks_count_avg"] = fargate_tasks_count_avg
+ if fargate_tasks_count_hwm is not unset:
+ kwargs["fargate_tasks_count_hwm"] = fargate_tasks_count_hwm
+ if feature_flags_config_requests_sum is not unset:
+ kwargs["feature_flags_config_requests_sum"] = feature_flags_config_requests_sum
+ if flex_logs_compute_large_avg is not unset:
+ kwargs["flex_logs_compute_large_avg"] = flex_logs_compute_large_avg
+ if flex_logs_compute_medium_avg is not unset:
+ kwargs["flex_logs_compute_medium_avg"] = flex_logs_compute_medium_avg
+ if flex_logs_compute_small_avg is not unset:
+ kwargs["flex_logs_compute_small_avg"] = flex_logs_compute_small_avg
+ if flex_logs_compute_xlarge_avg is not unset:
+ kwargs["flex_logs_compute_xlarge_avg"] = flex_logs_compute_xlarge_avg
+ if flex_logs_compute_xsmall_avg is not unset:
+ kwargs["flex_logs_compute_xsmall_avg"] = flex_logs_compute_xsmall_avg
+ if flex_logs_starter_avg is not unset:
+ kwargs["flex_logs_starter_avg"] = flex_logs_starter_avg
+ if flex_logs_starter_storage_index_avg is not unset:
+ kwargs["flex_logs_starter_storage_index_avg"] = flex_logs_starter_storage_index_avg
+ if flex_logs_starter_storage_retention_adjustment_avg is not unset:
+ kwargs["flex_logs_starter_storage_retention_adjustment_avg"] = flex_logs_starter_storage_retention_adjustment_avg
+ if flex_stored_logs_avg is not unset:
+ kwargs["flex_stored_logs_avg"] = flex_stored_logs_avg
+ if forwarding_events_bytes_sum is not unset:
+ kwargs["forwarding_events_bytes_sum"] = forwarding_events_bytes_sum
+ if gcp_host_top99p is not unset:
+ kwargs["gcp_host_top99p"] = gcp_host_top99p
+ if heroku_host_top99p is not unset:
+ kwargs["heroku_host_top99p"] = heroku_host_top99p
+ if id is not unset:
+ kwargs["id"] = id
+ if incident_management_monthly_active_users_hwm is not unset:
+ kwargs["incident_management_monthly_active_users_hwm"] = incident_management_monthly_active_users_hwm
+ if incident_management_seats_hwm is not unset:
+ kwargs["incident_management_seats_hwm"] = incident_management_seats_hwm
+ if indexed_events_count_sum is not unset:
+ kwargs["indexed_events_count_sum"] = indexed_events_count_sum
+ if indexed_points_sum is not unset:
+ kwargs["indexed_points_sum"] = indexed_points_sum
+ if infra_cpu_avg is not unset:
+ kwargs["infra_cpu_avg"] = infra_cpu_avg
+ if infra_cpu_default_infra_host_vcpu_agent_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_avg"] = infra_cpu_default_infra_host_vcpu_agent_avg
+ if infra_cpu_default_infra_host_vcpu_agent_basic_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_basic_avg"] = infra_cpu_default_infra_host_vcpu_agent_basic_avg
+ if infra_cpu_default_infra_host_vcpu_agent_basic_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_basic_sum"] = infra_cpu_default_infra_host_vcpu_agent_basic_sum
+ if infra_cpu_default_infra_host_vcpu_agent_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_sum"] = infra_cpu_default_infra_host_vcpu_agent_sum
+ if infra_cpu_default_infra_host_vcpu_aws_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_aws_avg"] = infra_cpu_default_infra_host_vcpu_aws_avg
+ if infra_cpu_default_infra_host_vcpu_aws_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_aws_sum"] = infra_cpu_default_infra_host_vcpu_aws_sum
+ if infra_cpu_default_infra_host_vcpu_azure_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_azure_avg"] = infra_cpu_default_infra_host_vcpu_azure_avg
+ if infra_cpu_default_infra_host_vcpu_azure_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_azure_sum"] = infra_cpu_default_infra_host_vcpu_azure_sum
+ if infra_cpu_default_infra_host_vcpu_gcp_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_gcp_avg"] = infra_cpu_default_infra_host_vcpu_gcp_avg
+ if infra_cpu_default_infra_host_vcpu_gcp_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_gcp_sum"] = infra_cpu_default_infra_host_vcpu_gcp_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_avg"] = infra_cpu_default_infra_host_vcpu_nutanix_avg
+ if infra_cpu_default_infra_host_vcpu_nutanix_basic_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_basic_avg"] = infra_cpu_default_infra_host_vcpu_nutanix_basic_avg
+ if infra_cpu_default_infra_host_vcpu_nutanix_basic_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_basic_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_basic_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_sum
+ if infra_cpu_default_infra_host_vcpu_opentelemetry_avg is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_opentelemetry_avg"] = infra_cpu_default_infra_host_vcpu_opentelemetry_avg
+ if infra_cpu_default_infra_host_vcpu_opentelemetry_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_opentelemetry_sum"] = infra_cpu_default_infra_host_vcpu_opentelemetry_sum
+ if infra_cpu_observed_infra_host_vcpu_agent_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_agent_avg"] = infra_cpu_observed_infra_host_vcpu_agent_avg
+ if infra_cpu_observed_infra_host_vcpu_agent_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_agent_sum"] = infra_cpu_observed_infra_host_vcpu_agent_sum
+ if infra_cpu_observed_infra_host_vcpu_aws_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_aws_avg"] = infra_cpu_observed_infra_host_vcpu_aws_avg
+ if infra_cpu_observed_infra_host_vcpu_aws_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_aws_sum"] = infra_cpu_observed_infra_host_vcpu_aws_sum
+ if infra_cpu_observed_infra_host_vcpu_azure_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_azure_avg"] = infra_cpu_observed_infra_host_vcpu_azure_avg
+ if infra_cpu_observed_infra_host_vcpu_azure_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_azure_sum"] = infra_cpu_observed_infra_host_vcpu_azure_sum
+ if infra_cpu_observed_infra_host_vcpu_gcp_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_gcp_avg"] = infra_cpu_observed_infra_host_vcpu_gcp_avg
+ if infra_cpu_observed_infra_host_vcpu_gcp_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_gcp_sum"] = infra_cpu_observed_infra_host_vcpu_gcp_sum
+ if infra_cpu_observed_infra_host_vcpu_nutanix_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_nutanix_avg"] = infra_cpu_observed_infra_host_vcpu_nutanix_avg
+ if infra_cpu_observed_infra_host_vcpu_nutanix_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_nutanix_sum"] = infra_cpu_observed_infra_host_vcpu_nutanix_sum
+ if infra_cpu_observed_infra_host_vcpu_opentelemetry_avg is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_opentelemetry_avg"] = infra_cpu_observed_infra_host_vcpu_opentelemetry_avg
+ if infra_cpu_observed_infra_host_vcpu_opentelemetry_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_opentelemetry_sum"] = infra_cpu_observed_infra_host_vcpu_opentelemetry_sum
+ if infra_cpu_sum is not unset:
+ kwargs["infra_cpu_sum"] = infra_cpu_sum
+ if infra_edge_monitoring_devices_top99p is not unset:
+ kwargs["infra_edge_monitoring_devices_top99p"] = infra_edge_monitoring_devices_top99p
+ if infra_host_basic_infra_basic_agent_top99p is not unset:
+ kwargs["infra_host_basic_infra_basic_agent_top99p"] = infra_host_basic_infra_basic_agent_top99p
+ if infra_host_basic_infra_basic_vsphere_top99p is not unset:
+ kwargs["infra_host_basic_infra_basic_vsphere_top99p"] = infra_host_basic_infra_basic_vsphere_top99p
+ if infra_host_basic_top99p is not unset:
+ kwargs["infra_host_basic_top99p"] = infra_host_basic_top99p
+ if infra_host_top99p is not unset:
+ kwargs["infra_host_top99p"] = infra_host_top99p
+ if infra_storage_mgmt_objects_count_avg is not unset:
+ kwargs["infra_storage_mgmt_objects_count_avg"] = infra_storage_mgmt_objects_count_avg
+ if ingest_points_sum is not unset:
+ kwargs["ingest_points_sum"] = ingest_points_sum
+ if ingested_events_bytes_sum is not unset:
+ kwargs["ingested_events_bytes_sum"] = ingested_events_bytes_sum
+ if iot_apm_host_sum is not unset:
+ kwargs["iot_apm_host_sum"] = iot_apm_host_sum
+ if iot_apm_host_top99p is not unset:
+ kwargs["iot_apm_host_top99p"] = iot_apm_host_top99p
+ if iot_device_agg_sum is not unset:
+ kwargs["iot_device_agg_sum"] = iot_device_agg_sum
+ if iot_device_top99p_sum is not unset:
+ kwargs["iot_device_top99p_sum"] = iot_device_top99p_sum
+ if llm_observability_15day_retention_spans_sum is not unset:
+ kwargs["llm_observability_15day_retention_spans_sum"] = llm_observability_15day_retention_spans_sum
+ if llm_observability_30day_retention_spans_sum is not unset:
+ kwargs["llm_observability_30day_retention_spans_sum"] = llm_observability_30day_retention_spans_sum
+ if llm_observability_60day_retention_spans_sum is not unset:
+ kwargs["llm_observability_60day_retention_spans_sum"] = llm_observability_60day_retention_spans_sum
+ if llm_observability_90day_retention_spans_sum is not unset:
+ kwargs["llm_observability_90day_retention_spans_sum"] = llm_observability_90day_retention_spans_sum
+ if llm_observability_min_spend_sum is not unset:
+ kwargs["llm_observability_min_spend_sum"] = llm_observability_min_spend_sum
+ if llm_observability_sum is not unset:
+ kwargs["llm_observability_sum"] = llm_observability_sum
+ if logs_archive_search_gb_scanned_sum is not unset:
+ kwargs["logs_archive_search_gb_scanned_sum"] = logs_archive_search_gb_scanned_sum
+ if metric_names_sum is not unset:
+ kwargs["metric_names_sum"] = metric_names_sum
+ if mobile_rum_lite_session_count_sum is not unset:
+ kwargs["mobile_rum_lite_session_count_sum"] = mobile_rum_lite_session_count_sum
+ if mobile_rum_session_count_android_sum is not unset:
+ kwargs["mobile_rum_session_count_android_sum"] = mobile_rum_session_count_android_sum
+ if mobile_rum_session_count_flutter_sum is not unset:
+ kwargs["mobile_rum_session_count_flutter_sum"] = mobile_rum_session_count_flutter_sum
+ if mobile_rum_session_count_ios_sum is not unset:
+ kwargs["mobile_rum_session_count_ios_sum"] = mobile_rum_session_count_ios_sum
+ if mobile_rum_session_count_reactnative_sum is not unset:
+ kwargs["mobile_rum_session_count_reactnative_sum"] = mobile_rum_session_count_reactnative_sum
+ if mobile_rum_session_count_roku_sum is not unset:
+ kwargs["mobile_rum_session_count_roku_sum"] = mobile_rum_session_count_roku_sum
+ if mobile_rum_session_count_sum is not unset:
+ kwargs["mobile_rum_session_count_sum"] = mobile_rum_session_count_sum
+ if mobile_rum_units_sum is not unset:
+ kwargs["mobile_rum_units_sum"] = mobile_rum_units_sum
+ if name is not unset:
+ kwargs["name"] = name
+ if ndm_netflow_events_sum is not unset:
+ kwargs["ndm_netflow_events_sum"] = ndm_netflow_events_sum
+ if netflow_indexed_events_count_sum is not unset:
+ kwargs["netflow_indexed_events_count_sum"] = netflow_indexed_events_count_sum
+ if network_device_wireless_top99p is not unset:
+ kwargs["network_device_wireless_top99p"] = network_device_wireless_top99p
+ if network_path_sum is not unset:
+ kwargs["network_path_sum"] = network_path_sum
+ if npm_host_top99p is not unset:
+ kwargs["npm_host_top99p"] = npm_host_top99p
+ if observability_pipelines_bytes_processed_sum is not unset:
+ kwargs["observability_pipelines_bytes_processed_sum"] = observability_pipelines_bytes_processed_sum
+ if oci_host_sum is not unset:
+ kwargs["oci_host_sum"] = oci_host_sum
+ if oci_host_top99p is not unset:
+ kwargs["oci_host_top99p"] = oci_host_top99p
+ if on_call_seat_hwm is not unset:
+ kwargs["on_call_seat_hwm"] = on_call_seat_hwm
+ if online_archive_events_count_sum is not unset:
+ kwargs["online_archive_events_count_sum"] = online_archive_events_count_sum
+ if opentelemetry_apm_host_top99p is not unset:
+ kwargs["opentelemetry_apm_host_top99p"] = opentelemetry_apm_host_top99p
+ if opentelemetry_host_top99p is not unset:
+ kwargs["opentelemetry_host_top99p"] = opentelemetry_host_top99p
+ if product_analytics_sum is not unset:
+ kwargs["product_analytics_sum"] = product_analytics_sum
+ if profiling_aas_count_top99p is not unset:
+ kwargs["profiling_aas_count_top99p"] = profiling_aas_count_top99p
+ if profiling_host_top99p is not unset:
+ kwargs["profiling_host_top99p"] = profiling_host_top99p
+ if proxmox_host_sum is not unset:
+ kwargs["proxmox_host_sum"] = proxmox_host_sum
+ if proxmox_host_top99p is not unset:
+ kwargs["proxmox_host_top99p"] = proxmox_host_top99p
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ if published_app_hwm is not unset:
+ kwargs["published_app_hwm"] = published_app_hwm
+ if region is not unset:
+ kwargs["region"] = region
+ if rum_browser_and_mobile_session_count is not unset:
+ kwargs["rum_browser_and_mobile_session_count"] = rum_browser_and_mobile_session_count
+ if rum_browser_legacy_session_count_sum is not unset:
+ kwargs["rum_browser_legacy_session_count_sum"] = rum_browser_legacy_session_count_sum
+ if rum_browser_lite_session_count_sum is not unset:
+ kwargs["rum_browser_lite_session_count_sum"] = rum_browser_lite_session_count_sum
+ if rum_browser_replay_session_count_sum is not unset:
+ kwargs["rum_browser_replay_session_count_sum"] = rum_browser_replay_session_count_sum
+ if rum_indexed_sessions_sum is not unset:
+ kwargs["rum_indexed_sessions_sum"] = rum_indexed_sessions_sum
+ if rum_ingested_sessions_sum is not unset:
+ kwargs["rum_ingested_sessions_sum"] = rum_ingested_sessions_sum
+ if rum_lite_session_count_sum is not unset:
+ kwargs["rum_lite_session_count_sum"] = rum_lite_session_count_sum
+ if rum_mobile_legacy_session_count_android_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_android_sum"] = rum_mobile_legacy_session_count_android_sum
+ if rum_mobile_legacy_session_count_flutter_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_flutter_sum"] = rum_mobile_legacy_session_count_flutter_sum
+ if rum_mobile_legacy_session_count_ios_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_ios_sum"] = rum_mobile_legacy_session_count_ios_sum
+ if rum_mobile_legacy_session_count_reactnative_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_reactnative_sum"] = rum_mobile_legacy_session_count_reactnative_sum
+ if rum_mobile_legacy_session_count_roku_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_roku_sum"] = rum_mobile_legacy_session_count_roku_sum
+ if rum_mobile_lite_session_count_android_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_android_sum"] = rum_mobile_lite_session_count_android_sum
+ if rum_mobile_lite_session_count_flutter_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_flutter_sum"] = rum_mobile_lite_session_count_flutter_sum
+ if rum_mobile_lite_session_count_ios_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_ios_sum"] = rum_mobile_lite_session_count_ios_sum
+ if rum_mobile_lite_session_count_kotlinmultiplatform_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_kotlinmultiplatform_sum"] = rum_mobile_lite_session_count_kotlinmultiplatform_sum
+ if rum_mobile_lite_session_count_reactnative_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_reactnative_sum"] = rum_mobile_lite_session_count_reactnative_sum
+ if rum_mobile_lite_session_count_roku_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_roku_sum"] = rum_mobile_lite_session_count_roku_sum
+ if rum_mobile_lite_session_count_unity_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_unity_sum"] = rum_mobile_lite_session_count_unity_sum
+ if rum_mobile_replay_session_count_android_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_android_sum"] = rum_mobile_replay_session_count_android_sum
+ if rum_mobile_replay_session_count_ios_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_ios_sum"] = rum_mobile_replay_session_count_ios_sum
+ if rum_mobile_replay_session_count_kotlinmultiplatform_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_kotlinmultiplatform_sum"] = rum_mobile_replay_session_count_kotlinmultiplatform_sum
+ if rum_mobile_replay_session_count_reactnative_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_reactnative_sum"] = rum_mobile_replay_session_count_reactnative_sum
+ if rum_replay_session_count_sum is not unset:
+ kwargs["rum_replay_session_count_sum"] = rum_replay_session_count_sum
+ if rum_session_count_sum is not unset:
+ kwargs["rum_session_count_sum"] = rum_session_count_sum
+ if rum_session_replay_add_on_sum is not unset:
+ kwargs["rum_session_replay_add_on_sum"] = rum_session_replay_add_on_sum
+ if rum_total_session_count_sum is not unset:
+ kwargs["rum_total_session_count_sum"] = rum_total_session_count_sum
+ if rum_units_sum is not unset:
+ kwargs["rum_units_sum"] = rum_units_sum
+ if sca_fargate_count_avg is not unset:
+ kwargs["sca_fargate_count_avg"] = sca_fargate_count_avg
+ if sca_fargate_count_hwm is not unset:
+ kwargs["sca_fargate_count_hwm"] = sca_fargate_count_hwm
+ if sds_apm_scanned_bytes_sum is not unset:
+ kwargs["sds_apm_scanned_bytes_sum"] = sds_apm_scanned_bytes_sum
+ if sds_events_scanned_bytes_sum is not unset:
+ kwargs["sds_events_scanned_bytes_sum"] = sds_events_scanned_bytes_sum
+ if sds_logs_scanned_bytes_sum is not unset:
+ kwargs["sds_logs_scanned_bytes_sum"] = sds_logs_scanned_bytes_sum
+ if sds_rum_scanned_bytes_sum is not unset:
+ kwargs["sds_rum_scanned_bytes_sum"] = sds_rum_scanned_bytes_sum
+ if sds_total_scanned_bytes_sum is not unset:
+ kwargs["sds_total_scanned_bytes_sum"] = sds_total_scanned_bytes_sum
+ if serverless_apps_apm_apm_azure_appservice_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_azure_appservice_instances_avg"] = serverless_apps_apm_apm_azure_appservice_instances_avg
+ if serverless_apps_apm_apm_azure_azurefunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_azure_azurefunction_instances_avg"] = serverless_apps_apm_apm_azure_azurefunction_instances_avg
+ if serverless_apps_apm_apm_azure_containerapp_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_azure_containerapp_instances_avg"] = serverless_apps_apm_apm_azure_containerapp_instances_avg
+ if serverless_apps_apm_apm_fargate_ecs_tasks_avg is not unset:
+ kwargs["serverless_apps_apm_apm_fargate_ecs_tasks_avg"] = serverless_apps_apm_apm_fargate_ecs_tasks_avg
+ if serverless_apps_apm_apm_gcp_cloudfunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_cloudfunction_instances_avg"] = serverless_apps_apm_apm_gcp_cloudfunction_instances_avg
+ if serverless_apps_apm_apm_gcp_cloudrun_instances_avg is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_cloudrun_instances_avg"] = serverless_apps_apm_apm_gcp_cloudrun_instances_avg
+ if serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg"] = serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg
+ if serverless_apps_apm_avg is not unset:
+ kwargs["serverless_apps_apm_avg"] = serverless_apps_apm_avg
+ if serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg"] = serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg"] = serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg"] = serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg"] = serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg"] = serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg
+ if serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg"] = serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg
+ if serverless_apps_apm_excl_fargate_avg is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_avg"] = serverless_apps_apm_excl_fargate_avg
+ if serverless_apps_azure_container_app_instances_avg is not unset:
+ kwargs["serverless_apps_azure_container_app_instances_avg"] = serverless_apps_azure_container_app_instances_avg
+ if serverless_apps_azure_count_avg is not unset:
+ kwargs["serverless_apps_azure_count_avg"] = serverless_apps_azure_count_avg
+ if serverless_apps_azure_function_app_instances_avg is not unset:
+ kwargs["serverless_apps_azure_function_app_instances_avg"] = serverless_apps_azure_function_app_instances_avg
+ if serverless_apps_azure_web_app_instances_avg is not unset:
+ kwargs["serverless_apps_azure_web_app_instances_avg"] = serverless_apps_azure_web_app_instances_avg
+ if serverless_apps_dsm_fargate_tasks_avg is not unset:
+ kwargs["serverless_apps_dsm_fargate_tasks_avg"] = serverless_apps_dsm_fargate_tasks_avg
+ if serverless_apps_ecs_avg is not unset:
+ kwargs["serverless_apps_ecs_avg"] = serverless_apps_ecs_avg
+ if serverless_apps_eks_avg is not unset:
+ kwargs["serverless_apps_eks_avg"] = serverless_apps_eks_avg
+ if serverless_apps_excl_fargate_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_avg"] = serverless_apps_excl_fargate_avg
+ if serverless_apps_excl_fargate_azure_container_app_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_container_app_instances_avg"] = serverless_apps_excl_fargate_azure_container_app_instances_avg
+ if serverless_apps_excl_fargate_azure_function_app_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_function_app_instances_avg"] = serverless_apps_excl_fargate_azure_function_app_instances_avg
+ if serverless_apps_excl_fargate_azure_web_app_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_web_app_instances_avg"] = serverless_apps_excl_fargate_azure_web_app_instances_avg
+ if serverless_apps_excl_fargate_google_cloud_functions_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_google_cloud_functions_instances_avg"] = serverless_apps_excl_fargate_google_cloud_functions_instances_avg
+ if serverless_apps_excl_fargate_google_cloud_run_instances_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_google_cloud_run_instances_avg"] = serverless_apps_excl_fargate_google_cloud_run_instances_avg
+ if serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg"] = serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg
+ if serverless_apps_google_cloud_functions_instances_avg is not unset:
+ kwargs["serverless_apps_google_cloud_functions_instances_avg"] = serverless_apps_google_cloud_functions_instances_avg
+ if serverless_apps_google_cloud_run_instances_avg is not unset:
+ kwargs["serverless_apps_google_cloud_run_instances_avg"] = serverless_apps_google_cloud_run_instances_avg
+ if serverless_apps_google_count_avg is not unset:
+ kwargs["serverless_apps_google_count_avg"] = serverless_apps_google_count_avg
+ if serverless_apps_infra_gcp_gke_autopilot_pods_avg is not unset:
+ kwargs["serverless_apps_infra_gcp_gke_autopilot_pods_avg"] = serverless_apps_infra_gcp_gke_autopilot_pods_avg
+ if serverless_apps_total_count_avg is not unset:
+ kwargs["serverless_apps_total_count_avg"] = serverless_apps_total_count_avg
+ if siem_12mo_retention_sum is not unset:
+ kwargs["siem_12mo_retention_sum"] = siem_12mo_retention_sum
+ if siem_6mo_retention_sum is not unset:
+ kwargs["siem_6mo_retention_sum"] = siem_6mo_retention_sum
+ if siem_analyzed_logs_add_on_count_sum is not unset:
+ kwargs["siem_analyzed_logs_add_on_count_sum"] = siem_analyzed_logs_add_on_count_sum
+ if snmp_device_count_sum is not unset:
+ kwargs["snmp_device_count_sum"] = snmp_device_count_sum
+ if snmp_device_count_top99p is not unset:
+ kwargs["snmp_device_count_top99p"] = snmp_device_count_top99p
+ if synthetics_browser_check_calls_count_sum is not unset:
+ kwargs["synthetics_browser_check_calls_count_sum"] = synthetics_browser_check_calls_count_sum
+ if synthetics_check_calls_count_sum is not unset:
+ kwargs["synthetics_check_calls_count_sum"] = synthetics_check_calls_count_sum
+ if synthetics_mobile_test_runs_sum is not unset:
+ kwargs["synthetics_mobile_test_runs_sum"] = synthetics_mobile_test_runs_sum
+ if synthetics_parallel_testing_max_slots_hwm is not unset:
+ kwargs["synthetics_parallel_testing_max_slots_hwm"] = synthetics_parallel_testing_max_slots_hwm
+ if trace_search_indexed_events_count_sum is not unset:
+ kwargs["trace_search_indexed_events_count_sum"] = trace_search_indexed_events_count_sum
+ if twol_ingested_events_bytes_sum is not unset:
+ kwargs["twol_ingested_events_bytes_sum"] = twol_ingested_events_bytes_sum
+ if universal_service_monitoring_host_top99p is not unset:
+ kwargs["universal_service_monitoring_host_top99p"] = universal_service_monitoring_host_top99p
+ if vsphere_host_top99p is not unset:
+ kwargs["vsphere_host_top99p"] = vsphere_host_top99p
+ if vuln_management_host_count_top99p is not unset:
+ kwargs["vuln_management_host_count_top99p"] = vuln_management_host_count_top99p
+ if workflow_executions_usage_sum is not unset:
+ kwargs["workflow_executions_usage_sum"] = workflow_executions_usage_sum
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_summary_response.py b/datadog_api_client/v1/model/usage_summary_response.py
new file mode 100644
index 0000000000..78f10d4162
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_summary_response.py
@@ -0,0 +1,2238 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.logs_by_retention import LogsByRetention
+ from datadog_api_client.v1.model.usage_summary_date import UsageSummaryDate
+
+class UsageSummaryResponse(ModelNormal):
+ # Cross-SDK semantic marker. In Python, typed fields are already accessible via
+ # bracket notation (model["key"]) through _data_store, so no runtime change is needed.
+ _keep_typed_in_additional_properties = True
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.logs_by_retention import LogsByRetention
+ from datadog_api_client.v1.model.usage_summary_date import UsageSummaryDate
+ return {
+ "agent_host_top99p_sum": (int,),
+ "ai_credits_agent_builder_ai_credits_agg_sum": (int,),
+ "ai_credits_agg_sum": (int,),
+ "ai_credits_bits_assistant_ai_credits_agg_sum": (int,),
+ "ai_credits_bits_dev_ai_credits_agg_sum": (int,),
+ "ai_credits_bits_sre_ai_credits_agg_sum": (int,),
+ "apm_azure_app_service_host_top99p_sum": (int,),
+ "apm_devsecops_host_top99p_sum": (int,),
+ "apm_enterprise_standalone_hosts_top99p_sum": (int,),
+ "apm_fargate_count_avg_sum": (int,),
+ "apm_host_top99p_sum": (int,),
+ "apm_pro_standalone_hosts_top99p_sum": (int,),
+ "appsec_fargate_count_avg_sum": (int,),
+ "asm_serverless_agg_sum": (int,),
+ "audit_logs_lines_indexed_agg_sum": (int,),
+ "audit_trail_enabled_hwm_sum": (int,),
+ "audit_trail_event_forwarding_events_agg_sum": (int,),
+ "avg_profiled_fargate_tasks_sum": (int,),
+ "aws_host_top99p_sum": (int,),
+ "aws_lambda_func_count": (int,),
+ "aws_lambda_invocations_sum": (int,),
+ "azure_app_service_top99p_sum": (int,),
+ "azure_host_top99p_sum": (int,),
+ "billable_ingested_bytes_agg_sum": (int,),
+ "bits_ai_investigations_agg_sum": (int,),
+ "browser_rum_lite_session_count_agg_sum": (int,),
+ "browser_rum_replay_session_count_agg_sum": (int,),
+ "browser_rum_units_agg_sum": (int,),
+ "ccm_anthropic_spend_last_sum": (int,),
+ "ccm_aws_spend_last_sum": (int,),
+ "ccm_azure_spend_last_sum": (int,),
+ "ccm_confluent_spend_last_sum": (int,),
+ "ccm_databricks_spend_last_sum": (int,),
+ "ccm_elastic_spend_last_sum": (int,),
+ "ccm_fastly_spend_last_sum": (int,),
+ "ccm_gcp_spend_last_sum": (int,),
+ "ccm_github_spend_last_sum": (int,),
+ "ccm_mongodb_spend_last_sum": (int,),
+ "ccm_oci_spend_last_sum": (int,),
+ "ccm_openai_spend_last_sum": (int,),
+ "ccm_snowflake_spend_last_sum": (int,),
+ "ccm_spend_monitored_ent_last_sum": (int,),
+ "ccm_spend_monitored_pro_last_sum": (int,),
+ "ccm_twilio_spend_last_sum": (int,),
+ "ci_pipeline_indexed_spans_agg_sum": (int,),
+ "ci_test_indexed_spans_agg_sum": (int,),
+ "ci_visibility_itr_committers_hwm_sum": (int,),
+ "ci_visibility_pipeline_committers_hwm_sum": (int,),
+ "ci_visibility_test_committers_hwm_sum": (int,),
+ "cloud_cost_management_aws_host_count_avg_sum": (int,),
+ "cloud_cost_management_azure_host_count_avg_sum": (int,),
+ "cloud_cost_management_gcp_host_count_avg_sum": (int,),
+ "cloud_cost_management_host_count_avg_sum": (int,),
+ "cloud_cost_management_oci_host_count_avg_sum": (int,),
+ "cloud_siem_events_agg_sum": (int,),
+ "cloud_siem_indexed_logs_agg_sum": (int,),
+ "code_analysis_sa_committers_hwm_sum": (int,),
+ "code_analysis_sca_committers_hwm_sum": (int,),
+ "code_security_host_top99p_sum": (int,),
+ "container_avg_sum": (int,),
+ "container_excl_agent_avg_sum": (int,),
+ "container_hwm_sum": (int,),
+ "csm_container_enterprise_compliance_count_agg_sum": (int,),
+ "csm_container_enterprise_cws_count_agg_sum": (int,),
+ "csm_container_enterprise_total_count_agg_sum": (int,),
+ "csm_host_enterprise_aas_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_aws_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_azure_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_compliance_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_cws_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_gcp_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_oci_host_count_top99p_sum": (int,),
+ "csm_host_enterprise_total_host_count_top99p_sum": (int,),
+ "csm_host_pro_hosts_agentless_scanners_agg_sum": (int,),
+ "csm_host_pro_hosts_agentless_scanners_top99p_sum": (int,),
+ "csm_host_pro_oci_host_count_top99p_sum": (int,),
+ "cspm_aas_host_top99p_sum": (int,),
+ "cspm_aws_host_top99p_sum": (int,),
+ "cspm_azure_host_top99p_sum": (int,),
+ "cspm_container_avg_sum": (int,),
+ "cspm_container_hwm_sum": (int,),
+ "cspm_gcp_host_top99p_sum": (int,),
+ "cspm_host_top99p_sum": (int,),
+ "cspm_hosts_agentless_scanners_agg_sum": (int,),
+ "cspm_hosts_agentless_scanners_top99p_sum": (int,),
+ "custom_historical_ts_sum": (int,),
+ "custom_live_ts_sum": (int,),
+ "custom_ts_sum": (int,),
+ "cws_container_avg_sum": (int,),
+ "cws_fargate_task_avg_sum": (int,),
+ "cws_host_top99p_sum": (int,),
+ "data_jobs_monitoring_host_hr_agg_sum": (int,),
+ "data_stream_monitoring_host_count_agg_sum": (int,),
+ "data_stream_monitoring_host_count_top99p_sum": (int,),
+ "dbm_host_top99p_sum": (int,),
+ "dbm_queries_avg_sum": (int,),
+ "do_jobs_monitoring_orchestrators_job_hours_agg_sum": (int,),
+ "end_date": (datetime,),
+ "eph_infra_host_agent_agg_sum": (int,),
+ "eph_infra_host_alibaba_agg_sum": (int,),
+ "eph_infra_host_aws_agg_sum": (int,),
+ "eph_infra_host_azure_agg_sum": (int,),
+ "eph_infra_host_basic_agg_sum": (int,),
+ "eph_infra_host_basic_infra_basic_agent_agg_sum": (int,),
+ "eph_infra_host_basic_infra_basic_vsphere_agg_sum": (int,),
+ "eph_infra_host_ent_agg_sum": (int,),
+ "eph_infra_host_gcp_agg_sum": (int,),
+ "eph_infra_host_heroku_agg_sum": (int,),
+ "eph_infra_host_only_aas_agg_sum": (int,),
+ "eph_infra_host_only_vsphere_agg_sum": (int,),
+ "eph_infra_host_opentelemetry_agg_sum": (int,),
+ "eph_infra_host_opentelemetry_apm_agg_sum": (int,),
+ "eph_infra_host_pro_agg_sum": (int,),
+ "eph_infra_host_proplus_agg_sum": (int,),
+ "eph_infra_host_proxmox_agg_sum": (int,),
+ "error_tracking_apm_error_events_agg_sum": (int,),
+ "error_tracking_error_events_agg_sum": (int,),
+ "error_tracking_events_agg_sum": (int,),
+ "error_tracking_rum_error_events_agg_sum": (int,),
+ "event_management_correlation_agg_sum": (int,),
+ "event_management_correlation_correlated_events_agg_sum": (int,),
+ "event_management_correlation_correlated_related_events_agg_sum": (int,),
+ "fargate_container_profiler_profiling_fargate_avg_sum": (int,),
+ "fargate_container_profiler_profiling_fargate_eks_avg_sum": (int,),
+ "fargate_tasks_count_avg_sum": (int,),
+ "fargate_tasks_count_hwm_sum": (int,),
+ "feature_flags_config_requests_agg_sum": (int,),
+ "flex_logs_compute_large_avg_sum": (int,),
+ "flex_logs_compute_medium_avg_sum": (int,),
+ "flex_logs_compute_small_avg_sum": (int,),
+ "flex_logs_compute_xlarge_avg_sum": (int,),
+ "flex_logs_compute_xsmall_avg_sum": (int,),
+ "flex_logs_starter_avg_sum": (int,),
+ "flex_logs_starter_storage_index_avg_sum": (int,),
+ "flex_logs_starter_storage_retention_adjustment_avg_sum": (int,),
+ "flex_stored_logs_avg_sum": (int,),
+ "forwarding_events_bytes_agg_sum": (int,),
+ "gcp_host_top99p_sum": (int,),
+ "heroku_host_top99p_sum": (int,),
+ "incident_management_monthly_active_users_hwm_sum": (int,),
+ "incident_management_seats_hwm_sum": (int,),
+ "indexed_events_count_agg_sum": (int,),
+ "indexed_points_agg_sum": (int,),
+ "infra_cpu_agg_sum": (int,),
+ "infra_cpu_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_aws_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_aws_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_azure_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_azure_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_gcp_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_gcp_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum": (int,),
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_agent_agg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_agent_avg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_aws_agg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_aws_avg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_azure_agg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_azure_avg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_gcp_agg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_gcp_avg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum": (int,),
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum": (int,),
+ "infra_edge_monitoring_devices_top99p_sum": (int,),
+ "infra_host_basic_infra_basic_agent_top99p_sum": (int,),
+ "infra_host_basic_infra_basic_vsphere_top99p_sum": (int,),
+ "infra_host_basic_top99p_sum": (int,),
+ "infra_host_top99p_sum": (int,),
+ "infra_storage_mgmt_objects_count_avg_sum": (int,),
+ "ingest_points_agg_sum": (int,),
+ "ingested_events_bytes_agg_sum": (int,),
+ "iot_apm_host_agg_sum": (int,),
+ "iot_apm_host_top99p_sum": (int,),
+ "iot_device_agg_sum": (int,),
+ "iot_device_top99p_sum": (int,),
+ "last_updated": (datetime,),
+ "live_indexed_events_agg_sum": (int,),
+ "live_ingested_bytes_agg_sum": (int,),
+ "llm_observability_15day_retention_spans_agg_sum": (int,),
+ "llm_observability_30day_retention_spans_agg_sum": (int,),
+ "llm_observability_60day_retention_spans_agg_sum": (int,),
+ "llm_observability_90day_retention_spans_agg_sum": (int,),
+ "llm_observability_agg_sum": (int,),
+ "llm_observability_min_spend_agg_sum": (int,),
+ "logs_archive_search_gb_scanned_agg_sum": (int,),
+ "logs_by_retention": (LogsByRetention,),
+ "metric_names_agg_sum": (int,),
+ "mobile_rum_lite_session_count_agg_sum": (int,),
+ "mobile_rum_session_count_agg_sum": (int,),
+ "mobile_rum_session_count_android_agg_sum": (int,),
+ "mobile_rum_session_count_flutter_agg_sum": (int,),
+ "mobile_rum_session_count_ios_agg_sum": (int,),
+ "mobile_rum_session_count_reactnative_agg_sum": (int,),
+ "mobile_rum_session_count_roku_agg_sum": (int,),
+ "mobile_rum_units_agg_sum": (int,),
+ "ndm_netflow_events_agg_sum": (int,),
+ "netflow_indexed_events_count_agg_sum": (int,),
+ "network_device_wireless_top99p_sum": (int,),
+ "network_path_agg_sum": (int,),
+ "npm_host_top99p_sum": (int,),
+ "observability_pipelines_bytes_processed_agg_sum": (int,),
+ "oci_host_agg_sum": (int,),
+ "oci_host_top99p_sum": (int,),
+ "on_call_seat_hwm_sum": (int,),
+ "online_archive_events_count_agg_sum": (int,),
+ "opentelemetry_apm_host_top99p_sum": (int,),
+ "opentelemetry_host_top99p_sum": (int,),
+ "product_analytics_agg_sum": (int,),
+ "profiling_aas_count_top99p_sum": (int,),
+ "profiling_container_agent_count_avg": (int,),
+ "profiling_host_count_top99p_sum": (int,),
+ "proxmox_host_agg_sum": (int,),
+ "proxmox_host_top99p_sum": (int,),
+ "published_app_hwm_sum": (int,),
+ "rehydrated_indexed_events_agg_sum": (int,),
+ "rehydrated_ingested_bytes_agg_sum": (int,),
+ "rum_browser_and_mobile_session_count": (int,),
+ "rum_browser_legacy_session_count_agg_sum": (int,),
+ "rum_browser_lite_session_count_agg_sum": (int,),
+ "rum_browser_replay_session_count_agg_sum": (int,),
+ "rum_indexed_sessions_agg_sum": (int,),
+ "rum_ingested_sessions_agg_sum": (int,),
+ "rum_lite_session_count_agg_sum": (int,),
+ "rum_mobile_legacy_session_count_android_agg_sum": (int,),
+ "rum_mobile_legacy_session_count_flutter_agg_sum": (int,),
+ "rum_mobile_legacy_session_count_ios_agg_sum": (int,),
+ "rum_mobile_legacy_session_count_reactnative_agg_sum": (int,),
+ "rum_mobile_legacy_session_count_roku_agg_sum": (int,),
+ "rum_mobile_lite_session_count_android_agg_sum": (int,),
+ "rum_mobile_lite_session_count_flutter_agg_sum": (int,),
+ "rum_mobile_lite_session_count_ios_agg_sum": (int,),
+ "rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum": (int,),
+ "rum_mobile_lite_session_count_reactnative_agg_sum": (int,),
+ "rum_mobile_lite_session_count_roku_agg_sum": (int,),
+ "rum_mobile_lite_session_count_unity_agg_sum": (int,),
+ "rum_mobile_replay_session_count_android_agg_sum": (int,),
+ "rum_mobile_replay_session_count_ios_agg_sum": (int,),
+ "rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum": (int,),
+ "rum_mobile_replay_session_count_reactnative_agg_sum": (int,),
+ "rum_replay_session_count_agg_sum": (int,),
+ "rum_session_count_agg_sum": (int,),
+ "rum_session_replay_add_on_agg_sum": (int,),
+ "rum_total_session_count_agg_sum": (int,),
+ "rum_units_agg_sum": (int,),
+ "sca_fargate_count_avg_sum": (int,),
+ "sca_fargate_count_hwm_sum": (int,),
+ "sds_apm_scanned_bytes_sum": (int,),
+ "sds_events_scanned_bytes_sum": (int,),
+ "sds_logs_scanned_bytes_sum": (int,),
+ "sds_rum_scanned_bytes_sum": (int,),
+ "sds_total_scanned_bytes_sum": (int,),
+ "serverless_apps_apm_apm_azure_appservice_instances_avg_sum": (int,),
+ "serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum": (int,),
+ "serverless_apps_apm_apm_azure_containerapp_instances_avg_sum": (int,),
+ "serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum": (int,),
+ "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum": (int,),
+ "serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum": (int,),
+ "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum": (int,),
+ "serverless_apps_apm_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum": (int,),
+ "serverless_apps_apm_excl_fargate_avg_sum": (int,),
+ "serverless_apps_azure_container_app_instances_avg_sum": (int,),
+ "serverless_apps_azure_count_avg_sum": (int,),
+ "serverless_apps_azure_function_app_instances_avg_sum": (int,),
+ "serverless_apps_azure_web_app_instances_avg_sum": (int,),
+ "serverless_apps_dsm_fargate_tasks_avg_sum": (int,),
+ "serverless_apps_ecs_avg_sum": (int,),
+ "serverless_apps_eks_avg_sum": (int,),
+ "serverless_apps_excl_fargate_avg_sum": (int,),
+ "serverless_apps_excl_fargate_azure_container_app_instances_avg_sum": (int,),
+ "serverless_apps_excl_fargate_azure_function_app_instances_avg_sum": (int,),
+ "serverless_apps_excl_fargate_azure_web_app_instances_avg_sum": (int,),
+ "serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum": (int,),
+ "serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum": (int,),
+ "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum": (int,),
+ "serverless_apps_google_cloud_functions_instances_avg_sum": (int,),
+ "serverless_apps_google_cloud_run_instances_avg_sum": (int,),
+ "serverless_apps_google_count_avg_sum": (int,),
+ "serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum": (int,),
+ "serverless_apps_total_count_avg_sum": (int,),
+ "siem_12mo_retention_agg_sum": (int,),
+ "siem_6mo_retention_agg_sum": (int,),
+ "siem_analyzed_logs_add_on_count_agg_sum": (int,),
+ "snmp_device_count_agg_sum": (int,),
+ "snmp_device_count_top99p_sum": (int,),
+ "start_date": (datetime,),
+ "synthetics_browser_check_calls_count_agg_sum": (int,),
+ "synthetics_check_calls_count_agg_sum": (int,),
+ "synthetics_mobile_test_runs_agg_sum": (int,),
+ "synthetics_parallel_testing_max_slots_hwm_sum": (int,),
+ "trace_search_indexed_events_count_agg_sum": (int,),
+ "twol_ingested_events_bytes_agg_sum": (int,),
+ "universal_service_monitoring_host_top99p_sum": (int,),
+ "usage": ([UsageSummaryDate],),
+ "vsphere_host_top99p_sum": (int,),
+ "vuln_management_host_count_top99p_sum": (int,),
+ "workflow_executions_usage_agg_sum": (int,),
+ }
+ attribute_map = {
+ "agent_host_top99p_sum": "agent_host_top99p_sum",
+ "ai_credits_agent_builder_ai_credits_agg_sum": "ai_credits_agent_builder_ai_credits_agg_sum",
+ "ai_credits_agg_sum": "ai_credits_agg_sum",
+ "ai_credits_bits_assistant_ai_credits_agg_sum": "ai_credits_bits_assistant_ai_credits_agg_sum",
+ "ai_credits_bits_dev_ai_credits_agg_sum": "ai_credits_bits_dev_ai_credits_agg_sum",
+ "ai_credits_bits_sre_ai_credits_agg_sum": "ai_credits_bits_sre_ai_credits_agg_sum",
+ "apm_azure_app_service_host_top99p_sum": "apm_azure_app_service_host_top99p_sum",
+ "apm_devsecops_host_top99p_sum": "apm_devsecops_host_top99p_sum",
+ "apm_enterprise_standalone_hosts_top99p_sum": "apm_enterprise_standalone_hosts_top99p_sum",
+ "apm_fargate_count_avg_sum": "apm_fargate_count_avg_sum",
+ "apm_host_top99p_sum": "apm_host_top99p_sum",
+ "apm_pro_standalone_hosts_top99p_sum": "apm_pro_standalone_hosts_top99p_sum",
+ "appsec_fargate_count_avg_sum": "appsec_fargate_count_avg_sum",
+ "asm_serverless_agg_sum": "asm_serverless_agg_sum",
+ "audit_logs_lines_indexed_agg_sum": "audit_logs_lines_indexed_agg_sum",
+ "audit_trail_enabled_hwm_sum": "audit_trail_enabled_hwm_sum",
+ "audit_trail_event_forwarding_events_agg_sum": "audit_trail_event_forwarding_events_agg_sum",
+ "avg_profiled_fargate_tasks_sum": "avg_profiled_fargate_tasks_sum",
+ "aws_host_top99p_sum": "aws_host_top99p_sum",
+ "aws_lambda_func_count": "aws_lambda_func_count",
+ "aws_lambda_invocations_sum": "aws_lambda_invocations_sum",
+ "azure_app_service_top99p_sum": "azure_app_service_top99p_sum",
+ "azure_host_top99p_sum": "azure_host_top99p_sum",
+ "billable_ingested_bytes_agg_sum": "billable_ingested_bytes_agg_sum",
+ "bits_ai_investigations_agg_sum": "bits_ai_investigations_agg_sum",
+ "browser_rum_lite_session_count_agg_sum": "browser_rum_lite_session_count_agg_sum",
+ "browser_rum_replay_session_count_agg_sum": "browser_rum_replay_session_count_agg_sum",
+ "browser_rum_units_agg_sum": "browser_rum_units_agg_sum",
+ "ccm_anthropic_spend_last_sum": "ccm_anthropic_spend_last_sum",
+ "ccm_aws_spend_last_sum": "ccm_aws_spend_last_sum",
+ "ccm_azure_spend_last_sum": "ccm_azure_spend_last_sum",
+ "ccm_confluent_spend_last_sum": "ccm_confluent_spend_last_sum",
+ "ccm_databricks_spend_last_sum": "ccm_databricks_spend_last_sum",
+ "ccm_elastic_spend_last_sum": "ccm_elastic_spend_last_sum",
+ "ccm_fastly_spend_last_sum": "ccm_fastly_spend_last_sum",
+ "ccm_gcp_spend_last_sum": "ccm_gcp_spend_last_sum",
+ "ccm_github_spend_last_sum": "ccm_github_spend_last_sum",
+ "ccm_mongodb_spend_last_sum": "ccm_mongodb_spend_last_sum",
+ "ccm_oci_spend_last_sum": "ccm_oci_spend_last_sum",
+ "ccm_openai_spend_last_sum": "ccm_openai_spend_last_sum",
+ "ccm_snowflake_spend_last_sum": "ccm_snowflake_spend_last_sum",
+ "ccm_spend_monitored_ent_last_sum": "ccm_spend_monitored_ent_last_sum",
+ "ccm_spend_monitored_pro_last_sum": "ccm_spend_monitored_pro_last_sum",
+ "ccm_twilio_spend_last_sum": "ccm_twilio_spend_last_sum",
+ "ci_pipeline_indexed_spans_agg_sum": "ci_pipeline_indexed_spans_agg_sum",
+ "ci_test_indexed_spans_agg_sum": "ci_test_indexed_spans_agg_sum",
+ "ci_visibility_itr_committers_hwm_sum": "ci_visibility_itr_committers_hwm_sum",
+ "ci_visibility_pipeline_committers_hwm_sum": "ci_visibility_pipeline_committers_hwm_sum",
+ "ci_visibility_test_committers_hwm_sum": "ci_visibility_test_committers_hwm_sum",
+ "cloud_cost_management_aws_host_count_avg_sum": "cloud_cost_management_aws_host_count_avg_sum",
+ "cloud_cost_management_azure_host_count_avg_sum": "cloud_cost_management_azure_host_count_avg_sum",
+ "cloud_cost_management_gcp_host_count_avg_sum": "cloud_cost_management_gcp_host_count_avg_sum",
+ "cloud_cost_management_host_count_avg_sum": "cloud_cost_management_host_count_avg_sum",
+ "cloud_cost_management_oci_host_count_avg_sum": "cloud_cost_management_oci_host_count_avg_sum",
+ "cloud_siem_events_agg_sum": "cloud_siem_events_agg_sum",
+ "cloud_siem_indexed_logs_agg_sum": "cloud_siem_indexed_logs_agg_sum",
+ "code_analysis_sa_committers_hwm_sum": "code_analysis_sa_committers_hwm_sum",
+ "code_analysis_sca_committers_hwm_sum": "code_analysis_sca_committers_hwm_sum",
+ "code_security_host_top99p_sum": "code_security_host_top99p_sum",
+ "container_avg_sum": "container_avg_sum",
+ "container_excl_agent_avg_sum": "container_excl_agent_avg_sum",
+ "container_hwm_sum": "container_hwm_sum",
+ "csm_container_enterprise_compliance_count_agg_sum": "csm_container_enterprise_compliance_count_agg_sum",
+ "csm_container_enterprise_cws_count_agg_sum": "csm_container_enterprise_cws_count_agg_sum",
+ "csm_container_enterprise_total_count_agg_sum": "csm_container_enterprise_total_count_agg_sum",
+ "csm_host_enterprise_aas_host_count_top99p_sum": "csm_host_enterprise_aas_host_count_top99p_sum",
+ "csm_host_enterprise_aws_host_count_top99p_sum": "csm_host_enterprise_aws_host_count_top99p_sum",
+ "csm_host_enterprise_azure_host_count_top99p_sum": "csm_host_enterprise_azure_host_count_top99p_sum",
+ "csm_host_enterprise_compliance_host_count_top99p_sum": "csm_host_enterprise_compliance_host_count_top99p_sum",
+ "csm_host_enterprise_cws_host_count_top99p_sum": "csm_host_enterprise_cws_host_count_top99p_sum",
+ "csm_host_enterprise_gcp_host_count_top99p_sum": "csm_host_enterprise_gcp_host_count_top99p_sum",
+ "csm_host_enterprise_oci_host_count_top99p_sum": "csm_host_enterprise_oci_host_count_top99p_sum",
+ "csm_host_enterprise_total_host_count_top99p_sum": "csm_host_enterprise_total_host_count_top99p_sum",
+ "csm_host_pro_hosts_agentless_scanners_agg_sum": "csm_host_pro_hosts_agentless_scanners_agg_sum",
+ "csm_host_pro_hosts_agentless_scanners_top99p_sum": "csm_host_pro_hosts_agentless_scanners_top99p_sum",
+ "csm_host_pro_oci_host_count_top99p_sum": "csm_host_pro_oci_host_count_top99p_sum",
+ "cspm_aas_host_top99p_sum": "cspm_aas_host_top99p_sum",
+ "cspm_aws_host_top99p_sum": "cspm_aws_host_top99p_sum",
+ "cspm_azure_host_top99p_sum": "cspm_azure_host_top99p_sum",
+ "cspm_container_avg_sum": "cspm_container_avg_sum",
+ "cspm_container_hwm_sum": "cspm_container_hwm_sum",
+ "cspm_gcp_host_top99p_sum": "cspm_gcp_host_top99p_sum",
+ "cspm_host_top99p_sum": "cspm_host_top99p_sum",
+ "cspm_hosts_agentless_scanners_agg_sum": "cspm_hosts_agentless_scanners_agg_sum",
+ "cspm_hosts_agentless_scanners_top99p_sum": "cspm_hosts_agentless_scanners_top99p_sum",
+ "custom_historical_ts_sum": "custom_historical_ts_sum",
+ "custom_live_ts_sum": "custom_live_ts_sum",
+ "custom_ts_sum": "custom_ts_sum",
+ "cws_container_avg_sum": "cws_container_avg_sum",
+ "cws_fargate_task_avg_sum": "cws_fargate_task_avg_sum",
+ "cws_host_top99p_sum": "cws_host_top99p_sum",
+ "data_jobs_monitoring_host_hr_agg_sum": "data_jobs_monitoring_host_hr_agg_sum",
+ "data_stream_monitoring_host_count_agg_sum": "data_stream_monitoring_host_count_agg_sum",
+ "data_stream_monitoring_host_count_top99p_sum": "data_stream_monitoring_host_count_top99p_sum",
+ "dbm_host_top99p_sum": "dbm_host_top99p_sum",
+ "dbm_queries_avg_sum": "dbm_queries_avg_sum",
+ "do_jobs_monitoring_orchestrators_job_hours_agg_sum": "do_jobs_monitoring_orchestrators_job_hours_agg_sum",
+ "end_date": "end_date",
+ "eph_infra_host_agent_agg_sum": "eph_infra_host_agent_agg_sum",
+ "eph_infra_host_alibaba_agg_sum": "eph_infra_host_alibaba_agg_sum",
+ "eph_infra_host_aws_agg_sum": "eph_infra_host_aws_agg_sum",
+ "eph_infra_host_azure_agg_sum": "eph_infra_host_azure_agg_sum",
+ "eph_infra_host_basic_agg_sum": "eph_infra_host_basic_agg_sum",
+ "eph_infra_host_basic_infra_basic_agent_agg_sum": "eph_infra_host_basic_infra_basic_agent_agg_sum",
+ "eph_infra_host_basic_infra_basic_vsphere_agg_sum": "eph_infra_host_basic_infra_basic_vsphere_agg_sum",
+ "eph_infra_host_ent_agg_sum": "eph_infra_host_ent_agg_sum",
+ "eph_infra_host_gcp_agg_sum": "eph_infra_host_gcp_agg_sum",
+ "eph_infra_host_heroku_agg_sum": "eph_infra_host_heroku_agg_sum",
+ "eph_infra_host_only_aas_agg_sum": "eph_infra_host_only_aas_agg_sum",
+ "eph_infra_host_only_vsphere_agg_sum": "eph_infra_host_only_vsphere_agg_sum",
+ "eph_infra_host_opentelemetry_agg_sum": "eph_infra_host_opentelemetry_agg_sum",
+ "eph_infra_host_opentelemetry_apm_agg_sum": "eph_infra_host_opentelemetry_apm_agg_sum",
+ "eph_infra_host_pro_agg_sum": "eph_infra_host_pro_agg_sum",
+ "eph_infra_host_proplus_agg_sum": "eph_infra_host_proplus_agg_sum",
+ "eph_infra_host_proxmox_agg_sum": "eph_infra_host_proxmox_agg_sum",
+ "error_tracking_apm_error_events_agg_sum": "error_tracking_apm_error_events_agg_sum",
+ "error_tracking_error_events_agg_sum": "error_tracking_error_events_agg_sum",
+ "error_tracking_events_agg_sum": "error_tracking_events_agg_sum",
+ "error_tracking_rum_error_events_agg_sum": "error_tracking_rum_error_events_agg_sum",
+ "event_management_correlation_agg_sum": "event_management_correlation_agg_sum",
+ "event_management_correlation_correlated_events_agg_sum": "event_management_correlation_correlated_events_agg_sum",
+ "event_management_correlation_correlated_related_events_agg_sum": "event_management_correlation_correlated_related_events_agg_sum",
+ "fargate_container_profiler_profiling_fargate_avg_sum": "fargate_container_profiler_profiling_fargate_avg_sum",
+ "fargate_container_profiler_profiling_fargate_eks_avg_sum": "fargate_container_profiler_profiling_fargate_eks_avg_sum",
+ "fargate_tasks_count_avg_sum": "fargate_tasks_count_avg_sum",
+ "fargate_tasks_count_hwm_sum": "fargate_tasks_count_hwm_sum",
+ "feature_flags_config_requests_agg_sum": "feature_flags_config_requests_agg_sum",
+ "flex_logs_compute_large_avg_sum": "flex_logs_compute_large_avg_sum",
+ "flex_logs_compute_medium_avg_sum": "flex_logs_compute_medium_avg_sum",
+ "flex_logs_compute_small_avg_sum": "flex_logs_compute_small_avg_sum",
+ "flex_logs_compute_xlarge_avg_sum": "flex_logs_compute_xlarge_avg_sum",
+ "flex_logs_compute_xsmall_avg_sum": "flex_logs_compute_xsmall_avg_sum",
+ "flex_logs_starter_avg_sum": "flex_logs_starter_avg_sum",
+ "flex_logs_starter_storage_index_avg_sum": "flex_logs_starter_storage_index_avg_sum",
+ "flex_logs_starter_storage_retention_adjustment_avg_sum": "flex_logs_starter_storage_retention_adjustment_avg_sum",
+ "flex_stored_logs_avg_sum": "flex_stored_logs_avg_sum",
+ "forwarding_events_bytes_agg_sum": "forwarding_events_bytes_agg_sum",
+ "gcp_host_top99p_sum": "gcp_host_top99p_sum",
+ "heroku_host_top99p_sum": "heroku_host_top99p_sum",
+ "incident_management_monthly_active_users_hwm_sum": "incident_management_monthly_active_users_hwm_sum",
+ "incident_management_seats_hwm_sum": "incident_management_seats_hwm_sum",
+ "indexed_events_count_agg_sum": "indexed_events_count_agg_sum",
+ "indexed_points_agg_sum": "indexed_points_agg_sum",
+ "infra_cpu_agg_sum": "infra_cpu_agg_sum",
+ "infra_cpu_avg_sum": "infra_cpu_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_agent_agg_sum": "infra_cpu_default_infra_host_vcpu_agent_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_agent_avg_sum": "infra_cpu_default_infra_host_vcpu_agent_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum": "infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum": "infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_aws_agg_sum": "infra_cpu_default_infra_host_vcpu_aws_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_aws_avg_sum": "infra_cpu_default_infra_host_vcpu_aws_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_azure_agg_sum": "infra_cpu_default_infra_host_vcpu_azure_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_azure_avg_sum": "infra_cpu_default_infra_host_vcpu_azure_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_gcp_agg_sum": "infra_cpu_default_infra_host_vcpu_gcp_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_gcp_avg_sum": "infra_cpu_default_infra_host_vcpu_gcp_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_agg_sum": "infra_cpu_default_infra_host_vcpu_nutanix_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_avg_sum": "infra_cpu_default_infra_host_vcpu_nutanix_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum": "infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum": "infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum",
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum": "infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum",
+ "infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum": "infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum",
+ "infra_cpu_observed_infra_host_vcpu_agent_agg_sum": "infra_cpu_observed_infra_host_vcpu_agent_agg_sum",
+ "infra_cpu_observed_infra_host_vcpu_agent_avg_sum": "infra_cpu_observed_infra_host_vcpu_agent_avg_sum",
+ "infra_cpu_observed_infra_host_vcpu_aws_agg_sum": "infra_cpu_observed_infra_host_vcpu_aws_agg_sum",
+ "infra_cpu_observed_infra_host_vcpu_aws_avg_sum": "infra_cpu_observed_infra_host_vcpu_aws_avg_sum",
+ "infra_cpu_observed_infra_host_vcpu_azure_agg_sum": "infra_cpu_observed_infra_host_vcpu_azure_agg_sum",
+ "infra_cpu_observed_infra_host_vcpu_azure_avg_sum": "infra_cpu_observed_infra_host_vcpu_azure_avg_sum",
+ "infra_cpu_observed_infra_host_vcpu_gcp_agg_sum": "infra_cpu_observed_infra_host_vcpu_gcp_agg_sum",
+ "infra_cpu_observed_infra_host_vcpu_gcp_avg_sum": "infra_cpu_observed_infra_host_vcpu_gcp_avg_sum",
+ "infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum": "infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum",
+ "infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum": "infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum",
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum": "infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum",
+ "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum": "infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum",
+ "infra_edge_monitoring_devices_top99p_sum": "infra_edge_monitoring_devices_top99p_sum",
+ "infra_host_basic_infra_basic_agent_top99p_sum": "infra_host_basic_infra_basic_agent_top99p_sum",
+ "infra_host_basic_infra_basic_vsphere_top99p_sum": "infra_host_basic_infra_basic_vsphere_top99p_sum",
+ "infra_host_basic_top99p_sum": "infra_host_basic_top99p_sum",
+ "infra_host_top99p_sum": "infra_host_top99p_sum",
+ "infra_storage_mgmt_objects_count_avg_sum": "infra_storage_mgmt_objects_count_avg_sum",
+ "ingest_points_agg_sum": "ingest_points_agg_sum",
+ "ingested_events_bytes_agg_sum": "ingested_events_bytes_agg_sum",
+ "iot_apm_host_agg_sum": "iot_apm_host_agg_sum",
+ "iot_apm_host_top99p_sum": "iot_apm_host_top99p_sum",
+ "iot_device_agg_sum": "iot_device_agg_sum",
+ "iot_device_top99p_sum": "iot_device_top99p_sum",
+ "last_updated": "last_updated",
+ "live_indexed_events_agg_sum": "live_indexed_events_agg_sum",
+ "live_ingested_bytes_agg_sum": "live_ingested_bytes_agg_sum",
+ "llm_observability_15day_retention_spans_agg_sum": "llm_observability_15day_retention_spans_agg_sum",
+ "llm_observability_30day_retention_spans_agg_sum": "llm_observability_30day_retention_spans_agg_sum",
+ "llm_observability_60day_retention_spans_agg_sum": "llm_observability_60day_retention_spans_agg_sum",
+ "llm_observability_90day_retention_spans_agg_sum": "llm_observability_90day_retention_spans_agg_sum",
+ "llm_observability_agg_sum": "llm_observability_agg_sum",
+ "llm_observability_min_spend_agg_sum": "llm_observability_min_spend_agg_sum",
+ "logs_archive_search_gb_scanned_agg_sum": "logs_archive_search_gb_scanned_agg_sum",
+ "logs_by_retention": "logs_by_retention",
+ "metric_names_agg_sum": "metric_names_agg_sum",
+ "mobile_rum_lite_session_count_agg_sum": "mobile_rum_lite_session_count_agg_sum",
+ "mobile_rum_session_count_agg_sum": "mobile_rum_session_count_agg_sum",
+ "mobile_rum_session_count_android_agg_sum": "mobile_rum_session_count_android_agg_sum",
+ "mobile_rum_session_count_flutter_agg_sum": "mobile_rum_session_count_flutter_agg_sum",
+ "mobile_rum_session_count_ios_agg_sum": "mobile_rum_session_count_ios_agg_sum",
+ "mobile_rum_session_count_reactnative_agg_sum": "mobile_rum_session_count_reactnative_agg_sum",
+ "mobile_rum_session_count_roku_agg_sum": "mobile_rum_session_count_roku_agg_sum",
+ "mobile_rum_units_agg_sum": "mobile_rum_units_agg_sum",
+ "ndm_netflow_events_agg_sum": "ndm_netflow_events_agg_sum",
+ "netflow_indexed_events_count_agg_sum": "netflow_indexed_events_count_agg_sum",
+ "network_device_wireless_top99p_sum": "network_device_wireless_top99p_sum",
+ "network_path_agg_sum": "network_path_agg_sum",
+ "npm_host_top99p_sum": "npm_host_top99p_sum",
+ "observability_pipelines_bytes_processed_agg_sum": "observability_pipelines_bytes_processed_agg_sum",
+ "oci_host_agg_sum": "oci_host_agg_sum",
+ "oci_host_top99p_sum": "oci_host_top99p_sum",
+ "on_call_seat_hwm_sum": "on_call_seat_hwm_sum",
+ "online_archive_events_count_agg_sum": "online_archive_events_count_agg_sum",
+ "opentelemetry_apm_host_top99p_sum": "opentelemetry_apm_host_top99p_sum",
+ "opentelemetry_host_top99p_sum": "opentelemetry_host_top99p_sum",
+ "product_analytics_agg_sum": "product_analytics_agg_sum",
+ "profiling_aas_count_top99p_sum": "profiling_aas_count_top99p_sum",
+ "profiling_container_agent_count_avg": "profiling_container_agent_count_avg",
+ "profiling_host_count_top99p_sum": "profiling_host_count_top99p_sum",
+ "proxmox_host_agg_sum": "proxmox_host_agg_sum",
+ "proxmox_host_top99p_sum": "proxmox_host_top99p_sum",
+ "published_app_hwm_sum": "published_app_hwm_sum",
+ "rehydrated_indexed_events_agg_sum": "rehydrated_indexed_events_agg_sum",
+ "rehydrated_ingested_bytes_agg_sum": "rehydrated_ingested_bytes_agg_sum",
+ "rum_browser_and_mobile_session_count": "rum_browser_and_mobile_session_count",
+ "rum_browser_legacy_session_count_agg_sum": "rum_browser_legacy_session_count_agg_sum",
+ "rum_browser_lite_session_count_agg_sum": "rum_browser_lite_session_count_agg_sum",
+ "rum_browser_replay_session_count_agg_sum": "rum_browser_replay_session_count_agg_sum",
+ "rum_indexed_sessions_agg_sum": "rum_indexed_sessions_agg_sum",
+ "rum_ingested_sessions_agg_sum": "rum_ingested_sessions_agg_sum",
+ "rum_lite_session_count_agg_sum": "rum_lite_session_count_agg_sum",
+ "rum_mobile_legacy_session_count_android_agg_sum": "rum_mobile_legacy_session_count_android_agg_sum",
+ "rum_mobile_legacy_session_count_flutter_agg_sum": "rum_mobile_legacy_session_count_flutter_agg_sum",
+ "rum_mobile_legacy_session_count_ios_agg_sum": "rum_mobile_legacy_session_count_ios_agg_sum",
+ "rum_mobile_legacy_session_count_reactnative_agg_sum": "rum_mobile_legacy_session_count_reactnative_agg_sum",
+ "rum_mobile_legacy_session_count_roku_agg_sum": "rum_mobile_legacy_session_count_roku_agg_sum",
+ "rum_mobile_lite_session_count_android_agg_sum": "rum_mobile_lite_session_count_android_agg_sum",
+ "rum_mobile_lite_session_count_flutter_agg_sum": "rum_mobile_lite_session_count_flutter_agg_sum",
+ "rum_mobile_lite_session_count_ios_agg_sum": "rum_mobile_lite_session_count_ios_agg_sum",
+ "rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum": "rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum",
+ "rum_mobile_lite_session_count_reactnative_agg_sum": "rum_mobile_lite_session_count_reactnative_agg_sum",
+ "rum_mobile_lite_session_count_roku_agg_sum": "rum_mobile_lite_session_count_roku_agg_sum",
+ "rum_mobile_lite_session_count_unity_agg_sum": "rum_mobile_lite_session_count_unity_agg_sum",
+ "rum_mobile_replay_session_count_android_agg_sum": "rum_mobile_replay_session_count_android_agg_sum",
+ "rum_mobile_replay_session_count_ios_agg_sum": "rum_mobile_replay_session_count_ios_agg_sum",
+ "rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum": "rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum",
+ "rum_mobile_replay_session_count_reactnative_agg_sum": "rum_mobile_replay_session_count_reactnative_agg_sum",
+ "rum_replay_session_count_agg_sum": "rum_replay_session_count_agg_sum",
+ "rum_session_count_agg_sum": "rum_session_count_agg_sum",
+ "rum_session_replay_add_on_agg_sum": "rum_session_replay_add_on_agg_sum",
+ "rum_total_session_count_agg_sum": "rum_total_session_count_agg_sum",
+ "rum_units_agg_sum": "rum_units_agg_sum",
+ "sca_fargate_count_avg_sum": "sca_fargate_count_avg_sum",
+ "sca_fargate_count_hwm_sum": "sca_fargate_count_hwm_sum",
+ "sds_apm_scanned_bytes_sum": "sds_apm_scanned_bytes_sum",
+ "sds_events_scanned_bytes_sum": "sds_events_scanned_bytes_sum",
+ "sds_logs_scanned_bytes_sum": "sds_logs_scanned_bytes_sum",
+ "sds_rum_scanned_bytes_sum": "sds_rum_scanned_bytes_sum",
+ "sds_total_scanned_bytes_sum": "sds_total_scanned_bytes_sum",
+ "serverless_apps_apm_apm_azure_appservice_instances_avg_sum": "serverless_apps_apm_apm_azure_appservice_instances_avg_sum",
+ "serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum": "serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum",
+ "serverless_apps_apm_apm_azure_containerapp_instances_avg_sum": "serverless_apps_apm_apm_azure_containerapp_instances_avg_sum",
+ "serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum": "serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum",
+ "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum": "serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum",
+ "serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum": "serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum",
+ "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum": "serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum",
+ "serverless_apps_apm_avg_sum": "serverless_apps_apm_avg_sum",
+ "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum": "serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum",
+ "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum": "serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum",
+ "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum": "serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum",
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum": "serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum",
+ "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum": "serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum",
+ "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum": "serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum",
+ "serverless_apps_apm_excl_fargate_avg_sum": "serverless_apps_apm_excl_fargate_avg_sum",
+ "serverless_apps_azure_container_app_instances_avg_sum": "serverless_apps_azure_container_app_instances_avg_sum",
+ "serverless_apps_azure_count_avg_sum": "serverless_apps_azure_count_avg_sum",
+ "serverless_apps_azure_function_app_instances_avg_sum": "serverless_apps_azure_function_app_instances_avg_sum",
+ "serverless_apps_azure_web_app_instances_avg_sum": "serverless_apps_azure_web_app_instances_avg_sum",
+ "serverless_apps_dsm_fargate_tasks_avg_sum": "serverless_apps_dsm_fargate_tasks_avg_sum",
+ "serverless_apps_ecs_avg_sum": "serverless_apps_ecs_avg_sum",
+ "serverless_apps_eks_avg_sum": "serverless_apps_eks_avg_sum",
+ "serverless_apps_excl_fargate_avg_sum": "serverless_apps_excl_fargate_avg_sum",
+ "serverless_apps_excl_fargate_azure_container_app_instances_avg_sum": "serverless_apps_excl_fargate_azure_container_app_instances_avg_sum",
+ "serverless_apps_excl_fargate_azure_function_app_instances_avg_sum": "serverless_apps_excl_fargate_azure_function_app_instances_avg_sum",
+ "serverless_apps_excl_fargate_azure_web_app_instances_avg_sum": "serverless_apps_excl_fargate_azure_web_app_instances_avg_sum",
+ "serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum": "serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum",
+ "serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum": "serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum",
+ "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum": "serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum",
+ "serverless_apps_google_cloud_functions_instances_avg_sum": "serverless_apps_google_cloud_functions_instances_avg_sum",
+ "serverless_apps_google_cloud_run_instances_avg_sum": "serverless_apps_google_cloud_run_instances_avg_sum",
+ "serverless_apps_google_count_avg_sum": "serverless_apps_google_count_avg_sum",
+ "serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum": "serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum",
+ "serverless_apps_total_count_avg_sum": "serverless_apps_total_count_avg_sum",
+ "siem_12mo_retention_agg_sum": "siem_12mo_retention_agg_sum",
+ "siem_6mo_retention_agg_sum": "siem_6mo_retention_agg_sum",
+ "siem_analyzed_logs_add_on_count_agg_sum": "siem_analyzed_logs_add_on_count_agg_sum",
+ "snmp_device_count_agg_sum": "snmp_device_count_agg_sum",
+ "snmp_device_count_top99p_sum": "snmp_device_count_top99p_sum",
+ "start_date": "start_date",
+ "synthetics_browser_check_calls_count_agg_sum": "synthetics_browser_check_calls_count_agg_sum",
+ "synthetics_check_calls_count_agg_sum": "synthetics_check_calls_count_agg_sum",
+ "synthetics_mobile_test_runs_agg_sum": "synthetics_mobile_test_runs_agg_sum",
+ "synthetics_parallel_testing_max_slots_hwm_sum": "synthetics_parallel_testing_max_slots_hwm_sum",
+ "trace_search_indexed_events_count_agg_sum": "trace_search_indexed_events_count_agg_sum",
+ "twol_ingested_events_bytes_agg_sum": "twol_ingested_events_bytes_agg_sum",
+ "universal_service_monitoring_host_top99p_sum": "universal_service_monitoring_host_top99p_sum",
+ "usage": "usage",
+ "vsphere_host_top99p_sum": "vsphere_host_top99p_sum",
+ "vuln_management_host_count_top99p_sum": "vuln_management_host_count_top99p_sum",
+ "workflow_executions_usage_agg_sum": "workflow_executions_usage_agg_sum",
+ }
+
+ def __init__(self_, agent_host_top99p_sum: Union[int, UnsetType]=unset, ai_credits_agent_builder_ai_credits_agg_sum: Union[int, UnsetType]=unset, ai_credits_agg_sum: Union[int, UnsetType]=unset, ai_credits_bits_assistant_ai_credits_agg_sum: Union[int, UnsetType]=unset, ai_credits_bits_dev_ai_credits_agg_sum: Union[int, UnsetType]=unset, ai_credits_bits_sre_ai_credits_agg_sum: Union[int, UnsetType]=unset, apm_azure_app_service_host_top99p_sum: Union[int, UnsetType]=unset, apm_devsecops_host_top99p_sum: Union[int, UnsetType]=unset, apm_enterprise_standalone_hosts_top99p_sum: Union[int, UnsetType]=unset, apm_fargate_count_avg_sum: Union[int, UnsetType]=unset, apm_host_top99p_sum: Union[int, UnsetType]=unset, apm_pro_standalone_hosts_top99p_sum: Union[int, UnsetType]=unset, appsec_fargate_count_avg_sum: Union[int, UnsetType]=unset, asm_serverless_agg_sum: Union[int, UnsetType]=unset, audit_logs_lines_indexed_agg_sum: Union[int, UnsetType]=unset, audit_trail_enabled_hwm_sum: Union[int, UnsetType]=unset, audit_trail_event_forwarding_events_agg_sum: Union[int, UnsetType]=unset, avg_profiled_fargate_tasks_sum: Union[int, UnsetType]=unset, aws_host_top99p_sum: Union[int, UnsetType]=unset, aws_lambda_func_count: Union[int, UnsetType]=unset, aws_lambda_invocations_sum: Union[int, UnsetType]=unset, azure_app_service_top99p_sum: Union[int, UnsetType]=unset, azure_host_top99p_sum: Union[int, UnsetType]=unset, billable_ingested_bytes_agg_sum: Union[int, UnsetType]=unset, bits_ai_investigations_agg_sum: Union[int, UnsetType]=unset, browser_rum_lite_session_count_agg_sum: Union[int, UnsetType]=unset, browser_rum_replay_session_count_agg_sum: Union[int, UnsetType]=unset, browser_rum_units_agg_sum: Union[int, UnsetType]=unset, ccm_anthropic_spend_last_sum: Union[int, UnsetType]=unset, ccm_aws_spend_last_sum: Union[int, UnsetType]=unset, ccm_azure_spend_last_sum: Union[int, UnsetType]=unset, ccm_confluent_spend_last_sum: Union[int, UnsetType]=unset, ccm_databricks_spend_last_sum: Union[int, UnsetType]=unset, ccm_elastic_spend_last_sum: Union[int, UnsetType]=unset, ccm_fastly_spend_last_sum: Union[int, UnsetType]=unset, ccm_gcp_spend_last_sum: Union[int, UnsetType]=unset, ccm_github_spend_last_sum: Union[int, UnsetType]=unset, ccm_mongodb_spend_last_sum: Union[int, UnsetType]=unset, ccm_oci_spend_last_sum: Union[int, UnsetType]=unset, ccm_openai_spend_last_sum: Union[int, UnsetType]=unset, ccm_snowflake_spend_last_sum: Union[int, UnsetType]=unset, ccm_spend_monitored_ent_last_sum: Union[int, UnsetType]=unset, ccm_spend_monitored_pro_last_sum: Union[int, UnsetType]=unset, ccm_twilio_spend_last_sum: Union[int, UnsetType]=unset, ci_pipeline_indexed_spans_agg_sum: Union[int, UnsetType]=unset, ci_test_indexed_spans_agg_sum: Union[int, UnsetType]=unset, ci_visibility_itr_committers_hwm_sum: Union[int, UnsetType]=unset, ci_visibility_pipeline_committers_hwm_sum: Union[int, UnsetType]=unset, ci_visibility_test_committers_hwm_sum: Union[int, UnsetType]=unset, cloud_cost_management_aws_host_count_avg_sum: Union[int, UnsetType]=unset, cloud_cost_management_azure_host_count_avg_sum: Union[int, UnsetType]=unset, cloud_cost_management_gcp_host_count_avg_sum: Union[int, UnsetType]=unset, cloud_cost_management_host_count_avg_sum: Union[int, UnsetType]=unset, cloud_cost_management_oci_host_count_avg_sum: Union[int, UnsetType]=unset, cloud_siem_events_agg_sum: Union[int, UnsetType]=unset, cloud_siem_indexed_logs_agg_sum: Union[int, UnsetType]=unset, code_analysis_sa_committers_hwm_sum: Union[int, UnsetType]=unset, code_analysis_sca_committers_hwm_sum: Union[int, UnsetType]=unset, code_security_host_top99p_sum: Union[int, UnsetType]=unset, container_avg_sum: Union[int, UnsetType]=unset, container_excl_agent_avg_sum: Union[int, UnsetType]=unset, container_hwm_sum: Union[int, UnsetType]=unset, csm_container_enterprise_compliance_count_agg_sum: Union[int, UnsetType]=unset, csm_container_enterprise_cws_count_agg_sum: Union[int, UnsetType]=unset, csm_container_enterprise_total_count_agg_sum: Union[int, UnsetType]=unset, csm_host_enterprise_aas_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_aws_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_azure_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_compliance_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_cws_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_gcp_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_oci_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_enterprise_total_host_count_top99p_sum: Union[int, UnsetType]=unset, csm_host_pro_hosts_agentless_scanners_agg_sum: Union[int, UnsetType]=unset, csm_host_pro_hosts_agentless_scanners_top99p_sum: Union[int, UnsetType]=unset, csm_host_pro_oci_host_count_top99p_sum: Union[int, UnsetType]=unset, cspm_aas_host_top99p_sum: Union[int, UnsetType]=unset, cspm_aws_host_top99p_sum: Union[int, UnsetType]=unset, cspm_azure_host_top99p_sum: Union[int, UnsetType]=unset, cspm_container_avg_sum: Union[int, UnsetType]=unset, cspm_container_hwm_sum: Union[int, UnsetType]=unset, cspm_gcp_host_top99p_sum: Union[int, UnsetType]=unset, cspm_host_top99p_sum: Union[int, UnsetType]=unset, cspm_hosts_agentless_scanners_agg_sum: Union[int, UnsetType]=unset, cspm_hosts_agentless_scanners_top99p_sum: Union[int, UnsetType]=unset, custom_historical_ts_sum: Union[int, UnsetType]=unset, custom_live_ts_sum: Union[int, UnsetType]=unset, custom_ts_sum: Union[int, UnsetType]=unset, cws_container_avg_sum: Union[int, UnsetType]=unset, cws_fargate_task_avg_sum: Union[int, UnsetType]=unset, cws_host_top99p_sum: Union[int, UnsetType]=unset, data_jobs_monitoring_host_hr_agg_sum: Union[int, UnsetType]=unset, data_stream_monitoring_host_count_agg_sum: Union[int, UnsetType]=unset, data_stream_monitoring_host_count_top99p_sum: Union[int, UnsetType]=unset, dbm_host_top99p_sum: Union[int, UnsetType]=unset, dbm_queries_avg_sum: Union[int, UnsetType]=unset, do_jobs_monitoring_orchestrators_job_hours_agg_sum: Union[int, UnsetType]=unset, end_date: Union[datetime, UnsetType]=unset, eph_infra_host_agent_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_alibaba_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_aws_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_azure_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_infra_basic_agent_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_basic_infra_basic_vsphere_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_ent_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_gcp_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_heroku_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_only_aas_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_only_vsphere_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_opentelemetry_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_opentelemetry_apm_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_pro_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_proplus_agg_sum: Union[int, UnsetType]=unset, eph_infra_host_proxmox_agg_sum: Union[int, UnsetType]=unset, error_tracking_apm_error_events_agg_sum: Union[int, UnsetType]=unset, error_tracking_error_events_agg_sum: Union[int, UnsetType]=unset, error_tracking_events_agg_sum: Union[int, UnsetType]=unset, error_tracking_rum_error_events_agg_sum: Union[int, UnsetType]=unset, event_management_correlation_agg_sum: Union[int, UnsetType]=unset, event_management_correlation_correlated_events_agg_sum: Union[int, UnsetType]=unset, event_management_correlation_correlated_related_events_agg_sum: Union[int, UnsetType]=unset, fargate_container_profiler_profiling_fargate_avg_sum: Union[int, UnsetType]=unset, fargate_container_profiler_profiling_fargate_eks_avg_sum: Union[int, UnsetType]=unset, fargate_tasks_count_avg_sum: Union[int, UnsetType]=unset, fargate_tasks_count_hwm_sum: Union[int, UnsetType]=unset, feature_flags_config_requests_agg_sum: Union[int, UnsetType]=unset, flex_logs_compute_large_avg_sum: Union[int, UnsetType]=unset, flex_logs_compute_medium_avg_sum: Union[int, UnsetType]=unset, flex_logs_compute_small_avg_sum: Union[int, UnsetType]=unset, flex_logs_compute_xlarge_avg_sum: Union[int, UnsetType]=unset, flex_logs_compute_xsmall_avg_sum: Union[int, UnsetType]=unset, flex_logs_starter_avg_sum: Union[int, UnsetType]=unset, flex_logs_starter_storage_index_avg_sum: Union[int, UnsetType]=unset, flex_logs_starter_storage_retention_adjustment_avg_sum: Union[int, UnsetType]=unset, flex_stored_logs_avg_sum: Union[int, UnsetType]=unset, forwarding_events_bytes_agg_sum: Union[int, UnsetType]=unset, gcp_host_top99p_sum: Union[int, UnsetType]=unset, heroku_host_top99p_sum: Union[int, UnsetType]=unset, incident_management_monthly_active_users_hwm_sum: Union[int, UnsetType]=unset, incident_management_seats_hwm_sum: Union[int, UnsetType]=unset, indexed_events_count_agg_sum: Union[int, UnsetType]=unset, indexed_points_agg_sum: Union[int, UnsetType]=unset, infra_cpu_agg_sum: Union[int, UnsetType]=unset, infra_cpu_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_aws_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_aws_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_azure_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_azure_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_gcp_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_gcp_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum: Union[int, UnsetType]=unset, infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_agent_agg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_agent_avg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_aws_agg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_aws_avg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_azure_agg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_azure_avg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_gcp_agg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_gcp_avg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum: Union[int, UnsetType]=unset, infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum: Union[int, UnsetType]=unset, infra_edge_monitoring_devices_top99p_sum: Union[int, UnsetType]=unset, infra_host_basic_infra_basic_agent_top99p_sum: Union[int, UnsetType]=unset, infra_host_basic_infra_basic_vsphere_top99p_sum: Union[int, UnsetType]=unset, infra_host_basic_top99p_sum: Union[int, UnsetType]=unset, infra_host_top99p_sum: Union[int, UnsetType]=unset, infra_storage_mgmt_objects_count_avg_sum: Union[int, UnsetType]=unset, ingest_points_agg_sum: Union[int, UnsetType]=unset, ingested_events_bytes_agg_sum: Union[int, UnsetType]=unset, iot_apm_host_agg_sum: Union[int, UnsetType]=unset, iot_apm_host_top99p_sum: Union[int, UnsetType]=unset, iot_device_agg_sum: Union[int, UnsetType]=unset, iot_device_top99p_sum: Union[int, UnsetType]=unset, last_updated: Union[datetime, UnsetType]=unset, live_indexed_events_agg_sum: Union[int, UnsetType]=unset, live_ingested_bytes_agg_sum: Union[int, UnsetType]=unset, llm_observability_15day_retention_spans_agg_sum: Union[int, UnsetType]=unset, llm_observability_30day_retention_spans_agg_sum: Union[int, UnsetType]=unset, llm_observability_60day_retention_spans_agg_sum: Union[int, UnsetType]=unset, llm_observability_90day_retention_spans_agg_sum: Union[int, UnsetType]=unset, llm_observability_agg_sum: Union[int, UnsetType]=unset, llm_observability_min_spend_agg_sum: Union[int, UnsetType]=unset, logs_archive_search_gb_scanned_agg_sum: Union[int, UnsetType]=unset, logs_by_retention: Union[LogsByRetention, UnsetType]=unset, metric_names_agg_sum: Union[int, UnsetType]=unset, mobile_rum_lite_session_count_agg_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_agg_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_android_agg_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_flutter_agg_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_ios_agg_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_reactnative_agg_sum: Union[int, UnsetType]=unset, mobile_rum_session_count_roku_agg_sum: Union[int, UnsetType]=unset, mobile_rum_units_agg_sum: Union[int, UnsetType]=unset, ndm_netflow_events_agg_sum: Union[int, UnsetType]=unset, netflow_indexed_events_count_agg_sum: Union[int, UnsetType]=unset, network_device_wireless_top99p_sum: Union[int, UnsetType]=unset, network_path_agg_sum: Union[int, UnsetType]=unset, npm_host_top99p_sum: Union[int, UnsetType]=unset, observability_pipelines_bytes_processed_agg_sum: Union[int, UnsetType]=unset, oci_host_agg_sum: Union[int, UnsetType]=unset, oci_host_top99p_sum: Union[int, UnsetType]=unset, on_call_seat_hwm_sum: Union[int, UnsetType]=unset, online_archive_events_count_agg_sum: Union[int, UnsetType]=unset, opentelemetry_apm_host_top99p_sum: Union[int, UnsetType]=unset, opentelemetry_host_top99p_sum: Union[int, UnsetType]=unset, product_analytics_agg_sum: Union[int, UnsetType]=unset, profiling_aas_count_top99p_sum: Union[int, UnsetType]=unset, profiling_container_agent_count_avg: Union[int, UnsetType]=unset, profiling_host_count_top99p_sum: Union[int, UnsetType]=unset, proxmox_host_agg_sum: Union[int, UnsetType]=unset, proxmox_host_top99p_sum: Union[int, UnsetType]=unset, published_app_hwm_sum: Union[int, UnsetType]=unset, rehydrated_indexed_events_agg_sum: Union[int, UnsetType]=unset, rehydrated_ingested_bytes_agg_sum: Union[int, UnsetType]=unset, rum_browser_and_mobile_session_count: Union[int, UnsetType]=unset, rum_browser_legacy_session_count_agg_sum: Union[int, UnsetType]=unset, rum_browser_lite_session_count_agg_sum: Union[int, UnsetType]=unset, rum_browser_replay_session_count_agg_sum: Union[int, UnsetType]=unset, rum_indexed_sessions_agg_sum: Union[int, UnsetType]=unset, rum_ingested_sessions_agg_sum: Union[int, UnsetType]=unset, rum_lite_session_count_agg_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_android_agg_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_flutter_agg_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_ios_agg_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_reactnative_agg_sum: Union[int, UnsetType]=unset, rum_mobile_legacy_session_count_roku_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_android_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_flutter_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_ios_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_reactnative_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_roku_agg_sum: Union[int, UnsetType]=unset, rum_mobile_lite_session_count_unity_agg_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_android_agg_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_ios_agg_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum: Union[int, UnsetType]=unset, rum_mobile_replay_session_count_reactnative_agg_sum: Union[int, UnsetType]=unset, rum_replay_session_count_agg_sum: Union[int, UnsetType]=unset, rum_session_count_agg_sum: Union[int, UnsetType]=unset, rum_session_replay_add_on_agg_sum: Union[int, UnsetType]=unset, rum_total_session_count_agg_sum: Union[int, UnsetType]=unset, rum_units_agg_sum: Union[int, UnsetType]=unset, sca_fargate_count_avg_sum: Union[int, UnsetType]=unset, sca_fargate_count_hwm_sum: Union[int, UnsetType]=unset, sds_apm_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_events_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_logs_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_rum_scanned_bytes_sum: Union[int, UnsetType]=unset, sds_total_scanned_bytes_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_appservice_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_azure_containerapp_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum: Union[int, UnsetType]=unset, serverless_apps_apm_excl_fargate_avg_sum: Union[int, UnsetType]=unset, serverless_apps_azure_container_app_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_azure_count_avg_sum: Union[int, UnsetType]=unset, serverless_apps_azure_function_app_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_azure_web_app_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_dsm_fargate_tasks_avg_sum: Union[int, UnsetType]=unset, serverless_apps_ecs_avg_sum: Union[int, UnsetType]=unset, serverless_apps_eks_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_container_app_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_function_app_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_azure_web_app_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum: Union[int, UnsetType]=unset, serverless_apps_google_cloud_functions_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_google_cloud_run_instances_avg_sum: Union[int, UnsetType]=unset, serverless_apps_google_count_avg_sum: Union[int, UnsetType]=unset, serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum: Union[int, UnsetType]=unset, serverless_apps_total_count_avg_sum: Union[int, UnsetType]=unset, siem_12mo_retention_agg_sum: Union[int, UnsetType]=unset, siem_6mo_retention_agg_sum: Union[int, UnsetType]=unset, siem_analyzed_logs_add_on_count_agg_sum: Union[int, UnsetType]=unset, snmp_device_count_agg_sum: Union[int, UnsetType]=unset, snmp_device_count_top99p_sum: Union[int, UnsetType]=unset, start_date: Union[datetime, UnsetType]=unset, synthetics_browser_check_calls_count_agg_sum: Union[int, UnsetType]=unset, synthetics_check_calls_count_agg_sum: Union[int, UnsetType]=unset, synthetics_mobile_test_runs_agg_sum: Union[int, UnsetType]=unset, synthetics_parallel_testing_max_slots_hwm_sum: Union[int, UnsetType]=unset, trace_search_indexed_events_count_agg_sum: Union[int, UnsetType]=unset, twol_ingested_events_bytes_agg_sum: Union[int, UnsetType]=unset, universal_service_monitoring_host_top99p_sum: Union[int, UnsetType]=unset, usage: Union[List[UsageSummaryDate], UnsetType]=unset, vsphere_host_top99p_sum: Union[int, UnsetType]=unset, vuln_management_host_count_top99p_sum: Union[int, UnsetType]=unset, workflow_executions_usage_agg_sum: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Response summarizing all usage aggregated across the months in the request for
+ all organizations, and broken down by month and by organization.
+
+ For SDK users only: all fields at this response level are accessible through the
+ ``additionalProperties`` map. Existing typed-field getters are unchanged. New billing
+ dimensions will not have typed-field getters. Use
+ `Get available fields for usage summary `_
+ to enumerate every available key.
+
+ :param agent_host_top99p_sum: Shows the 99th percentile of all agent hosts over all hours in the current month for all organizations.
+ :type agent_host_top99p_sum: int, optional
+
+ :param ai_credits_agent_builder_ai_credits_agg_sum: Shows the sum of all AI credits used by Agent Builder over all hours in the current month for all organizations.
+ :type ai_credits_agent_builder_ai_credits_agg_sum: int, optional
+
+ :param ai_credits_agg_sum: Shows the sum of all AI credits over all hours in the current month for all organizations.
+ :type ai_credits_agg_sum: int, optional
+
+ :param ai_credits_bits_assistant_ai_credits_agg_sum: Shows the sum of all AI credits used by Bits AI Assistant over all hours in the current month for all organizations.
+ :type ai_credits_bits_assistant_ai_credits_agg_sum: int, optional
+
+ :param ai_credits_bits_dev_ai_credits_agg_sum: Shows the sum of all AI credits used by Bits AI Dev over all hours in the current month for all organizations.
+ :type ai_credits_bits_dev_ai_credits_agg_sum: int, optional
+
+ :param ai_credits_bits_sre_ai_credits_agg_sum: Shows the sum of all AI credits used by Bits AI SRE over all hours in the current month for all organizations.
+ :type ai_credits_bits_sre_ai_credits_agg_sum: int, optional
+
+ :param apm_azure_app_service_host_top99p_sum: Shows the 99th percentile of all Azure app services using APM over all hours in the current month all organizations.
+ :type apm_azure_app_service_host_top99p_sum: int, optional
+
+ :param apm_devsecops_host_top99p_sum: Shows the 99th percentile of all APM DevSecOps hosts over all hours in the current month for all organizations.
+ :type apm_devsecops_host_top99p_sum: int, optional
+
+ :param apm_enterprise_standalone_hosts_top99p_sum: Shows the sum of the 99th percentile of all distinct standalone Enterprise hosts over all hours in the current month for all organizations.
+ :type apm_enterprise_standalone_hosts_top99p_sum: int, optional
+
+ :param apm_fargate_count_avg_sum: Shows the average of all APM ECS Fargate tasks over all hours in the current month for all organizations.
+ :type apm_fargate_count_avg_sum: int, optional
+
+ :param apm_host_top99p_sum: Shows the 99th percentile of all distinct APM hosts over all hours in the current month for all organizations.
+ :type apm_host_top99p_sum: int, optional
+
+ :param apm_pro_standalone_hosts_top99p_sum: Shows the sum of the 99th percentile of all distinct standalone Pro hosts over all hours in the current month for all organizations.
+ :type apm_pro_standalone_hosts_top99p_sum: int, optional
+
+ :param appsec_fargate_count_avg_sum: Shows the average of all Application Security Monitoring ECS Fargate tasks over all hours in the current month for all organizations.
+ :type appsec_fargate_count_avg_sum: int, optional
+
+ :param asm_serverless_agg_sum: Shows the sum of all Application Security Monitoring Serverless invocations over all hours in the current months for all organizations.
+ :type asm_serverless_agg_sum: int, optional
+
+ :param audit_logs_lines_indexed_agg_sum: Shows the sum of all audit logs lines indexed over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type audit_logs_lines_indexed_agg_sum: int, optional
+
+ :param audit_trail_enabled_hwm_sum: Shows the total number of organizations that had Audit Trail enabled over a specific number of months.
+ :type audit_trail_enabled_hwm_sum: int, optional
+
+ :param audit_trail_event_forwarding_events_agg_sum: Shows the sum of all Audit Trail event forwarding events over all hours in the current month for all organizations.
+ :type audit_trail_event_forwarding_events_agg_sum: int, optional
+
+ :param avg_profiled_fargate_tasks_sum: The average total count for Fargate Container Profiler over all hours in the current month for all organizations.
+ :type avg_profiled_fargate_tasks_sum: int, optional
+
+ :param aws_host_top99p_sum: Shows the 99th percentile of all AWS hosts over all hours in the current month for all organizations.
+ :type aws_host_top99p_sum: int, optional
+
+ :param aws_lambda_func_count: Shows the average of the number of functions that executed 1 or more times each hour in the current month for all organizations.
+ :type aws_lambda_func_count: int, optional
+
+ :param aws_lambda_invocations_sum: Shows the sum of all AWS Lambda invocations over all hours in the current month for all organizations.
+ :type aws_lambda_invocations_sum: int, optional
+
+ :param azure_app_service_top99p_sum: Shows the 99th percentile of all Azure app services over all hours in the current month for all organizations.
+ :type azure_app_service_top99p_sum: int, optional
+
+ :param azure_host_top99p_sum: Shows the 99th percentile of all Azure hosts over all hours in the current month for all organizations.
+ :type azure_host_top99p_sum: int, optional
+
+ :param billable_ingested_bytes_agg_sum: Shows the sum of all log bytes ingested over all hours in the current month for all organizations.
+ :type billable_ingested_bytes_agg_sum: int, optional
+
+ :param bits_ai_investigations_agg_sum: Shows the sum of all Bits AI Investigations over all hours in the current month for all organizations.
+ :type bits_ai_investigations_agg_sum: int, optional
+
+ :param browser_rum_lite_session_count_agg_sum: Shows the sum of all browser lite sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type browser_rum_lite_session_count_agg_sum: int, optional
+
+ :param browser_rum_replay_session_count_agg_sum: Shows the sum of all browser replay sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024).
+ :type browser_rum_replay_session_count_agg_sum: int, optional
+
+ :param browser_rum_units_agg_sum: Shows the sum of all browser RUM units over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type browser_rum_units_agg_sum: int, optional
+
+ :param ccm_anthropic_spend_last_sum: Shows the sum of the last value of Anthropic cloud spend monitored in the current month for all organizations.
+ :type ccm_anthropic_spend_last_sum: int, optional
+
+ :param ccm_aws_spend_last_sum: Shows the sum of the last value of AWS cloud spend monitored in the current month for all organizations.
+ :type ccm_aws_spend_last_sum: int, optional
+
+ :param ccm_azure_spend_last_sum: Shows the sum of the last value of Azure cloud spend monitored in the current month for all organizations.
+ :type ccm_azure_spend_last_sum: int, optional
+
+ :param ccm_confluent_spend_last_sum: Shows the sum of the last value of Confluent cloud spend monitored in the current month for all organizations.
+ :type ccm_confluent_spend_last_sum: int, optional
+
+ :param ccm_databricks_spend_last_sum: Shows the sum of the last value of Databricks cloud spend monitored in the current month for all organizations.
+ :type ccm_databricks_spend_last_sum: int, optional
+
+ :param ccm_elastic_spend_last_sum: Shows the sum of the last value of Elastic cloud spend monitored in the current month for all organizations.
+ :type ccm_elastic_spend_last_sum: int, optional
+
+ :param ccm_fastly_spend_last_sum: Shows the sum of the last value of Fastly cloud spend monitored in the current month for all organizations.
+ :type ccm_fastly_spend_last_sum: int, optional
+
+ :param ccm_gcp_spend_last_sum: Shows the sum of the last value of GCP cloud spend monitored in the current month for all organizations.
+ :type ccm_gcp_spend_last_sum: int, optional
+
+ :param ccm_github_spend_last_sum: Shows the sum of the last value of GitHub cloud spend monitored in the current month for all organizations.
+ :type ccm_github_spend_last_sum: int, optional
+
+ :param ccm_mongodb_spend_last_sum: Shows the sum of the last value of MongoDB cloud spend monitored in the current month for all organizations.
+ :type ccm_mongodb_spend_last_sum: int, optional
+
+ :param ccm_oci_spend_last_sum: Shows the sum of the last value of OCI cloud spend monitored in the current month for all organizations.
+ :type ccm_oci_spend_last_sum: int, optional
+
+ :param ccm_openai_spend_last_sum: Shows the sum of the last value of OpenAI cloud spend monitored in the current month for all organizations.
+ :type ccm_openai_spend_last_sum: int, optional
+
+ :param ccm_snowflake_spend_last_sum: Shows the sum of the last value of Snowflake cloud spend monitored in the current month for all organizations.
+ :type ccm_snowflake_spend_last_sum: int, optional
+
+ :param ccm_spend_monitored_ent_last_sum: Shows the sum of the last value of the amount of cloud spend monitored for Enterprise in the current month for all organizations.
+ :type ccm_spend_monitored_ent_last_sum: int, optional
+
+ :param ccm_spend_monitored_pro_last_sum: Shows the sum of the last value of the amount of cloud spend monitored for Pro in the current month for all organizations.
+ :type ccm_spend_monitored_pro_last_sum: int, optional
+
+ :param ccm_twilio_spend_last_sum: Shows the sum of the last value of Twilio cloud spend monitored in the current month for all organizations.
+ :type ccm_twilio_spend_last_sum: int, optional
+
+ :param ci_pipeline_indexed_spans_agg_sum: Shows the sum of all CI pipeline indexed spans over all hours in the current month for all organizations.
+ :type ci_pipeline_indexed_spans_agg_sum: int, optional
+
+ :param ci_test_indexed_spans_agg_sum: Shows the sum of all CI test indexed spans over all hours in the current month for all organizations.
+ :type ci_test_indexed_spans_agg_sum: int, optional
+
+ :param ci_visibility_itr_committers_hwm_sum: Shows the high-water mark of all CI visibility intelligent test runner committers over all hours in the current month for all organizations.
+ :type ci_visibility_itr_committers_hwm_sum: int, optional
+
+ :param ci_visibility_pipeline_committers_hwm_sum: Shows the high-water mark of all CI visibility pipeline committers over all hours in the current month for all organizations.
+ :type ci_visibility_pipeline_committers_hwm_sum: int, optional
+
+ :param ci_visibility_test_committers_hwm_sum: Shows the high-water mark of all CI visibility test committers over all hours in the current month for all organizations.
+ :type ci_visibility_test_committers_hwm_sum: int, optional
+
+ :param cloud_cost_management_aws_host_count_avg_sum: Sum of the host count average for Cloud Cost Management for AWS.
+ :type cloud_cost_management_aws_host_count_avg_sum: int, optional
+
+ :param cloud_cost_management_azure_host_count_avg_sum: Sum of the host count average for Cloud Cost Management for Azure.
+ :type cloud_cost_management_azure_host_count_avg_sum: int, optional
+
+ :param cloud_cost_management_gcp_host_count_avg_sum: Sum of the host count average for Cloud Cost Management for GCP.
+ :type cloud_cost_management_gcp_host_count_avg_sum: int, optional
+
+ :param cloud_cost_management_host_count_avg_sum: Sum of the host count average for Cloud Cost Management for all cloud providers.
+ :type cloud_cost_management_host_count_avg_sum: int, optional
+
+ :param cloud_cost_management_oci_host_count_avg_sum: Sum of the average host counts for Cloud Cost Management on OCI.
+ :type cloud_cost_management_oci_host_count_avg_sum: int, optional
+
+ :param cloud_siem_events_agg_sum: Shows the sum of all Cloud Security Information and Event Management events over all hours in the current month for all organizations.
+ :type cloud_siem_events_agg_sum: int, optional
+
+ :param cloud_siem_indexed_logs_agg_sum: Shows the sum of all Cloud SIEM Indexed Logs over all hours in the current month for all organizations.
+ :type cloud_siem_indexed_logs_agg_sum: int, optional
+
+ :param code_analysis_sa_committers_hwm_sum: Shows the high-water mark of all Static Analysis committers over all hours in the current month for all organizations.
+ :type code_analysis_sa_committers_hwm_sum: int, optional
+
+ :param code_analysis_sca_committers_hwm_sum: Shows the high-water mark of all static Software Composition Analysis committers over all hours in the current month for all organizations.
+ :type code_analysis_sca_committers_hwm_sum: int, optional
+
+ :param code_security_host_top99p_sum: Shows the 99th percentile of all Code Security hosts over all hours in the current month for all organizations.
+ :type code_security_host_top99p_sum: int, optional
+
+ :param container_avg_sum: Shows the average of all distinct containers over all hours in the current month for all organizations.
+ :type container_avg_sum: int, optional
+
+ :param container_excl_agent_avg_sum: Shows the average of the containers without the Datadog Agent over all hours in the current month for all organizations.
+ :type container_excl_agent_avg_sum: int, optional
+
+ :param container_hwm_sum: Shows the sum of the high-water marks of all distinct containers over all hours in the current month for all organizations.
+ :type container_hwm_sum: int, optional
+
+ :param csm_container_enterprise_compliance_count_agg_sum: Shows the sum of all Cloud Security Management Enterprise compliance containers over all hours in the current month for all organizations.
+ :type csm_container_enterprise_compliance_count_agg_sum: int, optional
+
+ :param csm_container_enterprise_cws_count_agg_sum: Shows the sum of all Cloud Security Management Enterprise Cloud Workload Security containers over all hours in the current month for all organizations.
+ :type csm_container_enterprise_cws_count_agg_sum: int, optional
+
+ :param csm_container_enterprise_total_count_agg_sum: Shows the sum of all Cloud Security Management Enterprise containers over all hours in the current month for all organizations.
+ :type csm_container_enterprise_total_count_agg_sum: int, optional
+
+ :param csm_host_enterprise_aas_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise Azure app services hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_aas_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_aws_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise AWS hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_aws_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_azure_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise Azure hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_azure_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_compliance_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise compliance hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_compliance_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_cws_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise Cloud Workload Security hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_cws_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_gcp_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise GCP hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_gcp_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_oci_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise OCI hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_oci_host_count_top99p_sum: int, optional
+
+ :param csm_host_enterprise_total_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Enterprise hosts over all hours in the current month for all organizations.
+ :type csm_host_enterprise_total_host_count_top99p_sum: int, optional
+
+ :param csm_host_pro_hosts_agentless_scanners_agg_sum: Shows the sum of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current month for all organizations.
+ :type csm_host_pro_hosts_agentless_scanners_agg_sum: int, optional
+
+ :param csm_host_pro_hosts_agentless_scanners_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current month for all organizations.
+ :type csm_host_pro_hosts_agentless_scanners_top99p_sum: int, optional
+
+ :param csm_host_pro_oci_host_count_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro OCI hosts over all hours in the current month for all organizations.
+ :type csm_host_pro_oci_host_count_top99p_sum: int, optional
+
+ :param cspm_aas_host_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro Azure app services hosts over all hours in the current month for all organizations.
+ :type cspm_aas_host_top99p_sum: int, optional
+
+ :param cspm_aws_host_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro AWS hosts over all hours in the current month for all organizations.
+ :type cspm_aws_host_top99p_sum: int, optional
+
+ :param cspm_azure_host_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro Azure hosts over all hours in the current month for all organizations.
+ :type cspm_azure_host_top99p_sum: int, optional
+
+ :param cspm_container_avg_sum: Shows the average number of Cloud Security Management Pro containers over all hours in the current month for all organizations.
+ :type cspm_container_avg_sum: int, optional
+
+ :param cspm_container_hwm_sum: Shows the sum of the high-water marks of Cloud Security Management Pro containers over all hours in the current month for all organizations.
+ :type cspm_container_hwm_sum: int, optional
+
+ :param cspm_gcp_host_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro GCP hosts over all hours in the current month for all organizations.
+ :type cspm_gcp_host_top99p_sum: int, optional
+
+ :param cspm_host_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro hosts over all hours in the current month for all organizations.
+ :type cspm_host_top99p_sum: int, optional
+
+ :param cspm_hosts_agentless_scanners_agg_sum: Shows the sum of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current month for all organizations.
+ :type cspm_hosts_agentless_scanners_agg_sum: int, optional
+
+ :param cspm_hosts_agentless_scanners_top99p_sum: Shows the 99th percentile of all Cloud Security Management Pro Agentless scanner hosts over all hours in the current month for all organizations.
+ :type cspm_hosts_agentless_scanners_top99p_sum: int, optional
+
+ :param custom_historical_ts_sum: Shows the average number of distinct historical custom metrics over all hours in the current month for all organizations.
+ :type custom_historical_ts_sum: int, optional
+
+ :param custom_live_ts_sum: Shows the average number of distinct live custom metrics over all hours in the current month for all organizations.
+ :type custom_live_ts_sum: int, optional
+
+ :param custom_ts_sum: Shows the average number of distinct custom metrics over all hours in the current month for all organizations.
+ :type custom_ts_sum: int, optional
+
+ :param cws_container_avg_sum: Shows the average of all distinct Cloud Workload Security containers over all hours in the current month for all organizations.
+ :type cws_container_avg_sum: int, optional
+
+ :param cws_fargate_task_avg_sum: Shows the average of all distinct Cloud Workload Security Fargate tasks over all hours in the current month for all organizations.
+ :type cws_fargate_task_avg_sum: int, optional
+
+ :param cws_host_top99p_sum: Shows the 99th percentile of all Cloud Workload Security hosts over all hours in the current month for all organizations.
+ :type cws_host_top99p_sum: int, optional
+
+ :param data_jobs_monitoring_host_hr_agg_sum: Shows the sum of Data Jobs Monitoring hosts over all hours in the current months for all organizations
+ :type data_jobs_monitoring_host_hr_agg_sum: int, optional
+
+ :param data_stream_monitoring_host_count_agg_sum: Shows the sum of all Data Streams Monitoring hosts over all hours in the current month for all organizations.
+ :type data_stream_monitoring_host_count_agg_sum: int, optional
+
+ :param data_stream_monitoring_host_count_top99p_sum: Shows the 99th percentile of all Data Streams Monitoring hosts over all hours in the current month for all organizations.
+ :type data_stream_monitoring_host_count_top99p_sum: int, optional
+
+ :param dbm_host_top99p_sum: Shows the 99th percentile of all Database Monitoring hosts over all hours in the current month for all organizations.
+ :type dbm_host_top99p_sum: int, optional
+
+ :param dbm_queries_avg_sum: Shows the average of all distinct Database Monitoring Normalized Queries over all hours in the current month for all organizations.
+ :type dbm_queries_avg_sum: int, optional
+
+ :param do_jobs_monitoring_orchestrators_job_hours_agg_sum: Shows the sum of all orchestrator job hours over all hours in the current month for all organizations.
+ :type do_jobs_monitoring_orchestrators_job_hours_agg_sum: int, optional
+
+ :param end_date: Shows the last date of usage in the current month for all organizations.
+ :type end_date: datetime, optional
+
+ :param eph_infra_host_agent_agg_sum: Shows the sum of all ephemeral infrastructure hosts with the Datadog Agent over all hours in the current month for all organizations.
+ :type eph_infra_host_agent_agg_sum: int, optional
+
+ :param eph_infra_host_alibaba_agg_sum: Shows the sum of all ephemeral infrastructure hosts on Alibaba over all hours in the current month for all organizations.
+ :type eph_infra_host_alibaba_agg_sum: int, optional
+
+ :param eph_infra_host_aws_agg_sum: Shows the sum of all ephemeral infrastructure hosts on AWS over all hours in the current month for all organizations.
+ :type eph_infra_host_aws_agg_sum: int, optional
+
+ :param eph_infra_host_azure_agg_sum: Shows the sum of all ephemeral infrastructure hosts on Azure over all hours in the current month for all organizations.
+ :type eph_infra_host_azure_agg_sum: int, optional
+
+ :param eph_infra_host_basic_agg_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier over all hours in the current month for all organizations.
+ :type eph_infra_host_basic_agg_sum: int, optional
+
+ :param eph_infra_host_basic_infra_basic_agent_agg_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier with the Datadog Agent over all hours in the current month for all organizations.
+ :type eph_infra_host_basic_infra_basic_agent_agg_sum: int, optional
+
+ :param eph_infra_host_basic_infra_basic_vsphere_agg_sum: Shows the sum of all ephemeral infrastructure hosts for Basic tier on vSphere over all hours in the current month for all organizations.
+ :type eph_infra_host_basic_infra_basic_vsphere_agg_sum: int, optional
+
+ :param eph_infra_host_ent_agg_sum: Shows the sum of all ephemeral infrastructure hosts for Enterprise over all hours in the current month for all organizations.
+ :type eph_infra_host_ent_agg_sum: int, optional
+
+ :param eph_infra_host_gcp_agg_sum: Shows the sum of all ephemeral infrastructure hosts on GCP over all hours in the current month for all organizations.
+ :type eph_infra_host_gcp_agg_sum: int, optional
+
+ :param eph_infra_host_heroku_agg_sum: Shows the sum of all ephemeral infrastructure hosts on Heroku over all hours in the current month for all organizations.
+ :type eph_infra_host_heroku_agg_sum: int, optional
+
+ :param eph_infra_host_only_aas_agg_sum: Shows the sum of all ephemeral infrastructure hosts with only Azure App Services over all hours in the current month for all organizations.
+ :type eph_infra_host_only_aas_agg_sum: int, optional
+
+ :param eph_infra_host_only_vsphere_agg_sum: Shows the sum of all ephemeral infrastructure hosts with only vSphere over all hours in the current month for all organizations.
+ :type eph_infra_host_only_vsphere_agg_sum: int, optional
+
+ :param eph_infra_host_opentelemetry_agg_sum: Shows the sum of all ephemeral hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current month for all organizations.
+ :type eph_infra_host_opentelemetry_agg_sum: int, optional
+
+ :param eph_infra_host_opentelemetry_apm_agg_sum: Shows the sum of all ephemeral APM hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current month for all organizations.
+ :type eph_infra_host_opentelemetry_apm_agg_sum: int, optional
+
+ :param eph_infra_host_pro_agg_sum: Shows the sum of all ephemeral infrastructure hosts for Pro over all hours in the current month for all organizations.
+ :type eph_infra_host_pro_agg_sum: int, optional
+
+ :param eph_infra_host_proplus_agg_sum: Shows the sum of all ephemeral infrastructure hosts for Pro Plus over all hours in the current month for all organizations.
+ :type eph_infra_host_proplus_agg_sum: int, optional
+
+ :param eph_infra_host_proxmox_agg_sum: Sum of all ephemeral infrastructure hosts for Proxmox over all hours in the current month for all organizations.
+ :type eph_infra_host_proxmox_agg_sum: int, optional
+
+ :param error_tracking_apm_error_events_agg_sum: Shows the sum of all Error Tracking APM error events over all hours in the current month for all organizations.
+ :type error_tracking_apm_error_events_agg_sum: int, optional
+
+ :param error_tracking_error_events_agg_sum: Shows the sum of all Error Tracking error events over all hours in the current month for all organizations.
+ :type error_tracking_error_events_agg_sum: int, optional
+
+ :param error_tracking_events_agg_sum: Shows the sum of all Error Tracking events over all hours in the current months for all organizations.
+ :type error_tracking_events_agg_sum: int, optional
+
+ :param error_tracking_rum_error_events_agg_sum: Shows the sum of all Error Tracking RUM error events over all hours in the current month for all organizations.
+ :type error_tracking_rum_error_events_agg_sum: int, optional
+
+ :param event_management_correlation_agg_sum: Shows the sum of all Event Management correlations over all hours in the current month for all organizations.
+ :type event_management_correlation_agg_sum: int, optional
+
+ :param event_management_correlation_correlated_events_agg_sum: Shows the sum of all Event Management correlated events over all hours in the current month for all organizations.
+ :type event_management_correlation_correlated_events_agg_sum: int, optional
+
+ :param event_management_correlation_correlated_related_events_agg_sum: Shows the sum of all Event Management correlated related events over all hours in the current month for all organizations.
+ :type event_management_correlation_correlated_related_events_agg_sum: int, optional
+
+ :param fargate_container_profiler_profiling_fargate_avg_sum: The average number of Profiling Fargate tasks over all hours in the current month for all organizations.
+ :type fargate_container_profiler_profiling_fargate_avg_sum: int, optional
+
+ :param fargate_container_profiler_profiling_fargate_eks_avg_sum: The average number of Profiling Fargate Elastic Kubernetes Service tasks over all hours in the current month for all organizations.
+ :type fargate_container_profiler_profiling_fargate_eks_avg_sum: int, optional
+
+ :param fargate_tasks_count_avg_sum: Shows the average of all Fargate tasks over all hours in the current month for all organizations.
+ :type fargate_tasks_count_avg_sum: int, optional
+
+ :param fargate_tasks_count_hwm_sum: Shows the sum of the high-water marks of all Fargate tasks over all hours in the current month for all organizations.
+ :type fargate_tasks_count_hwm_sum: int, optional
+
+ :param feature_flags_config_requests_agg_sum: Shows the sum of all Feature Flags Client-Side SDK config requests over all hours in the current month for all organizations.
+ :type feature_flags_config_requests_agg_sum: int, optional
+
+ :param flex_logs_compute_large_avg_sum: Shows the average number of Flex Logs Compute Large Instances over all hours in the current months for all organizations.
+ :type flex_logs_compute_large_avg_sum: int, optional
+
+ :param flex_logs_compute_medium_avg_sum: Shows the average number of Flex Logs Compute Medium Instances over all hours in the current months for all organizations.
+ :type flex_logs_compute_medium_avg_sum: int, optional
+
+ :param flex_logs_compute_small_avg_sum: Shows the average number of Flex Logs Compute Small Instances over all hours in the current months for all organizations.
+ :type flex_logs_compute_small_avg_sum: int, optional
+
+ :param flex_logs_compute_xlarge_avg_sum: Shows the average number of Flex Logs Compute Extra Large Instances over all hours in the current months for all organizations.
+ :type flex_logs_compute_xlarge_avg_sum: int, optional
+
+ :param flex_logs_compute_xsmall_avg_sum: Shows the average number of Flex Logs Compute Extra Small Instances over all hours in the current months for all organizations.
+ :type flex_logs_compute_xsmall_avg_sum: int, optional
+
+ :param flex_logs_starter_avg_sum: Shows the average number of Flex Logs Starter Instances over all hours in the current months for all organizations.
+ :type flex_logs_starter_avg_sum: int, optional
+
+ :param flex_logs_starter_storage_index_avg_sum: Shows the average number of Flex Logs Starter Storage Index Instances over all hours in the current months for all organizations.
+ :type flex_logs_starter_storage_index_avg_sum: int, optional
+
+ :param flex_logs_starter_storage_retention_adjustment_avg_sum: Shows the average number of Flex Logs Starter Storage Retention Adjustment Instances over all hours in the current months for all organizations.
+ :type flex_logs_starter_storage_retention_adjustment_avg_sum: int, optional
+
+ :param flex_stored_logs_avg_sum: Shows the average of all Flex Stored Logs over all hours in the current months for all organizations.
+ :type flex_stored_logs_avg_sum: int, optional
+
+ :param forwarding_events_bytes_agg_sum: Shows the sum of all logs forwarding bytes over all hours in the current month for all organizations (data available as of April 1, 2023)
+ :type forwarding_events_bytes_agg_sum: int, optional
+
+ :param gcp_host_top99p_sum: Shows the 99th percentile of all GCP hosts over all hours in the current month for all organizations.
+ :type gcp_host_top99p_sum: int, optional
+
+ :param heroku_host_top99p_sum: Shows the 99th percentile of all Heroku dynos over all hours in the current month for all organizations.
+ :type heroku_host_top99p_sum: int, optional
+
+ :param incident_management_monthly_active_users_hwm_sum: Shows sum of the high-water marks of incident management monthly active users in the current month for all organizations.
+ :type incident_management_monthly_active_users_hwm_sum: int, optional
+
+ :param incident_management_seats_hwm_sum: Shows the sum of the high-water marks of Incident Management seats over all hours in the current month for all organizations.
+ :type incident_management_seats_hwm_sum: int, optional
+
+ :param indexed_events_count_agg_sum: Shows the sum of all log events indexed over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type indexed_events_count_agg_sum: int, optional
+
+ :param indexed_points_agg_sum: Shows the sum of all indexed custom metrics points over all hours in the current month for all organizations.
+ :type indexed_points_agg_sum: int, optional
+
+ :param infra_cpu_agg_sum: Shows the sum of all Infrastructure vCPU cores over all hours in the current month for all organizations.
+ :type infra_cpu_agg_sum: int, optional
+
+ :param infra_cpu_avg_sum: Shows the average of all Infrastructure vCPU cores over all hours in the current month for all organizations.
+ :type infra_cpu_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_agg_sum: Shows the sum of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_avg_sum: Shows the average of all default Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum: Shows the sum of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum: Shows the average of all default basic Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_aws_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_aws_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_aws_avg_sum: Shows the average of all default Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_aws_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_azure_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_azure_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_azure_avg_sum: Shows the average of all default Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_azure_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_gcp_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_gcp_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_gcp_avg_sum: Shows the average of all default Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_gcp_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_agg_sum: Shows the sum of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_avg_sum: Shows the average of all default Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum: Shows the sum of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum: Shows the average of all default basic Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum: Shows the sum of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum: int, optional
+
+ :param infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum: Shows the average of all default Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations.
+ :type infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_agent_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_agent_agg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_agent_avg_sum: Shows the average of all observed Infrastructure host vCPU cores reported by the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_agent_avg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_aws_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_aws_agg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_aws_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on AWS over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_aws_avg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_azure_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_azure_agg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_azure_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on Azure over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_azure_avg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_gcp_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_gcp_agg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_gcp_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on GCP over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_gcp_avg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum: Shows the average of all observed Infrastructure host vCPU cores on Nutanix over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum: Shows the sum of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum: int, optional
+
+ :param infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum: Shows the average of all observed Infrastructure host vCPU cores reported by OpenTelemetry over all hours in the current month for all organizations.
+ :type infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum: int, optional
+
+ :param infra_edge_monitoring_devices_top99p_sum: Shows the 99th percentile of all Edge Devices Monitoring devices over all hours in the current month for all organizations.
+ :type infra_edge_monitoring_devices_top99p_sum: int, optional
+
+ :param infra_host_basic_infra_basic_agent_top99p_sum: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier with the Datadog Agent over all hours in the current month for all organizations.
+ :type infra_host_basic_infra_basic_agent_top99p_sum: int, optional
+
+ :param infra_host_basic_infra_basic_vsphere_top99p_sum: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier on vSphere over all hours in the current month for all organizations.
+ :type infra_host_basic_infra_basic_vsphere_top99p_sum: int, optional
+
+ :param infra_host_basic_top99p_sum: Shows the 99th percentile of all distinct infrastructure hosts for Basic tier over all hours in the current month for all organizations.
+ :type infra_host_basic_top99p_sum: int, optional
+
+ :param infra_host_top99p_sum: Shows the 99th percentile of all distinct infrastructure hosts over all hours in the current month for all organizations.
+ :type infra_host_top99p_sum: int, optional
+
+ :param infra_storage_mgmt_objects_count_avg_sum: Shows the average number of storage management objects over all hours in the current month for all organizations.
+ :type infra_storage_mgmt_objects_count_avg_sum: int, optional
+
+ :param ingest_points_agg_sum: Shows the sum of all ingested custom metrics points over all hours in the current month for all organizations.
+ :type ingest_points_agg_sum: int, optional
+
+ :param ingested_events_bytes_agg_sum: Shows the sum of all log bytes ingested over all hours in the current month for all organizations.
+ :type ingested_events_bytes_agg_sum: int, optional
+
+ :param iot_apm_host_agg_sum: Shows the sum of all Application Performance Monitoring IoT hosts over all hours in the current month for all organizations.
+ :type iot_apm_host_agg_sum: int, optional
+
+ :param iot_apm_host_top99p_sum: Shows the 99th percentile of all Application Performance Monitoring IoT hosts over all hours in the current month for all organizations.
+ :type iot_apm_host_top99p_sum: int, optional
+
+ :param iot_device_agg_sum: Shows the sum of all IoT devices over all hours in the current month for all organizations.
+ :type iot_device_agg_sum: int, optional
+
+ :param iot_device_top99p_sum: Shows the 99th percentile of all IoT devices over all hours in the current month of all organizations.
+ :type iot_device_top99p_sum: int, optional
+
+ :param last_updated: Shows the most recent hour in the current month for all organizations for which all usages were calculated.
+ :type last_updated: datetime, optional
+
+ :param live_indexed_events_agg_sum: Shows the sum of all live logs indexed over all hours in the current month for all organization (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type live_indexed_events_agg_sum: int, optional
+
+ :param live_ingested_bytes_agg_sum: Shows the sum of all live logs bytes ingested over all hours in the current month for all organizations (data available as of December 1, 2020).
+ :type live_ingested_bytes_agg_sum: int, optional
+
+ :param llm_observability_15day_retention_spans_agg_sum: Shows the sum of all LLM Observability 15-day retention spans over all hours in the current month for all organizations.
+ :type llm_observability_15day_retention_spans_agg_sum: int, optional
+
+ :param llm_observability_30day_retention_spans_agg_sum: Shows the sum of all LLM Observability 30-day retention spans over all hours in the current month for all organizations.
+ :type llm_observability_30day_retention_spans_agg_sum: int, optional
+
+ :param llm_observability_60day_retention_spans_agg_sum: Shows the sum of all LLM Observability 60-day retention spans over all hours in the current month for all organizations.
+ :type llm_observability_60day_retention_spans_agg_sum: int, optional
+
+ :param llm_observability_90day_retention_spans_agg_sum: Shows the sum of all LLM Observability 90-day retention spans over all hours in the current month for all organizations.
+ :type llm_observability_90day_retention_spans_agg_sum: int, optional
+
+ :param llm_observability_agg_sum: Sum of all LLM observability sessions for all hours in the current month for all organizations.
+ :type llm_observability_agg_sum: int, optional
+
+ :param llm_observability_min_spend_agg_sum: Minimum spend for LLM observability sessions for all hours in the current month for all organizations.
+ :type llm_observability_min_spend_agg_sum: int, optional
+
+ :param logs_archive_search_gb_scanned_agg_sum: Shows the sum of all Logs Archive Search scanned data over all hours in the current month for all organizations.
+ :type logs_archive_search_gb_scanned_agg_sum: int, optional
+
+ :param logs_by_retention: Object containing logs usage data broken down by retention period.
+ :type logs_by_retention: LogsByRetention, optional
+
+ :param metric_names_agg_sum: Shows the sum of all custom metric names over all hours in the current month for all organizations.
+ :type metric_names_agg_sum: int, optional
+
+ :param mobile_rum_lite_session_count_agg_sum: Shows the sum of all mobile lite sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_lite_session_count_agg_sum: int, optional
+
+ :param mobile_rum_session_count_agg_sum: Shows the sum of all mobile RUM sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_agg_sum: int, optional
+
+ :param mobile_rum_session_count_android_agg_sum: Shows the sum of all mobile RUM sessions on Android over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_android_agg_sum: int, optional
+
+ :param mobile_rum_session_count_flutter_agg_sum: Shows the sum of all mobile RUM sessions on Flutter over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_flutter_agg_sum: int, optional
+
+ :param mobile_rum_session_count_ios_agg_sum: Shows the sum of all mobile RUM sessions on iOS over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_ios_agg_sum: int, optional
+
+ :param mobile_rum_session_count_reactnative_agg_sum: Shows the sum of all mobile RUM sessions on React Native over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_reactnative_agg_sum: int, optional
+
+ :param mobile_rum_session_count_roku_agg_sum: Shows the sum of all mobile RUM sessions on Roku over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_session_count_roku_agg_sum: int, optional
+
+ :param mobile_rum_units_agg_sum: Shows the sum of all mobile RUM units over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type mobile_rum_units_agg_sum: int, optional
+
+ :param ndm_netflow_events_agg_sum: Shows the sum of all Network Device Monitoring NetFlow events over all hours in the current month for all organizations.
+ :type ndm_netflow_events_agg_sum: int, optional
+
+ :param netflow_indexed_events_count_agg_sum: Shows the sum of all Network flows indexed over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type netflow_indexed_events_count_agg_sum: int, optional
+
+ :param network_device_wireless_top99p_sum: Shows the 99th percentile of all Network Device Monitoring wireless devices over all hours in the current month for all organizations.
+ :type network_device_wireless_top99p_sum: int, optional
+
+ :param network_path_agg_sum: Shows the sum of all Network Path scheduled tests over all hours in the current month for all organizations.
+ :type network_path_agg_sum: int, optional
+
+ :param npm_host_top99p_sum: Shows the 99th percentile of all distinct Cloud Network Monitoring hosts (formerly known as Network hosts) over all hours in the current month for all organizations.
+ :type npm_host_top99p_sum: int, optional
+
+ :param observability_pipelines_bytes_processed_agg_sum: Sum of all observability pipelines bytes processed over all hours in the current month for all organizations.
+ :type observability_pipelines_bytes_processed_agg_sum: int, optional
+
+ :param oci_host_agg_sum: Shows the sum of Oracle Cloud Infrastructure hosts over all hours in the current months for all organizations
+ :type oci_host_agg_sum: int, optional
+
+ :param oci_host_top99p_sum: Shows the 99th percentile of Oracle Cloud Infrastructure hosts over all hours in the current months for all organizations
+ :type oci_host_top99p_sum: int, optional
+
+ :param on_call_seat_hwm_sum: Shows the sum of the high-water marks of On-Call seats over all hours in the current month for all organizations.
+ :type on_call_seat_hwm_sum: int, optional
+
+ :param online_archive_events_count_agg_sum: Sum of all online archived events over all hours in the current month for all organizations.
+ :type online_archive_events_count_agg_sum: int, optional
+
+ :param opentelemetry_apm_host_top99p_sum: Shows the 99th percentile of APM hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current month for all organizations.
+ :type opentelemetry_apm_host_top99p_sum: int, optional
+
+ :param opentelemetry_host_top99p_sum: Shows the 99th percentile of all hosts reported by the Datadog exporter for the OpenTelemetry Collector over all hours in the current month for all organizations.
+ :type opentelemetry_host_top99p_sum: int, optional
+
+ :param product_analytics_agg_sum: Sum of all product analytics sessions for all hours in the current month for all organizations.
+ :type product_analytics_agg_sum: int, optional
+
+ :param profiling_aas_count_top99p_sum: Shows the 99th percentile of all profiled Azure app services over all hours in the current month for all organizations.
+ :type profiling_aas_count_top99p_sum: int, optional
+
+ :param profiling_container_agent_count_avg: Shows the average number of profiled containers over all hours in the current month for all organizations.
+ :type profiling_container_agent_count_avg: int, optional
+
+ :param profiling_host_count_top99p_sum: Shows the 99th percentile of all profiled hosts over all hours in the current month for all organizations.
+ :type profiling_host_count_top99p_sum: int, optional
+
+ :param proxmox_host_agg_sum: Sum of all Proxmox hosts over all hours in the current month for all organizations.
+ :type proxmox_host_agg_sum: int, optional
+
+ :param proxmox_host_top99p_sum: Sum of the 99th percentile of all Proxmox hosts over all hours in the current month for all organizations.
+ :type proxmox_host_top99p_sum: int, optional
+
+ :param published_app_hwm_sum: Shows the high-water mark of all published applications over all hours in the current month for all organizations.
+ :type published_app_hwm_sum: int, optional
+
+ :param rehydrated_indexed_events_agg_sum: Shows the sum of all rehydrated logs indexed over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rehydrated_indexed_events_agg_sum: int, optional
+
+ :param rehydrated_ingested_bytes_agg_sum: Shows the sum of all rehydrated logs bytes ingested over all hours in the current month for all organizations (data available as of December 1, 2020).
+ :type rehydrated_ingested_bytes_agg_sum: int, optional
+
+ :param rum_browser_and_mobile_session_count: Shows the sum of all mobile sessions and all browser lite and legacy sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024).
+ :type rum_browser_and_mobile_session_count: int, optional
+
+ :param rum_browser_legacy_session_count_agg_sum: Shows the sum of all browser RUM legacy sessions over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_browser_legacy_session_count_agg_sum: int, optional
+
+ :param rum_browser_lite_session_count_agg_sum: Shows the sum of all browser RUM lite sessions over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_browser_lite_session_count_agg_sum: int, optional
+
+ :param rum_browser_replay_session_count_agg_sum: Shows the sum of all browser RUM Session Replay counts over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_browser_replay_session_count_agg_sum: int, optional
+
+ :param rum_indexed_sessions_agg_sum: Sum of all RUM indexed sessions for all hours in the current month for all organizations.
+ :type rum_indexed_sessions_agg_sum: int, optional
+
+ :param rum_ingested_sessions_agg_sum: Sum of all RUM ingested sessions for all hours in the current month for all organizations.
+ :type rum_ingested_sessions_agg_sum: int, optional
+
+ :param rum_lite_session_count_agg_sum: Shows the sum of all RUM lite sessions (browser and mobile) over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_lite_session_count_agg_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_android_agg_sum: Shows the sum of all mobile RUM legacy sessions on Android over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_android_agg_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_flutter_agg_sum: Shows the sum of all mobile RUM legacy sessions on Flutter over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_flutter_agg_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_ios_agg_sum: Shows the sum of all mobile RUM legacy sessions on iOS over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_ios_agg_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_reactnative_agg_sum: Shows the sum of all mobile RUM legacy sessions on React Native over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_reactnative_agg_sum: int, optional
+
+ :param rum_mobile_legacy_session_count_roku_agg_sum: Shows the sum of all mobile RUM legacy sessions on Roku over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_legacy_session_count_roku_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_android_agg_sum: Shows the sum of all mobile RUM lite sessions on Android over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_android_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_flutter_agg_sum: Shows the sum of all mobile RUM lite sessions on Flutter over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_flutter_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_ios_agg_sum: Shows the sum of all mobile RUM lite sessions on iOS over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_ios_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum: Shows the sum of all mobile RUM lite sessions on Kotlin Multiplatform over all hours within the current month for all organizations.
+ :type rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_reactnative_agg_sum: Shows the sum of all mobile RUM lite sessions on React Native over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_reactnative_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_roku_agg_sum: Shows the sum of all mobile RUM lite sessions on Roku over all hours within the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_mobile_lite_session_count_roku_agg_sum: int, optional
+
+ :param rum_mobile_lite_session_count_unity_agg_sum: Shows the sum of all mobile RUM lite sessions on Unity over all hours within the current month for all organizations.
+ :type rum_mobile_lite_session_count_unity_agg_sum: int, optional
+
+ :param rum_mobile_replay_session_count_android_agg_sum: Shows the sum of all mobile RUM replay sessions on Android over all hours within the current month for all organizations.
+ :type rum_mobile_replay_session_count_android_agg_sum: int, optional
+
+ :param rum_mobile_replay_session_count_ios_agg_sum: Shows the sum of all mobile RUM replay sessions on iOS over all hours within the current month for all organizations.
+ :type rum_mobile_replay_session_count_ios_agg_sum: int, optional
+
+ :param rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum: Shows the sum of all mobile RUM replay sessions on Kotlin Multiplatform over all hours within the current month for all organizations.
+ :type rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum: int, optional
+
+ :param rum_mobile_replay_session_count_reactnative_agg_sum: Shows the sum of all mobile RUM replay sessions on React Native over all hours within the current month for all organizations.
+ :type rum_mobile_replay_session_count_reactnative_agg_sum: int, optional
+
+ :param rum_replay_session_count_agg_sum: Shows the sum of all RUM Session Replay counts over all hours in the current month for all organizations (To be introduced on October 1st, 2024).
+ :type rum_replay_session_count_agg_sum: int, optional
+
+ :param rum_session_count_agg_sum: Shows the sum of all browser RUM lite sessions over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rum_session_count_agg_sum: int, optional
+
+ :param rum_session_replay_add_on_agg_sum: Sum of all RUM session replay add-on sessions for all hours in the current month for all organizations.
+ :type rum_session_replay_add_on_agg_sum: int, optional
+
+ :param rum_total_session_count_agg_sum: Shows the sum of RUM sessions (browser and mobile) over all hours in the current month for all organizations.
+ :type rum_total_session_count_agg_sum: int, optional
+
+ :param rum_units_agg_sum: Shows the sum of all browser and mobile RUM units over all hours in the current month for all organizations (To be deprecated on October 1st, 2024). **Deprecated**.
+ :type rum_units_agg_sum: int, optional
+
+ :param sca_fargate_count_avg_sum: Shows the average of all Software Composition Analysis Fargate tasks over all hours in the current months for all organizations.
+ :type sca_fargate_count_avg_sum: int, optional
+
+ :param sca_fargate_count_hwm_sum: Shows the sum of the high-water marks of all Software Composition Analysis Fargate tasks over all hours in the current months for all organizations.
+ :type sca_fargate_count_hwm_sum: int, optional
+
+ :param sds_apm_scanned_bytes_sum: Sum of all APM bytes scanned with sensitive data scanner in the current month for all organizations.
+ :type sds_apm_scanned_bytes_sum: int, optional
+
+ :param sds_events_scanned_bytes_sum: Sum of all event stream events bytes scanned with sensitive data scanner in the current month for all organizations.
+ :type sds_events_scanned_bytes_sum: int, optional
+
+ :param sds_logs_scanned_bytes_sum: Shows the sum of all bytes scanned of logs usage by the Sensitive Data Scanner over all hours in the current month for all organizations.
+ :type sds_logs_scanned_bytes_sum: int, optional
+
+ :param sds_rum_scanned_bytes_sum: Sum of all RUM bytes scanned with sensitive data scanner in the current month for all organizations.
+ :type sds_rum_scanned_bytes_sum: int, optional
+
+ :param sds_total_scanned_bytes_sum: Shows the sum of all bytes scanned across all usage types by the Sensitive Data Scanner over all hours in the current month for all organizations.
+ :type sds_total_scanned_bytes_sum: int, optional
+
+ :param serverless_apps_apm_apm_azure_appservice_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Azure App Service instances in the current month for all organizations.
+ :type serverless_apps_apm_apm_azure_appservice_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Azure Function instances in the current month for all organizations.
+ :type serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_apm_azure_containerapp_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Azure Container App instances in the current month for all organizations.
+ :type serverless_apps_apm_apm_azure_containerapp_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Fargate Elastic Container Service tasks in the current month for all organizations.
+ :type serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum: int, optional
+
+ :param serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Google Cloud Platform Cloud Function instances in the current month for all organizations.
+ :type serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Google Cloud Platform Cloud Run instances in the current month for all organizations.
+ :type serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring for Google Kubernetes Engine Autopilot pods in the current month for all organizations.
+ :type serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum: int, optional
+
+ :param serverless_apps_apm_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring in the current month for all organizations.
+ :type serverless_apps_apm_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure App Service instances in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure Function instances in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Azure Container App instances in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Cloud Platform Cloud Function instances in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Cloud Platform Cloud Run instances in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate for Google Kubernetes Engine Autopilot pods in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum: int, optional
+
+ :param serverless_apps_apm_excl_fargate_avg_sum: Sum of the average number of Serverless Apps with Application Performance Monitoring excluding Fargate in the current month for all organizations.
+ :type serverless_apps_apm_excl_fargate_avg_sum: int, optional
+
+ :param serverless_apps_azure_container_app_instances_avg_sum: Sum of the average number of Serverless Apps for Azure Container App instances in the current month for all organizations.
+ :type serverless_apps_azure_container_app_instances_avg_sum: int, optional
+
+ :param serverless_apps_azure_count_avg_sum: Sum of the average number of Serverless Apps for Azure in the current month for all organizations.
+ :type serverless_apps_azure_count_avg_sum: int, optional
+
+ :param serverless_apps_azure_function_app_instances_avg_sum: Sum of the average number of Serverless Apps for Azure Function App instances in the current month for all organizations.
+ :type serverless_apps_azure_function_app_instances_avg_sum: int, optional
+
+ :param serverless_apps_azure_web_app_instances_avg_sum: Sum of the average number of Serverless Apps for Azure Web App instances in the current month for all organizations.
+ :type serverless_apps_azure_web_app_instances_avg_sum: int, optional
+
+ :param serverless_apps_dsm_fargate_tasks_avg_sum: Sum of the average number of DSM Fargate ECS tasks monitored under Serverless Apps DSM in the current month for all organizations.
+ :type serverless_apps_dsm_fargate_tasks_avg_sum: int, optional
+
+ :param serverless_apps_ecs_avg_sum: Sum of the average number of Serverless Apps for Elastic Container Service in the current month for all organizations.
+ :type serverless_apps_ecs_avg_sum: int, optional
+
+ :param serverless_apps_eks_avg_sum: Sum of the average number of Serverless Apps for Elastic Kubernetes Service in the current month for all organizations.
+ :type serverless_apps_eks_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_avg_sum: Sum of the average number of Serverless Apps excluding Fargate in the current month for all organizations.
+ :type serverless_apps_excl_fargate_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_azure_container_app_instances_avg_sum: Sum of the average number of Serverless Apps excluding Fargate for Azure Container App instances in the current month for all organizations.
+ :type serverless_apps_excl_fargate_azure_container_app_instances_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_azure_function_app_instances_avg_sum: Sum of the average number of Serverless Apps excluding Fargate for Azure Function App instances in the current month for all organizations.
+ :type serverless_apps_excl_fargate_azure_function_app_instances_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_azure_web_app_instances_avg_sum: Sum of the average number of Serverless Apps excluding Fargate for Azure Web App instances in the current month for all organizations.
+ :type serverless_apps_excl_fargate_azure_web_app_instances_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum: Sum of the average number of Serverless Apps excluding Fargate for Google Cloud Platform Cloud Functions instances in the current month for all organizations.
+ :type serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum: Sum of the average number of Serverless Apps excluding Fargate for Google Cloud Platform Cloud Run instances in the current month for all organizations.
+ :type serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum: int, optional
+
+ :param serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum: Sum of the average number of Serverless Apps excluding Fargate for Google Kubernetes Engine Autopilot pods in the current month for all organizations.
+ :type serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum: int, optional
+
+ :param serverless_apps_google_cloud_functions_instances_avg_sum: Sum of the average number of Serverless Apps for Google Cloud Platform Cloud Functions instances in the current month for all organizations.
+ :type serverless_apps_google_cloud_functions_instances_avg_sum: int, optional
+
+ :param serverless_apps_google_cloud_run_instances_avg_sum: Sum of the average number of Serverless Apps for Google Cloud Platform Cloud Run instances in the current month for all organizations.
+ :type serverless_apps_google_cloud_run_instances_avg_sum: int, optional
+
+ :param serverless_apps_google_count_avg_sum: Sum of the average number of Serverless Apps for Google Cloud in the current month for all organizations.
+ :type serverless_apps_google_count_avg_sum: int, optional
+
+ :param serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum: Sum of the average number of Serverless Apps for Google Kubernetes Engine Autopilot pods in the current month for all organizations.
+ :type serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum: int, optional
+
+ :param serverless_apps_total_count_avg_sum: Sum of the average number of Serverless Apps for Azure and Google Cloud in the current month for all organizations.
+ :type serverless_apps_total_count_avg_sum: int, optional
+
+ :param siem_12mo_retention_agg_sum: Shows the sum of Cloud SIEM Indexed Logs (12-month retention) over all hours in the current month for all organizations.
+ :type siem_12mo_retention_agg_sum: int, optional
+
+ :param siem_6mo_retention_agg_sum: Shows the sum of Cloud SIEM Indexed Logs (6-month retention) over all hours in the current month for all organizations.
+ :type siem_6mo_retention_agg_sum: int, optional
+
+ :param siem_analyzed_logs_add_on_count_agg_sum: Shows the sum of all log events analyzed by Cloud SIEM over all hours in the current month for all organizations.
+ :type siem_analyzed_logs_add_on_count_agg_sum: int, optional
+
+ :param snmp_device_count_agg_sum: Shows the sum of all Network Device Monitoring devices over all hours in the current month for all organizations.
+ :type snmp_device_count_agg_sum: int, optional
+
+ :param snmp_device_count_top99p_sum: Shows the 99th percentile of all Network Device Monitoring devices over all hours in the current month for all organizations.
+ :type snmp_device_count_top99p_sum: int, optional
+
+ :param start_date: Shows the first date of usage in the current month for all organizations.
+ :type start_date: datetime, optional
+
+ :param synthetics_browser_check_calls_count_agg_sum: Shows the sum of all Synthetic browser tests over all hours in the current month for all organizations.
+ :type synthetics_browser_check_calls_count_agg_sum: int, optional
+
+ :param synthetics_check_calls_count_agg_sum: Shows the sum of all Synthetic API tests over all hours in the current month for all organizations.
+ :type synthetics_check_calls_count_agg_sum: int, optional
+
+ :param synthetics_mobile_test_runs_agg_sum: Shows the sum of Synthetic mobile application tests over all hours in the current month for all organizations.
+ :type synthetics_mobile_test_runs_agg_sum: int, optional
+
+ :param synthetics_parallel_testing_max_slots_hwm_sum: Shows the sum of the high-water marks of used synthetics parallel testing slots over all hours in the current month for all organizations.
+ :type synthetics_parallel_testing_max_slots_hwm_sum: int, optional
+
+ :param trace_search_indexed_events_count_agg_sum: Shows the sum of all Indexed Spans indexed over all hours in the current month for all organizations.
+ :type trace_search_indexed_events_count_agg_sum: int, optional
+
+ :param twol_ingested_events_bytes_agg_sum: Shows the sum of all ingested APM span bytes over all hours in the current month for all organizations.
+ :type twol_ingested_events_bytes_agg_sum: int, optional
+
+ :param universal_service_monitoring_host_top99p_sum: Shows the 99th percentile of all Universal Service Monitoring hosts over all hours in the current month for all organizations.
+ :type universal_service_monitoring_host_top99p_sum: int, optional
+
+ :param usage: An array of objects regarding hourly usage.
+ :type usage: [UsageSummaryDate], optional
+
+ :param vsphere_host_top99p_sum: Shows the 99th percentile of all vSphere hosts over all hours in the current month for all organizations.
+ :type vsphere_host_top99p_sum: int, optional
+
+ :param vuln_management_host_count_top99p_sum: Shows the 99th percentile of all Application Vulnerability Management hosts over all hours in the current month for all organizations.
+ :type vuln_management_host_count_top99p_sum: int, optional
+
+ :param workflow_executions_usage_agg_sum: Sum of all workflows executed over all hours in the current month for all organizations.
+ :type workflow_executions_usage_agg_sum: int, optional
+ """
+ if agent_host_top99p_sum is not unset:
+ kwargs["agent_host_top99p_sum"] = agent_host_top99p_sum
+ if ai_credits_agent_builder_ai_credits_agg_sum is not unset:
+ kwargs["ai_credits_agent_builder_ai_credits_agg_sum"] = ai_credits_agent_builder_ai_credits_agg_sum
+ if ai_credits_agg_sum is not unset:
+ kwargs["ai_credits_agg_sum"] = ai_credits_agg_sum
+ if ai_credits_bits_assistant_ai_credits_agg_sum is not unset:
+ kwargs["ai_credits_bits_assistant_ai_credits_agg_sum"] = ai_credits_bits_assistant_ai_credits_agg_sum
+ if ai_credits_bits_dev_ai_credits_agg_sum is not unset:
+ kwargs["ai_credits_bits_dev_ai_credits_agg_sum"] = ai_credits_bits_dev_ai_credits_agg_sum
+ if ai_credits_bits_sre_ai_credits_agg_sum is not unset:
+ kwargs["ai_credits_bits_sre_ai_credits_agg_sum"] = ai_credits_bits_sre_ai_credits_agg_sum
+ if apm_azure_app_service_host_top99p_sum is not unset:
+ kwargs["apm_azure_app_service_host_top99p_sum"] = apm_azure_app_service_host_top99p_sum
+ if apm_devsecops_host_top99p_sum is not unset:
+ kwargs["apm_devsecops_host_top99p_sum"] = apm_devsecops_host_top99p_sum
+ if apm_enterprise_standalone_hosts_top99p_sum is not unset:
+ kwargs["apm_enterprise_standalone_hosts_top99p_sum"] = apm_enterprise_standalone_hosts_top99p_sum
+ if apm_fargate_count_avg_sum is not unset:
+ kwargs["apm_fargate_count_avg_sum"] = apm_fargate_count_avg_sum
+ if apm_host_top99p_sum is not unset:
+ kwargs["apm_host_top99p_sum"] = apm_host_top99p_sum
+ if apm_pro_standalone_hosts_top99p_sum is not unset:
+ kwargs["apm_pro_standalone_hosts_top99p_sum"] = apm_pro_standalone_hosts_top99p_sum
+ if appsec_fargate_count_avg_sum is not unset:
+ kwargs["appsec_fargate_count_avg_sum"] = appsec_fargate_count_avg_sum
+ if asm_serverless_agg_sum is not unset:
+ kwargs["asm_serverless_agg_sum"] = asm_serverless_agg_sum
+ if audit_logs_lines_indexed_agg_sum is not unset:
+ kwargs["audit_logs_lines_indexed_agg_sum"] = audit_logs_lines_indexed_agg_sum
+ if audit_trail_enabled_hwm_sum is not unset:
+ kwargs["audit_trail_enabled_hwm_sum"] = audit_trail_enabled_hwm_sum
+ if audit_trail_event_forwarding_events_agg_sum is not unset:
+ kwargs["audit_trail_event_forwarding_events_agg_sum"] = audit_trail_event_forwarding_events_agg_sum
+ if avg_profiled_fargate_tasks_sum is not unset:
+ kwargs["avg_profiled_fargate_tasks_sum"] = avg_profiled_fargate_tasks_sum
+ if aws_host_top99p_sum is not unset:
+ kwargs["aws_host_top99p_sum"] = aws_host_top99p_sum
+ if aws_lambda_func_count is not unset:
+ kwargs["aws_lambda_func_count"] = aws_lambda_func_count
+ if aws_lambda_invocations_sum is not unset:
+ kwargs["aws_lambda_invocations_sum"] = aws_lambda_invocations_sum
+ if azure_app_service_top99p_sum is not unset:
+ kwargs["azure_app_service_top99p_sum"] = azure_app_service_top99p_sum
+ if azure_host_top99p_sum is not unset:
+ kwargs["azure_host_top99p_sum"] = azure_host_top99p_sum
+ if billable_ingested_bytes_agg_sum is not unset:
+ kwargs["billable_ingested_bytes_agg_sum"] = billable_ingested_bytes_agg_sum
+ if bits_ai_investigations_agg_sum is not unset:
+ kwargs["bits_ai_investigations_agg_sum"] = bits_ai_investigations_agg_sum
+ if browser_rum_lite_session_count_agg_sum is not unset:
+ kwargs["browser_rum_lite_session_count_agg_sum"] = browser_rum_lite_session_count_agg_sum
+ if browser_rum_replay_session_count_agg_sum is not unset:
+ kwargs["browser_rum_replay_session_count_agg_sum"] = browser_rum_replay_session_count_agg_sum
+ if browser_rum_units_agg_sum is not unset:
+ kwargs["browser_rum_units_agg_sum"] = browser_rum_units_agg_sum
+ if ccm_anthropic_spend_last_sum is not unset:
+ kwargs["ccm_anthropic_spend_last_sum"] = ccm_anthropic_spend_last_sum
+ if ccm_aws_spend_last_sum is not unset:
+ kwargs["ccm_aws_spend_last_sum"] = ccm_aws_spend_last_sum
+ if ccm_azure_spend_last_sum is not unset:
+ kwargs["ccm_azure_spend_last_sum"] = ccm_azure_spend_last_sum
+ if ccm_confluent_spend_last_sum is not unset:
+ kwargs["ccm_confluent_spend_last_sum"] = ccm_confluent_spend_last_sum
+ if ccm_databricks_spend_last_sum is not unset:
+ kwargs["ccm_databricks_spend_last_sum"] = ccm_databricks_spend_last_sum
+ if ccm_elastic_spend_last_sum is not unset:
+ kwargs["ccm_elastic_spend_last_sum"] = ccm_elastic_spend_last_sum
+ if ccm_fastly_spend_last_sum is not unset:
+ kwargs["ccm_fastly_spend_last_sum"] = ccm_fastly_spend_last_sum
+ if ccm_gcp_spend_last_sum is not unset:
+ kwargs["ccm_gcp_spend_last_sum"] = ccm_gcp_spend_last_sum
+ if ccm_github_spend_last_sum is not unset:
+ kwargs["ccm_github_spend_last_sum"] = ccm_github_spend_last_sum
+ if ccm_mongodb_spend_last_sum is not unset:
+ kwargs["ccm_mongodb_spend_last_sum"] = ccm_mongodb_spend_last_sum
+ if ccm_oci_spend_last_sum is not unset:
+ kwargs["ccm_oci_spend_last_sum"] = ccm_oci_spend_last_sum
+ if ccm_openai_spend_last_sum is not unset:
+ kwargs["ccm_openai_spend_last_sum"] = ccm_openai_spend_last_sum
+ if ccm_snowflake_spend_last_sum is not unset:
+ kwargs["ccm_snowflake_spend_last_sum"] = ccm_snowflake_spend_last_sum
+ if ccm_spend_monitored_ent_last_sum is not unset:
+ kwargs["ccm_spend_monitored_ent_last_sum"] = ccm_spend_monitored_ent_last_sum
+ if ccm_spend_monitored_pro_last_sum is not unset:
+ kwargs["ccm_spend_monitored_pro_last_sum"] = ccm_spend_monitored_pro_last_sum
+ if ccm_twilio_spend_last_sum is not unset:
+ kwargs["ccm_twilio_spend_last_sum"] = ccm_twilio_spend_last_sum
+ if ci_pipeline_indexed_spans_agg_sum is not unset:
+ kwargs["ci_pipeline_indexed_spans_agg_sum"] = ci_pipeline_indexed_spans_agg_sum
+ if ci_test_indexed_spans_agg_sum is not unset:
+ kwargs["ci_test_indexed_spans_agg_sum"] = ci_test_indexed_spans_agg_sum
+ if ci_visibility_itr_committers_hwm_sum is not unset:
+ kwargs["ci_visibility_itr_committers_hwm_sum"] = ci_visibility_itr_committers_hwm_sum
+ if ci_visibility_pipeline_committers_hwm_sum is not unset:
+ kwargs["ci_visibility_pipeline_committers_hwm_sum"] = ci_visibility_pipeline_committers_hwm_sum
+ if ci_visibility_test_committers_hwm_sum is not unset:
+ kwargs["ci_visibility_test_committers_hwm_sum"] = ci_visibility_test_committers_hwm_sum
+ if cloud_cost_management_aws_host_count_avg_sum is not unset:
+ kwargs["cloud_cost_management_aws_host_count_avg_sum"] = cloud_cost_management_aws_host_count_avg_sum
+ if cloud_cost_management_azure_host_count_avg_sum is not unset:
+ kwargs["cloud_cost_management_azure_host_count_avg_sum"] = cloud_cost_management_azure_host_count_avg_sum
+ if cloud_cost_management_gcp_host_count_avg_sum is not unset:
+ kwargs["cloud_cost_management_gcp_host_count_avg_sum"] = cloud_cost_management_gcp_host_count_avg_sum
+ if cloud_cost_management_host_count_avg_sum is not unset:
+ kwargs["cloud_cost_management_host_count_avg_sum"] = cloud_cost_management_host_count_avg_sum
+ if cloud_cost_management_oci_host_count_avg_sum is not unset:
+ kwargs["cloud_cost_management_oci_host_count_avg_sum"] = cloud_cost_management_oci_host_count_avg_sum
+ if cloud_siem_events_agg_sum is not unset:
+ kwargs["cloud_siem_events_agg_sum"] = cloud_siem_events_agg_sum
+ if cloud_siem_indexed_logs_agg_sum is not unset:
+ kwargs["cloud_siem_indexed_logs_agg_sum"] = cloud_siem_indexed_logs_agg_sum
+ if code_analysis_sa_committers_hwm_sum is not unset:
+ kwargs["code_analysis_sa_committers_hwm_sum"] = code_analysis_sa_committers_hwm_sum
+ if code_analysis_sca_committers_hwm_sum is not unset:
+ kwargs["code_analysis_sca_committers_hwm_sum"] = code_analysis_sca_committers_hwm_sum
+ if code_security_host_top99p_sum is not unset:
+ kwargs["code_security_host_top99p_sum"] = code_security_host_top99p_sum
+ if container_avg_sum is not unset:
+ kwargs["container_avg_sum"] = container_avg_sum
+ if container_excl_agent_avg_sum is not unset:
+ kwargs["container_excl_agent_avg_sum"] = container_excl_agent_avg_sum
+ if container_hwm_sum is not unset:
+ kwargs["container_hwm_sum"] = container_hwm_sum
+ if csm_container_enterprise_compliance_count_agg_sum is not unset:
+ kwargs["csm_container_enterprise_compliance_count_agg_sum"] = csm_container_enterprise_compliance_count_agg_sum
+ if csm_container_enterprise_cws_count_agg_sum is not unset:
+ kwargs["csm_container_enterprise_cws_count_agg_sum"] = csm_container_enterprise_cws_count_agg_sum
+ if csm_container_enterprise_total_count_agg_sum is not unset:
+ kwargs["csm_container_enterprise_total_count_agg_sum"] = csm_container_enterprise_total_count_agg_sum
+ if csm_host_enterprise_aas_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_aas_host_count_top99p_sum"] = csm_host_enterprise_aas_host_count_top99p_sum
+ if csm_host_enterprise_aws_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_aws_host_count_top99p_sum"] = csm_host_enterprise_aws_host_count_top99p_sum
+ if csm_host_enterprise_azure_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_azure_host_count_top99p_sum"] = csm_host_enterprise_azure_host_count_top99p_sum
+ if csm_host_enterprise_compliance_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_compliance_host_count_top99p_sum"] = csm_host_enterprise_compliance_host_count_top99p_sum
+ if csm_host_enterprise_cws_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_cws_host_count_top99p_sum"] = csm_host_enterprise_cws_host_count_top99p_sum
+ if csm_host_enterprise_gcp_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_gcp_host_count_top99p_sum"] = csm_host_enterprise_gcp_host_count_top99p_sum
+ if csm_host_enterprise_oci_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_oci_host_count_top99p_sum"] = csm_host_enterprise_oci_host_count_top99p_sum
+ if csm_host_enterprise_total_host_count_top99p_sum is not unset:
+ kwargs["csm_host_enterprise_total_host_count_top99p_sum"] = csm_host_enterprise_total_host_count_top99p_sum
+ if csm_host_pro_hosts_agentless_scanners_agg_sum is not unset:
+ kwargs["csm_host_pro_hosts_agentless_scanners_agg_sum"] = csm_host_pro_hosts_agentless_scanners_agg_sum
+ if csm_host_pro_hosts_agentless_scanners_top99p_sum is not unset:
+ kwargs["csm_host_pro_hosts_agentless_scanners_top99p_sum"] = csm_host_pro_hosts_agentless_scanners_top99p_sum
+ if csm_host_pro_oci_host_count_top99p_sum is not unset:
+ kwargs["csm_host_pro_oci_host_count_top99p_sum"] = csm_host_pro_oci_host_count_top99p_sum
+ if cspm_aas_host_top99p_sum is not unset:
+ kwargs["cspm_aas_host_top99p_sum"] = cspm_aas_host_top99p_sum
+ if cspm_aws_host_top99p_sum is not unset:
+ kwargs["cspm_aws_host_top99p_sum"] = cspm_aws_host_top99p_sum
+ if cspm_azure_host_top99p_sum is not unset:
+ kwargs["cspm_azure_host_top99p_sum"] = cspm_azure_host_top99p_sum
+ if cspm_container_avg_sum is not unset:
+ kwargs["cspm_container_avg_sum"] = cspm_container_avg_sum
+ if cspm_container_hwm_sum is not unset:
+ kwargs["cspm_container_hwm_sum"] = cspm_container_hwm_sum
+ if cspm_gcp_host_top99p_sum is not unset:
+ kwargs["cspm_gcp_host_top99p_sum"] = cspm_gcp_host_top99p_sum
+ if cspm_host_top99p_sum is not unset:
+ kwargs["cspm_host_top99p_sum"] = cspm_host_top99p_sum
+ if cspm_hosts_agentless_scanners_agg_sum is not unset:
+ kwargs["cspm_hosts_agentless_scanners_agg_sum"] = cspm_hosts_agentless_scanners_agg_sum
+ if cspm_hosts_agentless_scanners_top99p_sum is not unset:
+ kwargs["cspm_hosts_agentless_scanners_top99p_sum"] = cspm_hosts_agentless_scanners_top99p_sum
+ if custom_historical_ts_sum is not unset:
+ kwargs["custom_historical_ts_sum"] = custom_historical_ts_sum
+ if custom_live_ts_sum is not unset:
+ kwargs["custom_live_ts_sum"] = custom_live_ts_sum
+ if custom_ts_sum is not unset:
+ kwargs["custom_ts_sum"] = custom_ts_sum
+ if cws_container_avg_sum is not unset:
+ kwargs["cws_container_avg_sum"] = cws_container_avg_sum
+ if cws_fargate_task_avg_sum is not unset:
+ kwargs["cws_fargate_task_avg_sum"] = cws_fargate_task_avg_sum
+ if cws_host_top99p_sum is not unset:
+ kwargs["cws_host_top99p_sum"] = cws_host_top99p_sum
+ if data_jobs_monitoring_host_hr_agg_sum is not unset:
+ kwargs["data_jobs_monitoring_host_hr_agg_sum"] = data_jobs_monitoring_host_hr_agg_sum
+ if data_stream_monitoring_host_count_agg_sum is not unset:
+ kwargs["data_stream_monitoring_host_count_agg_sum"] = data_stream_monitoring_host_count_agg_sum
+ if data_stream_monitoring_host_count_top99p_sum is not unset:
+ kwargs["data_stream_monitoring_host_count_top99p_sum"] = data_stream_monitoring_host_count_top99p_sum
+ if dbm_host_top99p_sum is not unset:
+ kwargs["dbm_host_top99p_sum"] = dbm_host_top99p_sum
+ if dbm_queries_avg_sum is not unset:
+ kwargs["dbm_queries_avg_sum"] = dbm_queries_avg_sum
+ if do_jobs_monitoring_orchestrators_job_hours_agg_sum is not unset:
+ kwargs["do_jobs_monitoring_orchestrators_job_hours_agg_sum"] = do_jobs_monitoring_orchestrators_job_hours_agg_sum
+ if end_date is not unset:
+ kwargs["end_date"] = end_date
+ if eph_infra_host_agent_agg_sum is not unset:
+ kwargs["eph_infra_host_agent_agg_sum"] = eph_infra_host_agent_agg_sum
+ if eph_infra_host_alibaba_agg_sum is not unset:
+ kwargs["eph_infra_host_alibaba_agg_sum"] = eph_infra_host_alibaba_agg_sum
+ if eph_infra_host_aws_agg_sum is not unset:
+ kwargs["eph_infra_host_aws_agg_sum"] = eph_infra_host_aws_agg_sum
+ if eph_infra_host_azure_agg_sum is not unset:
+ kwargs["eph_infra_host_azure_agg_sum"] = eph_infra_host_azure_agg_sum
+ if eph_infra_host_basic_agg_sum is not unset:
+ kwargs["eph_infra_host_basic_agg_sum"] = eph_infra_host_basic_agg_sum
+ if eph_infra_host_basic_infra_basic_agent_agg_sum is not unset:
+ kwargs["eph_infra_host_basic_infra_basic_agent_agg_sum"] = eph_infra_host_basic_infra_basic_agent_agg_sum
+ if eph_infra_host_basic_infra_basic_vsphere_agg_sum is not unset:
+ kwargs["eph_infra_host_basic_infra_basic_vsphere_agg_sum"] = eph_infra_host_basic_infra_basic_vsphere_agg_sum
+ if eph_infra_host_ent_agg_sum is not unset:
+ kwargs["eph_infra_host_ent_agg_sum"] = eph_infra_host_ent_agg_sum
+ if eph_infra_host_gcp_agg_sum is not unset:
+ kwargs["eph_infra_host_gcp_agg_sum"] = eph_infra_host_gcp_agg_sum
+ if eph_infra_host_heroku_agg_sum is not unset:
+ kwargs["eph_infra_host_heroku_agg_sum"] = eph_infra_host_heroku_agg_sum
+ if eph_infra_host_only_aas_agg_sum is not unset:
+ kwargs["eph_infra_host_only_aas_agg_sum"] = eph_infra_host_only_aas_agg_sum
+ if eph_infra_host_only_vsphere_agg_sum is not unset:
+ kwargs["eph_infra_host_only_vsphere_agg_sum"] = eph_infra_host_only_vsphere_agg_sum
+ if eph_infra_host_opentelemetry_agg_sum is not unset:
+ kwargs["eph_infra_host_opentelemetry_agg_sum"] = eph_infra_host_opentelemetry_agg_sum
+ if eph_infra_host_opentelemetry_apm_agg_sum is not unset:
+ kwargs["eph_infra_host_opentelemetry_apm_agg_sum"] = eph_infra_host_opentelemetry_apm_agg_sum
+ if eph_infra_host_pro_agg_sum is not unset:
+ kwargs["eph_infra_host_pro_agg_sum"] = eph_infra_host_pro_agg_sum
+ if eph_infra_host_proplus_agg_sum is not unset:
+ kwargs["eph_infra_host_proplus_agg_sum"] = eph_infra_host_proplus_agg_sum
+ if eph_infra_host_proxmox_agg_sum is not unset:
+ kwargs["eph_infra_host_proxmox_agg_sum"] = eph_infra_host_proxmox_agg_sum
+ if error_tracking_apm_error_events_agg_sum is not unset:
+ kwargs["error_tracking_apm_error_events_agg_sum"] = error_tracking_apm_error_events_agg_sum
+ if error_tracking_error_events_agg_sum is not unset:
+ kwargs["error_tracking_error_events_agg_sum"] = error_tracking_error_events_agg_sum
+ if error_tracking_events_agg_sum is not unset:
+ kwargs["error_tracking_events_agg_sum"] = error_tracking_events_agg_sum
+ if error_tracking_rum_error_events_agg_sum is not unset:
+ kwargs["error_tracking_rum_error_events_agg_sum"] = error_tracking_rum_error_events_agg_sum
+ if event_management_correlation_agg_sum is not unset:
+ kwargs["event_management_correlation_agg_sum"] = event_management_correlation_agg_sum
+ if event_management_correlation_correlated_events_agg_sum is not unset:
+ kwargs["event_management_correlation_correlated_events_agg_sum"] = event_management_correlation_correlated_events_agg_sum
+ if event_management_correlation_correlated_related_events_agg_sum is not unset:
+ kwargs["event_management_correlation_correlated_related_events_agg_sum"] = event_management_correlation_correlated_related_events_agg_sum
+ if fargate_container_profiler_profiling_fargate_avg_sum is not unset:
+ kwargs["fargate_container_profiler_profiling_fargate_avg_sum"] = fargate_container_profiler_profiling_fargate_avg_sum
+ if fargate_container_profiler_profiling_fargate_eks_avg_sum is not unset:
+ kwargs["fargate_container_profiler_profiling_fargate_eks_avg_sum"] = fargate_container_profiler_profiling_fargate_eks_avg_sum
+ if fargate_tasks_count_avg_sum is not unset:
+ kwargs["fargate_tasks_count_avg_sum"] = fargate_tasks_count_avg_sum
+ if fargate_tasks_count_hwm_sum is not unset:
+ kwargs["fargate_tasks_count_hwm_sum"] = fargate_tasks_count_hwm_sum
+ if feature_flags_config_requests_agg_sum is not unset:
+ kwargs["feature_flags_config_requests_agg_sum"] = feature_flags_config_requests_agg_sum
+ if flex_logs_compute_large_avg_sum is not unset:
+ kwargs["flex_logs_compute_large_avg_sum"] = flex_logs_compute_large_avg_sum
+ if flex_logs_compute_medium_avg_sum is not unset:
+ kwargs["flex_logs_compute_medium_avg_sum"] = flex_logs_compute_medium_avg_sum
+ if flex_logs_compute_small_avg_sum is not unset:
+ kwargs["flex_logs_compute_small_avg_sum"] = flex_logs_compute_small_avg_sum
+ if flex_logs_compute_xlarge_avg_sum is not unset:
+ kwargs["flex_logs_compute_xlarge_avg_sum"] = flex_logs_compute_xlarge_avg_sum
+ if flex_logs_compute_xsmall_avg_sum is not unset:
+ kwargs["flex_logs_compute_xsmall_avg_sum"] = flex_logs_compute_xsmall_avg_sum
+ if flex_logs_starter_avg_sum is not unset:
+ kwargs["flex_logs_starter_avg_sum"] = flex_logs_starter_avg_sum
+ if flex_logs_starter_storage_index_avg_sum is not unset:
+ kwargs["flex_logs_starter_storage_index_avg_sum"] = flex_logs_starter_storage_index_avg_sum
+ if flex_logs_starter_storage_retention_adjustment_avg_sum is not unset:
+ kwargs["flex_logs_starter_storage_retention_adjustment_avg_sum"] = flex_logs_starter_storage_retention_adjustment_avg_sum
+ if flex_stored_logs_avg_sum is not unset:
+ kwargs["flex_stored_logs_avg_sum"] = flex_stored_logs_avg_sum
+ if forwarding_events_bytes_agg_sum is not unset:
+ kwargs["forwarding_events_bytes_agg_sum"] = forwarding_events_bytes_agg_sum
+ if gcp_host_top99p_sum is not unset:
+ kwargs["gcp_host_top99p_sum"] = gcp_host_top99p_sum
+ if heroku_host_top99p_sum is not unset:
+ kwargs["heroku_host_top99p_sum"] = heroku_host_top99p_sum
+ if incident_management_monthly_active_users_hwm_sum is not unset:
+ kwargs["incident_management_monthly_active_users_hwm_sum"] = incident_management_monthly_active_users_hwm_sum
+ if incident_management_seats_hwm_sum is not unset:
+ kwargs["incident_management_seats_hwm_sum"] = incident_management_seats_hwm_sum
+ if indexed_events_count_agg_sum is not unset:
+ kwargs["indexed_events_count_agg_sum"] = indexed_events_count_agg_sum
+ if indexed_points_agg_sum is not unset:
+ kwargs["indexed_points_agg_sum"] = indexed_points_agg_sum
+ if infra_cpu_agg_sum is not unset:
+ kwargs["infra_cpu_agg_sum"] = infra_cpu_agg_sum
+ if infra_cpu_avg_sum is not unset:
+ kwargs["infra_cpu_avg_sum"] = infra_cpu_avg_sum
+ if infra_cpu_default_infra_host_vcpu_agent_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_agg_sum"] = infra_cpu_default_infra_host_vcpu_agent_agg_sum
+ if infra_cpu_default_infra_host_vcpu_agent_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_avg_sum"] = infra_cpu_default_infra_host_vcpu_agent_avg_sum
+ if infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum"] = infra_cpu_default_infra_host_vcpu_agent_basic_agg_sum
+ if infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum"] = infra_cpu_default_infra_host_vcpu_agent_basic_avg_sum
+ if infra_cpu_default_infra_host_vcpu_aws_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_aws_agg_sum"] = infra_cpu_default_infra_host_vcpu_aws_agg_sum
+ if infra_cpu_default_infra_host_vcpu_aws_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_aws_avg_sum"] = infra_cpu_default_infra_host_vcpu_aws_avg_sum
+ if infra_cpu_default_infra_host_vcpu_azure_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_azure_agg_sum"] = infra_cpu_default_infra_host_vcpu_azure_agg_sum
+ if infra_cpu_default_infra_host_vcpu_azure_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_azure_avg_sum"] = infra_cpu_default_infra_host_vcpu_azure_avg_sum
+ if infra_cpu_default_infra_host_vcpu_gcp_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_gcp_agg_sum"] = infra_cpu_default_infra_host_vcpu_gcp_agg_sum
+ if infra_cpu_default_infra_host_vcpu_gcp_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_gcp_avg_sum"] = infra_cpu_default_infra_host_vcpu_gcp_avg_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_agg_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_agg_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_avg_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_avg_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_basic_agg_sum
+ if infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum"] = infra_cpu_default_infra_host_vcpu_nutanix_basic_avg_sum
+ if infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum"] = infra_cpu_default_infra_host_vcpu_opentelemetry_agg_sum
+ if infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum is not unset:
+ kwargs["infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum"] = infra_cpu_default_infra_host_vcpu_opentelemetry_avg_sum
+ if infra_cpu_observed_infra_host_vcpu_agent_agg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_agent_agg_sum"] = infra_cpu_observed_infra_host_vcpu_agent_agg_sum
+ if infra_cpu_observed_infra_host_vcpu_agent_avg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_agent_avg_sum"] = infra_cpu_observed_infra_host_vcpu_agent_avg_sum
+ if infra_cpu_observed_infra_host_vcpu_aws_agg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_aws_agg_sum"] = infra_cpu_observed_infra_host_vcpu_aws_agg_sum
+ if infra_cpu_observed_infra_host_vcpu_aws_avg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_aws_avg_sum"] = infra_cpu_observed_infra_host_vcpu_aws_avg_sum
+ if infra_cpu_observed_infra_host_vcpu_azure_agg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_azure_agg_sum"] = infra_cpu_observed_infra_host_vcpu_azure_agg_sum
+ if infra_cpu_observed_infra_host_vcpu_azure_avg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_azure_avg_sum"] = infra_cpu_observed_infra_host_vcpu_azure_avg_sum
+ if infra_cpu_observed_infra_host_vcpu_gcp_agg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_gcp_agg_sum"] = infra_cpu_observed_infra_host_vcpu_gcp_agg_sum
+ if infra_cpu_observed_infra_host_vcpu_gcp_avg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_gcp_avg_sum"] = infra_cpu_observed_infra_host_vcpu_gcp_avg_sum
+ if infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum"] = infra_cpu_observed_infra_host_vcpu_nutanix_agg_sum
+ if infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum"] = infra_cpu_observed_infra_host_vcpu_nutanix_avg_sum
+ if infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum"] = infra_cpu_observed_infra_host_vcpu_opentelemetry_agg_sum
+ if infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum is not unset:
+ kwargs["infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum"] = infra_cpu_observed_infra_host_vcpu_opentelemetry_avg_sum
+ if infra_edge_monitoring_devices_top99p_sum is not unset:
+ kwargs["infra_edge_monitoring_devices_top99p_sum"] = infra_edge_monitoring_devices_top99p_sum
+ if infra_host_basic_infra_basic_agent_top99p_sum is not unset:
+ kwargs["infra_host_basic_infra_basic_agent_top99p_sum"] = infra_host_basic_infra_basic_agent_top99p_sum
+ if infra_host_basic_infra_basic_vsphere_top99p_sum is not unset:
+ kwargs["infra_host_basic_infra_basic_vsphere_top99p_sum"] = infra_host_basic_infra_basic_vsphere_top99p_sum
+ if infra_host_basic_top99p_sum is not unset:
+ kwargs["infra_host_basic_top99p_sum"] = infra_host_basic_top99p_sum
+ if infra_host_top99p_sum is not unset:
+ kwargs["infra_host_top99p_sum"] = infra_host_top99p_sum
+ if infra_storage_mgmt_objects_count_avg_sum is not unset:
+ kwargs["infra_storage_mgmt_objects_count_avg_sum"] = infra_storage_mgmt_objects_count_avg_sum
+ if ingest_points_agg_sum is not unset:
+ kwargs["ingest_points_agg_sum"] = ingest_points_agg_sum
+ if ingested_events_bytes_agg_sum is not unset:
+ kwargs["ingested_events_bytes_agg_sum"] = ingested_events_bytes_agg_sum
+ if iot_apm_host_agg_sum is not unset:
+ kwargs["iot_apm_host_agg_sum"] = iot_apm_host_agg_sum
+ if iot_apm_host_top99p_sum is not unset:
+ kwargs["iot_apm_host_top99p_sum"] = iot_apm_host_top99p_sum
+ if iot_device_agg_sum is not unset:
+ kwargs["iot_device_agg_sum"] = iot_device_agg_sum
+ if iot_device_top99p_sum is not unset:
+ kwargs["iot_device_top99p_sum"] = iot_device_top99p_sum
+ if last_updated is not unset:
+ kwargs["last_updated"] = last_updated
+ if live_indexed_events_agg_sum is not unset:
+ kwargs["live_indexed_events_agg_sum"] = live_indexed_events_agg_sum
+ if live_ingested_bytes_agg_sum is not unset:
+ kwargs["live_ingested_bytes_agg_sum"] = live_ingested_bytes_agg_sum
+ if llm_observability_15day_retention_spans_agg_sum is not unset:
+ kwargs["llm_observability_15day_retention_spans_agg_sum"] = llm_observability_15day_retention_spans_agg_sum
+ if llm_observability_30day_retention_spans_agg_sum is not unset:
+ kwargs["llm_observability_30day_retention_spans_agg_sum"] = llm_observability_30day_retention_spans_agg_sum
+ if llm_observability_60day_retention_spans_agg_sum is not unset:
+ kwargs["llm_observability_60day_retention_spans_agg_sum"] = llm_observability_60day_retention_spans_agg_sum
+ if llm_observability_90day_retention_spans_agg_sum is not unset:
+ kwargs["llm_observability_90day_retention_spans_agg_sum"] = llm_observability_90day_retention_spans_agg_sum
+ if llm_observability_agg_sum is not unset:
+ kwargs["llm_observability_agg_sum"] = llm_observability_agg_sum
+ if llm_observability_min_spend_agg_sum is not unset:
+ kwargs["llm_observability_min_spend_agg_sum"] = llm_observability_min_spend_agg_sum
+ if logs_archive_search_gb_scanned_agg_sum is not unset:
+ kwargs["logs_archive_search_gb_scanned_agg_sum"] = logs_archive_search_gb_scanned_agg_sum
+ if logs_by_retention is not unset:
+ kwargs["logs_by_retention"] = logs_by_retention
+ if metric_names_agg_sum is not unset:
+ kwargs["metric_names_agg_sum"] = metric_names_agg_sum
+ if mobile_rum_lite_session_count_agg_sum is not unset:
+ kwargs["mobile_rum_lite_session_count_agg_sum"] = mobile_rum_lite_session_count_agg_sum
+ if mobile_rum_session_count_agg_sum is not unset:
+ kwargs["mobile_rum_session_count_agg_sum"] = mobile_rum_session_count_agg_sum
+ if mobile_rum_session_count_android_agg_sum is not unset:
+ kwargs["mobile_rum_session_count_android_agg_sum"] = mobile_rum_session_count_android_agg_sum
+ if mobile_rum_session_count_flutter_agg_sum is not unset:
+ kwargs["mobile_rum_session_count_flutter_agg_sum"] = mobile_rum_session_count_flutter_agg_sum
+ if mobile_rum_session_count_ios_agg_sum is not unset:
+ kwargs["mobile_rum_session_count_ios_agg_sum"] = mobile_rum_session_count_ios_agg_sum
+ if mobile_rum_session_count_reactnative_agg_sum is not unset:
+ kwargs["mobile_rum_session_count_reactnative_agg_sum"] = mobile_rum_session_count_reactnative_agg_sum
+ if mobile_rum_session_count_roku_agg_sum is not unset:
+ kwargs["mobile_rum_session_count_roku_agg_sum"] = mobile_rum_session_count_roku_agg_sum
+ if mobile_rum_units_agg_sum is not unset:
+ kwargs["mobile_rum_units_agg_sum"] = mobile_rum_units_agg_sum
+ if ndm_netflow_events_agg_sum is not unset:
+ kwargs["ndm_netflow_events_agg_sum"] = ndm_netflow_events_agg_sum
+ if netflow_indexed_events_count_agg_sum is not unset:
+ kwargs["netflow_indexed_events_count_agg_sum"] = netflow_indexed_events_count_agg_sum
+ if network_device_wireless_top99p_sum is not unset:
+ kwargs["network_device_wireless_top99p_sum"] = network_device_wireless_top99p_sum
+ if network_path_agg_sum is not unset:
+ kwargs["network_path_agg_sum"] = network_path_agg_sum
+ if npm_host_top99p_sum is not unset:
+ kwargs["npm_host_top99p_sum"] = npm_host_top99p_sum
+ if observability_pipelines_bytes_processed_agg_sum is not unset:
+ kwargs["observability_pipelines_bytes_processed_agg_sum"] = observability_pipelines_bytes_processed_agg_sum
+ if oci_host_agg_sum is not unset:
+ kwargs["oci_host_agg_sum"] = oci_host_agg_sum
+ if oci_host_top99p_sum is not unset:
+ kwargs["oci_host_top99p_sum"] = oci_host_top99p_sum
+ if on_call_seat_hwm_sum is not unset:
+ kwargs["on_call_seat_hwm_sum"] = on_call_seat_hwm_sum
+ if online_archive_events_count_agg_sum is not unset:
+ kwargs["online_archive_events_count_agg_sum"] = online_archive_events_count_agg_sum
+ if opentelemetry_apm_host_top99p_sum is not unset:
+ kwargs["opentelemetry_apm_host_top99p_sum"] = opentelemetry_apm_host_top99p_sum
+ if opentelemetry_host_top99p_sum is not unset:
+ kwargs["opentelemetry_host_top99p_sum"] = opentelemetry_host_top99p_sum
+ if product_analytics_agg_sum is not unset:
+ kwargs["product_analytics_agg_sum"] = product_analytics_agg_sum
+ if profiling_aas_count_top99p_sum is not unset:
+ kwargs["profiling_aas_count_top99p_sum"] = profiling_aas_count_top99p_sum
+ if profiling_container_agent_count_avg is not unset:
+ kwargs["profiling_container_agent_count_avg"] = profiling_container_agent_count_avg
+ if profiling_host_count_top99p_sum is not unset:
+ kwargs["profiling_host_count_top99p_sum"] = profiling_host_count_top99p_sum
+ if proxmox_host_agg_sum is not unset:
+ kwargs["proxmox_host_agg_sum"] = proxmox_host_agg_sum
+ if proxmox_host_top99p_sum is not unset:
+ kwargs["proxmox_host_top99p_sum"] = proxmox_host_top99p_sum
+ if published_app_hwm_sum is not unset:
+ kwargs["published_app_hwm_sum"] = published_app_hwm_sum
+ if rehydrated_indexed_events_agg_sum is not unset:
+ kwargs["rehydrated_indexed_events_agg_sum"] = rehydrated_indexed_events_agg_sum
+ if rehydrated_ingested_bytes_agg_sum is not unset:
+ kwargs["rehydrated_ingested_bytes_agg_sum"] = rehydrated_ingested_bytes_agg_sum
+ if rum_browser_and_mobile_session_count is not unset:
+ kwargs["rum_browser_and_mobile_session_count"] = rum_browser_and_mobile_session_count
+ if rum_browser_legacy_session_count_agg_sum is not unset:
+ kwargs["rum_browser_legacy_session_count_agg_sum"] = rum_browser_legacy_session_count_agg_sum
+ if rum_browser_lite_session_count_agg_sum is not unset:
+ kwargs["rum_browser_lite_session_count_agg_sum"] = rum_browser_lite_session_count_agg_sum
+ if rum_browser_replay_session_count_agg_sum is not unset:
+ kwargs["rum_browser_replay_session_count_agg_sum"] = rum_browser_replay_session_count_agg_sum
+ if rum_indexed_sessions_agg_sum is not unset:
+ kwargs["rum_indexed_sessions_agg_sum"] = rum_indexed_sessions_agg_sum
+ if rum_ingested_sessions_agg_sum is not unset:
+ kwargs["rum_ingested_sessions_agg_sum"] = rum_ingested_sessions_agg_sum
+ if rum_lite_session_count_agg_sum is not unset:
+ kwargs["rum_lite_session_count_agg_sum"] = rum_lite_session_count_agg_sum
+ if rum_mobile_legacy_session_count_android_agg_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_android_agg_sum"] = rum_mobile_legacy_session_count_android_agg_sum
+ if rum_mobile_legacy_session_count_flutter_agg_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_flutter_agg_sum"] = rum_mobile_legacy_session_count_flutter_agg_sum
+ if rum_mobile_legacy_session_count_ios_agg_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_ios_agg_sum"] = rum_mobile_legacy_session_count_ios_agg_sum
+ if rum_mobile_legacy_session_count_reactnative_agg_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_reactnative_agg_sum"] = rum_mobile_legacy_session_count_reactnative_agg_sum
+ if rum_mobile_legacy_session_count_roku_agg_sum is not unset:
+ kwargs["rum_mobile_legacy_session_count_roku_agg_sum"] = rum_mobile_legacy_session_count_roku_agg_sum
+ if rum_mobile_lite_session_count_android_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_android_agg_sum"] = rum_mobile_lite_session_count_android_agg_sum
+ if rum_mobile_lite_session_count_flutter_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_flutter_agg_sum"] = rum_mobile_lite_session_count_flutter_agg_sum
+ if rum_mobile_lite_session_count_ios_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_ios_agg_sum"] = rum_mobile_lite_session_count_ios_agg_sum
+ if rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum"] = rum_mobile_lite_session_count_kotlinmultiplatform_agg_sum
+ if rum_mobile_lite_session_count_reactnative_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_reactnative_agg_sum"] = rum_mobile_lite_session_count_reactnative_agg_sum
+ if rum_mobile_lite_session_count_roku_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_roku_agg_sum"] = rum_mobile_lite_session_count_roku_agg_sum
+ if rum_mobile_lite_session_count_unity_agg_sum is not unset:
+ kwargs["rum_mobile_lite_session_count_unity_agg_sum"] = rum_mobile_lite_session_count_unity_agg_sum
+ if rum_mobile_replay_session_count_android_agg_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_android_agg_sum"] = rum_mobile_replay_session_count_android_agg_sum
+ if rum_mobile_replay_session_count_ios_agg_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_ios_agg_sum"] = rum_mobile_replay_session_count_ios_agg_sum
+ if rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum"] = rum_mobile_replay_session_count_kotlinmultiplatform_agg_sum
+ if rum_mobile_replay_session_count_reactnative_agg_sum is not unset:
+ kwargs["rum_mobile_replay_session_count_reactnative_agg_sum"] = rum_mobile_replay_session_count_reactnative_agg_sum
+ if rum_replay_session_count_agg_sum is not unset:
+ kwargs["rum_replay_session_count_agg_sum"] = rum_replay_session_count_agg_sum
+ if rum_session_count_agg_sum is not unset:
+ kwargs["rum_session_count_agg_sum"] = rum_session_count_agg_sum
+ if rum_session_replay_add_on_agg_sum is not unset:
+ kwargs["rum_session_replay_add_on_agg_sum"] = rum_session_replay_add_on_agg_sum
+ if rum_total_session_count_agg_sum is not unset:
+ kwargs["rum_total_session_count_agg_sum"] = rum_total_session_count_agg_sum
+ if rum_units_agg_sum is not unset:
+ kwargs["rum_units_agg_sum"] = rum_units_agg_sum
+ if sca_fargate_count_avg_sum is not unset:
+ kwargs["sca_fargate_count_avg_sum"] = sca_fargate_count_avg_sum
+ if sca_fargate_count_hwm_sum is not unset:
+ kwargs["sca_fargate_count_hwm_sum"] = sca_fargate_count_hwm_sum
+ if sds_apm_scanned_bytes_sum is not unset:
+ kwargs["sds_apm_scanned_bytes_sum"] = sds_apm_scanned_bytes_sum
+ if sds_events_scanned_bytes_sum is not unset:
+ kwargs["sds_events_scanned_bytes_sum"] = sds_events_scanned_bytes_sum
+ if sds_logs_scanned_bytes_sum is not unset:
+ kwargs["sds_logs_scanned_bytes_sum"] = sds_logs_scanned_bytes_sum
+ if sds_rum_scanned_bytes_sum is not unset:
+ kwargs["sds_rum_scanned_bytes_sum"] = sds_rum_scanned_bytes_sum
+ if sds_total_scanned_bytes_sum is not unset:
+ kwargs["sds_total_scanned_bytes_sum"] = sds_total_scanned_bytes_sum
+ if serverless_apps_apm_apm_azure_appservice_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_azure_appservice_instances_avg_sum"] = serverless_apps_apm_apm_azure_appservice_instances_avg_sum
+ if serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum"] = serverless_apps_apm_apm_azure_azurefunction_instances_avg_sum
+ if serverless_apps_apm_apm_azure_containerapp_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_azure_containerapp_instances_avg_sum"] = serverless_apps_apm_apm_azure_containerapp_instances_avg_sum
+ if serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum"] = serverless_apps_apm_apm_fargate_ecs_tasks_avg_sum
+ if serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum"] = serverless_apps_apm_apm_gcp_cloudfunction_instances_avg_sum
+ if serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum"] = serverless_apps_apm_apm_gcp_cloudrun_instances_avg_sum
+ if serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum is not unset:
+ kwargs["serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum"] = serverless_apps_apm_apm_gcp_gke_autopilot_pods_avg_sum
+ if serverless_apps_apm_avg_sum is not unset:
+ kwargs["serverless_apps_apm_avg_sum"] = serverless_apps_apm_avg_sum
+ if serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum"] = serverless_apps_apm_excl_fargate_apm_azure_appservice_instances_avg_sum
+ if serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum"] = serverless_apps_apm_excl_fargate_apm_azure_azurefunction_instances_avg_sum
+ if serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum"] = serverless_apps_apm_excl_fargate_apm_azure_containerapp_instances_avg_sum
+ if serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum"] = serverless_apps_apm_excl_fargate_apm_gcp_cloudfunction_instances_avg_sum
+ if serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum"] = serverless_apps_apm_excl_fargate_apm_gcp_cloudrun_instances_avg_sum
+ if serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum"] = serverless_apps_apm_excl_fargate_apm_gcp_gke_autopilot_pods_avg_sum
+ if serverless_apps_apm_excl_fargate_avg_sum is not unset:
+ kwargs["serverless_apps_apm_excl_fargate_avg_sum"] = serverless_apps_apm_excl_fargate_avg_sum
+ if serverless_apps_azure_container_app_instances_avg_sum is not unset:
+ kwargs["serverless_apps_azure_container_app_instances_avg_sum"] = serverless_apps_azure_container_app_instances_avg_sum
+ if serverless_apps_azure_count_avg_sum is not unset:
+ kwargs["serverless_apps_azure_count_avg_sum"] = serverless_apps_azure_count_avg_sum
+ if serverless_apps_azure_function_app_instances_avg_sum is not unset:
+ kwargs["serverless_apps_azure_function_app_instances_avg_sum"] = serverless_apps_azure_function_app_instances_avg_sum
+ if serverless_apps_azure_web_app_instances_avg_sum is not unset:
+ kwargs["serverless_apps_azure_web_app_instances_avg_sum"] = serverless_apps_azure_web_app_instances_avg_sum
+ if serverless_apps_dsm_fargate_tasks_avg_sum is not unset:
+ kwargs["serverless_apps_dsm_fargate_tasks_avg_sum"] = serverless_apps_dsm_fargate_tasks_avg_sum
+ if serverless_apps_ecs_avg_sum is not unset:
+ kwargs["serverless_apps_ecs_avg_sum"] = serverless_apps_ecs_avg_sum
+ if serverless_apps_eks_avg_sum is not unset:
+ kwargs["serverless_apps_eks_avg_sum"] = serverless_apps_eks_avg_sum
+ if serverless_apps_excl_fargate_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_avg_sum"] = serverless_apps_excl_fargate_avg_sum
+ if serverless_apps_excl_fargate_azure_container_app_instances_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_container_app_instances_avg_sum"] = serverless_apps_excl_fargate_azure_container_app_instances_avg_sum
+ if serverless_apps_excl_fargate_azure_function_app_instances_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_function_app_instances_avg_sum"] = serverless_apps_excl_fargate_azure_function_app_instances_avg_sum
+ if serverless_apps_excl_fargate_azure_web_app_instances_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_azure_web_app_instances_avg_sum"] = serverless_apps_excl_fargate_azure_web_app_instances_avg_sum
+ if serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum"] = serverless_apps_excl_fargate_google_cloud_functions_instances_avg_sum
+ if serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum"] = serverless_apps_excl_fargate_google_cloud_run_instances_avg_sum
+ if serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum is not unset:
+ kwargs["serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum"] = serverless_apps_excl_fargate_infra_gcp_gke_autopilot_pods_avg_sum
+ if serverless_apps_google_cloud_functions_instances_avg_sum is not unset:
+ kwargs["serverless_apps_google_cloud_functions_instances_avg_sum"] = serverless_apps_google_cloud_functions_instances_avg_sum
+ if serverless_apps_google_cloud_run_instances_avg_sum is not unset:
+ kwargs["serverless_apps_google_cloud_run_instances_avg_sum"] = serverless_apps_google_cloud_run_instances_avg_sum
+ if serverless_apps_google_count_avg_sum is not unset:
+ kwargs["serverless_apps_google_count_avg_sum"] = serverless_apps_google_count_avg_sum
+ if serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum is not unset:
+ kwargs["serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum"] = serverless_apps_infra_gcp_gke_autopilot_pods_avg_sum
+ if serverless_apps_total_count_avg_sum is not unset:
+ kwargs["serverless_apps_total_count_avg_sum"] = serverless_apps_total_count_avg_sum
+ if siem_12mo_retention_agg_sum is not unset:
+ kwargs["siem_12mo_retention_agg_sum"] = siem_12mo_retention_agg_sum
+ if siem_6mo_retention_agg_sum is not unset:
+ kwargs["siem_6mo_retention_agg_sum"] = siem_6mo_retention_agg_sum
+ if siem_analyzed_logs_add_on_count_agg_sum is not unset:
+ kwargs["siem_analyzed_logs_add_on_count_agg_sum"] = siem_analyzed_logs_add_on_count_agg_sum
+ if snmp_device_count_agg_sum is not unset:
+ kwargs["snmp_device_count_agg_sum"] = snmp_device_count_agg_sum
+ if snmp_device_count_top99p_sum is not unset:
+ kwargs["snmp_device_count_top99p_sum"] = snmp_device_count_top99p_sum
+ if start_date is not unset:
+ kwargs["start_date"] = start_date
+ if synthetics_browser_check_calls_count_agg_sum is not unset:
+ kwargs["synthetics_browser_check_calls_count_agg_sum"] = synthetics_browser_check_calls_count_agg_sum
+ if synthetics_check_calls_count_agg_sum is not unset:
+ kwargs["synthetics_check_calls_count_agg_sum"] = synthetics_check_calls_count_agg_sum
+ if synthetics_mobile_test_runs_agg_sum is not unset:
+ kwargs["synthetics_mobile_test_runs_agg_sum"] = synthetics_mobile_test_runs_agg_sum
+ if synthetics_parallel_testing_max_slots_hwm_sum is not unset:
+ kwargs["synthetics_parallel_testing_max_slots_hwm_sum"] = synthetics_parallel_testing_max_slots_hwm_sum
+ if trace_search_indexed_events_count_agg_sum is not unset:
+ kwargs["trace_search_indexed_events_count_agg_sum"] = trace_search_indexed_events_count_agg_sum
+ if twol_ingested_events_bytes_agg_sum is not unset:
+ kwargs["twol_ingested_events_bytes_agg_sum"] = twol_ingested_events_bytes_agg_sum
+ if universal_service_monitoring_host_top99p_sum is not unset:
+ kwargs["universal_service_monitoring_host_top99p_sum"] = universal_service_monitoring_host_top99p_sum
+ if usage is not unset:
+ kwargs["usage"] = usage
+ if vsphere_host_top99p_sum is not unset:
+ kwargs["vsphere_host_top99p_sum"] = vsphere_host_top99p_sum
+ if vuln_management_host_count_top99p_sum is not unset:
+ kwargs["vuln_management_host_count_top99p_sum"] = vuln_management_host_count_top99p_sum
+ if workflow_executions_usage_agg_sum is not unset:
+ kwargs["workflow_executions_usage_agg_sum"] = workflow_executions_usage_agg_sum
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_synthetics_api_hour.py b/datadog_api_client/v1/model/usage_synthetics_api_hour.py
new file mode 100644
index 0000000000..48e1ee538a
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_synthetics_api_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSyntheticsAPIHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "check_calls_count": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "check_calls_count": "check_calls_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, check_calls_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Number of Synthetics API tests run for each hour for a given organization.
+
+ :param check_calls_count: Contains the number of Synthetics API tests run.
+ :type check_calls_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if check_calls_count is not unset:
+ kwargs["check_calls_count"] = check_calls_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_synthetics_api_response.py b/datadog_api_client/v1/model/usage_synthetics_api_response.py
new file mode 100644
index 0000000000..89286ff137
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_synthetics_api_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_synthetics_api_hour import UsageSyntheticsAPIHour
+
+class UsageSyntheticsAPIResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_synthetics_api_hour import UsageSyntheticsAPIHour
+ return {
+ "usage": ([UsageSyntheticsAPIHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageSyntheticsAPIHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of Synthetics API tests run for each hour for a given organization.
+
+ :param usage: Get hourly usage for Synthetics API tests.
+ :type usage: [UsageSyntheticsAPIHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_synthetics_browser_hour.py b/datadog_api_client/v1/model/usage_synthetics_browser_hour.py
new file mode 100644
index 0000000000..2f2589b143
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_synthetics_browser_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSyntheticsBrowserHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "browser_check_calls_count": (int, none_type),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "browser_check_calls_count": "browser_check_calls_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, browser_check_calls_count: Union[int, none_type, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Number of Synthetics Browser tests run for each hour for a given organization.
+
+ :param browser_check_calls_count: Contains the number of Synthetics Browser tests run.
+ :type browser_check_calls_count: int, none_type, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if browser_check_calls_count is not unset:
+ kwargs["browser_check_calls_count"] = browser_check_calls_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_synthetics_browser_response.py b/datadog_api_client/v1/model/usage_synthetics_browser_response.py
new file mode 100644
index 0000000000..eff4937972
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_synthetics_browser_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_synthetics_browser_hour import UsageSyntheticsBrowserHour
+
+class UsageSyntheticsBrowserResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_synthetics_browser_hour import UsageSyntheticsBrowserHour
+ return {
+ "usage": ([UsageSyntheticsBrowserHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageSyntheticsBrowserHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of Synthetics Browser tests run for each hour for a given organization.
+
+ :param usage: Get hourly usage for Synthetics Browser tests.
+ :type usage: [UsageSyntheticsBrowserHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_synthetics_hour.py b/datadog_api_client/v1/model/usage_synthetics_hour.py
new file mode 100644
index 0000000000..c42050e622
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_synthetics_hour.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageSyntheticsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "check_calls_count": (int,),
+ "hour": (datetime,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "check_calls_count": "check_calls_count",
+ "hour": "hour",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, check_calls_count: Union[int, UnsetType]=unset, hour: Union[datetime, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The number of synthetics tests run for each hour for a given organization.
+
+ :param check_calls_count: Contains the number of Synthetics API tests run.
+ :type check_calls_count: int, optional
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if check_calls_count is not unset:
+ kwargs["check_calls_count"] = check_calls_count
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_synthetics_response.py b/datadog_api_client/v1/model/usage_synthetics_response.py
new file mode 100644
index 0000000000..0df72d96f0
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_synthetics_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_synthetics_hour import UsageSyntheticsHour
+
+class UsageSyntheticsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_synthetics_hour import UsageSyntheticsHour
+ return {
+ "usage": ([UsageSyntheticsHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageSyntheticsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of Synthetics API tests run for each hour for a given organization.
+
+ :param usage: Array with the number of hourly Synthetics test run for a given organization.
+ :type usage: [UsageSyntheticsHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_timeseries_hour.py b/datadog_api_client/v1/model/usage_timeseries_hour.py
new file mode 100644
index 0000000000..0d1e657b3e
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_timeseries_hour.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageTimeseriesHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "hour": (datetime,),
+ "num_custom_input_timeseries": (int,),
+ "num_custom_output_timeseries": (int,),
+ "num_custom_timeseries": (int,),
+ "org_name": (str,),
+ "public_id": (str,),
+ }
+ attribute_map = {
+ "hour": "hour",
+ "num_custom_input_timeseries": "num_custom_input_timeseries",
+ "num_custom_output_timeseries": "num_custom_output_timeseries",
+ "num_custom_timeseries": "num_custom_timeseries",
+ "org_name": "org_name",
+ "public_id": "public_id",
+ }
+
+ def __init__(self_, hour: Union[datetime, UnsetType]=unset, num_custom_input_timeseries: Union[int, UnsetType]=unset, num_custom_output_timeseries: Union[int, UnsetType]=unset, num_custom_timeseries: Union[int, UnsetType]=unset, org_name: Union[str, UnsetType]=unset, public_id: Union[str, UnsetType]=unset, **kwargs):
+ """
+ The hourly usage of timeseries.
+
+ :param hour: The hour for the usage.
+ :type hour: datetime, optional
+
+ :param num_custom_input_timeseries: Contains the number of custom metrics that are inputs for aggregations (metric configured is custom).
+ :type num_custom_input_timeseries: int, optional
+
+ :param num_custom_output_timeseries: Contains the number of custom metrics that are outputs for aggregations (metric configured is custom).
+ :type num_custom_output_timeseries: int, optional
+
+ :param num_custom_timeseries: Contains sum of non-aggregation custom metrics and custom metrics that are outputs for aggregations.
+ :type num_custom_timeseries: int, optional
+
+ :param org_name: The organization name.
+ :type org_name: str, optional
+
+ :param public_id: The organization public ID.
+ :type public_id: str, optional
+ """
+ if hour is not unset:
+ kwargs["hour"] = hour
+ if num_custom_input_timeseries is not unset:
+ kwargs["num_custom_input_timeseries"] = num_custom_input_timeseries
+ if num_custom_output_timeseries is not unset:
+ kwargs["num_custom_output_timeseries"] = num_custom_output_timeseries
+ if num_custom_timeseries is not unset:
+ kwargs["num_custom_timeseries"] = num_custom_timeseries
+ if org_name is not unset:
+ kwargs["org_name"] = org_name
+ if public_id is not unset:
+ kwargs["public_id"] = public_id
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_timeseries_response.py b/datadog_api_client/v1/model/usage_timeseries_response.py
new file mode 100644
index 0000000000..d817a3933d
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_timeseries_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_timeseries_hour import UsageTimeseriesHour
+
+class UsageTimeseriesResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_timeseries_hour import UsageTimeseriesHour
+ return {
+ "usage": ([UsageTimeseriesHour],),
+ }
+ attribute_map = {
+ "usage": "usage",
+ }
+
+ def __init__(self_, usage: Union[List[UsageTimeseriesHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing hourly usage of timeseries.
+
+ :param usage: An array of objects regarding hourly usage of timeseries.
+ :type usage: [UsageTimeseriesHour], optional
+ """
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_top_avg_metrics_hour.py b/datadog_api_client/v1/model/usage_top_avg_metrics_hour.py
new file mode 100644
index 0000000000..08574e4339
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_top_avg_metrics_hour.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_metric_category import UsageMetricCategory
+
+class UsageTopAvgMetricsHour(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_metric_category import UsageMetricCategory
+ return {
+ "avg_metric_hour": (int,),
+ "max_metric_hour": (int,),
+ "metric_category": (UsageMetricCategory,),
+ "metric_name": (str,),
+ }
+ attribute_map = {
+ "avg_metric_hour": "avg_metric_hour",
+ "max_metric_hour": "max_metric_hour",
+ "metric_category": "metric_category",
+ "metric_name": "metric_name",
+ }
+
+ def __init__(self_, avg_metric_hour: Union[int, UnsetType]=unset, max_metric_hour: Union[int, UnsetType]=unset, metric_category: Union[UsageMetricCategory, UnsetType]=unset, metric_name: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Number of hourly recorded custom metrics for a given organization.
+
+ :param avg_metric_hour: Average number of timeseries per hour in which the metric occurs.
+ :type avg_metric_hour: int, optional
+
+ :param max_metric_hour: Maximum number of timeseries per hour in which the metric occurs.
+ :type max_metric_hour: int, optional
+
+ :param metric_category: Contains the metric category.
+ :type metric_category: UsageMetricCategory, optional
+
+ :param metric_name: Contains the custom metric name.
+ :type metric_name: str, optional
+ """
+ if avg_metric_hour is not unset:
+ kwargs["avg_metric_hour"] = avg_metric_hour
+ if max_metric_hour is not unset:
+ kwargs["max_metric_hour"] = max_metric_hour
+ if metric_category is not unset:
+ kwargs["metric_category"] = metric_category
+ if metric_name is not unset:
+ kwargs["metric_name"] = metric_name
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_top_avg_metrics_metadata.py b/datadog_api_client/v1/model/usage_top_avg_metrics_metadata.py
new file mode 100644
index 0000000000..abf1673f1b
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_top_avg_metrics_metadata.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_top_avg_metrics_pagination import UsageTopAvgMetricsPagination
+
+class UsageTopAvgMetricsMetadata(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_top_avg_metrics_pagination import UsageTopAvgMetricsPagination
+ return {
+ "day": (datetime,),
+ "month": (datetime,),
+ "pagination": (UsageTopAvgMetricsPagination,),
+ }
+ attribute_map = {
+ "day": "day",
+ "month": "month",
+ "pagination": "pagination",
+ }
+
+ def __init__(self_, day: Union[datetime, UnsetType]=unset, month: Union[datetime, UnsetType]=unset, pagination: Union[UsageTopAvgMetricsPagination, UnsetType]=unset, **kwargs):
+ """
+ The object containing document metadata.
+
+ :param day: The day value from the user request that contains the returned usage data. (If day was used the request)
+ :type day: datetime, optional
+
+ :param month: The month value from the user request that contains the returned usage data. (If month was used the request)
+ :type month: datetime, optional
+
+ :param pagination: The metadata for the current pagination.
+ :type pagination: UsageTopAvgMetricsPagination, optional
+ """
+ if day is not unset:
+ kwargs["day"] = day
+ if month is not unset:
+ kwargs["month"] = month
+ if pagination is not unset:
+ kwargs["pagination"] = pagination
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_top_avg_metrics_pagination.py b/datadog_api_client/v1/model/usage_top_avg_metrics_pagination.py
new file mode 100644
index 0000000000..1568a0348a
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_top_avg_metrics_pagination.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UsageTopAvgMetricsPagination(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "limit": (int,),
+ "next_record_id": (str, none_type),
+ "total_number_of_records": (int, none_type),
+ }
+ attribute_map = {
+ "limit": "limit",
+ "next_record_id": "next_record_id",
+ "total_number_of_records": "total_number_of_records",
+ }
+
+ def __init__(self_, limit: Union[int, UnsetType]=unset, next_record_id: Union[str, none_type, UnsetType]=unset, total_number_of_records: Union[int, none_type, UnsetType]=unset, **kwargs):
+ """
+ The metadata for the current pagination.
+
+ :param limit: Maximum amount of records to be returned.
+ :type limit: int, optional
+
+ :param next_record_id: The cursor to get the next results (if any). To make the next request, use the same parameters and add ``next_record_id``.
+ :type next_record_id: str, none_type, optional
+
+ :param total_number_of_records: Total number of records.
+ :type total_number_of_records: int, none_type, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if next_record_id is not unset:
+ kwargs["next_record_id"] = next_record_id
+ if total_number_of_records is not unset:
+ kwargs["total_number_of_records"] = total_number_of_records
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/usage_top_avg_metrics_response.py b/datadog_api_client/v1/model/usage_top_avg_metrics_response.py
new file mode 100644
index 0000000000..db21947a00
--- /dev/null
+++ b/datadog_api_client/v1/model/usage_top_avg_metrics_response.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.usage_top_avg_metrics_metadata import UsageTopAvgMetricsMetadata
+ from datadog_api_client.v1.model.usage_top_avg_metrics_hour import UsageTopAvgMetricsHour
+
+class UsageTopAvgMetricsResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.usage_top_avg_metrics_metadata import UsageTopAvgMetricsMetadata
+ from datadog_api_client.v1.model.usage_top_avg_metrics_hour import UsageTopAvgMetricsHour
+ return {
+ "metadata": (UsageTopAvgMetricsMetadata,),
+ "usage": ([UsageTopAvgMetricsHour],),
+ }
+ attribute_map = {
+ "metadata": "metadata",
+ "usage": "usage",
+ }
+
+ def __init__(self_, metadata: Union[UsageTopAvgMetricsMetadata, UnsetType]=unset, usage: Union[List[UsageTopAvgMetricsHour], UnsetType]=unset, **kwargs):
+ """
+ Response containing the number of hourly recorded custom metrics for a given organization.
+
+ :param metadata: The object containing document metadata.
+ :type metadata: UsageTopAvgMetricsMetadata, optional
+
+ :param usage: Number of hourly recorded custom metrics for a given organization.
+ :type usage: [UsageTopAvgMetricsHour], optional
+ """
+ if metadata is not unset:
+ kwargs["metadata"] = metadata
+ if usage is not unset:
+ kwargs["usage"] = usage
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/user.py b/datadog_api_client/v1/model/user.py
new file mode 100644
index 0000000000..4fa9da7166
--- /dev/null
+++ b/datadog_api_client/v1/model/user.py
@@ -0,0 +1,95 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.access_role import AccessRole
+
+class User(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.access_role import AccessRole
+ return {
+ "access_role": (AccessRole,),
+ "disabled": (bool,),
+ "email": (str,),
+ "handle": (str,),
+ "icon": (str,),
+ "name": (str,),
+ "verified": (bool,),
+ }
+ attribute_map = {
+ "access_role": "access_role",
+ "disabled": "disabled",
+ "email": "email",
+ "handle": "handle",
+ "icon": "icon",
+ "name": "name",
+ "verified": "verified",
+ }
+ read_only_vars = {
+ "icon",
+ "verified",
+ }
+
+ def __init__(self_, access_role: Union[AccessRole, none_type, UnsetType]=unset, disabled: Union[bool, UnsetType]=unset, email: Union[str, UnsetType]=unset, handle: Union[str, UnsetType]=unset, icon: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, verified: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Create, edit, and disable users.
+
+ :param access_role: The access role of the user. Options are **st** (standard user), **adm** (admin user), or **ro** (read-only user).
+ :type access_role: AccessRole, none_type, optional
+
+ :param disabled: The new disabled status of the user.
+ :type disabled: bool, optional
+
+ :param email: The new email of the user.
+ :type email: str, optional
+
+ :param handle: The user handle, must be a valid email.
+ :type handle: str, optional
+
+ :param icon: Gravatar icon associated to the user.
+ :type icon: str, optional
+
+ :param name: The name of the user.
+ :type name: str, optional
+
+ :param verified: Whether or not the user logged in Datadog at least once.
+ :type verified: bool, optional
+ """
+ if access_role is not unset:
+ kwargs["access_role"] = access_role
+ if disabled is not unset:
+ kwargs["disabled"] = disabled
+ if email is not unset:
+ kwargs["email"] = email
+ if handle is not unset:
+ kwargs["handle"] = handle
+ if icon is not unset:
+ kwargs["icon"] = icon
+ if name is not unset:
+ kwargs["name"] = name
+ if verified is not unset:
+ kwargs["verified"] = verified
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/user_disable_response.py b/datadog_api_client/v1/model/user_disable_response.py
new file mode 100644
index 0000000000..7e67b917b3
--- /dev/null
+++ b/datadog_api_client/v1/model/user_disable_response.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UserDisableResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "message": (str,),
+ }
+ attribute_map = {
+ "message": "message",
+ }
+
+ def __init__(self_, message: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Array of user disabled for a given organization.
+
+ :param message: Information pertaining to a user disabled for a given organization.
+ :type message: str, optional
+ """
+ if message is not unset:
+ kwargs["message"] = message
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/user_journey_formula_compute.py b/datadog_api_client/v1/model/user_journey_formula_compute.py
new file mode 100644
index 0000000000..679114622b
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_formula_compute.py
@@ -0,0 +1,76 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.user_journey_formula_compute_metric import UserJourneyFormulaComputeMetric
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+
+class UserJourneyFormulaCompute(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+ from datadog_api_client.v1.model.user_journey_formula_compute_metric import UserJourneyFormulaComputeMetric
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+ return {
+ "aggregation": (FormulaAndFunctionEventAggregation,),
+ "interval": (float,),
+ "metric": (UserJourneyFormulaComputeMetric,),
+ "target": (UserJourneySearchTarget,),
+ }
+ attribute_map = {
+ "aggregation": "aggregation",
+ "interval": "interval",
+ "metric": "metric",
+ "target": "target",
+ }
+
+ def __init__(self_, aggregation: FormulaAndFunctionEventAggregation, interval: Union[float, UnsetType]=unset, metric: Union[UserJourneyFormulaComputeMetric, UnsetType]=unset, target: Union[UserJourneySearchTarget, UnsetType]=unset, **kwargs):
+ """
+ Compute configuration for User Journey formula queries.
+
+ :param aggregation: Aggregation methods for event platform queries.
+ :type aggregation: FormulaAndFunctionEventAggregation
+
+ :param interval: Time bucket interval in milliseconds for time series queries.
+ :type interval: float, optional
+
+ :param metric: Metric for User Journey formula compute. ``__dd.conversion`` and ``__dd.conversion_rate`` accept ``count`` and ``cardinality`` as aggregations. ``__dd.time_to_convert`` accepts ``avg`` , ``median`` , ``pc75`` , ``pc95`` , ``pc98`` , ``pc99`` , ``min`` , and ``max``.
+ :type metric: UserJourneyFormulaComputeMetric, optional
+
+ :param target: Target for user journey search.
+ :type target: UserJourneySearchTarget, optional
+ """
+ if interval is not unset:
+ kwargs["interval"] = interval
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.aggregation = aggregation
diff --git a/datadog_api_client/v1/model/user_journey_formula_compute_metric.py b/datadog_api_client/v1/model/user_journey_formula_compute_metric.py
new file mode 100644
index 0000000000..fb9e5664af
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_formula_compute_metric.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class UserJourneyFormulaComputeMetric(ModelSimple):
+ """
+ Metric for User Journey formula compute. `__dd.conversion` and `__dd.conversion_rate` accept `count` and `cardinality` as aggregations. `__dd.time_to_convert` accepts `avg`, `median`, `pc75`, `pc95`, `pc98`, `pc99`, `min`, and `max`.
+
+ :param value: Must be one of ["__dd.conversion", "__dd.conversion_rate", "__dd.time_to_convert"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "__dd.conversion",
+ "__dd.conversion_rate",
+ "__dd.time_to_convert",
+ }
+ CONVERSION: ClassVar["UserJourneyFormulaComputeMetric"]
+ CONVERSION_RATE: ClassVar["UserJourneyFormulaComputeMetric"]
+ TIME_TO_CONVERT: ClassVar["UserJourneyFormulaComputeMetric"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+UserJourneyFormulaComputeMetric.CONVERSION = UserJourneyFormulaComputeMetric("__dd.conversion")
+UserJourneyFormulaComputeMetric.CONVERSION_RATE = UserJourneyFormulaComputeMetric("__dd.conversion_rate")
+UserJourneyFormulaComputeMetric.TIME_TO_CONVERT = UserJourneyFormulaComputeMetric("__dd.time_to_convert")
diff --git a/datadog_api_client/v1/model/user_journey_formula_group_by.py b/datadog_api_client/v1/model/user_journey_formula_group_by.py
new file mode 100644
index 0000000000..b37f728ec8
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_formula_group_by.py
@@ -0,0 +1,83 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+
+class UserJourneyFormulaGroupBy(ModelNormal):
+ validations = {
+ "limit": {
+ "inclusive_maximum": 10000,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+ return {
+ "facet": (str,),
+ "limit": (int,),
+ "should_exclude_missing": (bool,),
+ "sort": (FormulaAndFunctionEventQueryGroupBySort,),
+ "target": (UserJourneySearchTarget,),
+ }
+ attribute_map = {
+ "facet": "facet",
+ "limit": "limit",
+ "should_exclude_missing": "should_exclude_missing",
+ "sort": "sort",
+ "target": "target",
+ }
+
+ def __init__(self_, facet: str, limit: Union[int, UnsetType]=unset, should_exclude_missing: Union[bool, UnsetType]=unset, sort: Union[FormulaAndFunctionEventQueryGroupBySort, UnsetType]=unset, target: Union[UserJourneySearchTarget, UnsetType]=unset, **kwargs):
+ """
+ Group by configuration for User Journey formula queries.
+
+ :param facet: Facet name to group by.
+ :type facet: str
+
+ :param limit: Maximum number of groups to return.
+ :type limit: int, optional
+
+ :param should_exclude_missing: Whether to exclude events missing the group-by facet.
+ :type should_exclude_missing: bool, optional
+
+ :param sort: Options for sorting group by results.
+ :type sort: FormulaAndFunctionEventQueryGroupBySort, optional
+
+ :param target: Target for user journey search.
+ :type target: UserJourneySearchTarget, optional
+ """
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if should_exclude_missing is not unset:
+ kwargs["should_exclude_missing"] = should_exclude_missing
+ if sort is not unset:
+ kwargs["sort"] = sort
+ if target is not unset:
+ kwargs["target"] = target
+ super().__init__(kwargs)
+
+
+ self_.facet = facet
diff --git a/datadog_api_client/v1/model/user_journey_join_keys.py b/datadog_api_client/v1/model/user_journey_join_keys.py
new file mode 100644
index 0000000000..af00a6af68
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_join_keys.py
@@ -0,0 +1,52 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UserJourneyJoinKeys(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "primary": (str,),
+ "secondary": ([str],),
+ }
+ attribute_map = {
+ "primary": "primary",
+ "secondary": "secondary",
+ }
+
+ def __init__(self_, primary: str, secondary: Union[List[str], UnsetType]=unset, **kwargs):
+ """
+ Join keys for user journey queries.
+
+ :param primary: Primary join key.
+ :type primary: str
+
+ :param secondary: Secondary join keys.
+ :type secondary: [str], optional
+ """
+ if secondary is not unset:
+ kwargs["secondary"] = secondary
+ super().__init__(kwargs)
+
+
+ self_.primary = primary
diff --git a/datadog_api_client/v1/model/user_journey_search.py b/datadog_api_client/v1/model/user_journey_search.py
new file mode 100644
index 0000000000..a626e37ab1
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_search.py
@@ -0,0 +1,82 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.user_journey_search_filters import UserJourneySearchFilters
+ from datadog_api_client.v1.model.user_journey_join_keys import UserJourneyJoinKeys
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+
+class UserJourneySearch(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.user_journey_search_filters import UserJourneySearchFilters
+ from datadog_api_client.v1.model.user_journey_join_keys import UserJourneyJoinKeys
+ from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+ return {
+ "expression": (str,),
+ "filters": (UserJourneySearchFilters,),
+ "join_keys": (UserJourneyJoinKeys,),
+ "node_objects": ({str: (ProductAnalyticsBaseQuery,)},),
+ "step_aliases": ({str: (str,)},),
+ }
+ attribute_map = {
+ "expression": "expression",
+ "filters": "filters",
+ "join_keys": "join_keys",
+ "node_objects": "node_objects",
+ "step_aliases": "step_aliases",
+ }
+
+ def __init__(self_, expression: str, node_objects: Dict[str, ProductAnalyticsBaseQuery], filters: Union[UserJourneySearchFilters, UnsetType]=unset, join_keys: Union[UserJourneyJoinKeys, UnsetType]=unset, step_aliases: Union[Dict[str, str], UnsetType]=unset, **kwargs):
+ """
+ User journey search configuration.
+
+ :param expression: Expression string.
+ :type expression: str
+
+ :param filters: Filters for user journey search.
+ :type filters: UserJourneySearchFilters, optional
+
+ :param join_keys: Join keys for user journey queries.
+ :type join_keys: UserJourneyJoinKeys, optional
+
+ :param node_objects: Node objects mapping.
+ :type node_objects: {str: (ProductAnalyticsBaseQuery,)}
+
+ :param step_aliases: Step aliases mapping.
+ :type step_aliases: {str: (str,)}, optional
+ """
+ if filters is not unset:
+ kwargs["filters"] = filters
+ if join_keys is not unset:
+ kwargs["join_keys"] = join_keys
+ if step_aliases is not unset:
+ kwargs["step_aliases"] = step_aliases
+ super().__init__(kwargs)
+
+
+ self_.expression = expression
+ self_.node_objects = node_objects
diff --git a/datadog_api_client/v1/model/user_journey_search_filters.py b/datadog_api_client/v1/model/user_journey_search_filters.py
new file mode 100644
index 0000000000..3ade896c21
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_search_filters.py
@@ -0,0 +1,65 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ from datadog_api_client.v1.model.user_journey_search_graph_filter import UserJourneySearchGraphFilter
+
+class UserJourneySearchFilters(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+ from datadog_api_client.v1.model.user_journey_search_graph_filter import UserJourneySearchGraphFilter
+ return {
+ "audience_filters": (ProductAnalyticsAudienceFilters,),
+ "graph_filters": ([UserJourneySearchGraphFilter],),
+ "string_filter": (str,),
+ }
+ attribute_map = {
+ "audience_filters": "audience_filters",
+ "graph_filters": "graph_filters",
+ "string_filter": "string_filter",
+ }
+
+ def __init__(self_, audience_filters: Union[ProductAnalyticsAudienceFilters, UnsetType]=unset, graph_filters: Union[List[UserJourneySearchGraphFilter], UnsetType]=unset, string_filter: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Filters for user journey search.
+
+ :param audience_filters: Product Analytics/RUM audience filters.
+ :type audience_filters: ProductAnalyticsAudienceFilters, optional
+
+ :param graph_filters: Graph filters.
+ :type graph_filters: [UserJourneySearchGraphFilter], optional
+
+ :param string_filter: String filter.
+ :type string_filter: str, optional
+ """
+ if audience_filters is not unset:
+ kwargs["audience_filters"] = audience_filters
+ if graph_filters is not unset:
+ kwargs["graph_filters"] = graph_filters
+ if string_filter is not unset:
+ kwargs["string_filter"] = string_filter
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/user_journey_search_graph_filter.py b/datadog_api_client/v1/model/user_journey_search_graph_filter.py
new file mode 100644
index 0000000000..603d96a284
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_search_graph_filter.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+
+class UserJourneySearchGraphFilter(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+ return {
+ "name": (str,),
+ "operator": (str,),
+ "target": (UserJourneySearchTarget,),
+ "value": (int,),
+ }
+ attribute_map = {
+ "name": "name",
+ "operator": "operator",
+ "target": "target",
+ "value": "value",
+ }
+
+ def __init__(self_, name: Union[str, UnsetType]=unset, operator: Union[str, UnsetType]=unset, target: Union[UserJourneySearchTarget, UnsetType]=unset, value: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Graph filter for user journey search.
+
+ :param name: Filter name.
+ :type name: str, optional
+
+ :param operator: Filter operator.
+ :type operator: str, optional
+
+ :param target: Target for user journey search.
+ :type target: UserJourneySearchTarget, optional
+
+ :param value: Filter value.
+ :type value: int, optional
+ """
+ if name is not unset:
+ kwargs["name"] = name
+ if operator is not unset:
+ kwargs["operator"] = operator
+ if target is not unset:
+ kwargs["target"] = target
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/user_journey_search_target.py b/datadog_api_client/v1/model/user_journey_search_target.py
new file mode 100644
index 0000000000..fb6d74011f
--- /dev/null
+++ b/datadog_api_client/v1/model/user_journey_search_target.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class UserJourneySearchTarget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "end": (str,),
+ "start": (str,),
+ "type": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "end": "end",
+ "start": "start",
+ "type": "type",
+ "value": "value",
+ }
+
+ def __init__(self_, type: str, end: Union[str, UnsetType]=unset, start: Union[str, UnsetType]=unset, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Target for user journey search.
+
+ :param end: End value.
+ :type end: str, optional
+
+ :param start: Start value.
+ :type start: str, optional
+
+ :param type: Target type.
+ :type type: str
+
+ :param value: Target value.
+ :type value: str, optional
+ """
+ if end is not unset:
+ kwargs["end"] = end
+ if start is not unset:
+ kwargs["start"] = start
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
+ self_.type = type
diff --git a/datadog_api_client/v1/model/user_list_response.py b/datadog_api_client/v1/model/user_list_response.py
new file mode 100644
index 0000000000..452d035238
--- /dev/null
+++ b/datadog_api_client/v1/model/user_list_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.user import User
+
+class UserListResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.user import User
+ return {
+ "users": ([User],),
+ }
+ attribute_map = {
+ "users": "users",
+ }
+
+ def __init__(self_, users: Union[List[User], UnsetType]=unset, **kwargs):
+ """
+ Array of Datadog users for a given organization.
+
+ :param users: Array of users.
+ :type users: [User], optional
+ """
+ if users is not unset:
+ kwargs["users"] = users
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/user_response.py b/datadog_api_client/v1/model/user_response.py
new file mode 100644
index 0000000000..425c27c7da
--- /dev/null
+++ b/datadog_api_client/v1/model/user_response.py
@@ -0,0 +1,49 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.user import User
+
+class UserResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.user import User
+ return {
+ "user": (User,),
+ }
+ attribute_map = {
+ "user": "user",
+ }
+
+ def __init__(self_, user: Union[User, UnsetType]=unset, **kwargs):
+ """
+ A Datadog User.
+
+ :param user: Create, edit, and disable users.
+ :type user: User, optional
+ """
+ if user is not unset:
+ kwargs["user"] = user
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/viewing_preferences.py b/datadog_api_client/v1/model/viewing_preferences.py
new file mode 100644
index 0000000000..ad7180a64f
--- /dev/null
+++ b/datadog_api_client/v1/model/viewing_preferences.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.viewing_preferences_theme import ViewingPreferencesTheme
+
+class ViewingPreferences(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.viewing_preferences_theme import ViewingPreferencesTheme
+ return {
+ "high_density": (bool,),
+ "theme": (ViewingPreferencesTheme,),
+ }
+ attribute_map = {
+ "high_density": "high_density",
+ "theme": "theme",
+ }
+
+ def __init__(self_, high_density: Union[bool, UnsetType]=unset, theme: Union[ViewingPreferencesTheme, UnsetType]=unset, **kwargs):
+ """
+ The viewing preferences for a shared dashboard.
+
+ :param high_density: Whether the widgets on the shared dashboard should be displayed with high density.
+ :type high_density: bool, optional
+
+ :param theme: The theme of the shared dashboard view. "system" follows your system's default viewing theme.
+ :type theme: ViewingPreferencesTheme, optional
+ """
+ if high_density is not unset:
+ kwargs["high_density"] = high_density
+ if theme is not unset:
+ kwargs["theme"] = theme
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/viewing_preferences_theme.py b/datadog_api_client/v1/model/viewing_preferences_theme.py
new file mode 100644
index 0000000000..41aead1d08
--- /dev/null
+++ b/datadog_api_client/v1/model/viewing_preferences_theme.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class ViewingPreferencesTheme(ModelSimple):
+ """
+ The theme of the shared dashboard view. "system" follows your system's default viewing theme.
+
+ :param value: Must be one of ["system", "light", "dark"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "system",
+ "light",
+ "dark",
+ }
+ SYSTEM: ClassVar["ViewingPreferencesTheme"]
+ LIGHT: ClassVar["ViewingPreferencesTheme"]
+ DARK: ClassVar["ViewingPreferencesTheme"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+ViewingPreferencesTheme.SYSTEM = ViewingPreferencesTheme("system")
+ViewingPreferencesTheme.LIGHT = ViewingPreferencesTheme("light")
+ViewingPreferencesTheme.DARK = ViewingPreferencesTheme("dark")
diff --git a/datadog_api_client/v1/model/webhooks_integration.py b/datadog_api_client/v1/model/webhooks_integration.py
new file mode 100644
index 0000000000..d311415a47
--- /dev/null
+++ b/datadog_api_client/v1/model/webhooks_integration.py
@@ -0,0 +1,81 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.webhooks_integration_encoding import WebhooksIntegrationEncoding
+
+class WebhooksIntegration(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.webhooks_integration_encoding import WebhooksIntegrationEncoding
+ return {
+ "custom_headers": (str, none_type),
+ "encode_as": (WebhooksIntegrationEncoding,),
+ "name": (str,),
+ "payload": (str, none_type),
+ "url": (str,),
+ }
+ attribute_map = {
+ "custom_headers": "custom_headers",
+ "encode_as": "encode_as",
+ "name": "name",
+ "payload": "payload",
+ "url": "url",
+ }
+
+ def __init__(self_, name: str, url: str, custom_headers: Union[str, none_type, UnsetType]=unset, encode_as: Union[WebhooksIntegrationEncoding, UnsetType]=unset, payload: Union[str, none_type, UnsetType]=unset, **kwargs):
+ """
+ Datadog-Webhooks integration.
+
+ :param custom_headers: If ``null`` , uses no header.
+ If given a JSON payload, these will be headers attached to your webhook.
+ :type custom_headers: str, none_type, optional
+
+ :param encode_as: Encoding type. Can be given either ``json`` or ``form``.
+ :type encode_as: WebhooksIntegrationEncoding, optional
+
+ :param name: The name of the webhook. It corresponds with ````.
+ Learn more on how to use it in
+ `monitor notifications `_.
+ :type name: str
+
+ :param payload: If ``null`` , uses the default payload.
+ If given a JSON payload, the webhook returns the payload
+ specified by the given payload.
+ `Webhooks variable usage `_.
+ :type payload: str, none_type, optional
+
+ :param url: URL of the webhook.
+ :type url: str
+ """
+ if custom_headers is not unset:
+ kwargs["custom_headers"] = custom_headers
+ if encode_as is not unset:
+ kwargs["encode_as"] = encode_as
+ if payload is not unset:
+ kwargs["payload"] = payload
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.url = url
diff --git a/datadog_api_client/v1/model/webhooks_integration_custom_variable.py b/datadog_api_client/v1/model/webhooks_integration_custom_variable.py
new file mode 100644
index 0000000000..83201c400b
--- /dev/null
+++ b/datadog_api_client/v1/model/webhooks_integration_custom_variable.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WebhooksIntegrationCustomVariable(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "is_secret": (bool,),
+ "name": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "is_secret": "is_secret",
+ "name": "name",
+ "value": "value",
+ }
+
+ def __init__(self_, is_secret: bool, name: str, value: str, **kwargs):
+ """
+ Custom variable for Webhook integration.
+
+ :param is_secret: Make custom variable is secret or not.
+ If the custom variable is secret, the value is not returned in the response payload.
+ :type is_secret: bool
+
+ :param name: The name of the variable. It corresponds with ````.
+ :type name: str
+
+ :param value: Value of the custom variable.
+ :type value: str
+ """
+ super().__init__(kwargs)
+
+
+ self_.is_secret = is_secret
+ self_.name = name
+ self_.value = value
diff --git a/datadog_api_client/v1/model/webhooks_integration_custom_variable_response.py b/datadog_api_client/v1/model/webhooks_integration_custom_variable_response.py
new file mode 100644
index 0000000000..6541acb8de
--- /dev/null
+++ b/datadog_api_client/v1/model/webhooks_integration_custom_variable_response.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WebhooksIntegrationCustomVariableResponse(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "is_secret": (bool,),
+ "name": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "is_secret": "is_secret",
+ "name": "name",
+ "value": "value",
+ }
+
+ def __init__(self_, is_secret: bool, name: str, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Custom variable for Webhook integration.
+
+ :param is_secret: Make custom variable is secret or not.
+ If the custom variable is secret, the value is not returned in the response payload.
+ :type is_secret: bool
+
+ :param name: The name of the variable. It corresponds with ````. It must only contains upper-case characters, integers or underscores.
+ :type name: str
+
+ :param value: Value of the custom variable. It won't be returned if the variable is secret.
+ :type value: str, optional
+ """
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
+ self_.is_secret = is_secret
+ self_.name = name
diff --git a/datadog_api_client/v1/model/webhooks_integration_custom_variable_update_request.py b/datadog_api_client/v1/model/webhooks_integration_custom_variable_update_request.py
new file mode 100644
index 0000000000..f23c5ed1f5
--- /dev/null
+++ b/datadog_api_client/v1/model/webhooks_integration_custom_variable_update_request.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WebhooksIntegrationCustomVariableUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "is_secret": (bool,),
+ "name": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "is_secret": "is_secret",
+ "name": "name",
+ "value": "value",
+ }
+
+ def __init__(self_, is_secret: Union[bool, UnsetType]=unset, name: Union[str, UnsetType]=unset, value: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Update request of a custom variable object.
+
+ *All properties are optional.*
+
+ :param is_secret: Make custom variable is secret or not.
+ If the custom variable is secret, the value is not returned in the response payload.
+ :type is_secret: bool, optional
+
+ :param name: The name of the variable. It corresponds with ````. It must only contains upper-case characters, integers or underscores.
+ :type name: str, optional
+
+ :param value: Value of the custom variable.
+ :type value: str, optional
+ """
+ if is_secret is not unset:
+ kwargs["is_secret"] = is_secret
+ if name is not unset:
+ kwargs["name"] = name
+ if value is not unset:
+ kwargs["value"] = value
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/webhooks_integration_encoding.py b/datadog_api_client/v1/model/webhooks_integration_encoding.py
new file mode 100644
index 0000000000..efbb15e91a
--- /dev/null
+++ b/datadog_api_client/v1/model/webhooks_integration_encoding.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WebhooksIntegrationEncoding(ModelSimple):
+ """
+ Encoding type. Can be given either `json` or `form`.
+
+ :param value: If omitted defaults to "json". Must be one of ["json", "form"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "json",
+ "form",
+ }
+ JSON: ClassVar["WebhooksIntegrationEncoding"]
+ FORM: ClassVar["WebhooksIntegrationEncoding"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WebhooksIntegrationEncoding.JSON = WebhooksIntegrationEncoding("json")
+WebhooksIntegrationEncoding.FORM = WebhooksIntegrationEncoding("form")
diff --git a/datadog_api_client/v1/model/webhooks_integration_update_request.py b/datadog_api_client/v1/model/webhooks_integration_update_request.py
new file mode 100644
index 0000000000..850e6e358b
--- /dev/null
+++ b/datadog_api_client/v1/model/webhooks_integration_update_request.py
@@ -0,0 +1,85 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.webhooks_integration_encoding import WebhooksIntegrationEncoding
+
+class WebhooksIntegrationUpdateRequest(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.webhooks_integration_encoding import WebhooksIntegrationEncoding
+ return {
+ "custom_headers": (str,),
+ "encode_as": (WebhooksIntegrationEncoding,),
+ "name": (str,),
+ "payload": (str, none_type),
+ "url": (str,),
+ }
+ attribute_map = {
+ "custom_headers": "custom_headers",
+ "encode_as": "encode_as",
+ "name": "name",
+ "payload": "payload",
+ "url": "url",
+ }
+
+ def __init__(self_, custom_headers: Union[str, UnsetType]=unset, encode_as: Union[WebhooksIntegrationEncoding, UnsetType]=unset, name: Union[str, UnsetType]=unset, payload: Union[str, none_type, UnsetType]=unset, url: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Update request of a Webhooks integration object.
+
+ *All properties are optional.*
+
+ :param custom_headers: If ``null`` , uses no header.
+ If given a JSON payload, these will be headers attached to your webhook.
+ :type custom_headers: str, optional
+
+ :param encode_as: Encoding type. Can be given either ``json`` or ``form``.
+ :type encode_as: WebhooksIntegrationEncoding, optional
+
+ :param name: The name of the webhook. It corresponds with ````.
+ Learn more on how to use it in
+ `monitor notifications `_.
+ :type name: str, optional
+
+ :param payload: If ``null`` , uses the default payload.
+ If given a JSON payload, the webhook returns the payload
+ specified by the given payload.
+ `Webhooks variable usage `_.
+ :type payload: str, none_type, optional
+
+ :param url: URL of the webhook.
+ :type url: str, optional
+ """
+ if custom_headers is not unset:
+ kwargs["custom_headers"] = custom_headers
+ if encode_as is not unset:
+ kwargs["encode_as"] = encode_as
+ if name is not unset:
+ kwargs["name"] = name
+ if payload is not unset:
+ kwargs["payload"] = payload
+ if url is not unset:
+ kwargs["url"] = url
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget.py b/datadog_api_client/v1/model/widget.py
new file mode 100644
index 0000000000..5a802a68fa
--- /dev/null
+++ b/datadog_api_client/v1/model/widget.py
@@ -0,0 +1,113 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_definition import WidgetDefinition
+ from datadog_api_client.v1.model.widget_layout import WidgetLayout
+ from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition
+ from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition
+ from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+ from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+ from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition
+ from datadog_api_client.v1.model.cohort_widget_definition import CohortWidgetDefinition
+ from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+ from datadog_api_client.v1.model.event_stream_widget_definition import EventStreamWidgetDefinition
+ from datadog_api_client.v1.model.event_timeline_widget_definition import EventTimelineWidgetDefinition
+ from datadog_api_client.v1.model.free_text_widget_definition import FreeTextWidgetDefinition
+ from datadog_api_client.v1.model.funnel_widget_definition import FunnelWidgetDefinition
+ from datadog_api_client.v1.model.product_analytics_funnel_widget_definition import ProductAnalyticsFunnelWidgetDefinition
+ from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+ from datadog_api_client.v1.model.group_widget_definition import GroupWidgetDefinition
+ from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+ from datadog_api_client.v1.model.host_map_widget_definition import HostMapWidgetDefinition
+ from datadog_api_client.v1.model.i_frame_widget_definition import IFrameWidgetDefinition
+ from datadog_api_client.v1.model.image_widget_definition import ImageWidgetDefinition
+ from datadog_api_client.v1.model.list_stream_widget_definition import ListStreamWidgetDefinition
+ from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+ from datadog_api_client.v1.model.monitor_summary_widget_definition import MonitorSummaryWidgetDefinition
+ from datadog_api_client.v1.model.note_widget_definition import NoteWidgetDefinition
+ from datadog_api_client.v1.model.powerpack_widget_definition import PowerpackWidgetDefinition
+ from datadog_api_client.v1.model.point_plot_widget_definition import PointPlotWidgetDefinition
+ from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+ from datadog_api_client.v1.model.retention_curve_widget_definition import RetentionCurveWidgetDefinition
+ from datadog_api_client.v1.model.run_workflow_widget_definition import RunWorkflowWidgetDefinition
+ from datadog_api_client.v1.model.slo_list_widget_definition import SLOListWidgetDefinition
+ from datadog_api_client.v1.model.slo_widget_definition import SLOWidgetDefinition
+ from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+ from datadog_api_client.v1.model.sankey_widget_definition import SankeyWidgetDefinition
+ from datadog_api_client.v1.model.service_map_widget_definition import ServiceMapWidgetDefinition
+ from datadog_api_client.v1.model.service_summary_widget_definition import ServiceSummaryWidgetDefinition
+ from datadog_api_client.v1.model.split_graph_widget_definition import SplitGraphWidgetDefinition
+ from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+ from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.topology_map_widget_definition import TopologyMapWidgetDefinition
+ from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+ from datadog_api_client.v1.model.wildcard_widget_definition import WildcardWidgetDefinition
+
+class Widget(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_definition import WidgetDefinition
+ from datadog_api_client.v1.model.widget_layout import WidgetLayout
+ return {
+ "definition": (WidgetDefinition,),
+ "id": (int,),
+ "layout": (WidgetLayout,),
+ }
+ attribute_map = {
+ "definition": "definition",
+ "id": "id",
+ "layout": "layout",
+ }
+
+ def __init__(self_, definition: Union[WidgetDefinition, AlertGraphWidgetDefinition, AlertValueWidgetDefinition, BarChartWidgetDefinition, ChangeWidgetDefinition, CheckStatusWidgetDefinition, CohortWidgetDefinition, DistributionWidgetDefinition, EventStreamWidgetDefinition, EventTimelineWidgetDefinition, FreeTextWidgetDefinition, FunnelWidgetDefinition, ProductAnalyticsFunnelWidgetDefinition, GeomapWidgetDefinition, GroupWidgetDefinition, HeatMapWidgetDefinition, HostMapWidgetDefinition, IFrameWidgetDefinition, ImageWidgetDefinition, ListStreamWidgetDefinition, LogStreamWidgetDefinition, MonitorSummaryWidgetDefinition, NoteWidgetDefinition, PowerpackWidgetDefinition, PointPlotWidgetDefinition, QueryValueWidgetDefinition, RetentionCurveWidgetDefinition, RunWorkflowWidgetDefinition, SLOListWidgetDefinition, SLOWidgetDefinition, ScatterPlotWidgetDefinition, SankeyWidgetDefinition, ServiceMapWidgetDefinition, ServiceSummaryWidgetDefinition, SplitGraphWidgetDefinition, SunburstWidgetDefinition, TableWidgetDefinition, TimeseriesWidgetDefinition, ToplistWidgetDefinition, TopologyMapWidgetDefinition, TreeMapWidgetDefinition, WildcardWidgetDefinition], id: Union[int, UnsetType]=unset, layout: Union[WidgetLayout, UnsetType]=unset, **kwargs):
+ """
+ Information about widget.
+
+ **Note** : The ``layout`` property is required for widgets in dashboards with ``free`` ``layout_type``.
+ For the **new dashboard layout** , the ``layout`` property depends on the ``reflow_type`` of the dashboard.
+
+ .. code-block::
+
+ - If `reflow_type` is `fixed`, `layout` is required.
+ - If `reflow_type` is `auto`, `layout` should not be set.
+
+ :param definition: `Definition of the widget `_.
+ :type definition: WidgetDefinition
+
+ :param id: ID of the widget.
+ :type id: int, optional
+
+ :param layout: The layout for a widget on a ``free`` or **new dashboard layout** dashboard.
+ :type layout: WidgetLayout, optional
+ """
+ if id is not unset:
+ kwargs["id"] = id
+ if layout is not unset:
+ kwargs["layout"] = layout
+ super().__init__(kwargs)
+
+
+ self_.definition = definition
diff --git a/datadog_api_client/v1/model/widget_aggregator.py b/datadog_api_client/v1/model/widget_aggregator.py
new file mode 100644
index 0000000000..cff9962699
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_aggregator.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetAggregator(ModelSimple):
+ """
+ Aggregator used for the request.
+
+ :param value: Must be one of ["avg", "last", "max", "min", "sum", "percentile"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "avg",
+ "last",
+ "max",
+ "min",
+ "sum",
+ "percentile",
+ }
+ AVERAGE: ClassVar["WidgetAggregator"]
+ LAST: ClassVar["WidgetAggregator"]
+ MAXIMUM: ClassVar["WidgetAggregator"]
+ MINIMUM: ClassVar["WidgetAggregator"]
+ SUM: ClassVar["WidgetAggregator"]
+ PERCENTILE: ClassVar["WidgetAggregator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetAggregator.AVERAGE = WidgetAggregator("avg")
+WidgetAggregator.LAST = WidgetAggregator("last")
+WidgetAggregator.MAXIMUM = WidgetAggregator("max")
+WidgetAggregator.MINIMUM = WidgetAggregator("min")
+WidgetAggregator.SUM = WidgetAggregator("sum")
+WidgetAggregator.PERCENTILE = WidgetAggregator("percentile")
diff --git a/datadog_api_client/v1/model/widget_axis.py b/datadog_api_client/v1/model/widget_axis.py
new file mode 100644
index 0000000000..2066a358aa
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_axis.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetAxis(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "include_zero": (bool,),
+ "label": (str,),
+ "max": (str,),
+ "min": (str,),
+ "scale": (str,),
+ }
+ attribute_map = {
+ "include_zero": "include_zero",
+ "label": "label",
+ "max": "max",
+ "min": "min",
+ "scale": "scale",
+ }
+
+ def __init__(self_, include_zero: Union[bool, UnsetType]=unset, label: Union[str, UnsetType]=unset, max: Union[str, UnsetType]=unset, min: Union[str, UnsetType]=unset, scale: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Axis controls for the widget.
+
+ :param include_zero: Set to ``true`` to include zero.
+ :type include_zero: bool, optional
+
+ :param label: The label of the axis to display on the graph. Only usable on Scatterplot Widgets.
+ :type label: str, optional
+
+ :param max: Specifies maximum numeric value to show on the axis. Defaults to ``auto``.
+ :type max: str, optional
+
+ :param min: Specifies minimum numeric value to show on the axis. Defaults to ``auto``.
+ :type min: str, optional
+
+ :param scale: Specifies the scale type. Possible values are ``linear`` , ``log`` , ``sqrt`` , and ``pow##`` (for example ``pow2`` or ``pow0.5`` ).
+ :type scale: str, optional
+ """
+ if include_zero is not unset:
+ kwargs["include_zero"] = include_zero
+ if label is not unset:
+ kwargs["label"] = label
+ if max is not unset:
+ kwargs["max"] = max
+ if min is not unset:
+ kwargs["min"] = min
+ if scale is not unset:
+ kwargs["scale"] = scale
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_change_type.py b/datadog_api_client/v1/model/widget_change_type.py
new file mode 100644
index 0000000000..ec0141e580
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_change_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetChangeType(ModelSimple):
+ """
+ Show the absolute or the relative change.
+
+ :param value: Must be one of ["absolute", "relative"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "absolute",
+ "relative",
+ }
+ ABSOLUTE: ClassVar["WidgetChangeType"]
+ RELATIVE: ClassVar["WidgetChangeType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetChangeType.ABSOLUTE = WidgetChangeType("absolute")
+WidgetChangeType.RELATIVE = WidgetChangeType("relative")
diff --git a/datadog_api_client/v1/model/widget_color_preference.py b/datadog_api_client/v1/model/widget_color_preference.py
new file mode 100644
index 0000000000..01fabf39b6
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_color_preference.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetColorPreference(ModelSimple):
+ """
+ Which color to use on the widget.
+
+ :param value: Must be one of ["background", "text"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "background",
+ "text",
+ }
+ BACKGROUND: ClassVar["WidgetColorPreference"]
+ TEXT: ClassVar["WidgetColorPreference"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetColorPreference.BACKGROUND = WidgetColorPreference("background")
+WidgetColorPreference.TEXT = WidgetColorPreference("text")
diff --git a/datadog_api_client/v1/model/widget_comparator.py b/datadog_api_client/v1/model/widget_comparator.py
new file mode 100644
index 0000000000..2ff90fad54
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_comparator.py
@@ -0,0 +1,57 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetComparator(ModelSimple):
+ """
+ Comparator to apply.
+
+ :param value: Must be one of ["=", ">", ">=", "<", "<="].
+ :type value: str
+ """
+
+ allowed_values = {
+ "=",
+ ">",
+ ">=",
+ "<",
+ "<=",
+ }
+ EQUAL_TO: ClassVar["WidgetComparator"]
+ GREATER_THAN: ClassVar["WidgetComparator"]
+ GREATER_THAN_OR_EQUAL_TO: ClassVar["WidgetComparator"]
+ LESS_THAN: ClassVar["WidgetComparator"]
+ LESS_THAN_OR_EQUAL_TO: ClassVar["WidgetComparator"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetComparator.EQUAL_TO = WidgetComparator("=")
+WidgetComparator.GREATER_THAN = WidgetComparator(">")
+WidgetComparator.GREATER_THAN_OR_EQUAL_TO = WidgetComparator(">=")
+WidgetComparator.LESS_THAN = WidgetComparator("<")
+WidgetComparator.LESS_THAN_OR_EQUAL_TO = WidgetComparator("<=")
diff --git a/datadog_api_client/v1/model/widget_compare_to.py b/datadog_api_client/v1/model/widget_compare_to.py
new file mode 100644
index 0000000000..4bc46a263c
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_compare_to.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetCompareTo(ModelSimple):
+ """
+ Timeframe used for the change comparison.
+
+ :param value: Must be one of ["hour_before", "day_before", "week_before", "month_before"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "hour_before",
+ "day_before",
+ "week_before",
+ "month_before",
+ }
+ HOUR_BEFORE: ClassVar["WidgetCompareTo"]
+ DAY_BEFORE: ClassVar["WidgetCompareTo"]
+ WEEK_BEFORE: ClassVar["WidgetCompareTo"]
+ MONTH_BEFORE: ClassVar["WidgetCompareTo"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetCompareTo.HOUR_BEFORE = WidgetCompareTo("hour_before")
+WidgetCompareTo.DAY_BEFORE = WidgetCompareTo("day_before")
+WidgetCompareTo.WEEK_BEFORE = WidgetCompareTo("week_before")
+WidgetCompareTo.MONTH_BEFORE = WidgetCompareTo("month_before")
diff --git a/datadog_api_client/v1/model/widget_conditional_format.py b/datadog_api_client/v1/model/widget_conditional_format.py
new file mode 100644
index 0000000000..2dea20f90d
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_conditional_format.py
@@ -0,0 +1,104 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_comparator import WidgetComparator
+ from datadog_api_client.v1.model.widget_palette import WidgetPalette
+
+class WidgetConditionalFormat(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_comparator import WidgetComparator
+ from datadog_api_client.v1.model.widget_palette import WidgetPalette
+ return {
+ "comparator": (WidgetComparator,),
+ "custom_bg_color": (str,),
+ "custom_fg_color": (str,),
+ "hide_value": (bool,),
+ "image_url": (str,),
+ "metric": (str,),
+ "palette": (WidgetPalette,),
+ "timeframe": (str,),
+ "value": (float,),
+ }
+ attribute_map = {
+ "comparator": "comparator",
+ "custom_bg_color": "custom_bg_color",
+ "custom_fg_color": "custom_fg_color",
+ "hide_value": "hide_value",
+ "image_url": "image_url",
+ "metric": "metric",
+ "palette": "palette",
+ "timeframe": "timeframe",
+ "value": "value",
+ }
+
+ def __init__(self_, comparator: WidgetComparator, palette: WidgetPalette, value: float, custom_bg_color: Union[str, UnsetType]=unset, custom_fg_color: Union[str, UnsetType]=unset, hide_value: Union[bool, UnsetType]=unset, image_url: Union[str, UnsetType]=unset, metric: Union[str, UnsetType]=unset, timeframe: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Define a conditional format for the widget.
+
+ :param comparator: Comparator to apply.
+ :type comparator: WidgetComparator
+
+ :param custom_bg_color: Color palette to apply to the background, same values available as palette.
+ :type custom_bg_color: str, optional
+
+ :param custom_fg_color: Color palette to apply to the foreground, same values available as palette.
+ :type custom_fg_color: str, optional
+
+ :param hide_value: True hides values.
+ :type hide_value: bool, optional
+
+ :param image_url: Displays an image as the background.
+ :type image_url: str, optional
+
+ :param metric: Metric from the request to correlate this conditional format with.
+ :type metric: str, optional
+
+ :param palette: Color palette to apply.
+ :type palette: WidgetPalette
+
+ :param timeframe: Defines the displayed timeframe.
+ :type timeframe: str, optional
+
+ :param value: Value for the comparator.
+ :type value: float
+ """
+ if custom_bg_color is not unset:
+ kwargs["custom_bg_color"] = custom_bg_color
+ if custom_fg_color is not unset:
+ kwargs["custom_fg_color"] = custom_fg_color
+ if hide_value is not unset:
+ kwargs["hide_value"] = hide_value
+ if image_url is not unset:
+ kwargs["image_url"] = image_url
+ if metric is not unset:
+ kwargs["metric"] = metric
+ if timeframe is not unset:
+ kwargs["timeframe"] = timeframe
+ super().__init__(kwargs)
+
+
+ self_.comparator = comparator
+ self_.palette = palette
+ self_.value = value
diff --git a/datadog_api_client/v1/model/widget_custom_link.py b/datadog_api_client/v1/model/widget_custom_link.py
new file mode 100644
index 0000000000..c2e2f55595
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_custom_link.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetCustomLink(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "is_hidden": (bool,),
+ "label": (str,),
+ "link": (str,),
+ "override_label": (str,),
+ }
+ attribute_map = {
+ "is_hidden": "is_hidden",
+ "label": "label",
+ "link": "link",
+ "override_label": "override_label",
+ }
+
+ def __init__(self_, is_hidden: Union[bool, UnsetType]=unset, label: Union[str, UnsetType]=unset, link: Union[str, UnsetType]=unset, override_label: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Custom links help you connect a data value to a URL, like a Datadog page or your AWS console.
+
+ :param is_hidden: The flag for toggling context menu link visibility.
+ :type is_hidden: bool, optional
+
+ :param label: The label for the custom link URL. Keep the label short and descriptive. Use metrics and tags as variables.
+ :type label: str, optional
+
+ :param link: The URL of the custom link. URL must include ``http`` or ``https``. A relative URL must start with ``/``.
+ :type link: str, optional
+
+ :param override_label: The label ID that refers to a context menu link. Can be ``logs`` , ``hosts`` , ``traces`` , ``profiles`` , ``processes`` , ``containers`` , or ``rum``.
+ :type override_label: str, optional
+ """
+ if is_hidden is not unset:
+ kwargs["is_hidden"] = is_hidden
+ if label is not unset:
+ kwargs["label"] = label
+ if link is not unset:
+ kwargs["link"] = link
+ if override_label is not unset:
+ kwargs["override_label"] = override_label
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_definition.py b/datadog_api_client/v1/model/widget_definition.py
new file mode 100644
index 0000000000..352ff04e4a
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_definition.py
@@ -0,0 +1,467 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetDefinition(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ `Definition of the widget `_.
+
+ :param alert_id: ID of the alert to use in the widget.
+ :type alert_id: str
+
+ :param description: The description of the widget.
+ :type description: str, optional
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: The title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the alert graph widget.
+ :type type: AlertGraphWidgetDefinitionType
+
+ :param viz_type: Whether to display the Alert Graph as a timeseries or a top list.
+ :type viz_type: WidgetVizType
+
+ :param precision: Number of decimal to show. If not defined, will use the raw value.
+ :type precision: int, optional
+
+ :param text_align: How to align the text on the widget.
+ :type text_align: WidgetTextAlign, optional
+
+ :param unit: Unit to display with the value.
+ :type unit: str, optional
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param requests: List of bar chart widget requests.
+ :type requests: [BarChartWidgetRequest]
+
+ :param style: Style customization for a bar chart widget.
+ :type style: BarChartWidgetStyle, optional
+
+ :param check: Name of the check to use in the widget.
+ :type check: str
+
+ :param group: Group reporting a single check.
+ :type group: str, optional
+
+ :param group_by: List of tag prefixes to group by in the case of a cluster check.
+ :type group_by: [str], optional
+
+ :param grouping: The kind of grouping to use.
+ :type grouping: WidgetGrouping
+
+ :param tags: List of tags used to filter the groups reporting a cluster check.
+ :type tags: [str], optional
+
+ :param legend_size: (Deprecated) The widget legend was replaced by a tooltip and sidebar.
+ :type legend_size: str, optional
+
+ :param markers: List of markers.
+ :type markers: [WidgetMarker], optional
+
+ :param show_legend: (Deprecated) The widget legend was replaced by a tooltip and sidebar.
+ :type show_legend: bool, optional
+
+ :param xaxis: X Axis controls for the distribution widget.
+ :type xaxis: DistributionWidgetXAxis, optional
+
+ :param yaxis: Y Axis controls for the distribution widget.
+ :type yaxis: DistributionWidgetYAxis, optional
+
+ :param event_size: Size to use to display an event.
+ :type event_size: WidgetEventSize, optional
+
+ :param query: Query to filter the event stream with.
+ :type query: str
+
+ :param tags_execution: The execution method for multi-value filters. Can be either and or or.
+ :type tags_execution: str, optional
+
+ :param background_color: Background color of the widget. Supported values are `white`, `blue`, `purple`, `pink`, `orange`, `yellow`, `green`, `gray`, `vivid_blue`, `vivid_purple`, `vivid_pink`, `vivid_orange`, `vivid_yellow`, `vivid_green`, and `transparent`.
+ :type background_color: str, optional
+
+ :param color: Color of the text.
+ :type color: str, optional
+
+ :param font_size: Size of the text.
+ :type font_size: str, optional
+
+ :param text: Text to display.
+ :type text: str
+
+ :param grouped_display: Display mode for grouped funnel results.
+ :type grouped_display: FunnelGroupedDisplay, optional
+
+ :param view: The view of the world that the map should render.
+ :type view: GeomapWidgetDefinitionView
+
+ :param banner_img: URL of image to display as a banner for the group.
+ :type banner_img: str, optional
+
+ :param layout_type: Layout type of the group.
+ :type layout_type: WidgetLayoutType
+
+ :param show_title: Whether to show the title or not.
+ :type show_title: bool, optional
+
+ :param widgets: List of widget groups.
+ :type widgets: [Widget]
+
+ :param events: List of widget events. Deprecated - Use `overlay` request type instead.
+ :type events: [WidgetEvent], optional
+
+ :param no_group_hosts: Deprecated - Only used by the legacy metric-based format. Use `no_group_hosts` inside `requests` instead.
+ :type no_group_hosts: bool, optional
+
+ :param no_metric_hosts: Deprecated - Only used by the legacy metric-based format. Use `no_metric_hosts` inside `requests` instead.
+ :type no_metric_hosts: bool, optional
+
+ :param node_type: Which type of node to use in the map.
+ :type node_type: WidgetNodeType, optional
+
+ :param notes: Notes on the title.
+ :type notes: str, optional
+
+ :param scope: Deprecated - Only used by the legacy metric-based format. Use `filter` inside `requests` instead.
+ :type scope: [str], optional
+
+ :param url: URL of the iframe.
+ :type url: str
+
+ :param has_background: Whether to display a background or not.
+ :type has_background: bool, optional
+
+ :param has_border: Whether to display a border or not.
+ :type has_border: bool, optional
+
+ :param horizontal_align: Horizontal alignment.
+ :type horizontal_align: WidgetHorizontalAlign, optional
+
+ :param margin: Size of the margins around the image.
+ **Note**: `small` and `large` values are deprecated.
+ :type margin: WidgetMargin, optional
+
+ :param sizing: How to size the image on the widget. The values are based on the image `object-fit` CSS properties.
+ **Note**: `zoom`, `fit` and `center` values are deprecated.
+ :type sizing: WidgetImageSizing, optional
+
+ :param url_dark_theme: URL of the image in dark mode.
+ :type url_dark_theme: str, optional
+
+ :param vertical_align: Vertical alignment.
+ :type vertical_align: WidgetVerticalAlign, optional
+
+ :param columns: Which columns to display on the widget.
+ :type columns: [str], optional
+
+ :param indexes: An array of index names to query in the stream. Use [] to query all indexes at once.
+ :type indexes: [str], optional
+
+ :param logset: ID of the log set to use.
+ :type logset: str, optional
+
+ :param message_display: Amount of log lines to display
+ :type message_display: WidgetMessageDisplay, optional
+
+ :param show_date_column: Whether to show the date column or not
+ :type show_date_column: bool, optional
+
+ :param show_message_column: Whether to show the message column or not
+ :type show_message_column: bool, optional
+
+ :param sort: Which column and order to sort by
+ :type sort: WidgetFieldSort, optional
+
+ :param color_preference: Which color to use on the widget.
+ :type color_preference: WidgetColorPreference, optional
+
+ :param count: The number of monitors to display.
+ :type count: int, optional
+
+ :param display_format: What to display on the widget.
+ :type display_format: WidgetMonitorSummaryDisplayFormat, optional
+
+ :param hide_zero_counts: Whether to show counts of 0 or not.
+ :type hide_zero_counts: bool, optional
+
+ :param show_last_triggered: Whether to show the time that has elapsed since the monitor/group triggered.
+ :type show_last_triggered: bool, optional
+
+ :param show_priority: Whether to show the priorities column.
+ :type show_priority: bool, optional
+
+ :param start: The start of the list. Typically 0.
+ :type start: int, optional
+
+ :param summary_type: Which summary type should be used.
+ :type summary_type: WidgetSummaryType, optional
+
+ :param content: Content of the note.
+ :type content: str
+
+ :param has_padding: Whether to add padding or not.
+ :type has_padding: bool, optional
+
+ :param show_tick: Whether to show a tick or not.
+ :type show_tick: bool, optional
+
+ :param tick_edge: Define how you want to align the text on the widget.
+ :type tick_edge: WidgetTickEdge, optional
+
+ :param tick_pos: Where to position the tick on an edge.
+ :type tick_pos: str, optional
+
+ :param powerpack_id: UUID of the associated powerpack.
+ :type powerpack_id: str
+
+ :param template_variables: Powerpack template variables.
+ :type template_variables: PowerpackTemplateVariables, optional
+
+ :param legend: Legend configuration for the point plot widget.
+ :type legend: PointPlotWidgetLegend, optional
+
+ :param autoscale: Whether to use auto-scaling or not.
+ :type autoscale: bool, optional
+
+ :param custom_unit: Display a unit of your choice on the widget.
+ :type custom_unit: str, optional
+
+ :param timeseries_background: Set a timeseries on the widget background.
+ :type timeseries_background: TimeseriesBackground, optional
+
+ :param inputs: Array of workflow inputs to map to dashboard template variables.
+ :type inputs: [RunWorkflowWidgetInput], optional
+
+ :param workflow_id: Workflow id.
+ :type workflow_id: str
+
+ :param additional_query_filters: Additional filters applied to the SLO query.
+ :type additional_query_filters: str, optional
+
+ :param global_time_target: Defined global time target.
+ :type global_time_target: str, optional
+
+ :param show_error_budget: Defined error budget.
+ :type show_error_budget: bool, optional
+
+ :param slo_id: ID of the SLO displayed.
+ :type slo_id: str, optional
+
+ :param time_windows: Times being monitored.
+ :type time_windows: [WidgetTimeWindows], optional
+
+ :param view_mode: Define how you want the SLO to be displayed.
+ :type view_mode: WidgetViewMode, optional
+
+ :param view_type: Type of view displayed by the widget.
+ :type view_type: str
+
+ :param color_by_groups: List of groups used for colors.
+ :type color_by_groups: [str], optional
+
+ :param show_other_links: Whether to show links for "other" category.
+ :type show_other_links: bool, optional
+
+ :param sort_nodes: Whether to sort nodes in the Sankey diagram.
+ :type sort_nodes: bool, optional
+
+ :param filters: Your environment and primary tag (or * if enabled for your account).
+ :type filters: [str]
+
+ :param service: The ID of the service you want to map.
+ :type service: str
+
+ :param env: APM environment.
+ :type env: str
+
+ :param show_breakdown: Whether to show the latency breakdown or not.
+ :type show_breakdown: bool, optional
+
+ :param show_distribution: Whether to show the latency distribution or not.
+ :type show_distribution: bool, optional
+
+ :param show_errors: Whether to show the error metrics or not.
+ :type show_errors: bool, optional
+
+ :param show_hits: Whether to show the hits metrics or not.
+ :type show_hits: bool, optional
+
+ :param show_latency: Whether to show the latency metrics or not.
+ :type show_latency: bool, optional
+
+ :param show_resource_list: Whether to show the resource list or not.
+ :type show_resource_list: bool, optional
+
+ :param size_format: Size of the widget.
+ :type size_format: WidgetSizeFormat, optional
+
+ :param span_name: APM span name.
+ :type span_name: str
+
+ :param has_uniform_y_axes: Normalize y axes across graphs
+ :type has_uniform_y_axes: bool, optional
+
+ :param size: Size of the individual graphs in the split.
+ :type size: SplitGraphVizSize
+
+ :param source_widget_definition: The original widget we are splitting on.
+ :type source_widget_definition: SplitGraphSourceWidgetDefinition
+
+ :param split_config: Encapsulates all user choices about how to split a graph.
+ :type split_config: SplitConfig
+
+ :param hide_total: Show the total value in this widget.
+ :type hide_total: bool, optional
+
+ :param has_search_bar: Controls the display of the search bar.
+ :type has_search_bar: TableWidgetHasSearchBar, optional
+
+ :param legend_columns: Columns displayed in the legend.
+ :type legend_columns: [TimeseriesWidgetLegendColumn], optional
+
+ :param legend_layout: Layout of the legend.
+ :type legend_layout: TimeseriesWidgetLegendLayout, optional
+
+ :param right_yaxis: Axis controls for the widget.
+ :type right_yaxis: WidgetAxis, optional
+
+ :param color_by: (deprecated) The attribute formerly used to determine color in the widget.
+ :type color_by: TreeMapColorBy, optional
+
+ :param size_by: (deprecated) The attribute formerly used to determine size in the widget.
+ :type size_by: TreeMapSizeBy, optional
+
+ :param specification: Vega or Vega-Lite specification for custom visualization rendering. See https://vega.github.io/vega-lite/ for the full grammar reference.
+ :type specification: WildcardWidgetSpecification
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition
+ from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition
+ from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+ from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+ from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition
+ from datadog_api_client.v1.model.cohort_widget_definition import CohortWidgetDefinition
+ from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+ from datadog_api_client.v1.model.event_stream_widget_definition import EventStreamWidgetDefinition
+ from datadog_api_client.v1.model.event_timeline_widget_definition import EventTimelineWidgetDefinition
+ from datadog_api_client.v1.model.free_text_widget_definition import FreeTextWidgetDefinition
+ from datadog_api_client.v1.model.funnel_widget_definition import FunnelWidgetDefinition
+ from datadog_api_client.v1.model.product_analytics_funnel_widget_definition import ProductAnalyticsFunnelWidgetDefinition
+ from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+ from datadog_api_client.v1.model.group_widget_definition import GroupWidgetDefinition
+ from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+ from datadog_api_client.v1.model.host_map_widget_definition import HostMapWidgetDefinition
+ from datadog_api_client.v1.model.i_frame_widget_definition import IFrameWidgetDefinition
+ from datadog_api_client.v1.model.image_widget_definition import ImageWidgetDefinition
+ from datadog_api_client.v1.model.list_stream_widget_definition import ListStreamWidgetDefinition
+ from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+ from datadog_api_client.v1.model.monitor_summary_widget_definition import MonitorSummaryWidgetDefinition
+ from datadog_api_client.v1.model.note_widget_definition import NoteWidgetDefinition
+ from datadog_api_client.v1.model.powerpack_widget_definition import PowerpackWidgetDefinition
+ from datadog_api_client.v1.model.point_plot_widget_definition import PointPlotWidgetDefinition
+ from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+ from datadog_api_client.v1.model.retention_curve_widget_definition import RetentionCurveWidgetDefinition
+ from datadog_api_client.v1.model.run_workflow_widget_definition import RunWorkflowWidgetDefinition
+ from datadog_api_client.v1.model.slo_list_widget_definition import SLOListWidgetDefinition
+ from datadog_api_client.v1.model.slo_widget_definition import SLOWidgetDefinition
+ from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+ from datadog_api_client.v1.model.sankey_widget_definition import SankeyWidgetDefinition
+ from datadog_api_client.v1.model.service_map_widget_definition import ServiceMapWidgetDefinition
+ from datadog_api_client.v1.model.service_summary_widget_definition import ServiceSummaryWidgetDefinition
+ from datadog_api_client.v1.model.split_graph_widget_definition import SplitGraphWidgetDefinition
+ from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+ from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+ from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+ from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+ from datadog_api_client.v1.model.topology_map_widget_definition import TopologyMapWidgetDefinition
+ from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+ from datadog_api_client.v1.model.wildcard_widget_definition import WildcardWidgetDefinition
+ return {
+ "oneOf": [
+ AlertGraphWidgetDefinition,
+ AlertValueWidgetDefinition,
+ BarChartWidgetDefinition,
+ ChangeWidgetDefinition,
+ CheckStatusWidgetDefinition,
+ CohortWidgetDefinition,
+ DistributionWidgetDefinition,
+ EventStreamWidgetDefinition,
+ EventTimelineWidgetDefinition,
+ FreeTextWidgetDefinition,
+ FunnelWidgetDefinition,
+ ProductAnalyticsFunnelWidgetDefinition,
+ GeomapWidgetDefinition,
+ GroupWidgetDefinition,
+ HeatMapWidgetDefinition,
+ HostMapWidgetDefinition,
+ IFrameWidgetDefinition,
+ ImageWidgetDefinition,
+ ListStreamWidgetDefinition,
+ LogStreamWidgetDefinition,
+ MonitorSummaryWidgetDefinition,
+ NoteWidgetDefinition,
+ PowerpackWidgetDefinition,
+ PointPlotWidgetDefinition,
+ QueryValueWidgetDefinition,
+ RetentionCurveWidgetDefinition,
+ RunWorkflowWidgetDefinition,
+ SLOListWidgetDefinition,
+ SLOWidgetDefinition,
+ ScatterPlotWidgetDefinition,
+ SankeyWidgetDefinition,
+ ServiceMapWidgetDefinition,
+ ServiceSummaryWidgetDefinition,
+ SplitGraphWidgetDefinition,
+ SunburstWidgetDefinition,
+ TableWidgetDefinition,
+ TimeseriesWidgetDefinition,
+ ToplistWidgetDefinition,
+ TopologyMapWidgetDefinition,
+ TreeMapWidgetDefinition,
+ WildcardWidgetDefinition,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/widget_display_type.py b/datadog_api_client/v1/model/widget_display_type.py
new file mode 100644
index 0000000000..6f8f85a6ae
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_display_type.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetDisplayType(ModelSimple):
+ """
+ Type of display to use for the request.
+
+ :param value: Must be one of ["area", "bars", "line", "overlay"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "area",
+ "bars",
+ "line",
+ "overlay",
+ }
+ AREA: ClassVar["WidgetDisplayType"]
+ BARS: ClassVar["WidgetDisplayType"]
+ LINE: ClassVar["WidgetDisplayType"]
+ OVERLAY: ClassVar["WidgetDisplayType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetDisplayType.AREA = WidgetDisplayType("area")
+WidgetDisplayType.BARS = WidgetDisplayType("bars")
+WidgetDisplayType.LINE = WidgetDisplayType("line")
+WidgetDisplayType.OVERLAY = WidgetDisplayType("overlay")
diff --git a/datadog_api_client/v1/model/widget_event.py b/datadog_api_client/v1/model/widget_event.py
new file mode 100644
index 0000000000..52fad53127
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_event.py
@@ -0,0 +1,55 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetEvent(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "q": (str,),
+ "tags_execution": (str,),
+ }
+ attribute_map = {
+ "q": "q",
+ "tags_execution": "tags_execution",
+ }
+
+ def __init__(self_, q: str, tags_execution: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Event overlay control options.
+
+ See the dedicated `Events JSON schema documentation `_
+ to learn how to build the ````.
+
+ :param q: Query definition.
+ :type q: str
+
+ :param tags_execution: The execution method for multi-value filters.
+ :type tags_execution: str, optional
+ """
+ if tags_execution is not unset:
+ kwargs["tags_execution"] = tags_execution
+ super().__init__(kwargs)
+
+
+ self_.q = q
diff --git a/datadog_api_client/v1/model/widget_event_size.py b/datadog_api_client/v1/model/widget_event_size.py
new file mode 100644
index 0000000000..75fd24e93f
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_event_size.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetEventSize(ModelSimple):
+ """
+ Size to use to display an event.
+
+ :param value: Must be one of ["s", "l"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "s",
+ "l",
+ }
+ SMALL: ClassVar["WidgetEventSize"]
+ LARGE: ClassVar["WidgetEventSize"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetEventSize.SMALL = WidgetEventSize("s")
+WidgetEventSize.LARGE = WidgetEventSize("l")
diff --git a/datadog_api_client/v1/model/widget_field_sort.py b/datadog_api_client/v1/model/widget_field_sort.py
new file mode 100644
index 0000000000..89a87a8549
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_field_sort.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+
+class WidgetFieldSort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ return {
+ "column": (str,),
+ "order": (WidgetSort,),
+ }
+ attribute_map = {
+ "column": "column",
+ "order": "order",
+ }
+
+ def __init__(self_, column: str, order: WidgetSort, **kwargs):
+ """
+ Which column and order to sort by
+
+ :param column: Facet path for the column
+ :type column: str
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort
+ """
+ super().__init__(kwargs)
+
+
+ self_.column = column
+ self_.order = order
diff --git a/datadog_api_client/v1/model/widget_formula.py b/datadog_api_client/v1/model/widget_formula.py
new file mode 100644
index 0000000000..336c3200be
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula.py
@@ -0,0 +1,109 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+ from datadog_api_client.v1.model.widget_formula_cell_display_mode_options import WidgetFormulaCellDisplayModeOptions
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula_limit import WidgetFormulaLimit
+ from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+ from datadog_api_client.v1.model.widget_formula_style import WidgetFormulaStyle
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+
+class WidgetFormula(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+ from datadog_api_client.v1.model.widget_formula_cell_display_mode_options import WidgetFormulaCellDisplayModeOptions
+ from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+ from datadog_api_client.v1.model.widget_formula_limit import WidgetFormulaLimit
+ from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+ from datadog_api_client.v1.model.widget_formula_style import WidgetFormulaStyle
+ return {
+ "alias": (str,),
+ "cell_display_mode": (TableWidgetCellDisplayMode,),
+ "cell_display_mode_options": (WidgetFormulaCellDisplayModeOptions,),
+ "conditional_formats": ([WidgetConditionalFormat],),
+ "formula": (str,),
+ "limit": (WidgetFormulaLimit,),
+ "number_format": (WidgetNumberFormat,),
+ "style": (WidgetFormulaStyle,),
+ }
+ attribute_map = {
+ "alias": "alias",
+ "cell_display_mode": "cell_display_mode",
+ "cell_display_mode_options": "cell_display_mode_options",
+ "conditional_formats": "conditional_formats",
+ "formula": "formula",
+ "limit": "limit",
+ "number_format": "number_format",
+ "style": "style",
+ }
+
+ def __init__(self_, formula: str, alias: Union[str, UnsetType]=unset, cell_display_mode: Union[TableWidgetCellDisplayMode, UnsetType]=unset, cell_display_mode_options: Union[WidgetFormulaCellDisplayModeOptions, UnsetType]=unset, conditional_formats: Union[List[WidgetConditionalFormat], UnsetType]=unset, limit: Union[WidgetFormulaLimit, UnsetType]=unset, number_format: Union[WidgetNumberFormat, UnsetType]=unset, style: Union[WidgetFormulaStyle, UnsetType]=unset, **kwargs):
+ """
+ Formula to be used in a widget query.
+
+ :param alias: Expression alias.
+ :type alias: str, optional
+
+ :param cell_display_mode: Define a display mode for the table cell.
+ :type cell_display_mode: TableWidgetCellDisplayMode, optional
+
+ :param cell_display_mode_options: Cell display mode options for the widget formula. (only if ``cell_display_mode`` is set to ``trend`` ).
+ :type cell_display_mode_options: WidgetFormulaCellDisplayModeOptions, optional
+
+ :param conditional_formats: List of conditional formats.
+ :type conditional_formats: [WidgetConditionalFormat], optional
+
+ :param formula: String expression built from queries, formulas, and functions.
+ :type formula: str
+
+ :param limit: Options for limiting results returned.
+ :type limit: WidgetFormulaLimit, optional
+
+ :param number_format: Number format options for the widget.
+ :type number_format: WidgetNumberFormat, optional
+
+ :param style: Styling options for widget formulas.
+ :type style: WidgetFormulaStyle, optional
+ """
+ if alias is not unset:
+ kwargs["alias"] = alias
+ if cell_display_mode is not unset:
+ kwargs["cell_display_mode"] = cell_display_mode
+ if cell_display_mode_options is not unset:
+ kwargs["cell_display_mode_options"] = cell_display_mode_options
+ if conditional_formats is not unset:
+ kwargs["conditional_formats"] = conditional_formats
+ if limit is not unset:
+ kwargs["limit"] = limit
+ if number_format is not unset:
+ kwargs["number_format"] = number_format
+ if style is not unset:
+ kwargs["style"] = style
+ super().__init__(kwargs)
+
+
+ self_.formula = formula
diff --git a/datadog_api_client/v1/model/widget_formula_cell_display_mode_options.py b/datadog_api_client/v1/model/widget_formula_cell_display_mode_options.py
new file mode 100644
index 0000000000..2e01c453c1
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula_cell_display_mode_options.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_formula_cell_display_mode_options_trend_type import WidgetFormulaCellDisplayModeOptionsTrendType
+ from datadog_api_client.v1.model.widget_formula_cell_display_mode_options_y_scale import WidgetFormulaCellDisplayModeOptionsYScale
+
+class WidgetFormulaCellDisplayModeOptions(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_formula_cell_display_mode_options_trend_type import WidgetFormulaCellDisplayModeOptionsTrendType
+ from datadog_api_client.v1.model.widget_formula_cell_display_mode_options_y_scale import WidgetFormulaCellDisplayModeOptionsYScale
+ return {
+ "trend_type": (WidgetFormulaCellDisplayModeOptionsTrendType,),
+ "y_scale": (WidgetFormulaCellDisplayModeOptionsYScale,),
+ }
+ attribute_map = {
+ "trend_type": "trend_type",
+ "y_scale": "y_scale",
+ }
+
+ def __init__(self_, trend_type: Union[WidgetFormulaCellDisplayModeOptionsTrendType, UnsetType]=unset, y_scale: Union[WidgetFormulaCellDisplayModeOptionsYScale, UnsetType]=unset, **kwargs):
+ """
+ Cell display mode options for the widget formula. (only if ``cell_display_mode`` is set to ``trend`` ).
+
+ :param trend_type: Trend type for the cell display mode options.
+ :type trend_type: WidgetFormulaCellDisplayModeOptionsTrendType, optional
+
+ :param y_scale: Y scale for the cell display mode options.
+ :type y_scale: WidgetFormulaCellDisplayModeOptionsYScale, optional
+ """
+ if trend_type is not unset:
+ kwargs["trend_type"] = trend_type
+ if y_scale is not unset:
+ kwargs["y_scale"] = y_scale
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_formula_cell_display_mode_options_trend_type.py b/datadog_api_client/v1/model/widget_formula_cell_display_mode_options_trend_type.py
new file mode 100644
index 0000000000..9caaad8555
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula_cell_display_mode_options_trend_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetFormulaCellDisplayModeOptionsTrendType(ModelSimple):
+ """
+ Trend type for the cell display mode options.
+
+ :param value: Must be one of ["area", "line", "bars"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "area",
+ "line",
+ "bars",
+ }
+ AREA: ClassVar["WidgetFormulaCellDisplayModeOptionsTrendType"]
+ LINE: ClassVar["WidgetFormulaCellDisplayModeOptionsTrendType"]
+ BARS: ClassVar["WidgetFormulaCellDisplayModeOptionsTrendType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetFormulaCellDisplayModeOptionsTrendType.AREA = WidgetFormulaCellDisplayModeOptionsTrendType("area")
+WidgetFormulaCellDisplayModeOptionsTrendType.LINE = WidgetFormulaCellDisplayModeOptionsTrendType("line")
+WidgetFormulaCellDisplayModeOptionsTrendType.BARS = WidgetFormulaCellDisplayModeOptionsTrendType("bars")
diff --git a/datadog_api_client/v1/model/widget_formula_cell_display_mode_options_y_scale.py b/datadog_api_client/v1/model/widget_formula_cell_display_mode_options_y_scale.py
new file mode 100644
index 0000000000..ff3a7eba5e
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula_cell_display_mode_options_y_scale.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetFormulaCellDisplayModeOptionsYScale(ModelSimple):
+ """
+ Y scale for the cell display mode options.
+
+ :param value: Must be one of ["shared", "independent"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "shared",
+ "independent",
+ }
+ SHARED: ClassVar["WidgetFormulaCellDisplayModeOptionsYScale"]
+ INDEPENDENT: ClassVar["WidgetFormulaCellDisplayModeOptionsYScale"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetFormulaCellDisplayModeOptionsYScale.SHARED = WidgetFormulaCellDisplayModeOptionsYScale("shared")
+WidgetFormulaCellDisplayModeOptionsYScale.INDEPENDENT = WidgetFormulaCellDisplayModeOptionsYScale("independent")
diff --git a/datadog_api_client/v1/model/widget_formula_limit.py b/datadog_api_client/v1/model/widget_formula_limit.py
new file mode 100644
index 0000000000..5a5e0f2dc5
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula_limit.py
@@ -0,0 +1,56 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+
+class WidgetFormulaLimit(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+ return {
+ "count": (int,),
+ "order": (QuerySortOrder,),
+ }
+ attribute_map = {
+ "count": "count",
+ "order": "order",
+ }
+
+ def __init__(self_, count: Union[int, UnsetType]=unset, order: Union[QuerySortOrder, UnsetType]=unset, **kwargs):
+ """
+ Options for limiting results returned.
+
+ :param count: Number of results to return.
+ :type count: int, optional
+
+ :param order: Direction of sort.
+ :type order: QuerySortOrder, optional
+ """
+ if count is not unset:
+ kwargs["count"] = count
+ if order is not unset:
+ kwargs["order"] = order
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_formula_sort.py b/datadog_api_client/v1/model/widget_formula_sort.py
new file mode 100644
index 0000000000..d4f21ec602
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula_sort.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.formula_type import FormulaType
+
+class WidgetFormulaSort(ModelNormal):
+ validations = {
+ "index": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.formula_type import FormulaType
+ return {
+ "index": (int,),
+ "order": (WidgetSort,),
+ "type": (FormulaType,),
+ }
+ attribute_map = {
+ "index": "index",
+ "order": "order",
+ "type": "type",
+ }
+
+ def __init__(self_, index: int, order: WidgetSort, type: FormulaType, **kwargs):
+ """
+ The formula to sort the widget by.
+
+ :param index: The index of the formula to sort by.
+ :type index: int
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort
+
+ :param type: Set the sort type to formula.
+ :type type: FormulaType
+ """
+ super().__init__(kwargs)
+
+
+ self_.index = index
+ self_.order = order
+ self_.type = type
diff --git a/datadog_api_client/v1/model/widget_formula_style.py b/datadog_api_client/v1/model/widget_formula_style.py
new file mode 100644
index 0000000000..a8f39e9b99
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_formula_style.py
@@ -0,0 +1,53 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetFormulaStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "palette": (str,),
+ "palette_index": (int,),
+ }
+ attribute_map = {
+ "palette": "palette",
+ "palette_index": "palette_index",
+ }
+
+ def __init__(self_, palette: Union[str, UnsetType]=unset, palette_index: Union[int, UnsetType]=unset, **kwargs):
+ """
+ Styling options for widget formulas.
+
+ :param palette: The color palette used to display the formula. A guide to the available color palettes can be found at https://docs.datadoghq.com/dashboards/guide/widget_colors
+ :type palette: str, optional
+
+ :param palette_index: Index specifying which color to use within the palette.
+ :type palette_index: int, optional
+ """
+ if palette is not unset:
+ kwargs["palette"] = palette
+ if palette_index is not unset:
+ kwargs["palette_index"] = palette_index
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_group_sort.py b/datadog_api_client/v1/model/widget_group_sort.py
new file mode 100644
index 0000000000..04c9c207d2
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_group_sort.py
@@ -0,0 +1,62 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.group_type import GroupType
+
+class WidgetGroupSort(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort import WidgetSort
+ from datadog_api_client.v1.model.group_type import GroupType
+ return {
+ "name": (str,),
+ "order": (WidgetSort,),
+ "type": (GroupType,),
+ }
+ attribute_map = {
+ "name": "name",
+ "order": "order",
+ "type": "type",
+ }
+
+ def __init__(self_, name: str, order: WidgetSort, type: GroupType, **kwargs):
+ """
+ The group to sort the widget by.
+
+ :param name: The name of the group.
+ :type name: str
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort
+
+ :param type: Set the sort type to group.
+ :type type: GroupType
+ """
+ super().__init__(kwargs)
+
+
+ self_.name = name
+ self_.order = order
+ self_.type = type
diff --git a/datadog_api_client/v1/model/widget_grouping.py b/datadog_api_client/v1/model/widget_grouping.py
new file mode 100644
index 0000000000..cee3b4a97d
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_grouping.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetGrouping(ModelSimple):
+ """
+ The kind of grouping to use.
+
+ :param value: Must be one of ["check", "cluster"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "check",
+ "cluster",
+ }
+ CHECK: ClassVar["WidgetGrouping"]
+ CLUSTER: ClassVar["WidgetGrouping"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetGrouping.CHECK = WidgetGrouping("check")
+WidgetGrouping.CLUSTER = WidgetGrouping("cluster")
diff --git a/datadog_api_client/v1/model/widget_histogram_request_type.py b/datadog_api_client/v1/model/widget_histogram_request_type.py
new file mode 100644
index 0000000000..1e569a6d55
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_histogram_request_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetHistogramRequestType(ModelSimple):
+ """
+ Request type for distribution of point values for distribution metrics. Query space aggregator must be `histogram:` for points distributions.
+
+ :param value: If omitted defaults to "histogram". Must be one of ["histogram"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "histogram",
+ }
+ HISTOGRAM: ClassVar["WidgetHistogramRequestType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetHistogramRequestType.HISTOGRAM = WidgetHistogramRequestType("histogram")
diff --git a/datadog_api_client/v1/model/widget_horizontal_align.py b/datadog_api_client/v1/model/widget_horizontal_align.py
new file mode 100644
index 0000000000..232665b267
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_horizontal_align.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetHorizontalAlign(ModelSimple):
+ """
+ Horizontal alignment.
+
+ :param value: Must be one of ["center", "left", "right"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "center",
+ "left",
+ "right",
+ }
+ CENTER: ClassVar["WidgetHorizontalAlign"]
+ LEFT: ClassVar["WidgetHorizontalAlign"]
+ RIGHT: ClassVar["WidgetHorizontalAlign"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetHorizontalAlign.CENTER = WidgetHorizontalAlign("center")
+WidgetHorizontalAlign.LEFT = WidgetHorizontalAlign("left")
+WidgetHorizontalAlign.RIGHT = WidgetHorizontalAlign("right")
diff --git a/datadog_api_client/v1/model/widget_image_sizing.py b/datadog_api_client/v1/model/widget_image_sizing.py
new file mode 100644
index 0000000000..5bee3102b9
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_image_sizing.py
@@ -0,0 +1,67 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetImageSizing(ModelSimple):
+ """
+ How to size the image on the widget. The values are based on the image `object-fit` CSS properties.
+ **Note**: `zoom`, `fit` and `center` values are deprecated.
+
+ :param value: Must be one of ["fill", "contain", "cover", "none", "scale-down", "zoom", "fit", "center"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "fill",
+ "contain",
+ "cover",
+ "none",
+ "scale-down",
+ "zoom",
+ "fit",
+ "center",
+ }
+ FILL: ClassVar["WidgetImageSizing"]
+ CONTAIN: ClassVar["WidgetImageSizing"]
+ COVER: ClassVar["WidgetImageSizing"]
+ NONE: ClassVar["WidgetImageSizing"]
+ SCALEDOWN: ClassVar["WidgetImageSizing"]
+ ZOOM: ClassVar["WidgetImageSizing"]
+ FIT: ClassVar["WidgetImageSizing"]
+ CENTER: ClassVar["WidgetImageSizing"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetImageSizing.FILL = WidgetImageSizing("fill")
+WidgetImageSizing.CONTAIN = WidgetImageSizing("contain")
+WidgetImageSizing.COVER = WidgetImageSizing("cover")
+WidgetImageSizing.NONE = WidgetImageSizing("none")
+WidgetImageSizing.SCALEDOWN = WidgetImageSizing("scale-down")
+WidgetImageSizing.ZOOM = WidgetImageSizing("zoom")
+WidgetImageSizing.FIT = WidgetImageSizing("fit")
+WidgetImageSizing.CENTER = WidgetImageSizing("center")
diff --git a/datadog_api_client/v1/model/widget_layout.py b/datadog_api_client/v1/model/widget_layout.py
new file mode 100644
index 0000000000..6d726e1e23
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_layout.py
@@ -0,0 +1,85 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetLayout(ModelNormal):
+ validations = {
+ "height": {
+ "inclusive_minimum": 0,
+ },
+ "width": {
+ "inclusive_minimum": 0,
+ },
+ "x": {
+ "inclusive_minimum": 0,
+ },
+ "y": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ return {
+ "height": (int,),
+ "is_column_break": (bool,),
+ "width": (int,),
+ "x": (int,),
+ "y": (int,),
+ }
+ attribute_map = {
+ "height": "height",
+ "is_column_break": "is_column_break",
+ "width": "width",
+ "x": "x",
+ "y": "y",
+ }
+
+ def __init__(self_, height: int, width: int, x: int, y: int, is_column_break: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ The layout for a widget on a ``free`` or **new dashboard layout** dashboard.
+
+ :param height: The height of the widget. Should be a non-negative integer.
+ :type height: int
+
+ :param is_column_break: Whether the widget should be the first one on the second column in high density or not.
+ **Note** : Only for the **new dashboard layout** and only one widget in the dashboard should have this property set to ``true``.
+ :type is_column_break: bool, optional
+
+ :param width: The width of the widget. Should be a non-negative integer.
+ :type width: int
+
+ :param x: The position of the widget on the x (horizontal) axis. Should be a non-negative integer.
+ :type x: int
+
+ :param y: The position of the widget on the y (vertical) axis. Should be a non-negative integer.
+ :type y: int
+ """
+ if is_column_break is not unset:
+ kwargs["is_column_break"] = is_column_break
+ super().__init__(kwargs)
+
+
+ self_.height = height
+ self_.width = width
+ self_.x = x
+ self_.y = y
diff --git a/datadog_api_client/v1/model/widget_layout_type.py b/datadog_api_client/v1/model/widget_layout_type.py
new file mode 100644
index 0000000000..c243c20679
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_layout_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetLayoutType(ModelSimple):
+ """
+ Layout type of the group.
+
+ :param value: If omitted defaults to "ordered". Must be one of ["ordered"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "ordered",
+ }
+ ORDERED: ClassVar["WidgetLayoutType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetLayoutType.ORDERED = WidgetLayoutType("ordered")
diff --git a/datadog_api_client/v1/model/widget_legacy_live_span.py b/datadog_api_client/v1/model/widget_legacy_live_span.py
new file mode 100644
index 0000000000..44fbc6b99b
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_legacy_live_span.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_live_span import WidgetLiveSpan
+
+class WidgetLegacyLiveSpan(ModelNormal):
+ @cached_property
+ def additional_properties_type(_):
+ return None
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_live_span import WidgetLiveSpan
+ return {
+ "hide_incomplete_cost_data": (bool,),
+ "live_span": (WidgetLiveSpan,),
+ }
+ attribute_map = {
+ "hide_incomplete_cost_data": "hide_incomplete_cost_data",
+ "live_span": "live_span",
+ }
+
+ def __init__(self_, hide_incomplete_cost_data: Union[bool, UnsetType]=unset, live_span: Union[WidgetLiveSpan, UnsetType]=unset, **kwargs):
+ """
+ Wrapper for live span
+
+ :param hide_incomplete_cost_data: Whether to hide incomplete cost data in the widget.
+ :type hide_incomplete_cost_data: bool, optional
+
+ :param live_span: The available timeframes depend on the widget you are using.
+ :type live_span: WidgetLiveSpan, optional
+ """
+ if hide_incomplete_cost_data is not unset:
+ kwargs["hide_incomplete_cost_data"] = hide_incomplete_cost_data
+ if live_span is not unset:
+ kwargs["live_span"] = live_span
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_line_type.py b/datadog_api_client/v1/model/widget_line_type.py
new file mode 100644
index 0000000000..277da6b98a
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_line_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetLineType(ModelSimple):
+ """
+ Type of lines displayed.
+
+ :param value: Must be one of ["dashed", "dotted", "solid"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "dashed",
+ "dotted",
+ "solid",
+ }
+ DASHED: ClassVar["WidgetLineType"]
+ DOTTED: ClassVar["WidgetLineType"]
+ SOLID: ClassVar["WidgetLineType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetLineType.DASHED = WidgetLineType("dashed")
+WidgetLineType.DOTTED = WidgetLineType("dotted")
+WidgetLineType.SOLID = WidgetLineType("solid")
diff --git a/datadog_api_client/v1/model/widget_line_width.py b/datadog_api_client/v1/model/widget_line_width.py
new file mode 100644
index 0000000000..7803bec2ca
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_line_width.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetLineWidth(ModelSimple):
+ """
+ Width of line displayed.
+
+ :param value: Must be one of ["normal", "thick", "thin"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "normal",
+ "thick",
+ "thin",
+ }
+ NORMAL: ClassVar["WidgetLineWidth"]
+ THICK: ClassVar["WidgetLineWidth"]
+ THIN: ClassVar["WidgetLineWidth"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetLineWidth.NORMAL = WidgetLineWidth("normal")
+WidgetLineWidth.THICK = WidgetLineWidth("thick")
+WidgetLineWidth.THIN = WidgetLineWidth("thin")
diff --git a/datadog_api_client/v1/model/widget_live_span.py b/datadog_api_client/v1/model/widget_live_span.py
new file mode 100644
index 0000000000..e31dc4af70
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_live_span.py
@@ -0,0 +1,93 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetLiveSpan(ModelSimple):
+ """
+ The available timeframes depend on the widget you are using.
+
+ :param value: Must be one of ["1m", "5m", "10m", "15m", "30m", "1h", "4h", "1d", "2d", "1w", "1mo", "3mo", "6mo", "week_to_date", "month_to_date", "1y", "alert"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "1m",
+ "5m",
+ "10m",
+ "15m",
+ "30m",
+ "1h",
+ "4h",
+ "1d",
+ "2d",
+ "1w",
+ "1mo",
+ "3mo",
+ "6mo",
+ "week_to_date",
+ "month_to_date",
+ "1y",
+ "alert",
+ }
+ PAST_ONE_MINUTE: ClassVar["WidgetLiveSpan"]
+ PAST_FIVE_MINUTES: ClassVar["WidgetLiveSpan"]
+ PAST_TEN_MINUTES: ClassVar["WidgetLiveSpan"]
+ PAST_FIFTEEN_MINUTES: ClassVar["WidgetLiveSpan"]
+ PAST_THIRTY_MINUTES: ClassVar["WidgetLiveSpan"]
+ PAST_ONE_HOUR: ClassVar["WidgetLiveSpan"]
+ PAST_FOUR_HOURS: ClassVar["WidgetLiveSpan"]
+ PAST_ONE_DAY: ClassVar["WidgetLiveSpan"]
+ PAST_TWO_DAYS: ClassVar["WidgetLiveSpan"]
+ PAST_ONE_WEEK: ClassVar["WidgetLiveSpan"]
+ PAST_ONE_MONTH: ClassVar["WidgetLiveSpan"]
+ PAST_THREE_MONTHS: ClassVar["WidgetLiveSpan"]
+ PAST_SIX_MONTHS: ClassVar["WidgetLiveSpan"]
+ WEEK_TO_DATE: ClassVar["WidgetLiveSpan"]
+ MONTH_TO_DATE: ClassVar["WidgetLiveSpan"]
+ PAST_ONE_YEAR: ClassVar["WidgetLiveSpan"]
+ ALERT: ClassVar["WidgetLiveSpan"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetLiveSpan.PAST_ONE_MINUTE = WidgetLiveSpan("1m")
+WidgetLiveSpan.PAST_FIVE_MINUTES = WidgetLiveSpan("5m")
+WidgetLiveSpan.PAST_TEN_MINUTES = WidgetLiveSpan("10m")
+WidgetLiveSpan.PAST_FIFTEEN_MINUTES = WidgetLiveSpan("15m")
+WidgetLiveSpan.PAST_THIRTY_MINUTES = WidgetLiveSpan("30m")
+WidgetLiveSpan.PAST_ONE_HOUR = WidgetLiveSpan("1h")
+WidgetLiveSpan.PAST_FOUR_HOURS = WidgetLiveSpan("4h")
+WidgetLiveSpan.PAST_ONE_DAY = WidgetLiveSpan("1d")
+WidgetLiveSpan.PAST_TWO_DAYS = WidgetLiveSpan("2d")
+WidgetLiveSpan.PAST_ONE_WEEK = WidgetLiveSpan("1w")
+WidgetLiveSpan.PAST_ONE_MONTH = WidgetLiveSpan("1mo")
+WidgetLiveSpan.PAST_THREE_MONTHS = WidgetLiveSpan("3mo")
+WidgetLiveSpan.PAST_SIX_MONTHS = WidgetLiveSpan("6mo")
+WidgetLiveSpan.WEEK_TO_DATE = WidgetLiveSpan("week_to_date")
+WidgetLiveSpan.MONTH_TO_DATE = WidgetLiveSpan("month_to_date")
+WidgetLiveSpan.PAST_ONE_YEAR = WidgetLiveSpan("1y")
+WidgetLiveSpan.ALERT = WidgetLiveSpan("alert")
diff --git a/datadog_api_client/v1/model/widget_live_span_unit.py b/datadog_api_client/v1/model/widget_live_span_unit.py
new file mode 100644
index 0000000000..fa3e2380b7
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_live_span_unit.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetLiveSpanUnit(ModelSimple):
+ """
+ Unit of the time span.
+
+ :param value: Must be one of ["minute", "hour", "day", "week", "month", "year"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "minute",
+ "hour",
+ "day",
+ "week",
+ "month",
+ "year",
+ }
+ MINUTE: ClassVar["WidgetLiveSpanUnit"]
+ HOUR: ClassVar["WidgetLiveSpanUnit"]
+ DAY: ClassVar["WidgetLiveSpanUnit"]
+ WEEK: ClassVar["WidgetLiveSpanUnit"]
+ MONTH: ClassVar["WidgetLiveSpanUnit"]
+ YEAR: ClassVar["WidgetLiveSpanUnit"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetLiveSpanUnit.MINUTE = WidgetLiveSpanUnit("minute")
+WidgetLiveSpanUnit.HOUR = WidgetLiveSpanUnit("hour")
+WidgetLiveSpanUnit.DAY = WidgetLiveSpanUnit("day")
+WidgetLiveSpanUnit.WEEK = WidgetLiveSpanUnit("week")
+WidgetLiveSpanUnit.MONTH = WidgetLiveSpanUnit("month")
+WidgetLiveSpanUnit.YEAR = WidgetLiveSpanUnit("year")
diff --git a/datadog_api_client/v1/model/widget_margin.py b/datadog_api_client/v1/model/widget_margin.py
new file mode 100644
index 0000000000..18512526a8
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_margin.py
@@ -0,0 +1,58 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetMargin(ModelSimple):
+ """
+ Size of the margins around the image.
+ **Note**: `small` and `large` values are deprecated.
+
+ :param value: Must be one of ["sm", "md", "lg", "small", "large"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "sm",
+ "md",
+ "lg",
+ "small",
+ "large",
+ }
+ SM: ClassVar["WidgetMargin"]
+ MD: ClassVar["WidgetMargin"]
+ LG: ClassVar["WidgetMargin"]
+ SMALL: ClassVar["WidgetMargin"]
+ LARGE: ClassVar["WidgetMargin"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetMargin.SM = WidgetMargin("sm")
+WidgetMargin.MD = WidgetMargin("md")
+WidgetMargin.LG = WidgetMargin("lg")
+WidgetMargin.SMALL = WidgetMargin("small")
+WidgetMargin.LARGE = WidgetMargin("large")
diff --git a/datadog_api_client/v1/model/widget_marker.py b/datadog_api_client/v1/model/widget_marker.py
new file mode 100644
index 0000000000..05f7979af5
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_marker.py
@@ -0,0 +1,72 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetMarker(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "display_type": (str,),
+ "label": (str,),
+ "time": (str,),
+ "value": (str,),
+ }
+ attribute_map = {
+ "display_type": "display_type",
+ "label": "label",
+ "time": "time",
+ "value": "value",
+ }
+
+ def __init__(self_, value: str, display_type: Union[str, UnsetType]=unset, label: Union[str, UnsetType]=unset, time: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Markers allow you to add visual conditional formatting for your graphs.
+
+ :param display_type: Combination of:
+
+ * A severity error, warning, ok, or info
+ * A line type: dashed, solid, or bold
+ In this case of a Distribution widget, this can be set to be ``percentile``.
+ :type display_type: str, optional
+
+ :param label: Label to display over the marker.
+ :type label: str, optional
+
+ :param time: Timestamp for the widget.
+ :type time: str, optional
+
+ :param value: Value to apply. Can be a single value y = 15 or a range of values 0 < y < 10.
+ For Distribution widgets with ``display_type`` set to ``percentile`` , this should be
+ a numeric percentile value (for example, "90" for P90).
+ :type value: str
+ """
+ if display_type is not unset:
+ kwargs["display_type"] = display_type
+ if label is not unset:
+ kwargs["label"] = label
+ if time is not unset:
+ kwargs["time"] = time
+ super().__init__(kwargs)
+
+
+ self_.value = value
diff --git a/datadog_api_client/v1/model/widget_message_display.py b/datadog_api_client/v1/model/widget_message_display.py
new file mode 100644
index 0000000000..c9a36fd9db
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_message_display.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetMessageDisplay(ModelSimple):
+ """
+ Amount of log lines to display
+
+ :param value: Must be one of ["inline", "expanded-md", "expanded-lg"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "inline",
+ "expanded-md",
+ "expanded-lg",
+ }
+ INLINE: ClassVar["WidgetMessageDisplay"]
+ EXPANDED_MEDIUM: ClassVar["WidgetMessageDisplay"]
+ EXPANDED_LARGE: ClassVar["WidgetMessageDisplay"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetMessageDisplay.INLINE = WidgetMessageDisplay("inline")
+WidgetMessageDisplay.EXPANDED_MEDIUM = WidgetMessageDisplay("expanded-md")
+WidgetMessageDisplay.EXPANDED_LARGE = WidgetMessageDisplay("expanded-lg")
diff --git a/datadog_api_client/v1/model/widget_monitor_summary_display_format.py b/datadog_api_client/v1/model/widget_monitor_summary_display_format.py
new file mode 100644
index 0000000000..9d63515e33
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_monitor_summary_display_format.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetMonitorSummaryDisplayFormat(ModelSimple):
+ """
+ What to display on the widget.
+
+ :param value: Must be one of ["counts", "countsAndList", "list"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "counts",
+ "countsAndList",
+ "list",
+ }
+ COUNTS: ClassVar["WidgetMonitorSummaryDisplayFormat"]
+ COUNTS_AND_LIST: ClassVar["WidgetMonitorSummaryDisplayFormat"]
+ LIST: ClassVar["WidgetMonitorSummaryDisplayFormat"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetMonitorSummaryDisplayFormat.COUNTS = WidgetMonitorSummaryDisplayFormat("counts")
+WidgetMonitorSummaryDisplayFormat.COUNTS_AND_LIST = WidgetMonitorSummaryDisplayFormat("countsAndList")
+WidgetMonitorSummaryDisplayFormat.LIST = WidgetMonitorSummaryDisplayFormat("list")
diff --git a/datadog_api_client/v1/model/widget_monitor_summary_sort.py b/datadog_api_client/v1/model/widget_monitor_summary_sort.py
new file mode 100644
index 0000000000..4149f2c666
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_monitor_summary_sort.py
@@ -0,0 +1,93 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetMonitorSummarySort(ModelSimple):
+ """
+ Widget sorting methods.
+
+ :param value: Must be one of ["name", "group", "status", "tags", "triggered", "group,asc", "group,desc", "name,asc", "name,desc", "status,asc", "status,desc", "tags,asc", "tags,desc", "triggered,asc", "triggered,desc", "priority,asc", "priority,desc"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "name",
+ "group",
+ "status",
+ "tags",
+ "triggered",
+ "group,asc",
+ "group,desc",
+ "name,asc",
+ "name,desc",
+ "status,asc",
+ "status,desc",
+ "tags,asc",
+ "tags,desc",
+ "triggered,asc",
+ "triggered,desc",
+ "priority,asc",
+ "priority,desc",
+ }
+ NAME: ClassVar["WidgetMonitorSummarySort"]
+ GROUP: ClassVar["WidgetMonitorSummarySort"]
+ STATUS: ClassVar["WidgetMonitorSummarySort"]
+ TAGS: ClassVar["WidgetMonitorSummarySort"]
+ TRIGGERED: ClassVar["WidgetMonitorSummarySort"]
+ GROUP_ASCENDING: ClassVar["WidgetMonitorSummarySort"]
+ GROUP_DESCENDING: ClassVar["WidgetMonitorSummarySort"]
+ NAME_ASCENDING: ClassVar["WidgetMonitorSummarySort"]
+ NAME_DESCENDING: ClassVar["WidgetMonitorSummarySort"]
+ STATUS_ASCENDING: ClassVar["WidgetMonitorSummarySort"]
+ STATUS_DESCENDING: ClassVar["WidgetMonitorSummarySort"]
+ TAGS_ASCENDING: ClassVar["WidgetMonitorSummarySort"]
+ TAGS_DESCENDING: ClassVar["WidgetMonitorSummarySort"]
+ TRIGGERED_ASCENDING: ClassVar["WidgetMonitorSummarySort"]
+ TRIGGERED_DESCENDING: ClassVar["WidgetMonitorSummarySort"]
+ PRIORITY_ASCENDING: ClassVar["WidgetMonitorSummarySort"]
+ PRIORITY_DESCENDING: ClassVar["WidgetMonitorSummarySort"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetMonitorSummarySort.NAME = WidgetMonitorSummarySort("name")
+WidgetMonitorSummarySort.GROUP = WidgetMonitorSummarySort("group")
+WidgetMonitorSummarySort.STATUS = WidgetMonitorSummarySort("status")
+WidgetMonitorSummarySort.TAGS = WidgetMonitorSummarySort("tags")
+WidgetMonitorSummarySort.TRIGGERED = WidgetMonitorSummarySort("triggered")
+WidgetMonitorSummarySort.GROUP_ASCENDING = WidgetMonitorSummarySort("group,asc")
+WidgetMonitorSummarySort.GROUP_DESCENDING = WidgetMonitorSummarySort("group,desc")
+WidgetMonitorSummarySort.NAME_ASCENDING = WidgetMonitorSummarySort("name,asc")
+WidgetMonitorSummarySort.NAME_DESCENDING = WidgetMonitorSummarySort("name,desc")
+WidgetMonitorSummarySort.STATUS_ASCENDING = WidgetMonitorSummarySort("status,asc")
+WidgetMonitorSummarySort.STATUS_DESCENDING = WidgetMonitorSummarySort("status,desc")
+WidgetMonitorSummarySort.TAGS_ASCENDING = WidgetMonitorSummarySort("tags,asc")
+WidgetMonitorSummarySort.TAGS_DESCENDING = WidgetMonitorSummarySort("tags,desc")
+WidgetMonitorSummarySort.TRIGGERED_ASCENDING = WidgetMonitorSummarySort("triggered,asc")
+WidgetMonitorSummarySort.TRIGGERED_DESCENDING = WidgetMonitorSummarySort("triggered,desc")
+WidgetMonitorSummarySort.PRIORITY_ASCENDING = WidgetMonitorSummarySort("priority,asc")
+WidgetMonitorSummarySort.PRIORITY_DESCENDING = WidgetMonitorSummarySort("priority,desc")
diff --git a/datadog_api_client/v1/model/widget_new_fixed_span.py b/datadog_api_client/v1/model/widget_new_fixed_span.py
new file mode 100644
index 0000000000..97e1cc945a
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_new_fixed_span.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_new_fixed_span_type import WidgetNewFixedSpanType
+
+class WidgetNewFixedSpan(ModelNormal):
+ validations = {
+ "_from": {
+ "inclusive_minimum": 0,
+ },
+ "to": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_new_fixed_span_type import WidgetNewFixedSpanType
+ return {
+ "_from": (int,),
+ "hide_incomplete_cost_data": (bool,),
+ "to": (int,),
+ "type": (WidgetNewFixedSpanType,),
+ }
+ attribute_map = {
+ "_from": "from",
+ "hide_incomplete_cost_data": "hide_incomplete_cost_data",
+ "to": "to",
+ "type": "type",
+ }
+
+ def __init__(self_, _from: int, to: int, type: WidgetNewFixedSpanType, hide_incomplete_cost_data: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Used for fixed span times, such as 'March 1 to March 7'.
+
+ :param _from: Start time in milliseconds since epoch.
+ :type _from: int
+
+ :param hide_incomplete_cost_data: Whether to hide incomplete cost data in the widget.
+ :type hide_incomplete_cost_data: bool, optional
+
+ :param to: End time in milliseconds since epoch.
+ :type to: int
+
+ :param type: Type "fixed" denotes a fixed span.
+ :type type: WidgetNewFixedSpanType
+ """
+ if hide_incomplete_cost_data is not unset:
+ kwargs["hide_incomplete_cost_data"] = hide_incomplete_cost_data
+ super().__init__(kwargs)
+
+
+ self_._from = _from
+ self_.to = to
+ self_.type = type
diff --git a/datadog_api_client/v1/model/widget_new_fixed_span_type.py b/datadog_api_client/v1/model/widget_new_fixed_span_type.py
new file mode 100644
index 0000000000..3ff32ee073
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_new_fixed_span_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetNewFixedSpanType(ModelSimple):
+ """
+ Type "fixed" denotes a fixed span.
+
+ :param value: If omitted defaults to "fixed". Must be one of ["fixed"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "fixed",
+ }
+ FIXED: ClassVar["WidgetNewFixedSpanType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetNewFixedSpanType.FIXED = WidgetNewFixedSpanType("fixed")
diff --git a/datadog_api_client/v1/model/widget_new_live_span.py b/datadog_api_client/v1/model/widget_new_live_span.py
new file mode 100644
index 0000000000..4005cfd29e
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_new_live_span.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_new_live_span_type import WidgetNewLiveSpanType
+ from datadog_api_client.v1.model.widget_live_span_unit import WidgetLiveSpanUnit
+
+class WidgetNewLiveSpan(ModelNormal):
+ validations = {
+ "value": {
+ "inclusive_minimum": 1,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_new_live_span_type import WidgetNewLiveSpanType
+ from datadog_api_client.v1.model.widget_live_span_unit import WidgetLiveSpanUnit
+ return {
+ "hide_incomplete_cost_data": (bool,),
+ "type": (WidgetNewLiveSpanType,),
+ "unit": (WidgetLiveSpanUnit,),
+ "value": (int,),
+ }
+ attribute_map = {
+ "hide_incomplete_cost_data": "hide_incomplete_cost_data",
+ "type": "type",
+ "unit": "unit",
+ "value": "value",
+ }
+
+ def __init__(self_, type: WidgetNewLiveSpanType, unit: WidgetLiveSpanUnit, value: int, hide_incomplete_cost_data: Union[bool, UnsetType]=unset, **kwargs):
+ """
+ Used for arbitrary live span times, such as 17 minutes or 6 hours.
+
+ :param hide_incomplete_cost_data: Whether to hide incomplete cost data in the widget.
+ :type hide_incomplete_cost_data: bool, optional
+
+ :param type: Type "live" denotes a live span in the new format.
+ :type type: WidgetNewLiveSpanType
+
+ :param unit: Unit of the time span.
+ :type unit: WidgetLiveSpanUnit
+
+ :param value: Value of the time span.
+ :type value: int
+ """
+ if hide_incomplete_cost_data is not unset:
+ kwargs["hide_incomplete_cost_data"] = hide_incomplete_cost_data
+ super().__init__(kwargs)
+
+
+ self_.type = type
+ self_.unit = unit
+ self_.value = value
diff --git a/datadog_api_client/v1/model/widget_new_live_span_type.py b/datadog_api_client/v1/model/widget_new_live_span_type.py
new file mode 100644
index 0000000000..6c20866feb
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_new_live_span_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetNewLiveSpanType(ModelSimple):
+ """
+ Type "live" denotes a live span in the new format.
+
+ :param value: If omitted defaults to "live". Must be one of ["live"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "live",
+ }
+ LIVE: ClassVar["WidgetNewLiveSpanType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetNewLiveSpanType.LIVE = WidgetNewLiveSpanType("live")
diff --git a/datadog_api_client/v1/model/widget_node_type.py b/datadog_api_client/v1/model/widget_node_type.py
new file mode 100644
index 0000000000..844f93c3e7
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_node_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetNodeType(ModelSimple):
+ """
+ Which type of node to use in the map.
+
+ :param value: Must be one of ["host", "container"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "host",
+ "container",
+ }
+ HOST: ClassVar["WidgetNodeType"]
+ CONTAINER: ClassVar["WidgetNodeType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetNodeType.HOST = WidgetNodeType("host")
+WidgetNodeType.CONTAINER = WidgetNodeType("container")
diff --git a/datadog_api_client/v1/model/widget_number_format.py b/datadog_api_client/v1/model/widget_number_format.py
new file mode 100644
index 0000000000..5a5dce58d1
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_number_format.py
@@ -0,0 +1,60 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.number_format_unit import NumberFormatUnit
+ from datadog_api_client.v1.model.number_format_unit_scale import NumberFormatUnitScale
+ from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+ from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+
+class WidgetNumberFormat(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.number_format_unit import NumberFormatUnit
+ from datadog_api_client.v1.model.number_format_unit_scale import NumberFormatUnitScale
+ return {
+ "unit": (NumberFormatUnit,),
+ "unit_scale": (NumberFormatUnitScale,),
+ }
+ attribute_map = {
+ "unit": "unit",
+ "unit_scale": "unit_scale",
+ }
+
+ def __init__(self_, unit: Union[NumberFormatUnit, NumberFormatUnitCanonical, NumberFormatUnitCustom, UnsetType]=unset, unit_scale: Union[NumberFormatUnitScale, none_type, UnsetType]=unset, **kwargs):
+ """
+ Number format options for the widget.
+
+ :param unit: Number format unit.
+ :type unit: NumberFormatUnit, optional
+
+ :param unit_scale: The definition of ``NumberFormatUnitScale`` object.
+ :type unit_scale: NumberFormatUnitScale, none_type, optional
+ """
+ if unit is not unset:
+ kwargs["unit"] = unit
+ if unit_scale is not unset:
+ kwargs["unit_scale"] = unit_scale
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_order_by.py b/datadog_api_client/v1/model/widget_order_by.py
new file mode 100644
index 0000000000..33c12ae2bd
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_order_by.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetOrderBy(ModelSimple):
+ """
+ What to order by.
+
+ :param value: Must be one of ["change", "name", "present", "past"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "change",
+ "name",
+ "present",
+ "past",
+ }
+ CHANGE: ClassVar["WidgetOrderBy"]
+ NAME: ClassVar["WidgetOrderBy"]
+ PRESENT: ClassVar["WidgetOrderBy"]
+ PAST: ClassVar["WidgetOrderBy"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetOrderBy.CHANGE = WidgetOrderBy("change")
+WidgetOrderBy.NAME = WidgetOrderBy("name")
+WidgetOrderBy.PRESENT = WidgetOrderBy("present")
+WidgetOrderBy.PAST = WidgetOrderBy("past")
diff --git a/datadog_api_client/v1/model/widget_palette.py b/datadog_api_client/v1/model/widget_palette.py
new file mode 100644
index 0000000000..f4c4c40324
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_palette.py
@@ -0,0 +1,99 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetPalette(ModelSimple):
+ """
+ Color palette to apply.
+
+ :param value: Must be one of ["blue", "custom_bg", "custom_image", "custom_text", "gray_on_white", "grey", "green", "orange", "red", "red_on_white", "white_on_gray", "white_on_green", "green_on_white", "white_on_red", "white_on_yellow", "yellow_on_white", "black_on_light_yellow", "black_on_light_green", "black_on_light_red"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "blue",
+ "custom_bg",
+ "custom_image",
+ "custom_text",
+ "gray_on_white",
+ "grey",
+ "green",
+ "orange",
+ "red",
+ "red_on_white",
+ "white_on_gray",
+ "white_on_green",
+ "green_on_white",
+ "white_on_red",
+ "white_on_yellow",
+ "yellow_on_white",
+ "black_on_light_yellow",
+ "black_on_light_green",
+ "black_on_light_red",
+ }
+ BLUE: ClassVar["WidgetPalette"]
+ CUSTOM_BACKGROUND: ClassVar["WidgetPalette"]
+ CUSTOM_IMAGE: ClassVar["WidgetPalette"]
+ CUSTOM_TEXT: ClassVar["WidgetPalette"]
+ GRAY_ON_WHITE: ClassVar["WidgetPalette"]
+ GREY: ClassVar["WidgetPalette"]
+ GREEN: ClassVar["WidgetPalette"]
+ ORANGE: ClassVar["WidgetPalette"]
+ RED: ClassVar["WidgetPalette"]
+ RED_ON_WHITE: ClassVar["WidgetPalette"]
+ WHITE_ON_GRAY: ClassVar["WidgetPalette"]
+ WHITE_ON_GREEN: ClassVar["WidgetPalette"]
+ GREEN_ON_WHITE: ClassVar["WidgetPalette"]
+ WHITE_ON_RED: ClassVar["WidgetPalette"]
+ WHITE_ON_YELLOW: ClassVar["WidgetPalette"]
+ YELLOW_ON_WHITE: ClassVar["WidgetPalette"]
+ BLACK_ON_LIGHT_YELLOW: ClassVar["WidgetPalette"]
+ BLACK_ON_LIGHT_GREEN: ClassVar["WidgetPalette"]
+ BLACK_ON_LIGHT_RED: ClassVar["WidgetPalette"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetPalette.BLUE = WidgetPalette("blue")
+WidgetPalette.CUSTOM_BACKGROUND = WidgetPalette("custom_bg")
+WidgetPalette.CUSTOM_IMAGE = WidgetPalette("custom_image")
+WidgetPalette.CUSTOM_TEXT = WidgetPalette("custom_text")
+WidgetPalette.GRAY_ON_WHITE = WidgetPalette("gray_on_white")
+WidgetPalette.GREY = WidgetPalette("grey")
+WidgetPalette.GREEN = WidgetPalette("green")
+WidgetPalette.ORANGE = WidgetPalette("orange")
+WidgetPalette.RED = WidgetPalette("red")
+WidgetPalette.RED_ON_WHITE = WidgetPalette("red_on_white")
+WidgetPalette.WHITE_ON_GRAY = WidgetPalette("white_on_gray")
+WidgetPalette.WHITE_ON_GREEN = WidgetPalette("white_on_green")
+WidgetPalette.GREEN_ON_WHITE = WidgetPalette("green_on_white")
+WidgetPalette.WHITE_ON_RED = WidgetPalette("white_on_red")
+WidgetPalette.WHITE_ON_YELLOW = WidgetPalette("white_on_yellow")
+WidgetPalette.YELLOW_ON_WHITE = WidgetPalette("yellow_on_white")
+WidgetPalette.BLACK_ON_LIGHT_YELLOW = WidgetPalette("black_on_light_yellow")
+WidgetPalette.BLACK_ON_LIGHT_GREEN = WidgetPalette("black_on_light_green")
+WidgetPalette.BLACK_ON_LIGHT_RED = WidgetPalette("black_on_light_red")
diff --git a/datadog_api_client/v1/model/widget_request_style.py b/datadog_api_client/v1/model/widget_request_style.py
new file mode 100644
index 0000000000..b3a8fae99f
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_request_style.py
@@ -0,0 +1,77 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_line_type import WidgetLineType
+ from datadog_api_client.v1.model.widget_line_width import WidgetLineWidth
+ from datadog_api_client.v1.model.widget_style_order_by import WidgetStyleOrderBy
+
+class WidgetRequestStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_line_type import WidgetLineType
+ from datadog_api_client.v1.model.widget_line_width import WidgetLineWidth
+ from datadog_api_client.v1.model.widget_style_order_by import WidgetStyleOrderBy
+ return {
+ "line_type": (WidgetLineType,),
+ "line_width": (WidgetLineWidth,),
+ "order_by": (WidgetStyleOrderBy,),
+ "palette": (str,),
+ }
+ attribute_map = {
+ "line_type": "line_type",
+ "line_width": "line_width",
+ "order_by": "order_by",
+ "palette": "palette",
+ }
+
+ def __init__(self_, line_type: Union[WidgetLineType, UnsetType]=unset, line_width: Union[WidgetLineWidth, UnsetType]=unset, order_by: Union[WidgetStyleOrderBy, UnsetType]=unset, palette: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Define request widget style.
+
+ :param line_type: Type of lines displayed.
+ :type line_type: WidgetLineType, optional
+
+ :param line_width: Width of line displayed.
+ :type line_width: WidgetLineWidth, optional
+
+ :param order_by: How to order series in timeseries visualizations.
+
+ * ``tags`` : Order series alphabetically by tag name (default behavior)
+ * ``values`` : Order series by their current metric values (typically descending)
+ :type order_by: WidgetStyleOrderBy, optional
+
+ :param palette: Color palette to apply to the widget.
+ :type palette: str, optional
+ """
+ if line_type is not unset:
+ kwargs["line_type"] = line_type
+ if line_width is not unset:
+ kwargs["line_width"] = line_width
+ if order_by is not unset:
+ kwargs["order_by"] = order_by
+ if palette is not unset:
+ kwargs["palette"] = palette
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_service_summary_display_format.py b/datadog_api_client/v1/model/widget_service_summary_display_format.py
new file mode 100644
index 0000000000..bcfd3fbd3c
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_service_summary_display_format.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetServiceSummaryDisplayFormat(ModelSimple):
+ """
+ Number of columns to display.
+
+ :param value: Must be one of ["one_column", "two_column", "three_column"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "one_column",
+ "two_column",
+ "three_column",
+ }
+ ONE_COLUMN: ClassVar["WidgetServiceSummaryDisplayFormat"]
+ TWO_COLUMN: ClassVar["WidgetServiceSummaryDisplayFormat"]
+ THREE_COLUMN: ClassVar["WidgetServiceSummaryDisplayFormat"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetServiceSummaryDisplayFormat.ONE_COLUMN = WidgetServiceSummaryDisplayFormat("one_column")
+WidgetServiceSummaryDisplayFormat.TWO_COLUMN = WidgetServiceSummaryDisplayFormat("two_column")
+WidgetServiceSummaryDisplayFormat.THREE_COLUMN = WidgetServiceSummaryDisplayFormat("three_column")
diff --git a/datadog_api_client/v1/model/widget_size_format.py b/datadog_api_client/v1/model/widget_size_format.py
new file mode 100644
index 0000000000..cb280e8c81
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_size_format.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetSizeFormat(ModelSimple):
+ """
+ Size of the widget.
+
+ :param value: Must be one of ["small", "medium", "large"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "small",
+ "medium",
+ "large",
+ }
+ SMALL: ClassVar["WidgetSizeFormat"]
+ MEDIUM: ClassVar["WidgetSizeFormat"]
+ LARGE: ClassVar["WidgetSizeFormat"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetSizeFormat.SMALL = WidgetSizeFormat("small")
+WidgetSizeFormat.MEDIUM = WidgetSizeFormat("medium")
+WidgetSizeFormat.LARGE = WidgetSizeFormat("large")
diff --git a/datadog_api_client/v1/model/widget_sort.py b/datadog_api_client/v1/model/widget_sort.py
new file mode 100644
index 0000000000..861a90e91d
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_sort.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetSort(ModelSimple):
+ """
+ Widget sorting methods.
+
+ :param value: Must be one of ["asc", "desc"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "asc",
+ "desc",
+ }
+ ASCENDING: ClassVar["WidgetSort"]
+ DESCENDING: ClassVar["WidgetSort"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetSort.ASCENDING = WidgetSort("asc")
+WidgetSort.DESCENDING = WidgetSort("desc")
diff --git a/datadog_api_client/v1/model/widget_sort_by.py b/datadog_api_client/v1/model/widget_sort_by.py
new file mode 100644
index 0000000000..57098a9e9e
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_sort_by.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_sort_order_by import WidgetSortOrderBy
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+
+class WidgetSortBy(ModelNormal):
+ validations = {
+ "count": {
+ "inclusive_minimum": 0,
+ },
+ }
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_sort_order_by import WidgetSortOrderBy
+ return {
+ "count": (int,),
+ "order_by": ([WidgetSortOrderBy],),
+ }
+ attribute_map = {
+ "count": "count",
+ "order_by": "order_by",
+ }
+
+ def __init__(self_, count: Union[int, UnsetType]=unset, order_by: Union[List[Union[WidgetSortOrderBy, WidgetFormulaSort, WidgetGroupSort]], UnsetType]=unset, **kwargs):
+ """
+ The controls for sorting the widget.
+
+ :param count: The number of items to limit the widget to.
+ :type count: int, optional
+
+ :param order_by: The array of items to sort the widget by in order.
+ :type order_by: [WidgetSortOrderBy], optional
+ """
+ if count is not unset:
+ kwargs["count"] = count
+ if order_by is not unset:
+ kwargs["order_by"] = order_by
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_sort_order_by.py b/datadog_api_client/v1/model/widget_sort_order_by.py
new file mode 100644
index 0000000000..67f2be1ba6
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_sort_order_by.py
@@ -0,0 +1,63 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetSortOrderBy(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ The item to sort the widget by.
+
+ :param index: The index of the formula to sort by.
+ :type index: int
+
+ :param order: Widget sorting methods.
+ :type order: WidgetSort
+
+ :param type: Set the sort type to formula.
+ :type type: FormulaType
+
+ :param name: The name of the group.
+ :type name: str
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+ from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+ return {
+ "oneOf": [
+ WidgetFormulaSort,
+ WidgetGroupSort,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/widget_style.py b/datadog_api_client/v1/model/widget_style.py
new file mode 100644
index 0000000000..1d8ecafe07
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_style.py
@@ -0,0 +1,46 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetStyle(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ return {
+ "palette": (str,),
+ }
+ attribute_map = {
+ "palette": "palette",
+ }
+
+ def __init__(self_, palette: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Widget style definition.
+
+ :param palette: Color palette to apply to the widget.
+ :type palette: str, optional
+ """
+ if palette is not unset:
+ kwargs["palette"] = palette
+ super().__init__(kwargs)
+
+
diff --git a/datadog_api_client/v1/model/widget_style_order_by.py b/datadog_api_client/v1/model/widget_style_order_by.py
new file mode 100644
index 0000000000..203bdb01d2
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_style_order_by.py
@@ -0,0 +1,50 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetStyleOrderBy(ModelSimple):
+ """
+ How to order series in timeseries visualizations.
+ - `tags`: Order series alphabetically by tag name (default behavior)
+ - `values`: Order series by their current metric values (typically descending)
+
+ :param value: Must be one of ["tags", "values"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "tags",
+ "values",
+ }
+ TAGS: ClassVar["WidgetStyleOrderBy"]
+ VALUES: ClassVar["WidgetStyleOrderBy"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetStyleOrderBy.TAGS = WidgetStyleOrderBy("tags")
+WidgetStyleOrderBy.VALUES = WidgetStyleOrderBy("values")
diff --git a/datadog_api_client/v1/model/widget_summary_type.py b/datadog_api_client/v1/model/widget_summary_type.py
new file mode 100644
index 0000000000..2f9b810035
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_summary_type.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetSummaryType(ModelSimple):
+ """
+ Which summary type should be used.
+
+ :param value: Must be one of ["monitors", "groups", "combined"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "monitors",
+ "groups",
+ "combined",
+ }
+ MONITORS: ClassVar["WidgetSummaryType"]
+ GROUPS: ClassVar["WidgetSummaryType"]
+ COMBINED: ClassVar["WidgetSummaryType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetSummaryType.MONITORS = WidgetSummaryType("monitors")
+WidgetSummaryType.GROUPS = WidgetSummaryType("groups")
+WidgetSummaryType.COMBINED = WidgetSummaryType("combined")
diff --git a/datadog_api_client/v1/model/widget_text_align.py b/datadog_api_client/v1/model/widget_text_align.py
new file mode 100644
index 0000000000..ceabd77d79
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_text_align.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetTextAlign(ModelSimple):
+ """
+ How to align the text on the widget.
+
+ :param value: Must be one of ["center", "left", "right"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "center",
+ "left",
+ "right",
+ }
+ CENTER: ClassVar["WidgetTextAlign"]
+ LEFT: ClassVar["WidgetTextAlign"]
+ RIGHT: ClassVar["WidgetTextAlign"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetTextAlign.CENTER = WidgetTextAlign("center")
+WidgetTextAlign.LEFT = WidgetTextAlign("left")
+WidgetTextAlign.RIGHT = WidgetTextAlign("right")
diff --git a/datadog_api_client/v1/model/widget_tick_edge.py b/datadog_api_client/v1/model/widget_tick_edge.py
new file mode 100644
index 0000000000..c033e829d9
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_tick_edge.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetTickEdge(ModelSimple):
+ """
+ Define how you want to align the text on the widget.
+
+ :param value: Must be one of ["bottom", "left", "right", "top"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "bottom",
+ "left",
+ "right",
+ "top",
+ }
+ BOTTOM: ClassVar["WidgetTickEdge"]
+ LEFT: ClassVar["WidgetTickEdge"]
+ RIGHT: ClassVar["WidgetTickEdge"]
+ TOP: ClassVar["WidgetTickEdge"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetTickEdge.BOTTOM = WidgetTickEdge("bottom")
+WidgetTickEdge.LEFT = WidgetTickEdge("left")
+WidgetTickEdge.RIGHT = WidgetTickEdge("right")
+WidgetTickEdge.TOP = WidgetTickEdge("top")
diff --git a/datadog_api_client/v1/model/widget_time.py b/datadog_api_client/v1/model/widget_time.py
new file mode 100644
index 0000000000..3f17fa9bdb
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_time.py
@@ -0,0 +1,74 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WidgetTime(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Time setting for the widget.
+
+ :param hide_incomplete_cost_data: Whether to hide incomplete cost data in the widget.
+ :type hide_incomplete_cost_data: bool, optional
+
+ :param live_span: The available timeframes depend on the widget you are using.
+ :type live_span: WidgetLiveSpan, optional
+
+ :param type: Type "live" denotes a live span in the new format.
+ :type type: WidgetNewLiveSpanType
+
+ :param unit: Unit of the time span.
+ :type unit: WidgetLiveSpanUnit
+
+ :param value: Value of the time span.
+ :type value: int
+
+ :param _from: Start time in milliseconds since epoch.
+ :type _from: int
+
+ :param to: End time in milliseconds since epoch.
+ :type to: int
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+ return {
+ "oneOf": [
+ WidgetLegacyLiveSpan,
+ WidgetNewLiveSpan,
+ WidgetNewFixedSpan,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/widget_time_windows.py b/datadog_api_client/v1/model/widget_time_windows.py
new file mode 100644
index 0000000000..c22fed1175
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_time_windows.py
@@ -0,0 +1,66 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetTimeWindows(ModelSimple):
+ """
+ Define a time window.
+
+ :param value: Must be one of ["7d", "30d", "90d", "week_to_date", "previous_week", "month_to_date", "previous_month", "global_time"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "7d",
+ "30d",
+ "90d",
+ "week_to_date",
+ "previous_week",
+ "month_to_date",
+ "previous_month",
+ "global_time",
+ }
+ SEVEN_DAYS: ClassVar["WidgetTimeWindows"]
+ THIRTY_DAYS: ClassVar["WidgetTimeWindows"]
+ NINETY_DAYS: ClassVar["WidgetTimeWindows"]
+ WEEK_TO_DATE: ClassVar["WidgetTimeWindows"]
+ PREVIOUS_WEEK: ClassVar["WidgetTimeWindows"]
+ MONTH_TO_DATE: ClassVar["WidgetTimeWindows"]
+ PREVIOUS_MONTH: ClassVar["WidgetTimeWindows"]
+ GLOBAL_TIME: ClassVar["WidgetTimeWindows"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetTimeWindows.SEVEN_DAYS = WidgetTimeWindows("7d")
+WidgetTimeWindows.THIRTY_DAYS = WidgetTimeWindows("30d")
+WidgetTimeWindows.NINETY_DAYS = WidgetTimeWindows("90d")
+WidgetTimeWindows.WEEK_TO_DATE = WidgetTimeWindows("week_to_date")
+WidgetTimeWindows.PREVIOUS_WEEK = WidgetTimeWindows("previous_week")
+WidgetTimeWindows.MONTH_TO_DATE = WidgetTimeWindows("month_to_date")
+WidgetTimeWindows.PREVIOUS_MONTH = WidgetTimeWindows("previous_month")
+WidgetTimeWindows.GLOBAL_TIME = WidgetTimeWindows("global_time")
diff --git a/datadog_api_client/v1/model/widget_vertical_align.py b/datadog_api_client/v1/model/widget_vertical_align.py
new file mode 100644
index 0000000000..33de6fd9b6
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_vertical_align.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetVerticalAlign(ModelSimple):
+ """
+ Vertical alignment.
+
+ :param value: Must be one of ["center", "top", "bottom"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "center",
+ "top",
+ "bottom",
+ }
+ CENTER: ClassVar["WidgetVerticalAlign"]
+ TOP: ClassVar["WidgetVerticalAlign"]
+ BOTTOM: ClassVar["WidgetVerticalAlign"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetVerticalAlign.CENTER = WidgetVerticalAlign("center")
+WidgetVerticalAlign.TOP = WidgetVerticalAlign("top")
+WidgetVerticalAlign.BOTTOM = WidgetVerticalAlign("bottom")
diff --git a/datadog_api_client/v1/model/widget_view_mode.py b/datadog_api_client/v1/model/widget_view_mode.py
new file mode 100644
index 0000000000..e1f7d9139b
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_view_mode.py
@@ -0,0 +1,51 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetViewMode(ModelSimple):
+ """
+ Define how you want the SLO to be displayed.
+
+ :param value: Must be one of ["overall", "component", "both"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "overall",
+ "component",
+ "both",
+ }
+ OVERALL: ClassVar["WidgetViewMode"]
+ COMPONENT: ClassVar["WidgetViewMode"]
+ BOTH: ClassVar["WidgetViewMode"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetViewMode.OVERALL = WidgetViewMode("overall")
+WidgetViewMode.COMPONENT = WidgetViewMode("component")
+WidgetViewMode.BOTH = WidgetViewMode("both")
diff --git a/datadog_api_client/v1/model/widget_viz_type.py b/datadog_api_client/v1/model/widget_viz_type.py
new file mode 100644
index 0000000000..9bce017cfc
--- /dev/null
+++ b/datadog_api_client/v1/model/widget_viz_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WidgetVizType(ModelSimple):
+ """
+ Whether to display the Alert Graph as a timeseries or a top list.
+
+ :param value: Must be one of ["timeseries", "toplist"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "timeseries",
+ "toplist",
+ }
+ TIMESERIES: ClassVar["WidgetVizType"]
+ TOPLIST: ClassVar["WidgetVizType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WidgetVizType.TIMESERIES = WidgetVizType("timeseries")
+WidgetVizType.TOPLIST = WidgetVizType("toplist")
diff --git a/datadog_api_client/v1/model/wildcard_widget_definition.py b/datadog_api_client/v1/model/wildcard_widget_definition.py
new file mode 100644
index 0000000000..d3ba4ff072
--- /dev/null
+++ b/datadog_api_client/v1/model/wildcard_widget_definition.py
@@ -0,0 +1,112 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.wildcard_widget_request import WildcardWidgetRequest
+ from datadog_api_client.v1.model.wildcard_widget_specification import WildcardWidgetSpecification
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.wildcard_widget_definition_type import WildcardWidgetDefinitionType
+ from datadog_api_client.v1.model.tree_map_widget_request import TreeMapWidgetRequest
+ from datadog_api_client.v1.model.timeseries_widget_request import TimeseriesWidgetRequest
+ from datadog_api_client.v1.model.list_stream_widget_request import ListStreamWidgetRequest
+ from datadog_api_client.v1.model.distribution_widget_request import DistributionWidgetRequest
+ from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+ from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+ from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+
+class WildcardWidgetDefinition(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+ from datadog_api_client.v1.model.wildcard_widget_request import WildcardWidgetRequest
+ from datadog_api_client.v1.model.wildcard_widget_specification import WildcardWidgetSpecification
+ from datadog_api_client.v1.model.widget_time import WidgetTime
+ from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+ from datadog_api_client.v1.model.wildcard_widget_definition_type import WildcardWidgetDefinitionType
+ return {
+ "custom_links": ([WidgetCustomLink],),
+ "requests": ([WildcardWidgetRequest],),
+ "specification": (WildcardWidgetSpecification,),
+ "time": (WidgetTime,),
+ "title": (str,),
+ "title_align": (WidgetTextAlign,),
+ "title_size": (str,),
+ "type": (WildcardWidgetDefinitionType,),
+ }
+ attribute_map = {
+ "custom_links": "custom_links",
+ "requests": "requests",
+ "specification": "specification",
+ "time": "time",
+ "title": "title",
+ "title_align": "title_align",
+ "title_size": "title_size",
+ "type": "type",
+ }
+
+ def __init__(self_, requests: List[Union[WildcardWidgetRequest, TreeMapWidgetRequest, TimeseriesWidgetRequest, ListStreamWidgetRequest, DistributionWidgetRequest]], specification: WildcardWidgetSpecification, type: WildcardWidgetDefinitionType, custom_links: Union[List[WidgetCustomLink], UnsetType]=unset, time: Union[WidgetTime, WidgetLegacyLiveSpan, WidgetNewLiveSpan, WidgetNewFixedSpan, UnsetType]=unset, title: Union[str, UnsetType]=unset, title_align: Union[WidgetTextAlign, UnsetType]=unset, title_size: Union[str, UnsetType]=unset, **kwargs):
+ """
+ Custom visualization widget using Vega or Vega-Lite specifications. Combines standard Datadog data requests with a Vega or Vega-Lite JSON specification for flexible, custom visualizations.
+
+ :param custom_links: List of custom links.
+ :type custom_links: [WidgetCustomLink], optional
+
+ :param requests: List of data requests for the wildcard widget.
+ :type requests: [WildcardWidgetRequest]
+
+ :param specification: Vega or Vega-Lite specification for custom visualization rendering. See https://vega.github.io/vega-lite/ for the full grammar reference.
+ :type specification: WildcardWidgetSpecification
+
+ :param time: Time setting for the widget.
+ :type time: WidgetTime, optional
+
+ :param title: Title of the widget.
+ :type title: str, optional
+
+ :param title_align: How to align the text on the widget.
+ :type title_align: WidgetTextAlign, optional
+
+ :param title_size: Size of the title.
+ :type title_size: str, optional
+
+ :param type: Type of the wildcard widget.
+ :type type: WildcardWidgetDefinitionType
+ """
+ if custom_links is not unset:
+ kwargs["custom_links"] = custom_links
+ if time is not unset:
+ kwargs["time"] = time
+ if title is not unset:
+ kwargs["title"] = title
+ if title_align is not unset:
+ kwargs["title_align"] = title_align
+ if title_size is not unset:
+ kwargs["title_size"] = title_size
+ super().__init__(kwargs)
+
+
+ self_.requests = requests
+ self_.specification = specification
+ self_.type = type
diff --git a/datadog_api_client/v1/model/wildcard_widget_definition_type.py b/datadog_api_client/v1/model/wildcard_widget_definition_type.py
new file mode 100644
index 0000000000..e363c1939a
--- /dev/null
+++ b/datadog_api_client/v1/model/wildcard_widget_definition_type.py
@@ -0,0 +1,45 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WildcardWidgetDefinitionType(ModelSimple):
+ """
+ Type of the wildcard widget.
+
+ :param value: If omitted defaults to "wildcard". Must be one of ["wildcard"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "wildcard",
+ }
+ WILDCARD: ClassVar["WildcardWidgetDefinitionType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WildcardWidgetDefinitionType.WILDCARD = WildcardWidgetDefinitionType("wildcard")
diff --git a/datadog_api_client/v1/model/wildcard_widget_request.py b/datadog_api_client/v1/model/wildcard_widget_request.py
new file mode 100644
index 0000000000..6ce5b7e053
--- /dev/null
+++ b/datadog_api_client/v1/model/wildcard_widget_request.py
@@ -0,0 +1,121 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+
+class WildcardWidgetRequest(ModelComposed):
+
+
+
+ def __init__(self, **kwargs):
+ """
+ Request object for the wildcard widget. Each variant represents a distinct data-fetching pattern: scalar formulas, timeseries formulas, list streams, and histograms.
+
+ :param formulas: List of formulas that operate on queries.
+ :type formulas: [WidgetFormula], optional
+
+ :param q: The widget metrics query. Deprecated - Use `queries` and `formulas` instead.
+ :type q: str, optional
+
+ :param queries: List of queries that can be returned directly or used in formulas.
+ :type queries: [FormulaAndFunctionQueryDefinition], optional
+
+ :param response_format: Timeseries, scalar, or event list response. Event list response formats are supported by Geomap widgets.
+ :type response_format: FormulaAndFunctionResponseFormat, optional
+
+ :param sort: The controls for sorting the widget.
+ :type sort: WidgetSortBy, optional
+
+ :param style: Define request widget style.
+ :type style: WidgetRequestStyle, optional
+
+ :param apm_query: The log query.
+ :type apm_query: LogQueryDefinition, optional
+
+ :param audit_query: The log query.
+ :type audit_query: LogQueryDefinition, optional
+
+ :param display_type: Type of display to use for the request.
+ :type display_type: WidgetDisplayType, optional
+
+ :param event_query: The log query.
+ :type event_query: LogQueryDefinition, optional
+
+ :param log_query: The log query.
+ :type log_query: LogQueryDefinition, optional
+
+ :param metadata: Used to define expression aliases.
+ :type metadata: [TimeseriesWidgetExpressionAlias], optional
+
+ :param network_query: The log query.
+ :type network_query: LogQueryDefinition, optional
+
+ :param on_right_yaxis: Whether or not to display a second y-axis on the right.
+ :type on_right_yaxis: bool, optional
+
+ :param process_query: The process query to use in the widget.
+ :type process_query: ProcessQueryDefinition, optional
+
+ :param profile_metrics_query: The log query.
+ :type profile_metrics_query: LogQueryDefinition, optional
+
+ :param rum_query: The log query.
+ :type rum_query: LogQueryDefinition, optional
+
+ :param security_query: The log query.
+ :type security_query: LogQueryDefinition, optional
+
+ :param columns: Widget columns.
+ :type columns: [ListStreamColumn]
+
+ :param query: Updated list stream widget.
+ :type query: ListStreamQuery
+
+ :param apm_stats_query: The APM stats query for table and distributions widgets.
+ :type apm_stats_query: ApmStatsQueryDefinition, optional
+
+ :param request_type: Request type for distribution of point values for distribution metrics. Query space aggregator must be `histogram:` for points distributions.
+ :type request_type: WidgetHistogramRequestType, optional
+ """
+ super().__init__(kwargs)
+
+ @cached_property
+ def _composed_schemas(_):
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ from datadog_api_client.v1.model.tree_map_widget_request import TreeMapWidgetRequest
+ from datadog_api_client.v1.model.timeseries_widget_request import TimeseriesWidgetRequest
+ from datadog_api_client.v1.model.list_stream_widget_request import ListStreamWidgetRequest
+ from datadog_api_client.v1.model.distribution_widget_request import DistributionWidgetRequest
+ return {
+ "oneOf": [
+ TreeMapWidgetRequest,
+ TimeseriesWidgetRequest,
+ ListStreamWidgetRequest,
+ DistributionWidgetRequest,
+ ],
+ }
diff --git a/datadog_api_client/v1/model/wildcard_widget_specification.py b/datadog_api_client/v1/model/wildcard_widget_specification.py
new file mode 100644
index 0000000000..ad1d40273e
--- /dev/null
+++ b/datadog_api_client/v1/model/wildcard_widget_specification.py
@@ -0,0 +1,54 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+
+if TYPE_CHECKING:
+ from datadog_api_client.v1.model.wildcard_widget_specification_type import WildcardWidgetSpecificationType
+
+class WildcardWidgetSpecification(ModelNormal):
+ @cached_property
+ def openapi_types(_):
+ from datadog_api_client.v1.model.wildcard_widget_specification_type import WildcardWidgetSpecificationType
+ return {
+ "contents": (dict,),
+ "type": (WildcardWidgetSpecificationType,),
+ }
+ attribute_map = {
+ "contents": "contents",
+ "type": "type",
+ }
+
+ def __init__(self_, contents: dict, type: WildcardWidgetSpecificationType, **kwargs):
+ """
+ Vega or Vega-Lite specification for custom visualization rendering. See https://vega.github.io/vega-lite/ for the full grammar reference.
+
+ :param contents: The Vega or Vega-Lite JSON specification object.
+ :type contents: dict
+
+ :param type: Type of specification used by the wildcard widget.
+ :type type: WildcardWidgetSpecificationType
+ """
+ super().__init__(kwargs)
+
+
+ self_.contents = contents
+ self_.type = type
diff --git a/datadog_api_client/v1/model/wildcard_widget_specification_type.py b/datadog_api_client/v1/model/wildcard_widget_specification_type.py
new file mode 100644
index 0000000000..bdc753699c
--- /dev/null
+++ b/datadog_api_client/v1/model/wildcard_widget_specification_type.py
@@ -0,0 +1,48 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+from typing import Any, Dict, List, Union, TYPE_CHECKING
+
+from datadog_api_client.model_utils import (
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ unset,
+ UnsetType,
+ UUID,
+)
+
+from typing import ClassVar
+
+class WildcardWidgetSpecificationType(ModelSimple):
+ """
+ Type of specification used by the wildcard widget.
+
+ :param value: Must be one of ["vega", "vega-lite"].
+ :type value: str
+ """
+
+ allowed_values = {
+ "vega",
+ "vega-lite",
+ }
+ VEGA: ClassVar["WildcardWidgetSpecificationType"]
+ VEGA_LITE: ClassVar["WildcardWidgetSpecificationType"]
+
+
+
+ @cached_property
+ def openapi_types(_):
+ return {
+ "value": (str,),
+ }
+WildcardWidgetSpecificationType.VEGA = WildcardWidgetSpecificationType("vega")
+WildcardWidgetSpecificationType.VEGA_LITE = WildcardWidgetSpecificationType("vega-lite")
diff --git a/datadog_api_client/v1/models/__init__.py b/datadog_api_client/v1/models/__init__.py
new file mode 100644
index 0000000000..5b6c106109
--- /dev/null
+++ b/datadog_api_client/v1/models/__init__.py
@@ -0,0 +1,2368 @@
+
+from datadog_api_client.v1.model.api_error_response import APIErrorResponse
+from datadog_api_client.v1.model.aws_account import AWSAccount
+from datadog_api_client.v1.model.aws_account_and_lambda_request import AWSAccountAndLambdaRequest
+from datadog_api_client.v1.model.aws_account_create_response import AWSAccountCreateResponse
+from datadog_api_client.v1.model.aws_account_delete_request import AWSAccountDeleteRequest
+from datadog_api_client.v1.model.aws_account_list_response import AWSAccountListResponse
+from datadog_api_client.v1.model.aws_event_bridge_account_configuration import AWSEventBridgeAccountConfiguration
+from datadog_api_client.v1.model.aws_event_bridge_create_request import AWSEventBridgeCreateRequest
+from datadog_api_client.v1.model.aws_event_bridge_create_response import AWSEventBridgeCreateResponse
+from datadog_api_client.v1.model.aws_event_bridge_create_status import AWSEventBridgeCreateStatus
+from datadog_api_client.v1.model.aws_event_bridge_delete_request import AWSEventBridgeDeleteRequest
+from datadog_api_client.v1.model.aws_event_bridge_delete_response import AWSEventBridgeDeleteResponse
+from datadog_api_client.v1.model.aws_event_bridge_delete_status import AWSEventBridgeDeleteStatus
+from datadog_api_client.v1.model.aws_event_bridge_list_response import AWSEventBridgeListResponse
+from datadog_api_client.v1.model.aws_event_bridge_source import AWSEventBridgeSource
+from datadog_api_client.v1.model.aws_logs_async_error import AWSLogsAsyncError
+from datadog_api_client.v1.model.aws_logs_async_response import AWSLogsAsyncResponse
+from datadog_api_client.v1.model.aws_logs_lambda import AWSLogsLambda
+from datadog_api_client.v1.model.aws_logs_list_response import AWSLogsListResponse
+from datadog_api_client.v1.model.aws_logs_list_services_response import AWSLogsListServicesResponse
+from datadog_api_client.v1.model.aws_logs_services_request import AWSLogsServicesRequest
+from datadog_api_client.v1.model.aws_namespace import AWSNamespace
+from datadog_api_client.v1.model.aws_tag_filter import AWSTagFilter
+from datadog_api_client.v1.model.aws_tag_filter_create_request import AWSTagFilterCreateRequest
+from datadog_api_client.v1.model.aws_tag_filter_delete_request import AWSTagFilterDeleteRequest
+from datadog_api_client.v1.model.aws_tag_filter_list_response import AWSTagFilterListResponse
+from datadog_api_client.v1.model.access_role import AccessRole
+from datadog_api_client.v1.model.add_signal_to_incident_request import AddSignalToIncidentRequest
+from datadog_api_client.v1.model.agent_check import AgentCheck
+from datadog_api_client.v1.model.alert_graph_widget_definition import AlertGraphWidgetDefinition
+from datadog_api_client.v1.model.alert_graph_widget_definition_type import AlertGraphWidgetDefinitionType
+from datadog_api_client.v1.model.alert_value_widget_definition import AlertValueWidgetDefinition
+from datadog_api_client.v1.model.alert_value_widget_definition_type import AlertValueWidgetDefinitionType
+from datadog_api_client.v1.model.api_key import ApiKey
+from datadog_api_client.v1.model.api_key_list_response import ApiKeyListResponse
+from datadog_api_client.v1.model.api_key_response import ApiKeyResponse
+from datadog_api_client.v1.model.apm_stats_query_column_type import ApmStatsQueryColumnType
+from datadog_api_client.v1.model.apm_stats_query_definition import ApmStatsQueryDefinition
+from datadog_api_client.v1.model.apm_stats_query_row_type import ApmStatsQueryRowType
+from datadog_api_client.v1.model.application_key import ApplicationKey
+from datadog_api_client.v1.model.application_key_list_response import ApplicationKeyListResponse
+from datadog_api_client.v1.model.application_key_response import ApplicationKeyResponse
+from datadog_api_client.v1.model.authentication_validation_response import AuthenticationValidationResponse
+from datadog_api_client.v1.model.azure_account import AzureAccount
+from datadog_api_client.v1.model.azure_account_list_response import AzureAccountListResponse
+from datadog_api_client.v1.model.bar_chart_widget_definition import BarChartWidgetDefinition
+from datadog_api_client.v1.model.bar_chart_widget_definition_type import BarChartWidgetDefinitionType
+from datadog_api_client.v1.model.bar_chart_widget_display import BarChartWidgetDisplay
+from datadog_api_client.v1.model.bar_chart_widget_flat import BarChartWidgetFlat
+from datadog_api_client.v1.model.bar_chart_widget_flat_type import BarChartWidgetFlatType
+from datadog_api_client.v1.model.bar_chart_widget_legend import BarChartWidgetLegend
+from datadog_api_client.v1.model.bar_chart_widget_request import BarChartWidgetRequest
+from datadog_api_client.v1.model.bar_chart_widget_scaling import BarChartWidgetScaling
+from datadog_api_client.v1.model.bar_chart_widget_stacked import BarChartWidgetStacked
+from datadog_api_client.v1.model.bar_chart_widget_stacked_type import BarChartWidgetStackedType
+from datadog_api_client.v1.model.bar_chart_widget_style import BarChartWidgetStyle
+from datadog_api_client.v1.model.calendar_interval import CalendarInterval
+from datadog_api_client.v1.model.calendar_interval_type import CalendarIntervalType
+from datadog_api_client.v1.model.cancel_downtimes_by_scope_request import CancelDowntimesByScopeRequest
+from datadog_api_client.v1.model.canceled_downtimes_ids import CanceledDowntimesIds
+from datadog_api_client.v1.model.change_widget_definition import ChangeWidgetDefinition
+from datadog_api_client.v1.model.change_widget_definition_type import ChangeWidgetDefinitionType
+from datadog_api_client.v1.model.change_widget_request import ChangeWidgetRequest
+from datadog_api_client.v1.model.check_can_delete_monitor_response import CheckCanDeleteMonitorResponse
+from datadog_api_client.v1.model.check_can_delete_monitor_response_data import CheckCanDeleteMonitorResponseData
+from datadog_api_client.v1.model.check_can_delete_slo_response import CheckCanDeleteSLOResponse
+from datadog_api_client.v1.model.check_can_delete_slo_response_data import CheckCanDeleteSLOResponseData
+from datadog_api_client.v1.model.check_status_widget_definition import CheckStatusWidgetDefinition
+from datadog_api_client.v1.model.check_status_widget_definition_type import CheckStatusWidgetDefinitionType
+from datadog_api_client.v1.model.cohort_widget_definition import CohortWidgetDefinition
+from datadog_api_client.v1.model.cohort_widget_definition_type import CohortWidgetDefinitionType
+from datadog_api_client.v1.model.comparison_custom_timeframe import ComparisonCustomTimeframe
+from datadog_api_client.v1.model.comparison_duration import ComparisonDuration
+from datadog_api_client.v1.model.comparison_duration_type import ComparisonDurationType
+from datadog_api_client.v1.model.content_encoding import ContentEncoding
+from datadog_api_client.v1.model.creator import Creator
+from datadog_api_client.v1.model.dashboard import Dashboard
+from datadog_api_client.v1.model.dashboard_bulk_action_data import DashboardBulkActionData
+from datadog_api_client.v1.model.dashboard_bulk_action_data_list import DashboardBulkActionDataList
+from datadog_api_client.v1.model.dashboard_bulk_delete_request import DashboardBulkDeleteRequest
+from datadog_api_client.v1.model.dashboard_default_timeframe_setting import DashboardDefaultTimeframeSetting
+from datadog_api_client.v1.model.dashboard_delete_response import DashboardDeleteResponse
+from datadog_api_client.v1.model.dashboard_fixed_timeframe import DashboardFixedTimeframe
+from datadog_api_client.v1.model.dashboard_fixed_timeframe_type import DashboardFixedTimeframeType
+from datadog_api_client.v1.model.dashboard_global_time import DashboardGlobalTime
+from datadog_api_client.v1.model.dashboard_global_time_live_span import DashboardGlobalTimeLiveSpan
+from datadog_api_client.v1.model.dashboard_invite_type import DashboardInviteType
+from datadog_api_client.v1.model.dashboard_layout_type import DashboardLayoutType
+from datadog_api_client.v1.model.dashboard_list import DashboardList
+from datadog_api_client.v1.model.dashboard_list_delete_response import DashboardListDeleteResponse
+from datadog_api_client.v1.model.dashboard_list_list_response import DashboardListListResponse
+from datadog_api_client.v1.model.dashboard_live_timeframe import DashboardLiveTimeframe
+from datadog_api_client.v1.model.dashboard_live_timeframe_type import DashboardLiveTimeframeType
+from datadog_api_client.v1.model.dashboard_reflow_type import DashboardReflowType
+from datadog_api_client.v1.model.dashboard_resource_type import DashboardResourceType
+from datadog_api_client.v1.model.dashboard_restore_request import DashboardRestoreRequest
+from datadog_api_client.v1.model.dashboard_share_type import DashboardShareType
+from datadog_api_client.v1.model.dashboard_summary import DashboardSummary
+from datadog_api_client.v1.model.dashboard_summary_definition import DashboardSummaryDefinition
+from datadog_api_client.v1.model.dashboard_tab import DashboardTab
+from datadog_api_client.v1.model.dashboard_template_variable import DashboardTemplateVariable
+from datadog_api_client.v1.model.dashboard_template_variable_preset import DashboardTemplateVariablePreset
+from datadog_api_client.v1.model.dashboard_template_variable_preset_value import DashboardTemplateVariablePresetValue
+from datadog_api_client.v1.model.dashboard_type import DashboardType
+from datadog_api_client.v1.model.data_projection_query import DataProjectionQuery
+from datadog_api_client.v1.model.data_projection_request_type import DataProjectionRequestType
+from datadog_api_client.v1.model.dataset_list_query import DatasetListQuery
+from datadog_api_client.v1.model.dataset_list_query_data_source_type import DatasetListQueryDataSourceType
+from datadog_api_client.v1.model.dataset_list_query_sort import DatasetListQuerySort
+from datadog_api_client.v1.model.dataset_list_query_sort_field import DatasetListQuerySortField
+from datadog_api_client.v1.model.delete_shared_dashboard_response import DeleteSharedDashboardResponse
+from datadog_api_client.v1.model.deleted_monitor import DeletedMonitor
+from datadog_api_client.v1.model.distribution_point import DistributionPoint
+from datadog_api_client.v1.model.distribution_points_content_encoding import DistributionPointsContentEncoding
+from datadog_api_client.v1.model.distribution_points_payload import DistributionPointsPayload
+from datadog_api_client.v1.model.distribution_points_series import DistributionPointsSeries
+from datadog_api_client.v1.model.distribution_points_type import DistributionPointsType
+from datadog_api_client.v1.model.distribution_widget_definition import DistributionWidgetDefinition
+from datadog_api_client.v1.model.distribution_widget_definition_type import DistributionWidgetDefinitionType
+from datadog_api_client.v1.model.distribution_widget_histogram_request_query import DistributionWidgetHistogramRequestQuery
+from datadog_api_client.v1.model.distribution_widget_request import DistributionWidgetRequest
+from datadog_api_client.v1.model.distribution_widget_x_axis import DistributionWidgetXAxis
+from datadog_api_client.v1.model.distribution_widget_y_axis import DistributionWidgetYAxis
+from datadog_api_client.v1.model.downtime import Downtime
+from datadog_api_client.v1.model.downtime_child import DowntimeChild
+from datadog_api_client.v1.model.downtime_recurrence import DowntimeRecurrence
+from datadog_api_client.v1.model.event import Event
+from datadog_api_client.v1.model.event_alert_type import EventAlertType
+from datadog_api_client.v1.model.event_create_request import EventCreateRequest
+from datadog_api_client.v1.model.event_create_response import EventCreateResponse
+from datadog_api_client.v1.model.event_list_response import EventListResponse
+from datadog_api_client.v1.model.event_priority import EventPriority
+from datadog_api_client.v1.model.event_query_definition import EventQueryDefinition
+from datadog_api_client.v1.model.event_response import EventResponse
+from datadog_api_client.v1.model.event_stream_widget_definition import EventStreamWidgetDefinition
+from datadog_api_client.v1.model.event_stream_widget_definition_type import EventStreamWidgetDefinitionType
+from datadog_api_client.v1.model.event_timeline_widget_definition import EventTimelineWidgetDefinition
+from datadog_api_client.v1.model.event_timeline_widget_definition_type import EventTimelineWidgetDefinitionType
+from datadog_api_client.v1.model.events_aggregation import EventsAggregation
+from datadog_api_client.v1.model.events_aggregation_value import EventsAggregationValue
+from datadog_api_client.v1.model.formula_and_function_apm_dependency_stat_name import FormulaAndFunctionApmDependencyStatName
+from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_data_source import FormulaAndFunctionApmDependencyStatsDataSource
+from datadog_api_client.v1.model.formula_and_function_apm_dependency_stats_query_definition import FormulaAndFunctionApmDependencyStatsQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_apm_metric_stat_name import FormulaAndFunctionApmMetricStatName
+from datadog_api_client.v1.model.formula_and_function_apm_metrics_data_source import FormulaAndFunctionApmMetricsDataSource
+from datadog_api_client.v1.model.formula_and_function_apm_metrics_query_definition import FormulaAndFunctionApmMetricsQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_apm_metrics_span_kind import FormulaAndFunctionApmMetricsSpanKind
+from datadog_api_client.v1.model.formula_and_function_apm_resource_stat_name import FormulaAndFunctionApmResourceStatName
+from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_data_source import FormulaAndFunctionApmResourceStatsDataSource
+from datadog_api_client.v1.model.formula_and_function_apm_resource_stats_query_definition import FormulaAndFunctionApmResourceStatsQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_cloud_cost_data_source import FormulaAndFunctionCloudCostDataSource
+from datadog_api_client.v1.model.formula_and_function_cloud_cost_query_definition import FormulaAndFunctionCloudCostQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_event_aggregation import FormulaAndFunctionEventAggregation
+from datadog_api_client.v1.model.formula_and_function_event_query_definition import FormulaAndFunctionEventQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_event_query_definition_compute import FormulaAndFunctionEventQueryDefinitionCompute
+from datadog_api_client.v1.model.formula_and_function_event_query_definition_search import FormulaAndFunctionEventQueryDefinitionSearch
+from datadog_api_client.v1.model.formula_and_function_event_query_group_by import FormulaAndFunctionEventQueryGroupBy
+from datadog_api_client.v1.model.formula_and_function_event_query_group_by_config import FormulaAndFunctionEventQueryGroupByConfig
+from datadog_api_client.v1.model.formula_and_function_event_query_group_by_fields import FormulaAndFunctionEventQueryGroupByFields
+from datadog_api_client.v1.model.formula_and_function_event_query_group_by_sort import FormulaAndFunctionEventQueryGroupBySort
+from datadog_api_client.v1.model.formula_and_function_events_data_source import FormulaAndFunctionEventsDataSource
+from datadog_api_client.v1.model.formula_and_function_metric_aggregation import FormulaAndFunctionMetricAggregation
+from datadog_api_client.v1.model.formula_and_function_metric_data_source import FormulaAndFunctionMetricDataSource
+from datadog_api_client.v1.model.formula_and_function_metric_query_definition import FormulaAndFunctionMetricQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_metric_semantic_mode import FormulaAndFunctionMetricSemanticMode
+from datadog_api_client.v1.model.formula_and_function_process_query_data_source import FormulaAndFunctionProcessQueryDataSource
+from datadog_api_client.v1.model.formula_and_function_process_query_definition import FormulaAndFunctionProcessQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_data_source import FormulaAndFunctionProductAnalyticsExtendedDataSource
+from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition import FormulaAndFunctionProductAnalyticsExtendedQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_product_analytics_extended_query_definition_indexes_items import FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems
+from datadog_api_client.v1.model.formula_and_function_query_definition import FormulaAndFunctionQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_response_format import FormulaAndFunctionResponseFormat
+from datadog_api_client.v1.model.formula_and_function_retention_query_definition import FormulaAndFunctionRetentionQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_slo_data_source import FormulaAndFunctionSLODataSource
+from datadog_api_client.v1.model.formula_and_function_slo_group_mode import FormulaAndFunctionSLOGroupMode
+from datadog_api_client.v1.model.formula_and_function_slo_measure import FormulaAndFunctionSLOMeasure
+from datadog_api_client.v1.model.formula_and_function_slo_query_definition import FormulaAndFunctionSLOQueryDefinition
+from datadog_api_client.v1.model.formula_and_function_slo_query_type import FormulaAndFunctionSLOQueryType
+from datadog_api_client.v1.model.formula_and_function_user_journey_query_definition import FormulaAndFunctionUserJourneyQueryDefinition
+from datadog_api_client.v1.model.formula_type import FormulaType
+from datadog_api_client.v1.model.free_text_widget_definition import FreeTextWidgetDefinition
+from datadog_api_client.v1.model.free_text_widget_definition_type import FreeTextWidgetDefinitionType
+from datadog_api_client.v1.model.funnel_comparison_custom_timeframe import FunnelComparisonCustomTimeframe
+from datadog_api_client.v1.model.funnel_comparison_duration import FunnelComparisonDuration
+from datadog_api_client.v1.model.funnel_comparison_duration_type import FunnelComparisonDurationType
+from datadog_api_client.v1.model.funnel_grouped_display import FunnelGroupedDisplay
+from datadog_api_client.v1.model.funnel_query import FunnelQuery
+from datadog_api_client.v1.model.funnel_request_type import FunnelRequestType
+from datadog_api_client.v1.model.funnel_source import FunnelSource
+from datadog_api_client.v1.model.funnel_step import FunnelStep
+from datadog_api_client.v1.model.funnel_widget_definition import FunnelWidgetDefinition
+from datadog_api_client.v1.model.funnel_widget_definition_type import FunnelWidgetDefinitionType
+from datadog_api_client.v1.model.funnel_widget_request import FunnelWidgetRequest
+from datadog_api_client.v1.model.gcp_account import GCPAccount
+from datadog_api_client.v1.model.gcp_account_list_response import GCPAccountListResponse
+from datadog_api_client.v1.model.gcp_monitored_resource_config import GCPMonitoredResourceConfig
+from datadog_api_client.v1.model.gcp_monitored_resource_config_type import GCPMonitoredResourceConfigType
+from datadog_api_client.v1.model.geomap_widget_definition import GeomapWidgetDefinition
+from datadog_api_client.v1.model.geomap_widget_definition_style import GeomapWidgetDefinitionStyle
+from datadog_api_client.v1.model.geomap_widget_definition_type import GeomapWidgetDefinitionType
+from datadog_api_client.v1.model.geomap_widget_definition_view import GeomapWidgetDefinitionView
+from datadog_api_client.v1.model.geomap_widget_request import GeomapWidgetRequest
+from datadog_api_client.v1.model.geomap_widget_request_style import GeomapWidgetRequestStyle
+from datadog_api_client.v1.model.graph_snapshot import GraphSnapshot
+from datadog_api_client.v1.model.group_type import GroupType
+from datadog_api_client.v1.model.group_widget_definition import GroupWidgetDefinition
+from datadog_api_client.v1.model.group_widget_definition_type import GroupWidgetDefinitionType
+from datadog_api_client.v1.model.http_log import HTTPLog
+from datadog_api_client.v1.model.http_log_error import HTTPLogError
+from datadog_api_client.v1.model.http_log_item import HTTPLogItem
+from datadog_api_client.v1.model.heat_map_widget_definition import HeatMapWidgetDefinition
+from datadog_api_client.v1.model.heat_map_widget_definition_type import HeatMapWidgetDefinitionType
+from datadog_api_client.v1.model.heat_map_widget_request import HeatMapWidgetRequest
+from datadog_api_client.v1.model.heat_map_widget_x_axis import HeatMapWidgetXAxis
+from datadog_api_client.v1.model.host import Host
+from datadog_api_client.v1.model.host_list_response import HostListResponse
+from datadog_api_client.v1.model.host_map_request import HostMapRequest
+from datadog_api_client.v1.model.host_map_widget_definition import HostMapWidgetDefinition
+from datadog_api_client.v1.model.host_map_widget_definition_request_type import HostMapWidgetDefinitionRequestType
+from datadog_api_client.v1.model.host_map_widget_definition_requests import HostMapWidgetDefinitionRequests
+from datadog_api_client.v1.model.host_map_widget_definition_style import HostMapWidgetDefinitionStyle
+from datadog_api_client.v1.model.host_map_widget_definition_type import HostMapWidgetDefinitionType
+from datadog_api_client.v1.model.host_map_widget_dimension import HostMapWidgetDimension
+from datadog_api_client.v1.model.host_map_widget_formula import HostMapWidgetFormula
+from datadog_api_client.v1.model.host_map_widget_group_by import HostMapWidgetGroupBy
+from datadog_api_client.v1.model.host_map_widget_infrastructure_request import HostMapWidgetInfrastructureRequest
+from datadog_api_client.v1.model.host_map_widget_infrastructure_request_leaf import HostMapWidgetInfrastructureRequestLeaf
+from datadog_api_client.v1.model.host_map_widget_infrastructure_request_request_type import HostMapWidgetInfrastructureRequestRequestType
+from datadog_api_client.v1.model.host_map_widget_infrastructure_style import HostMapWidgetInfrastructureStyle
+from datadog_api_client.v1.model.host_map_widget_node_type import HostMapWidgetNodeType
+from datadog_api_client.v1.model.host_map_widget_projection import HostMapWidgetProjection
+from datadog_api_client.v1.model.host_map_widget_projection_dimension_mapping import HostMapWidgetProjectionDimensionMapping
+from datadog_api_client.v1.model.host_map_widget_projection_type import HostMapWidgetProjectionType
+from datadog_api_client.v1.model.host_map_widget_scalar_request import HostMapWidgetScalarRequest
+from datadog_api_client.v1.model.host_map_widget_scalar_request_response_format import HostMapWidgetScalarRequestResponseFormat
+from datadog_api_client.v1.model.host_meta import HostMeta
+from datadog_api_client.v1.model.host_meta_install_method import HostMetaInstallMethod
+from datadog_api_client.v1.model.host_metrics import HostMetrics
+from datadog_api_client.v1.model.host_mute_response import HostMuteResponse
+from datadog_api_client.v1.model.host_mute_settings import HostMuteSettings
+from datadog_api_client.v1.model.host_tags import HostTags
+from datadog_api_client.v1.model.host_totals import HostTotals
+from datadog_api_client.v1.model.hourly_usage_attribution_body import HourlyUsageAttributionBody
+from datadog_api_client.v1.model.hourly_usage_attribution_metadata import HourlyUsageAttributionMetadata
+from datadog_api_client.v1.model.hourly_usage_attribution_pagination import HourlyUsageAttributionPagination
+from datadog_api_client.v1.model.hourly_usage_attribution_response import HourlyUsageAttributionResponse
+from datadog_api_client.v1.model.hourly_usage_attribution_usage_type import HourlyUsageAttributionUsageType
+from datadog_api_client.v1.model.i_frame_widget_definition import IFrameWidgetDefinition
+from datadog_api_client.v1.model.i_frame_widget_definition_type import IFrameWidgetDefinitionType
+from datadog_api_client.v1.model.ip_prefixes_api import IPPrefixesAPI
+from datadog_api_client.v1.model.ip_prefixes_apm import IPPrefixesAPM
+from datadog_api_client.v1.model.ip_prefixes_agents import IPPrefixesAgents
+from datadog_api_client.v1.model.ip_prefixes_global import IPPrefixesGlobal
+from datadog_api_client.v1.model.ip_prefixes_logs import IPPrefixesLogs
+from datadog_api_client.v1.model.ip_prefixes_orchestrator import IPPrefixesOrchestrator
+from datadog_api_client.v1.model.ip_prefixes_process import IPPrefixesProcess
+from datadog_api_client.v1.model.ip_prefixes_remote_configuration import IPPrefixesRemoteConfiguration
+from datadog_api_client.v1.model.ip_prefixes_synthetics import IPPrefixesSynthetics
+from datadog_api_client.v1.model.ip_prefixes_synthetics_private_locations import IPPrefixesSyntheticsPrivateLocations
+from datadog_api_client.v1.model.ip_prefixes_webhooks import IPPrefixesWebhooks
+from datadog_api_client.v1.model.ip_ranges import IPRanges
+from datadog_api_client.v1.model.idp_form_data import IdpFormData
+from datadog_api_client.v1.model.idp_response import IdpResponse
+from datadog_api_client.v1.model.image_widget_definition import ImageWidgetDefinition
+from datadog_api_client.v1.model.image_widget_definition_type import ImageWidgetDefinitionType
+from datadog_api_client.v1.model.intake_payload_accepted import IntakePayloadAccepted
+from datadog_api_client.v1.model.list_stream_column import ListStreamColumn
+from datadog_api_client.v1.model.list_stream_column_width import ListStreamColumnWidth
+from datadog_api_client.v1.model.list_stream_compute_aggregation import ListStreamComputeAggregation
+from datadog_api_client.v1.model.list_stream_compute_items import ListStreamComputeItems
+from datadog_api_client.v1.model.list_stream_group_by_items import ListStreamGroupByItems
+from datadog_api_client.v1.model.list_stream_issue_persona import ListStreamIssuePersona
+from datadog_api_client.v1.model.list_stream_issue_state import ListStreamIssueState
+from datadog_api_client.v1.model.list_stream_query import ListStreamQuery
+from datadog_api_client.v1.model.list_stream_query_version import ListStreamQueryVersion
+from datadog_api_client.v1.model.list_stream_response_format import ListStreamResponseFormat
+from datadog_api_client.v1.model.list_stream_source import ListStreamSource
+from datadog_api_client.v1.model.list_stream_widget_definition import ListStreamWidgetDefinition
+from datadog_api_client.v1.model.list_stream_widget_definition_type import ListStreamWidgetDefinitionType
+from datadog_api_client.v1.model.list_stream_widget_request import ListStreamWidgetRequest
+from datadog_api_client.v1.model.log import Log
+from datadog_api_client.v1.model.log_content import LogContent
+from datadog_api_client.v1.model.log_query_definition import LogQueryDefinition
+from datadog_api_client.v1.model.log_query_definition_group_by import LogQueryDefinitionGroupBy
+from datadog_api_client.v1.model.log_query_definition_group_by_sort import LogQueryDefinitionGroupBySort
+from datadog_api_client.v1.model.log_query_definition_search import LogQueryDefinitionSearch
+from datadog_api_client.v1.model.log_stream_widget_definition import LogStreamWidgetDefinition
+from datadog_api_client.v1.model.log_stream_widget_definition_type import LogStreamWidgetDefinitionType
+from datadog_api_client.v1.model.logs_api_error import LogsAPIError
+from datadog_api_client.v1.model.logs_api_error_response import LogsAPIErrorResponse
+from datadog_api_client.v1.model.logs_api_limit_reached_response import LogsAPILimitReachedResponse
+from datadog_api_client.v1.model.logs_arithmetic_processor import LogsArithmeticProcessor
+from datadog_api_client.v1.model.logs_arithmetic_processor_type import LogsArithmeticProcessorType
+from datadog_api_client.v1.model.logs_array_map_arithmetic_sub_processor import LogsArrayMapArithmeticSubProcessor
+from datadog_api_client.v1.model.logs_array_map_attribute_remapper import LogsArrayMapAttributeRemapper
+from datadog_api_client.v1.model.logs_array_map_category_sub_processor import LogsArrayMapCategorySubProcessor
+from datadog_api_client.v1.model.logs_array_map_processor import LogsArrayMapProcessor
+from datadog_api_client.v1.model.logs_array_map_processor_type import LogsArrayMapProcessorType
+from datadog_api_client.v1.model.logs_array_map_string_builder_sub_processor import LogsArrayMapStringBuilderSubProcessor
+from datadog_api_client.v1.model.logs_array_map_sub_processor import LogsArrayMapSubProcessor
+from datadog_api_client.v1.model.logs_array_processor import LogsArrayProcessor
+from datadog_api_client.v1.model.logs_array_processor_operation import LogsArrayProcessorOperation
+from datadog_api_client.v1.model.logs_array_processor_operation_append import LogsArrayProcessorOperationAppend
+from datadog_api_client.v1.model.logs_array_processor_operation_append_type import LogsArrayProcessorOperationAppendType
+from datadog_api_client.v1.model.logs_array_processor_operation_extract_key_value import LogsArrayProcessorOperationExtractKeyValue
+from datadog_api_client.v1.model.logs_array_processor_operation_extract_key_value_type import LogsArrayProcessorOperationExtractKeyValueType
+from datadog_api_client.v1.model.logs_array_processor_operation_length import LogsArrayProcessorOperationLength
+from datadog_api_client.v1.model.logs_array_processor_operation_length_type import LogsArrayProcessorOperationLengthType
+from datadog_api_client.v1.model.logs_array_processor_operation_select import LogsArrayProcessorOperationSelect
+from datadog_api_client.v1.model.logs_array_processor_operation_select_type import LogsArrayProcessorOperationSelectType
+from datadog_api_client.v1.model.logs_array_processor_type import LogsArrayProcessorType
+from datadog_api_client.v1.model.logs_attribute_remapper import LogsAttributeRemapper
+from datadog_api_client.v1.model.logs_attribute_remapper_type import LogsAttributeRemapperType
+from datadog_api_client.v1.model.logs_by_retention import LogsByRetention
+from datadog_api_client.v1.model.logs_by_retention_monthly_usage import LogsByRetentionMonthlyUsage
+from datadog_api_client.v1.model.logs_by_retention_org_usage import LogsByRetentionOrgUsage
+from datadog_api_client.v1.model.logs_by_retention_orgs import LogsByRetentionOrgs
+from datadog_api_client.v1.model.logs_category_processor import LogsCategoryProcessor
+from datadog_api_client.v1.model.logs_category_processor_category import LogsCategoryProcessorCategory
+from datadog_api_client.v1.model.logs_category_processor_type import LogsCategoryProcessorType
+from datadog_api_client.v1.model.logs_daily_limit_reset import LogsDailyLimitReset
+from datadog_api_client.v1.model.logs_date_remapper import LogsDateRemapper
+from datadog_api_client.v1.model.logs_date_remapper_type import LogsDateRemapperType
+from datadog_api_client.v1.model.logs_decoder_processor import LogsDecoderProcessor
+from datadog_api_client.v1.model.logs_decoder_processor_binary_to_text_encoding import LogsDecoderProcessorBinaryToTextEncoding
+from datadog_api_client.v1.model.logs_decoder_processor_input_representation import LogsDecoderProcessorInputRepresentation
+from datadog_api_client.v1.model.logs_decoder_processor_type import LogsDecoderProcessorType
+from datadog_api_client.v1.model.logs_exclude_attribute_processor import LogsExcludeAttributeProcessor
+from datadog_api_client.v1.model.logs_exclude_attribute_processor_type import LogsExcludeAttributeProcessorType
+from datadog_api_client.v1.model.logs_exclusion import LogsExclusion
+from datadog_api_client.v1.model.logs_exclusion_filter import LogsExclusionFilter
+from datadog_api_client.v1.model.logs_filter import LogsFilter
+from datadog_api_client.v1.model.logs_geo_ip_parser import LogsGeoIPParser
+from datadog_api_client.v1.model.logs_geo_ip_parser_type import LogsGeoIPParserType
+from datadog_api_client.v1.model.logs_grok_parser import LogsGrokParser
+from datadog_api_client.v1.model.logs_grok_parser_rules import LogsGrokParserRules
+from datadog_api_client.v1.model.logs_grok_parser_type import LogsGrokParserType
+from datadog_api_client.v1.model.logs_index import LogsIndex
+from datadog_api_client.v1.model.logs_index_list_response import LogsIndexListResponse
+from datadog_api_client.v1.model.logs_index_update_request import LogsIndexUpdateRequest
+from datadog_api_client.v1.model.logs_indexes_order import LogsIndexesOrder
+from datadog_api_client.v1.model.logs_list_request import LogsListRequest
+from datadog_api_client.v1.model.logs_list_request_time import LogsListRequestTime
+from datadog_api_client.v1.model.logs_list_response import LogsListResponse
+from datadog_api_client.v1.model.logs_lookup_processor import LogsLookupProcessor
+from datadog_api_client.v1.model.logs_lookup_processor_type import LogsLookupProcessorType
+from datadog_api_client.v1.model.logs_message_remapper import LogsMessageRemapper
+from datadog_api_client.v1.model.logs_message_remapper_type import LogsMessageRemapperType
+from datadog_api_client.v1.model.logs_pipeline import LogsPipeline
+from datadog_api_client.v1.model.logs_pipeline_list import LogsPipelineList
+from datadog_api_client.v1.model.logs_pipeline_processor import LogsPipelineProcessor
+from datadog_api_client.v1.model.logs_pipeline_processor_type import LogsPipelineProcessorType
+from datadog_api_client.v1.model.logs_pipelines_order import LogsPipelinesOrder
+from datadog_api_client.v1.model.logs_processor import LogsProcessor
+from datadog_api_client.v1.model.logs_query_compute import LogsQueryCompute
+from datadog_api_client.v1.model.logs_retention_agg_sum_usage import LogsRetentionAggSumUsage
+from datadog_api_client.v1.model.logs_retention_sum_usage import LogsRetentionSumUsage
+from datadog_api_client.v1.model.logs_schema_category_mapper import LogsSchemaCategoryMapper
+from datadog_api_client.v1.model.logs_schema_category_mapper_category import LogsSchemaCategoryMapperCategory
+from datadog_api_client.v1.model.logs_schema_category_mapper_fallback import LogsSchemaCategoryMapperFallback
+from datadog_api_client.v1.model.logs_schema_category_mapper_targets import LogsSchemaCategoryMapperTargets
+from datadog_api_client.v1.model.logs_schema_category_mapper_type import LogsSchemaCategoryMapperType
+from datadog_api_client.v1.model.logs_schema_data import LogsSchemaData
+from datadog_api_client.v1.model.logs_schema_mapper import LogsSchemaMapper
+from datadog_api_client.v1.model.logs_schema_processor import LogsSchemaProcessor
+from datadog_api_client.v1.model.logs_schema_processor_type import LogsSchemaProcessorType
+from datadog_api_client.v1.model.logs_schema_remapper import LogsSchemaRemapper
+from datadog_api_client.v1.model.logs_schema_remapper_type import LogsSchemaRemapperType
+from datadog_api_client.v1.model.logs_service_remapper import LogsServiceRemapper
+from datadog_api_client.v1.model.logs_service_remapper_type import LogsServiceRemapperType
+from datadog_api_client.v1.model.logs_sort import LogsSort
+from datadog_api_client.v1.model.logs_span_remapper import LogsSpanRemapper
+from datadog_api_client.v1.model.logs_span_remapper_type import LogsSpanRemapperType
+from datadog_api_client.v1.model.logs_status_remapper import LogsStatusRemapper
+from datadog_api_client.v1.model.logs_status_remapper_type import LogsStatusRemapperType
+from datadog_api_client.v1.model.logs_string_builder_processor import LogsStringBuilderProcessor
+from datadog_api_client.v1.model.logs_string_builder_processor_type import LogsStringBuilderProcessorType
+from datadog_api_client.v1.model.logs_trace_remapper import LogsTraceRemapper
+from datadog_api_client.v1.model.logs_trace_remapper_type import LogsTraceRemapperType
+from datadog_api_client.v1.model.logs_url_parser import LogsURLParser
+from datadog_api_client.v1.model.logs_url_parser_type import LogsURLParserType
+from datadog_api_client.v1.model.logs_user_agent_parser import LogsUserAgentParser
+from datadog_api_client.v1.model.logs_user_agent_parser_type import LogsUserAgentParserType
+from datadog_api_client.v1.model.matching_downtime import MatchingDowntime
+from datadog_api_client.v1.model.metric_content_encoding import MetricContentEncoding
+from datadog_api_client.v1.model.metric_metadata import MetricMetadata
+from datadog_api_client.v1.model.metric_search_response import MetricSearchResponse
+from datadog_api_client.v1.model.metric_search_response_results import MetricSearchResponseResults
+from datadog_api_client.v1.model.metrics_list_response import MetricsListResponse
+from datadog_api_client.v1.model.metrics_payload import MetricsPayload
+from datadog_api_client.v1.model.metrics_query_metadata import MetricsQueryMetadata
+from datadog_api_client.v1.model.metrics_query_response import MetricsQueryResponse
+from datadog_api_client.v1.model.metrics_query_unit import MetricsQueryUnit
+from datadog_api_client.v1.model.monitor import Monitor
+from datadog_api_client.v1.model.monitor_asset import MonitorAsset
+from datadog_api_client.v1.model.monitor_asset_category import MonitorAssetCategory
+from datadog_api_client.v1.model.monitor_asset_resource_type import MonitorAssetResourceType
+from datadog_api_client.v1.model.monitor_device_id import MonitorDeviceID
+from datadog_api_client.v1.model.monitor_draft_status import MonitorDraftStatus
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augment_query import MonitorFormulaAndFunctionAggregateAugmentQuery
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_data_source import MonitorFormulaAndFunctionAggregateAugmentedDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_augmented_query_definition import MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_base_query import MonitorFormulaAndFunctionAggregateBaseQuery
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filter_query import MonitorFormulaAndFunctionAggregateFilterQuery
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_data_source import MonitorFormulaAndFunctionAggregateFilteredDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_filtered_query_definition import MonitorFormulaAndFunctionAggregateFilteredQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_filter import MonitorFormulaAndFunctionAggregateQueryFilter
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_condition import MonitorFormulaAndFunctionAggregateQueryJoinCondition
+from datadog_api_client.v1.model.monitor_formula_and_function_aggregate_query_join_type import MonitorFormulaAndFunctionAggregateQueryJoinType
+from datadog_api_client.v1.model.monitor_formula_and_function_cost_aggregator import MonitorFormulaAndFunctionCostAggregator
+from datadog_api_client.v1.model.monitor_formula_and_function_cost_data_source import MonitorFormulaAndFunctionCostDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_cost_query_definition import MonitorFormulaAndFunctionCostQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_data_jobs_query_definition import MonitorFormulaAndFunctionDataJobsQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_data_source import MonitorFormulaAndFunctionDataQualityDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_model_type_override import MonitorFormulaAndFunctionDataQualityModelTypeOverride
+from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_monitor_options import MonitorFormulaAndFunctionDataQualityMonitorOptions
+from datadog_api_client.v1.model.monitor_formula_and_function_data_quality_query_definition import MonitorFormulaAndFunctionDataQualityQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_event_aggregation import MonitorFormulaAndFunctionEventAggregation
+from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition import MonitorFormulaAndFunctionEventQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_compute import MonitorFormulaAndFunctionEventQueryDefinitionCompute
+from datadog_api_client.v1.model.monitor_formula_and_function_event_query_definition_search import MonitorFormulaAndFunctionEventQueryDefinitionSearch
+from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by import MonitorFormulaAndFunctionEventQueryGroupBy
+from datadog_api_client.v1.model.monitor_formula_and_function_event_query_group_by_sort import MonitorFormulaAndFunctionEventQueryGroupBySort
+from datadog_api_client.v1.model.monitor_formula_and_function_events_data_source import MonitorFormulaAndFunctionEventsDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_metrics_aggregator import MonitorFormulaAndFunctionMetricsAggregator
+from datadog_api_client.v1.model.monitor_formula_and_function_metrics_data_source import MonitorFormulaAndFunctionMetricsDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_metrics_query_definition import MonitorFormulaAndFunctionMetricsQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_query_definition import MonitorFormulaAndFunctionQueryDefinition
+from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_column import MonitorFormulaAndFunctionReferenceTableColumn
+from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_data_source import MonitorFormulaAndFunctionReferenceTableDataSource
+from datadog_api_client.v1.model.monitor_formula_and_function_reference_table_query_definition import MonitorFormulaAndFunctionReferenceTableQueryDefinition
+from datadog_api_client.v1.model.monitor_group_search_response import MonitorGroupSearchResponse
+from datadog_api_client.v1.model.monitor_group_search_response_counts import MonitorGroupSearchResponseCounts
+from datadog_api_client.v1.model.monitor_group_search_result import MonitorGroupSearchResult
+from datadog_api_client.v1.model.monitor_options import MonitorOptions
+from datadog_api_client.v1.model.monitor_options_aggregation import MonitorOptionsAggregation
+from datadog_api_client.v1.model.monitor_options_custom_schedule import MonitorOptionsCustomSchedule
+from datadog_api_client.v1.model.monitor_options_custom_schedule_recurrence import MonitorOptionsCustomScheduleRecurrence
+from datadog_api_client.v1.model.monitor_options_notification_presets import MonitorOptionsNotificationPresets
+from datadog_api_client.v1.model.monitor_options_scheduling_options import MonitorOptionsSchedulingOptions
+from datadog_api_client.v1.model.monitor_options_scheduling_options_evaluation_window import MonitorOptionsSchedulingOptionsEvaluationWindow
+from datadog_api_client.v1.model.monitor_overall_states import MonitorOverallStates
+from datadog_api_client.v1.model.monitor_renotify_status_type import MonitorRenotifyStatusType
+from datadog_api_client.v1.model.monitor_search_count import MonitorSearchCount
+from datadog_api_client.v1.model.monitor_search_count_item import MonitorSearchCountItem
+from datadog_api_client.v1.model.monitor_search_response import MonitorSearchResponse
+from datadog_api_client.v1.model.monitor_search_response_counts import MonitorSearchResponseCounts
+from datadog_api_client.v1.model.monitor_search_response_metadata import MonitorSearchResponseMetadata
+from datadog_api_client.v1.model.monitor_search_result import MonitorSearchResult
+from datadog_api_client.v1.model.monitor_search_result_notification import MonitorSearchResultNotification
+from datadog_api_client.v1.model.monitor_state import MonitorState
+from datadog_api_client.v1.model.monitor_state_group import MonitorStateGroup
+from datadog_api_client.v1.model.monitor_summary_widget_definition import MonitorSummaryWidgetDefinition
+from datadog_api_client.v1.model.monitor_summary_widget_definition_type import MonitorSummaryWidgetDefinitionType
+from datadog_api_client.v1.model.monitor_threshold_window_options import MonitorThresholdWindowOptions
+from datadog_api_client.v1.model.monitor_thresholds import MonitorThresholds
+from datadog_api_client.v1.model.monitor_type import MonitorType
+from datadog_api_client.v1.model.monitor_update_request import MonitorUpdateRequest
+from datadog_api_client.v1.model.monthly_usage_attribution_body import MonthlyUsageAttributionBody
+from datadog_api_client.v1.model.monthly_usage_attribution_metadata import MonthlyUsageAttributionMetadata
+from datadog_api_client.v1.model.monthly_usage_attribution_pagination import MonthlyUsageAttributionPagination
+from datadog_api_client.v1.model.monthly_usage_attribution_response import MonthlyUsageAttributionResponse
+from datadog_api_client.v1.model.monthly_usage_attribution_supported_metrics import MonthlyUsageAttributionSupportedMetrics
+from datadog_api_client.v1.model.monthly_usage_attribution_values import MonthlyUsageAttributionValues
+from datadog_api_client.v1.model.note_widget_definition import NoteWidgetDefinition
+from datadog_api_client.v1.model.note_widget_definition_type import NoteWidgetDefinitionType
+from datadog_api_client.v1.model.notebook_absolute_time import NotebookAbsoluteTime
+from datadog_api_client.v1.model.notebook_author import NotebookAuthor
+from datadog_api_client.v1.model.notebook_cell_create_request import NotebookCellCreateRequest
+from datadog_api_client.v1.model.notebook_cell_create_request_attributes import NotebookCellCreateRequestAttributes
+from datadog_api_client.v1.model.notebook_cell_resource_type import NotebookCellResourceType
+from datadog_api_client.v1.model.notebook_cell_response import NotebookCellResponse
+from datadog_api_client.v1.model.notebook_cell_response_attributes import NotebookCellResponseAttributes
+from datadog_api_client.v1.model.notebook_cell_time import NotebookCellTime
+from datadog_api_client.v1.model.notebook_cell_update_request import NotebookCellUpdateRequest
+from datadog_api_client.v1.model.notebook_cell_update_request_attributes import NotebookCellUpdateRequestAttributes
+from datadog_api_client.v1.model.notebook_create_data import NotebookCreateData
+from datadog_api_client.v1.model.notebook_create_data_attributes import NotebookCreateDataAttributes
+from datadog_api_client.v1.model.notebook_create_request import NotebookCreateRequest
+from datadog_api_client.v1.model.notebook_distribution_cell_attributes import NotebookDistributionCellAttributes
+from datadog_api_client.v1.model.notebook_global_time import NotebookGlobalTime
+from datadog_api_client.v1.model.notebook_graph_size import NotebookGraphSize
+from datadog_api_client.v1.model.notebook_heat_map_cell_attributes import NotebookHeatMapCellAttributes
+from datadog_api_client.v1.model.notebook_log_stream_cell_attributes import NotebookLogStreamCellAttributes
+from datadog_api_client.v1.model.notebook_markdown_cell_attributes import NotebookMarkdownCellAttributes
+from datadog_api_client.v1.model.notebook_markdown_cell_definition import NotebookMarkdownCellDefinition
+from datadog_api_client.v1.model.notebook_markdown_cell_definition_type import NotebookMarkdownCellDefinitionType
+from datadog_api_client.v1.model.notebook_metadata import NotebookMetadata
+from datadog_api_client.v1.model.notebook_metadata_type import NotebookMetadataType
+from datadog_api_client.v1.model.notebook_relative_time import NotebookRelativeTime
+from datadog_api_client.v1.model.notebook_resource_type import NotebookResourceType
+from datadog_api_client.v1.model.notebook_response import NotebookResponse
+from datadog_api_client.v1.model.notebook_response_data import NotebookResponseData
+from datadog_api_client.v1.model.notebook_response_data_attributes import NotebookResponseDataAttributes
+from datadog_api_client.v1.model.notebook_split_by import NotebookSplitBy
+from datadog_api_client.v1.model.notebook_status import NotebookStatus
+from datadog_api_client.v1.model.notebook_template_variable import NotebookTemplateVariable
+from datadog_api_client.v1.model.notebook_template_variable_available_values_query import NotebookTemplateVariableAvailableValuesQuery
+from datadog_api_client.v1.model.notebook_template_variable_available_values_query_group_by import NotebookTemplateVariableAvailableValuesQueryGroupBy
+from datadog_api_client.v1.model.notebook_template_variable_available_values_query_log_rum_spans import NotebookTemplateVariableAvailableValuesQueryLogRumSpans
+from datadog_api_client.v1.model.notebook_template_variable_available_values_query_metrics import NotebookTemplateVariableAvailableValuesQueryMetrics
+from datadog_api_client.v1.model.notebook_template_variable_available_values_query_search import NotebookTemplateVariableAvailableValuesQuerySearch
+from datadog_api_client.v1.model.notebook_timeseries_cell_attributes import NotebookTimeseriesCellAttributes
+from datadog_api_client.v1.model.notebook_toplist_cell_attributes import NotebookToplistCellAttributes
+from datadog_api_client.v1.model.notebook_update_cell import NotebookUpdateCell
+from datadog_api_client.v1.model.notebook_update_data import NotebookUpdateData
+from datadog_api_client.v1.model.notebook_update_data_attributes import NotebookUpdateDataAttributes
+from datadog_api_client.v1.model.notebook_update_request import NotebookUpdateRequest
+from datadog_api_client.v1.model.notebooks_response import NotebooksResponse
+from datadog_api_client.v1.model.notebooks_response_data import NotebooksResponseData
+from datadog_api_client.v1.model.notebooks_response_data_attributes import NotebooksResponseDataAttributes
+from datadog_api_client.v1.model.notebooks_response_meta import NotebooksResponseMeta
+from datadog_api_client.v1.model.notebooks_response_page import NotebooksResponsePage
+from datadog_api_client.v1.model.notify_end_state import NotifyEndState
+from datadog_api_client.v1.model.notify_end_type import NotifyEndType
+from datadog_api_client.v1.model.number_format_unit import NumberFormatUnit
+from datadog_api_client.v1.model.number_format_unit_canonical import NumberFormatUnitCanonical
+from datadog_api_client.v1.model.number_format_unit_custom import NumberFormatUnitCustom
+from datadog_api_client.v1.model.number_format_unit_custom_type import NumberFormatUnitCustomType
+from datadog_api_client.v1.model.number_format_unit_scale import NumberFormatUnitScale
+from datadog_api_client.v1.model.number_format_unit_scale_type import NumberFormatUnitScaleType
+from datadog_api_client.v1.model.on_missing_data_option import OnMissingDataOption
+from datadog_api_client.v1.model.org_downgraded_response import OrgDowngradedResponse
+from datadog_api_client.v1.model.organization import Organization
+from datadog_api_client.v1.model.organization_billing import OrganizationBilling
+from datadog_api_client.v1.model.organization_create_body import OrganizationCreateBody
+from datadog_api_client.v1.model.organization_create_response import OrganizationCreateResponse
+from datadog_api_client.v1.model.organization_list_response import OrganizationListResponse
+from datadog_api_client.v1.model.organization_response import OrganizationResponse
+from datadog_api_client.v1.model.organization_settings import OrganizationSettings
+from datadog_api_client.v1.model.organization_settings_saml import OrganizationSettingsSaml
+from datadog_api_client.v1.model.organization_settings_saml_autocreate_users_domains import OrganizationSettingsSamlAutocreateUsersDomains
+from datadog_api_client.v1.model.organization_settings_saml_idp_initiated_login import OrganizationSettingsSamlIdpInitiatedLogin
+from datadog_api_client.v1.model.organization_settings_saml_strict_mode import OrganizationSettingsSamlStrictMode
+from datadog_api_client.v1.model.organization_subscription import OrganizationSubscription
+from datadog_api_client.v1.model.pager_duty_service import PagerDutyService
+from datadog_api_client.v1.model.pager_duty_service_key import PagerDutyServiceKey
+from datadog_api_client.v1.model.pager_duty_service_name import PagerDutyServiceName
+from datadog_api_client.v1.model.pagination import Pagination
+from datadog_api_client.v1.model.point import Point
+from datadog_api_client.v1.model.point_plot_dimension import PointPlotDimension
+from datadog_api_client.v1.model.point_plot_projection import PointPlotProjection
+from datadog_api_client.v1.model.point_plot_projection_dimension import PointPlotProjectionDimension
+from datadog_api_client.v1.model.point_plot_projection_type import PointPlotProjectionType
+from datadog_api_client.v1.model.point_plot_widget_definition import PointPlotWidgetDefinition
+from datadog_api_client.v1.model.point_plot_widget_definition_type import PointPlotWidgetDefinitionType
+from datadog_api_client.v1.model.point_plot_widget_legend import PointPlotWidgetLegend
+from datadog_api_client.v1.model.point_plot_widget_legend_type import PointPlotWidgetLegendType
+from datadog_api_client.v1.model.point_plot_widget_request import PointPlotWidgetRequest
+from datadog_api_client.v1.model.powerpack_template_variable_contents import PowerpackTemplateVariableContents
+from datadog_api_client.v1.model.powerpack_template_variables import PowerpackTemplateVariables
+from datadog_api_client.v1.model.powerpack_widget_definition import PowerpackWidgetDefinition
+from datadog_api_client.v1.model.powerpack_widget_definition_type import PowerpackWidgetDefinitionType
+from datadog_api_client.v1.model.process_query_definition import ProcessQueryDefinition
+from datadog_api_client.v1.model.product_analytics_audience_account_subquery import ProductAnalyticsAudienceAccountSubquery
+from datadog_api_client.v1.model.product_analytics_audience_filters import ProductAnalyticsAudienceFilters
+from datadog_api_client.v1.model.product_analytics_audience_occurrence_filter import ProductAnalyticsAudienceOccurrenceFilter
+from datadog_api_client.v1.model.product_analytics_audience_segment_subquery import ProductAnalyticsAudienceSegmentSubquery
+from datadog_api_client.v1.model.product_analytics_audience_user_subquery import ProductAnalyticsAudienceUserSubquery
+from datadog_api_client.v1.model.product_analytics_base_query import ProductAnalyticsBaseQuery
+from datadog_api_client.v1.model.product_analytics_event_data_source import ProductAnalyticsEventDataSource
+from datadog_api_client.v1.model.product_analytics_event_query_search import ProductAnalyticsEventQuerySearch
+from datadog_api_client.v1.model.product_analytics_extended_compute import ProductAnalyticsExtendedCompute
+from datadog_api_client.v1.model.product_analytics_extended_group_by import ProductAnalyticsExtendedGroupBy
+from datadog_api_client.v1.model.product_analytics_funnel_compute import ProductAnalyticsFunnelCompute
+from datadog_api_client.v1.model.product_analytics_funnel_compute_aggregation import ProductAnalyticsFunnelComputeAggregation
+from datadog_api_client.v1.model.product_analytics_funnel_compute_metric import ProductAnalyticsFunnelComputeMetric
+from datadog_api_client.v1.model.product_analytics_funnel_data_source import ProductAnalyticsFunnelDataSource
+from datadog_api_client.v1.model.product_analytics_funnel_group_by import ProductAnalyticsFunnelGroupBy
+from datadog_api_client.v1.model.product_analytics_funnel_group_by_sort import ProductAnalyticsFunnelGroupBySort
+from datadog_api_client.v1.model.product_analytics_funnel_query import ProductAnalyticsFunnelQuery
+from datadog_api_client.v1.model.product_analytics_funnel_request import ProductAnalyticsFunnelRequest
+from datadog_api_client.v1.model.product_analytics_funnel_request_type import ProductAnalyticsFunnelRequestType
+from datadog_api_client.v1.model.product_analytics_funnel_widget_definition import ProductAnalyticsFunnelWidgetDefinition
+from datadog_api_client.v1.model.published_dataset_provider import PublishedDatasetProvider
+from datadog_api_client.v1.model.query_sort_order import QuerySortOrder
+from datadog_api_client.v1.model.query_value_widget_comparison import QueryValueWidgetComparison
+from datadog_api_client.v1.model.query_value_widget_comparison_directionality import QueryValueWidgetComparisonDirectionality
+from datadog_api_client.v1.model.query_value_widget_comparison_type import QueryValueWidgetComparisonType
+from datadog_api_client.v1.model.query_value_widget_definition import QueryValueWidgetDefinition
+from datadog_api_client.v1.model.query_value_widget_definition_type import QueryValueWidgetDefinitionType
+from datadog_api_client.v1.model.query_value_widget_request import QueryValueWidgetRequest
+from datadog_api_client.v1.model.reference_table_logs_lookup_processor import ReferenceTableLogsLookupProcessor
+from datadog_api_client.v1.model.resource_provider_config import ResourceProviderConfig
+from datadog_api_client.v1.model.response_meta_attributes import ResponseMetaAttributes
+from datadog_api_client.v1.model.retention_cohort_criteria import RetentionCohortCriteria
+from datadog_api_client.v1.model.retention_cohort_criteria_time_interval import RetentionCohortCriteriaTimeInterval
+from datadog_api_client.v1.model.retention_cohort_criteria_time_interval_type import RetentionCohortCriteriaTimeIntervalType
+from datadog_api_client.v1.model.retention_compute import RetentionCompute
+from datadog_api_client.v1.model.retention_compute_metric import RetentionComputeMetric
+from datadog_api_client.v1.model.retention_curve_request_type import RetentionCurveRequestType
+from datadog_api_client.v1.model.retention_curve_style import RetentionCurveStyle
+from datadog_api_client.v1.model.retention_curve_widget_definition import RetentionCurveWidgetDefinition
+from datadog_api_client.v1.model.retention_curve_widget_definition_type import RetentionCurveWidgetDefinitionType
+from datadog_api_client.v1.model.retention_curve_widget_request import RetentionCurveWidgetRequest
+from datadog_api_client.v1.model.retention_data_source import RetentionDataSource
+from datadog_api_client.v1.model.retention_entity import RetentionEntity
+from datadog_api_client.v1.model.retention_filters import RetentionFilters
+from datadog_api_client.v1.model.retention_grid_request import RetentionGridRequest
+from datadog_api_client.v1.model.retention_grid_request_type import RetentionGridRequestType
+from datadog_api_client.v1.model.retention_group_by import RetentionGroupBy
+from datadog_api_client.v1.model.retention_group_by_sort import RetentionGroupBySort
+from datadog_api_client.v1.model.retention_group_by_target import RetentionGroupByTarget
+from datadog_api_client.v1.model.retention_query import RetentionQuery
+from datadog_api_client.v1.model.retention_return_condition import RetentionReturnCondition
+from datadog_api_client.v1.model.retention_return_criteria import RetentionReturnCriteria
+from datadog_api_client.v1.model.retention_return_criteria_time_interval import RetentionReturnCriteriaTimeInterval
+from datadog_api_client.v1.model.retention_return_criteria_time_interval_type import RetentionReturnCriteriaTimeIntervalType
+from datadog_api_client.v1.model.retention_return_criteria_time_interval_unit import RetentionReturnCriteriaTimeIntervalUnit
+from datadog_api_client.v1.model.retention_search import RetentionSearch
+from datadog_api_client.v1.model.run_workflow_widget_definition import RunWorkflowWidgetDefinition
+from datadog_api_client.v1.model.run_workflow_widget_definition_type import RunWorkflowWidgetDefinitionType
+from datadog_api_client.v1.model.run_workflow_widget_input import RunWorkflowWidgetInput
+from datadog_api_client.v1.model.slo_bulk_delete import SLOBulkDelete
+from datadog_api_client.v1.model.slo_bulk_delete_error import SLOBulkDeleteError
+from datadog_api_client.v1.model.slo_bulk_delete_response import SLOBulkDeleteResponse
+from datadog_api_client.v1.model.slo_bulk_delete_response_data import SLOBulkDeleteResponseData
+from datadog_api_client.v1.model.slo_correction import SLOCorrection
+from datadog_api_client.v1.model.slo_correction_category import SLOCorrectionCategory
+from datadog_api_client.v1.model.slo_correction_create_data import SLOCorrectionCreateData
+from datadog_api_client.v1.model.slo_correction_create_request import SLOCorrectionCreateRequest
+from datadog_api_client.v1.model.slo_correction_create_request_attributes import SLOCorrectionCreateRequestAttributes
+from datadog_api_client.v1.model.slo_correction_list_response import SLOCorrectionListResponse
+from datadog_api_client.v1.model.slo_correction_response import SLOCorrectionResponse
+from datadog_api_client.v1.model.slo_correction_response_attributes import SLOCorrectionResponseAttributes
+from datadog_api_client.v1.model.slo_correction_response_attributes_modifier import SLOCorrectionResponseAttributesModifier
+from datadog_api_client.v1.model.slo_correction_type import SLOCorrectionType
+from datadog_api_client.v1.model.slo_correction_update_data import SLOCorrectionUpdateData
+from datadog_api_client.v1.model.slo_correction_update_request import SLOCorrectionUpdateRequest
+from datadog_api_client.v1.model.slo_correction_update_request_attributes import SLOCorrectionUpdateRequestAttributes
+from datadog_api_client.v1.model.slo_count_definition import SLOCountDefinition
+from datadog_api_client.v1.model.slo_count_definition_with_bad_events_formula import SLOCountDefinitionWithBadEventsFormula
+from datadog_api_client.v1.model.slo_count_definition_with_total_events_formula import SLOCountDefinitionWithTotalEventsFormula
+from datadog_api_client.v1.model.slo_count_spec import SLOCountSpec
+from datadog_api_client.v1.model.slo_creator import SLOCreator
+from datadog_api_client.v1.model.slo_data_source_query_definition import SLODataSourceQueryDefinition
+from datadog_api_client.v1.model.slo_delete_response import SLODeleteResponse
+from datadog_api_client.v1.model.slo_error_budget_remaining_data import SLOErrorBudgetRemainingData
+from datadog_api_client.v1.model.slo_error_timeframe import SLOErrorTimeframe
+from datadog_api_client.v1.model.slo_formula import SLOFormula
+from datadog_api_client.v1.model.slo_history_metrics import SLOHistoryMetrics
+from datadog_api_client.v1.model.slo_history_metrics_series import SLOHistoryMetricsSeries
+from datadog_api_client.v1.model.slo_history_metrics_series_metadata import SLOHistoryMetricsSeriesMetadata
+from datadog_api_client.v1.model.slo_history_metrics_series_metadata_unit import SLOHistoryMetricsSeriesMetadataUnit
+from datadog_api_client.v1.model.slo_history_monitor import SLOHistoryMonitor
+from datadog_api_client.v1.model.slo_history_response import SLOHistoryResponse
+from datadog_api_client.v1.model.slo_history_response_data import SLOHistoryResponseData
+from datadog_api_client.v1.model.slo_history_response_error import SLOHistoryResponseError
+from datadog_api_client.v1.model.slo_history_response_error_with_type import SLOHistoryResponseErrorWithType
+from datadog_api_client.v1.model.slo_history_sli_data import SLOHistorySLIData
+from datadog_api_client.v1.model.slo_list_response import SLOListResponse
+from datadog_api_client.v1.model.slo_list_response_metadata import SLOListResponseMetadata
+from datadog_api_client.v1.model.slo_list_response_metadata_page import SLOListResponseMetadataPage
+from datadog_api_client.v1.model.slo_list_widget_definition import SLOListWidgetDefinition
+from datadog_api_client.v1.model.slo_list_widget_definition_type import SLOListWidgetDefinitionType
+from datadog_api_client.v1.model.slo_list_widget_query import SLOListWidgetQuery
+from datadog_api_client.v1.model.slo_list_widget_request import SLOListWidgetRequest
+from datadog_api_client.v1.model.slo_list_widget_request_type import SLOListWidgetRequestType
+from datadog_api_client.v1.model.slo_overall_statuses import SLOOverallStatuses
+from datadog_api_client.v1.model.slo_raw_error_budget_remaining import SLORawErrorBudgetRemaining
+from datadog_api_client.v1.model.slo_response import SLOResponse
+from datadog_api_client.v1.model.slo_response_data import SLOResponseData
+from datadog_api_client.v1.model.slo_sli_spec import SLOSliSpec
+from datadog_api_client.v1.model.slo_state import SLOState
+from datadog_api_client.v1.model.slo_status import SLOStatus
+from datadog_api_client.v1.model.slo_threshold import SLOThreshold
+from datadog_api_client.v1.model.slo_time_slice_comparator import SLOTimeSliceComparator
+from datadog_api_client.v1.model.slo_time_slice_condition import SLOTimeSliceCondition
+from datadog_api_client.v1.model.slo_time_slice_interval import SLOTimeSliceInterval
+from datadog_api_client.v1.model.slo_time_slice_query import SLOTimeSliceQuery
+from datadog_api_client.v1.model.slo_time_slice_spec import SLOTimeSliceSpec
+from datadog_api_client.v1.model.slo_timeframe import SLOTimeframe
+from datadog_api_client.v1.model.slo_type import SLOType
+from datadog_api_client.v1.model.slo_type_numeric import SLOTypeNumeric
+from datadog_api_client.v1.model.slo_widget_definition import SLOWidgetDefinition
+from datadog_api_client.v1.model.slo_widget_definition_type import SLOWidgetDefinitionType
+from datadog_api_client.v1.model.sankey_join_keys import SankeyJoinKeys
+from datadog_api_client.v1.model.sankey_network_data_source import SankeyNetworkDataSource
+from datadog_api_client.v1.model.sankey_network_query import SankeyNetworkQuery
+from datadog_api_client.v1.model.sankey_network_query_compute import SankeyNetworkQueryCompute
+from datadog_api_client.v1.model.sankey_network_query_mode import SankeyNetworkQueryMode
+from datadog_api_client.v1.model.sankey_network_query_sort import SankeyNetworkQuerySort
+from datadog_api_client.v1.model.sankey_network_request import SankeyNetworkRequest
+from datadog_api_client.v1.model.sankey_network_request_type import SankeyNetworkRequestType
+from datadog_api_client.v1.model.sankey_rum_data_source import SankeyRumDataSource
+from datadog_api_client.v1.model.sankey_rum_query import SankeyRumQuery
+from datadog_api_client.v1.model.sankey_rum_query_mode import SankeyRumQueryMode
+from datadog_api_client.v1.model.sankey_rum_request import SankeyRumRequest
+from datadog_api_client.v1.model.sankey_widget_definition import SankeyWidgetDefinition
+from datadog_api_client.v1.model.sankey_widget_definition_type import SankeyWidgetDefinitionType
+from datadog_api_client.v1.model.sankey_widget_request import SankeyWidgetRequest
+from datadog_api_client.v1.model.scatter_plot_request import ScatterPlotRequest
+from datadog_api_client.v1.model.scatter_plot_widget_definition import ScatterPlotWidgetDefinition
+from datadog_api_client.v1.model.scatter_plot_widget_definition_requests import ScatterPlotWidgetDefinitionRequests
+from datadog_api_client.v1.model.scatter_plot_widget_definition_type import ScatterPlotWidgetDefinitionType
+from datadog_api_client.v1.model.scatterplot_dimension import ScatterplotDimension
+from datadog_api_client.v1.model.scatterplot_table_request import ScatterplotTableRequest
+from datadog_api_client.v1.model.scatterplot_widget_aggregator import ScatterplotWidgetAggregator
+from datadog_api_client.v1.model.scatterplot_widget_formula import ScatterplotWidgetFormula
+from datadog_api_client.v1.model.search_slo_query import SearchSLOQuery
+from datadog_api_client.v1.model.search_slo_response import SearchSLOResponse
+from datadog_api_client.v1.model.search_slo_response_data import SearchSLOResponseData
+from datadog_api_client.v1.model.search_slo_response_data_attributes import SearchSLOResponseDataAttributes
+from datadog_api_client.v1.model.search_slo_response_data_attributes_facets import SearchSLOResponseDataAttributesFacets
+from datadog_api_client.v1.model.search_slo_response_data_attributes_facets_object_int import SearchSLOResponseDataAttributesFacetsObjectInt
+from datadog_api_client.v1.model.search_slo_response_data_attributes_facets_object_string import SearchSLOResponseDataAttributesFacetsObjectString
+from datadog_api_client.v1.model.search_slo_response_links import SearchSLOResponseLinks
+from datadog_api_client.v1.model.search_slo_response_meta import SearchSLOResponseMeta
+from datadog_api_client.v1.model.search_slo_response_meta_page import SearchSLOResponseMetaPage
+from datadog_api_client.v1.model.search_slo_threshold import SearchSLOThreshold
+from datadog_api_client.v1.model.search_slo_timeframe import SearchSLOTimeframe
+from datadog_api_client.v1.model.search_service_level_objective import SearchServiceLevelObjective
+from datadog_api_client.v1.model.search_service_level_objective_attributes import SearchServiceLevelObjectiveAttributes
+from datadog_api_client.v1.model.search_service_level_objective_data import SearchServiceLevelObjectiveData
+from datadog_api_client.v1.model.selectable_template_variable_items import SelectableTemplateVariableItems
+from datadog_api_client.v1.model.series import Series
+from datadog_api_client.v1.model.service_check import ServiceCheck
+from datadog_api_client.v1.model.service_check_status import ServiceCheckStatus
+from datadog_api_client.v1.model.service_checks import ServiceChecks
+from datadog_api_client.v1.model.service_level_objective import ServiceLevelObjective
+from datadog_api_client.v1.model.service_level_objective_query import ServiceLevelObjectiveQuery
+from datadog_api_client.v1.model.service_level_objective_request import ServiceLevelObjectiveRequest
+from datadog_api_client.v1.model.service_map_widget_definition import ServiceMapWidgetDefinition
+from datadog_api_client.v1.model.service_map_widget_definition_type import ServiceMapWidgetDefinitionType
+from datadog_api_client.v1.model.service_summary_widget_definition import ServiceSummaryWidgetDefinition
+from datadog_api_client.v1.model.service_summary_widget_definition_type import ServiceSummaryWidgetDefinitionType
+from datadog_api_client.v1.model.shared_dashboard import SharedDashboard
+from datadog_api_client.v1.model.shared_dashboard_author import SharedDashboardAuthor
+from datadog_api_client.v1.model.shared_dashboard_invitees_items import SharedDashboardInviteesItems
+from datadog_api_client.v1.model.shared_dashboard_invites import SharedDashboardInvites
+from datadog_api_client.v1.model.shared_dashboard_invites_data import SharedDashboardInvitesData
+from datadog_api_client.v1.model.shared_dashboard_invites_data_list import SharedDashboardInvitesDataList
+from datadog_api_client.v1.model.shared_dashboard_invites_data_object import SharedDashboardInvitesDataObject
+from datadog_api_client.v1.model.shared_dashboard_invites_data_object_attributes import SharedDashboardInvitesDataObjectAttributes
+from datadog_api_client.v1.model.shared_dashboard_invites_meta import SharedDashboardInvitesMeta
+from datadog_api_client.v1.model.shared_dashboard_invites_meta_page import SharedDashboardInvitesMetaPage
+from datadog_api_client.v1.model.shared_dashboard_status import SharedDashboardStatus
+from datadog_api_client.v1.model.shared_dashboard_update_request import SharedDashboardUpdateRequest
+from datadog_api_client.v1.model.shared_dashboard_update_request_global_time import SharedDashboardUpdateRequestGlobalTime
+from datadog_api_client.v1.model.signal_archive_reason import SignalArchiveReason
+from datadog_api_client.v1.model.signal_assignee_update_request import SignalAssigneeUpdateRequest
+from datadog_api_client.v1.model.signal_state_update_request import SignalStateUpdateRequest
+from datadog_api_client.v1.model.signal_triage_state import SignalTriageState
+from datadog_api_client.v1.model.slack_integration_channel import SlackIntegrationChannel
+from datadog_api_client.v1.model.slack_integration_channel_display import SlackIntegrationChannelDisplay
+from datadog_api_client.v1.model.slack_integration_channels import SlackIntegrationChannels
+from datadog_api_client.v1.model.split_config import SplitConfig
+from datadog_api_client.v1.model.split_config_sort_compute import SplitConfigSortCompute
+from datadog_api_client.v1.model.split_dimension import SplitDimension
+from datadog_api_client.v1.model.split_graph_source_widget_definition import SplitGraphSourceWidgetDefinition
+from datadog_api_client.v1.model.split_graph_viz_size import SplitGraphVizSize
+from datadog_api_client.v1.model.split_graph_widget_definition import SplitGraphWidgetDefinition
+from datadog_api_client.v1.model.split_graph_widget_definition_type import SplitGraphWidgetDefinitionType
+from datadog_api_client.v1.model.split_sort import SplitSort
+from datadog_api_client.v1.model.split_vector_entry_item import SplitVectorEntryItem
+from datadog_api_client.v1.model.successful_signal_update_response import SuccessfulSignalUpdateResponse
+from datadog_api_client.v1.model.sunburst_widget_definition import SunburstWidgetDefinition
+from datadog_api_client.v1.model.sunburst_widget_definition_type import SunburstWidgetDefinitionType
+from datadog_api_client.v1.model.sunburst_widget_legend import SunburstWidgetLegend
+from datadog_api_client.v1.model.sunburst_widget_legend_inline_automatic import SunburstWidgetLegendInlineAutomatic
+from datadog_api_client.v1.model.sunburst_widget_legend_inline_automatic_type import SunburstWidgetLegendInlineAutomaticType
+from datadog_api_client.v1.model.sunburst_widget_legend_table import SunburstWidgetLegendTable
+from datadog_api_client.v1.model.sunburst_widget_legend_table_type import SunburstWidgetLegendTableType
+from datadog_api_client.v1.model.sunburst_widget_request import SunburstWidgetRequest
+from datadog_api_client.v1.model.synthetics_api_step import SyntheticsAPIStep
+from datadog_api_client.v1.model.synthetics_api_subtest_step import SyntheticsAPISubtestStep
+from datadog_api_client.v1.model.synthetics_api_subtest_step_subtype import SyntheticsAPISubtestStepSubtype
+from datadog_api_client.v1.model.synthetics_api_test import SyntheticsAPITest
+from datadog_api_client.v1.model.synthetics_api_test_config import SyntheticsAPITestConfig
+from datadog_api_client.v1.model.synthetics_api_test_result_data import SyntheticsAPITestResultData
+from datadog_api_client.v1.model.synthetics_api_test_result_full import SyntheticsAPITestResultFull
+from datadog_api_client.v1.model.synthetics_api_test_result_full_check import SyntheticsAPITestResultFullCheck
+from datadog_api_client.v1.model.synthetics_api_test_result_short import SyntheticsAPITestResultShort
+from datadog_api_client.v1.model.synthetics_api_test_result_short_result import SyntheticsAPITestResultShortResult
+from datadog_api_client.v1.model.synthetics_api_test_step import SyntheticsAPITestStep
+from datadog_api_client.v1.model.synthetics_api_test_step_subtype import SyntheticsAPITestStepSubtype
+from datadog_api_client.v1.model.synthetics_api_test_type import SyntheticsAPITestType
+from datadog_api_client.v1.model.synthetics_api_wait_step import SyntheticsAPIWaitStep
+from datadog_api_client.v1.model.synthetics_api_wait_step_subtype import SyntheticsAPIWaitStepSubtype
+from datadog_api_client.v1.model.synthetics_api_test_failure_code import SyntheticsApiTestFailureCode
+from datadog_api_client.v1.model.synthetics_api_test_result_failure import SyntheticsApiTestResultFailure
+from datadog_api_client.v1.model.synthetics_assertion import SyntheticsAssertion
+from datadog_api_client.v1.model.synthetics_assertion_body_hash_operator import SyntheticsAssertionBodyHashOperator
+from datadog_api_client.v1.model.synthetics_assertion_body_hash_target import SyntheticsAssertionBodyHashTarget
+from datadog_api_client.v1.model.synthetics_assertion_body_hash_type import SyntheticsAssertionBodyHashType
+from datadog_api_client.v1.model.synthetics_assertion_json_path_operator import SyntheticsAssertionJSONPathOperator
+from datadog_api_client.v1.model.synthetics_assertion_json_path_target import SyntheticsAssertionJSONPathTarget
+from datadog_api_client.v1.model.synthetics_assertion_json_path_target_target import SyntheticsAssertionJSONPathTargetTarget
+from datadog_api_client.v1.model.synthetics_assertion_json_schema_meta_schema import SyntheticsAssertionJSONSchemaMetaSchema
+from datadog_api_client.v1.model.synthetics_assertion_json_schema_operator import SyntheticsAssertionJSONSchemaOperator
+from datadog_api_client.v1.model.synthetics_assertion_json_schema_target import SyntheticsAssertionJSONSchemaTarget
+from datadog_api_client.v1.model.synthetics_assertion_json_schema_target_target import SyntheticsAssertionJSONSchemaTargetTarget
+from datadog_api_client.v1.model.synthetics_assertion_javascript import SyntheticsAssertionJavascript
+from datadog_api_client.v1.model.synthetics_assertion_javascript_type import SyntheticsAssertionJavascriptType
+from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification import SyntheticsAssertionMCPRespectsSpecification
+from datadog_api_client.v1.model.synthetics_assertion_mcp_respects_specification_type import SyntheticsAssertionMCPRespectsSpecificationType
+from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_target import SyntheticsAssertionMCPServerCapabilitiesTarget
+from datadog_api_client.v1.model.synthetics_assertion_mcp_server_capabilities_type import SyntheticsAssertionMCPServerCapabilitiesType
+from datadog_api_client.v1.model.synthetics_assertion_operator import SyntheticsAssertionOperator
+from datadog_api_client.v1.model.synthetics_assertion_target import SyntheticsAssertionTarget
+from datadog_api_client.v1.model.synthetics_assertion_target_value import SyntheticsAssertionTargetValue
+from datadog_api_client.v1.model.synthetics_assertion_timings_scope import SyntheticsAssertionTimingsScope
+from datadog_api_client.v1.model.synthetics_assertion_type import SyntheticsAssertionType
+from datadog_api_client.v1.model.synthetics_assertion_x_path_operator import SyntheticsAssertionXPathOperator
+from datadog_api_client.v1.model.synthetics_assertion_x_path_target import SyntheticsAssertionXPathTarget
+from datadog_api_client.v1.model.synthetics_assertion_x_path_target_target import SyntheticsAssertionXPathTargetTarget
+from datadog_api_client.v1.model.synthetics_basic_auth import SyntheticsBasicAuth
+from datadog_api_client.v1.model.synthetics_basic_auth_digest import SyntheticsBasicAuthDigest
+from datadog_api_client.v1.model.synthetics_basic_auth_digest_type import SyntheticsBasicAuthDigestType
+from datadog_api_client.v1.model.synthetics_basic_auth_jwt import SyntheticsBasicAuthJWT
+from datadog_api_client.v1.model.synthetics_basic_auth_jwt_add_claims import SyntheticsBasicAuthJWTAddClaims
+from datadog_api_client.v1.model.synthetics_basic_auth_jwt_algorithm import SyntheticsBasicAuthJWTAlgorithm
+from datadog_api_client.v1.model.synthetics_basic_auth_jwt_type import SyntheticsBasicAuthJWTType
+from datadog_api_client.v1.model.synthetics_basic_auth_ntlm import SyntheticsBasicAuthNTLM
+from datadog_api_client.v1.model.synthetics_basic_auth_ntlm_type import SyntheticsBasicAuthNTLMType
+from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client import SyntheticsBasicAuthOauthClient
+from datadog_api_client.v1.model.synthetics_basic_auth_oauth_client_type import SyntheticsBasicAuthOauthClientType
+from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop import SyntheticsBasicAuthOauthROP
+from datadog_api_client.v1.model.synthetics_basic_auth_oauth_rop_type import SyntheticsBasicAuthOauthROPType
+from datadog_api_client.v1.model.synthetics_basic_auth_oauth_token_api_authentication import SyntheticsBasicAuthOauthTokenApiAuthentication
+from datadog_api_client.v1.model.synthetics_basic_auth_sigv4 import SyntheticsBasicAuthSigv4
+from datadog_api_client.v1.model.synthetics_basic_auth_sigv4_type import SyntheticsBasicAuthSigv4Type
+from datadog_api_client.v1.model.synthetics_basic_auth_web import SyntheticsBasicAuthWeb
+from datadog_api_client.v1.model.synthetics_basic_auth_web_type import SyntheticsBasicAuthWebType
+from datadog_api_client.v1.model.synthetics_batch_details import SyntheticsBatchDetails
+from datadog_api_client.v1.model.synthetics_batch_details_data import SyntheticsBatchDetailsData
+from datadog_api_client.v1.model.synthetics_batch_result import SyntheticsBatchResult
+from datadog_api_client.v1.model.synthetics_batch_status import SyntheticsBatchStatus
+from datadog_api_client.v1.model.synthetics_browser_error import SyntheticsBrowserError
+from datadog_api_client.v1.model.synthetics_browser_error_type import SyntheticsBrowserErrorType
+from datadog_api_client.v1.model.synthetics_browser_test import SyntheticsBrowserTest
+from datadog_api_client.v1.model.synthetics_browser_test_config import SyntheticsBrowserTestConfig
+from datadog_api_client.v1.model.synthetics_browser_test_failure_code import SyntheticsBrowserTestFailureCode
+from datadog_api_client.v1.model.synthetics_browser_test_result_data import SyntheticsBrowserTestResultData
+from datadog_api_client.v1.model.synthetics_browser_test_result_failure import SyntheticsBrowserTestResultFailure
+from datadog_api_client.v1.model.synthetics_browser_test_result_full import SyntheticsBrowserTestResultFull
+from datadog_api_client.v1.model.synthetics_browser_test_result_full_check import SyntheticsBrowserTestResultFullCheck
+from datadog_api_client.v1.model.synthetics_browser_test_result_short import SyntheticsBrowserTestResultShort
+from datadog_api_client.v1.model.synthetics_browser_test_result_short_result import SyntheticsBrowserTestResultShortResult
+from datadog_api_client.v1.model.synthetics_browser_test_rum_settings import SyntheticsBrowserTestRumSettings
+from datadog_api_client.v1.model.synthetics_browser_test_type import SyntheticsBrowserTestType
+from datadog_api_client.v1.model.synthetics_browser_variable import SyntheticsBrowserVariable
+from datadog_api_client.v1.model.synthetics_browser_variable_type import SyntheticsBrowserVariableType
+from datadog_api_client.v1.model.synthetics_ci_batch_metadata import SyntheticsCIBatchMetadata
+from datadog_api_client.v1.model.synthetics_ci_batch_metadata_ci import SyntheticsCIBatchMetadataCI
+from datadog_api_client.v1.model.synthetics_ci_batch_metadata_git import SyntheticsCIBatchMetadataGit
+from datadog_api_client.v1.model.synthetics_ci_batch_metadata_pipeline import SyntheticsCIBatchMetadataPipeline
+from datadog_api_client.v1.model.synthetics_ci_batch_metadata_provider import SyntheticsCIBatchMetadataProvider
+from datadog_api_client.v1.model.synthetics_ci_test import SyntheticsCITest
+from datadog_api_client.v1.model.synthetics_ci_test_body import SyntheticsCITestBody
+from datadog_api_client.v1.model.synthetics_check_type import SyntheticsCheckType
+from datadog_api_client.v1.model.synthetics_config_variable import SyntheticsConfigVariable
+from datadog_api_client.v1.model.synthetics_config_variable_type import SyntheticsConfigVariableType
+from datadog_api_client.v1.model.synthetics_core_web_vitals import SyntheticsCoreWebVitals
+from datadog_api_client.v1.model.synthetics_delete_tests_payload import SyntheticsDeleteTestsPayload
+from datadog_api_client.v1.model.synthetics_delete_tests_response import SyntheticsDeleteTestsResponse
+from datadog_api_client.v1.model.synthetics_deleted_test import SyntheticsDeletedTest
+from datadog_api_client.v1.model.synthetics_device import SyntheticsDevice
+from datadog_api_client.v1.model.synthetics_fetch_uptimes_payload import SyntheticsFetchUptimesPayload
+from datadog_api_client.v1.model.synthetics_get_api_test_latest_results_response import SyntheticsGetAPITestLatestResultsResponse
+from datadog_api_client.v1.model.synthetics_get_browser_test_latest_results_response import SyntheticsGetBrowserTestLatestResultsResponse
+from datadog_api_client.v1.model.synthetics_global_variable import SyntheticsGlobalVariable
+from datadog_api_client.v1.model.synthetics_global_variable_attributes import SyntheticsGlobalVariableAttributes
+from datadog_api_client.v1.model.synthetics_global_variable_options import SyntheticsGlobalVariableOptions
+from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options import SyntheticsGlobalVariableParseTestOptions
+from datadog_api_client.v1.model.synthetics_global_variable_parse_test_options_type import SyntheticsGlobalVariableParseTestOptionsType
+from datadog_api_client.v1.model.synthetics_global_variable_parser_type import SyntheticsGlobalVariableParserType
+from datadog_api_client.v1.model.synthetics_global_variable_request import SyntheticsGlobalVariableRequest
+from datadog_api_client.v1.model.synthetics_global_variable_totp_parameters import SyntheticsGlobalVariableTOTPParameters
+from datadog_api_client.v1.model.synthetics_global_variable_value import SyntheticsGlobalVariableValue
+from datadog_api_client.v1.model.synthetics_list_global_variables_response import SyntheticsListGlobalVariablesResponse
+from datadog_api_client.v1.model.synthetics_list_tests_response import SyntheticsListTestsResponse
+from datadog_api_client.v1.model.synthetics_local_variable_parsing_options_type import SyntheticsLocalVariableParsingOptionsType
+from datadog_api_client.v1.model.synthetics_location import SyntheticsLocation
+from datadog_api_client.v1.model.synthetics_locations import SyntheticsLocations
+from datadog_api_client.v1.model.synthetics_mcp_protocol_version import SyntheticsMCPProtocolVersion
+from datadog_api_client.v1.model.synthetics_mcp_server_capability import SyntheticsMCPServerCapability
+from datadog_api_client.v1.model.synthetics_mobile_step import SyntheticsMobileStep
+from datadog_api_client.v1.model.synthetics_mobile_step_params import SyntheticsMobileStepParams
+from datadog_api_client.v1.model.synthetics_mobile_step_params_direction import SyntheticsMobileStepParamsDirection
+from datadog_api_client.v1.model.synthetics_mobile_step_params_element import SyntheticsMobileStepParamsElement
+from datadog_api_client.v1.model.synthetics_mobile_step_params_element_context_type import SyntheticsMobileStepParamsElementContextType
+from datadog_api_client.v1.model.synthetics_mobile_step_params_element_relative_position import SyntheticsMobileStepParamsElementRelativePosition
+from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator import SyntheticsMobileStepParamsElementUserLocator
+from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator_values_items import SyntheticsMobileStepParamsElementUserLocatorValuesItems
+from datadog_api_client.v1.model.synthetics_mobile_step_params_element_user_locator_values_items_type import SyntheticsMobileStepParamsElementUserLocatorValuesItemsType
+from datadog_api_client.v1.model.synthetics_mobile_step_params_positions_items import SyntheticsMobileStepParamsPositionsItems
+from datadog_api_client.v1.model.synthetics_mobile_step_params_value import SyntheticsMobileStepParamsValue
+from datadog_api_client.v1.model.synthetics_mobile_step_params_variable import SyntheticsMobileStepParamsVariable
+from datadog_api_client.v1.model.synthetics_mobile_step_type import SyntheticsMobileStepType
+from datadog_api_client.v1.model.synthetics_mobile_test import SyntheticsMobileTest
+from datadog_api_client.v1.model.synthetics_mobile_test_config import SyntheticsMobileTestConfig
+from datadog_api_client.v1.model.synthetics_mobile_test_initial_application_arguments import SyntheticsMobileTestInitialApplicationArguments
+from datadog_api_client.v1.model.synthetics_mobile_test_options import SyntheticsMobileTestOptions
+from datadog_api_client.v1.model.synthetics_mobile_test_type import SyntheticsMobileTestType
+from datadog_api_client.v1.model.synthetics_mobile_tests_mobile_application import SyntheticsMobileTestsMobileApplication
+from datadog_api_client.v1.model.synthetics_mobile_tests_mobile_application_reference_type import SyntheticsMobileTestsMobileApplicationReferenceType
+from datadog_api_client.v1.model.synthetics_parsing_options import SyntheticsParsingOptions
+from datadog_api_client.v1.model.synthetics_patch_test_body import SyntheticsPatchTestBody
+from datadog_api_client.v1.model.synthetics_patch_test_operation import SyntheticsPatchTestOperation
+from datadog_api_client.v1.model.synthetics_patch_test_operation_name import SyntheticsPatchTestOperationName
+from datadog_api_client.v1.model.synthetics_playing_tab import SyntheticsPlayingTab
+from datadog_api_client.v1.model.synthetics_private_location import SyntheticsPrivateLocation
+from datadog_api_client.v1.model.synthetics_private_location_creation_response import SyntheticsPrivateLocationCreationResponse
+from datadog_api_client.v1.model.synthetics_private_location_creation_response_result_encryption import SyntheticsPrivateLocationCreationResponseResultEncryption
+from datadog_api_client.v1.model.synthetics_private_location_metadata import SyntheticsPrivateLocationMetadata
+from datadog_api_client.v1.model.synthetics_private_location_secrets import SyntheticsPrivateLocationSecrets
+from datadog_api_client.v1.model.synthetics_private_location_secrets_authentication import SyntheticsPrivateLocationSecretsAuthentication
+from datadog_api_client.v1.model.synthetics_private_location_secrets_config_decryption import SyntheticsPrivateLocationSecretsConfigDecryption
+from datadog_api_client.v1.model.synthetics_restricted_roles import SyntheticsRestrictedRoles
+from datadog_api_client.v1.model.synthetics_ssl_certificate import SyntheticsSSLCertificate
+from datadog_api_client.v1.model.synthetics_ssl_certificate_issuer import SyntheticsSSLCertificateIssuer
+from datadog_api_client.v1.model.synthetics_ssl_certificate_subject import SyntheticsSSLCertificateSubject
+from datadog_api_client.v1.model.synthetics_step import SyntheticsStep
+from datadog_api_client.v1.model.synthetics_step_detail import SyntheticsStepDetail
+from datadog_api_client.v1.model.synthetics_step_detail_warning import SyntheticsStepDetailWarning
+from datadog_api_client.v1.model.synthetics_step_type import SyntheticsStepType
+from datadog_api_client.v1.model.synthetics_test_call_type import SyntheticsTestCallType
+from datadog_api_client.v1.model.synthetics_test_ci_options import SyntheticsTestCiOptions
+from datadog_api_client.v1.model.synthetics_test_config import SyntheticsTestConfig
+from datadog_api_client.v1.model.synthetics_test_details import SyntheticsTestDetails
+from datadog_api_client.v1.model.synthetics_test_details_sub_type import SyntheticsTestDetailsSubType
+from datadog_api_client.v1.model.synthetics_test_details_type import SyntheticsTestDetailsType
+from datadog_api_client.v1.model.synthetics_test_details_without_steps import SyntheticsTestDetailsWithoutSteps
+from datadog_api_client.v1.model.synthetics_test_execution_rule import SyntheticsTestExecutionRule
+from datadog_api_client.v1.model.synthetics_test_headers import SyntheticsTestHeaders
+from datadog_api_client.v1.model.synthetics_test_metadata import SyntheticsTestMetadata
+from datadog_api_client.v1.model.synthetics_test_monitor_status import SyntheticsTestMonitorStatus
+from datadog_api_client.v1.model.synthetics_test_options import SyntheticsTestOptions
+from datadog_api_client.v1.model.synthetics_test_options_http_version import SyntheticsTestOptionsHTTPVersion
+from datadog_api_client.v1.model.synthetics_test_options_monitor_options import SyntheticsTestOptionsMonitorOptions
+from datadog_api_client.v1.model.synthetics_test_options_monitor_options_notification_preset_name import SyntheticsTestOptionsMonitorOptionsNotificationPresetName
+from datadog_api_client.v1.model.synthetics_test_options_retry import SyntheticsTestOptionsRetry
+from datadog_api_client.v1.model.synthetics_test_options_scheduling import SyntheticsTestOptionsScheduling
+from datadog_api_client.v1.model.synthetics_test_options_scheduling_timeframe import SyntheticsTestOptionsSchedulingTimeframe
+from datadog_api_client.v1.model.synthetics_test_pause_status import SyntheticsTestPauseStatus
+from datadog_api_client.v1.model.synthetics_test_process_status import SyntheticsTestProcessStatus
+from datadog_api_client.v1.model.synthetics_test_request import SyntheticsTestRequest
+from datadog_api_client.v1.model.synthetics_test_request_body_file import SyntheticsTestRequestBodyFile
+from datadog_api_client.v1.model.synthetics_test_request_body_type import SyntheticsTestRequestBodyType
+from datadog_api_client.v1.model.synthetics_test_request_certificate import SyntheticsTestRequestCertificate
+from datadog_api_client.v1.model.synthetics_test_request_certificate_item import SyntheticsTestRequestCertificateItem
+from datadog_api_client.v1.model.synthetics_test_request_dns_server_port import SyntheticsTestRequestDNSServerPort
+from datadog_api_client.v1.model.synthetics_test_request_port import SyntheticsTestRequestPort
+from datadog_api_client.v1.model.synthetics_test_request_proxy import SyntheticsTestRequestProxy
+from datadog_api_client.v1.model.synthetics_test_restriction_policy_binding import SyntheticsTestRestrictionPolicyBinding
+from datadog_api_client.v1.model.synthetics_test_restriction_policy_binding_relation import SyntheticsTestRestrictionPolicyBindingRelation
+from datadog_api_client.v1.model.synthetics_test_uptime import SyntheticsTestUptime
+from datadog_api_client.v1.model.synthetics_timing import SyntheticsTiming
+from datadog_api_client.v1.model.synthetics_trigger_body import SyntheticsTriggerBody
+from datadog_api_client.v1.model.synthetics_trigger_ci_test_location import SyntheticsTriggerCITestLocation
+from datadog_api_client.v1.model.synthetics_trigger_ci_test_run_result import SyntheticsTriggerCITestRunResult
+from datadog_api_client.v1.model.synthetics_trigger_ci_tests_response import SyntheticsTriggerCITestsResponse
+from datadog_api_client.v1.model.synthetics_trigger_test import SyntheticsTriggerTest
+from datadog_api_client.v1.model.synthetics_update_test_pause_status_payload import SyntheticsUpdateTestPauseStatusPayload
+from datadog_api_client.v1.model.synthetics_uptime import SyntheticsUptime
+from datadog_api_client.v1.model.synthetics_variable_parser import SyntheticsVariableParser
+from datadog_api_client.v1.model.synthetics_warning_type import SyntheticsWarningType
+from datadog_api_client.v1.model.table_widget_cell_display_mode import TableWidgetCellDisplayMode
+from datadog_api_client.v1.model.table_widget_definition import TableWidgetDefinition
+from datadog_api_client.v1.model.table_widget_definition_type import TableWidgetDefinitionType
+from datadog_api_client.v1.model.table_widget_has_search_bar import TableWidgetHasSearchBar
+from datadog_api_client.v1.model.table_widget_request import TableWidgetRequest
+from datadog_api_client.v1.model.table_widget_text_format_match import TableWidgetTextFormatMatch
+from datadog_api_client.v1.model.table_widget_text_format_match_type import TableWidgetTextFormatMatchType
+from datadog_api_client.v1.model.table_widget_text_format_palette import TableWidgetTextFormatPalette
+from datadog_api_client.v1.model.table_widget_text_format_replace import TableWidgetTextFormatReplace
+from datadog_api_client.v1.model.table_widget_text_format_replace_all import TableWidgetTextFormatReplaceAll
+from datadog_api_client.v1.model.table_widget_text_format_replace_all_type import TableWidgetTextFormatReplaceAllType
+from datadog_api_client.v1.model.table_widget_text_format_replace_substring import TableWidgetTextFormatReplaceSubstring
+from datadog_api_client.v1.model.table_widget_text_format_replace_substring_type import TableWidgetTextFormatReplaceSubstringType
+from datadog_api_client.v1.model.table_widget_text_format_rule import TableWidgetTextFormatRule
+from datadog_api_client.v1.model.tag_to_hosts import TagToHosts
+from datadog_api_client.v1.model.target_format_type import TargetFormatType
+from datadog_api_client.v1.model.timeseries_background import TimeseriesBackground
+from datadog_api_client.v1.model.timeseries_background_type import TimeseriesBackgroundType
+from datadog_api_client.v1.model.timeseries_request_style import TimeseriesRequestStyle
+from datadog_api_client.v1.model.timeseries_widget_definition import TimeseriesWidgetDefinition
+from datadog_api_client.v1.model.timeseries_widget_definition_type import TimeseriesWidgetDefinitionType
+from datadog_api_client.v1.model.timeseries_widget_expression_alias import TimeseriesWidgetExpressionAlias
+from datadog_api_client.v1.model.timeseries_widget_legend_column import TimeseriesWidgetLegendColumn
+from datadog_api_client.v1.model.timeseries_widget_legend_layout import TimeseriesWidgetLegendLayout
+from datadog_api_client.v1.model.timeseries_widget_request import TimeseriesWidgetRequest
+from datadog_api_client.v1.model.toplist_widget_definition import ToplistWidgetDefinition
+from datadog_api_client.v1.model.toplist_widget_definition_type import ToplistWidgetDefinitionType
+from datadog_api_client.v1.model.toplist_widget_display import ToplistWidgetDisplay
+from datadog_api_client.v1.model.toplist_widget_flat import ToplistWidgetFlat
+from datadog_api_client.v1.model.toplist_widget_flat_type import ToplistWidgetFlatType
+from datadog_api_client.v1.model.toplist_widget_legend import ToplistWidgetLegend
+from datadog_api_client.v1.model.toplist_widget_request import ToplistWidgetRequest
+from datadog_api_client.v1.model.toplist_widget_scaling import ToplistWidgetScaling
+from datadog_api_client.v1.model.toplist_widget_stacked import ToplistWidgetStacked
+from datadog_api_client.v1.model.toplist_widget_stacked_type import ToplistWidgetStackedType
+from datadog_api_client.v1.model.toplist_widget_style import ToplistWidgetStyle
+from datadog_api_client.v1.model.topology_map_widget_definition import TopologyMapWidgetDefinition
+from datadog_api_client.v1.model.topology_map_widget_definition_data_streams import TopologyMapWidgetDefinitionDataStreams
+from datadog_api_client.v1.model.topology_map_widget_definition_service_map import TopologyMapWidgetDefinitionServiceMap
+from datadog_api_client.v1.model.topology_map_widget_definition_type import TopologyMapWidgetDefinitionType
+from datadog_api_client.v1.model.topology_query_data_streams import TopologyQueryDataStreams
+from datadog_api_client.v1.model.topology_query_data_streams_data_source import TopologyQueryDataStreamsDataSource
+from datadog_api_client.v1.model.topology_query_service_map import TopologyQueryServiceMap
+from datadog_api_client.v1.model.topology_query_service_map_data_source import TopologyQueryServiceMapDataSource
+from datadog_api_client.v1.model.topology_request_data_streams import TopologyRequestDataStreams
+from datadog_api_client.v1.model.topology_request_service_map import TopologyRequestServiceMap
+from datadog_api_client.v1.model.topology_request_type import TopologyRequestType
+from datadog_api_client.v1.model.tree_map_color_by import TreeMapColorBy
+from datadog_api_client.v1.model.tree_map_group_by import TreeMapGroupBy
+from datadog_api_client.v1.model.tree_map_size_by import TreeMapSizeBy
+from datadog_api_client.v1.model.tree_map_widget_definition import TreeMapWidgetDefinition
+from datadog_api_client.v1.model.tree_map_widget_definition_type import TreeMapWidgetDefinitionType
+from datadog_api_client.v1.model.tree_map_widget_request import TreeMapWidgetRequest
+from datadog_api_client.v1.model.usage_analyzed_logs_hour import UsageAnalyzedLogsHour
+from datadog_api_client.v1.model.usage_analyzed_logs_response import UsageAnalyzedLogsResponse
+from datadog_api_client.v1.model.usage_attribution_aggregates import UsageAttributionAggregates
+from datadog_api_client.v1.model.usage_attribution_aggregates_body import UsageAttributionAggregatesBody
+from datadog_api_client.v1.model.usage_attribution_tag_names import UsageAttributionTagNames
+from datadog_api_client.v1.model.usage_audit_logs_hour import UsageAuditLogsHour
+from datadog_api_client.v1.model.usage_audit_logs_response import UsageAuditLogsResponse
+from datadog_api_client.v1.model.usage_billable_summary_body import UsageBillableSummaryBody
+from datadog_api_client.v1.model.usage_billable_summary_hour import UsageBillableSummaryHour
+from datadog_api_client.v1.model.usage_billable_summary_keys import UsageBillableSummaryKeys
+from datadog_api_client.v1.model.usage_billable_summary_response import UsageBillableSummaryResponse
+from datadog_api_client.v1.model.usage_ci_visibility_hour import UsageCIVisibilityHour
+from datadog_api_client.v1.model.usage_ci_visibility_response import UsageCIVisibilityResponse
+from datadog_api_client.v1.model.usage_cws_hour import UsageCWSHour
+from datadog_api_client.v1.model.usage_cws_response import UsageCWSResponse
+from datadog_api_client.v1.model.usage_cloud_security_posture_management_hour import UsageCloudSecurityPostureManagementHour
+from datadog_api_client.v1.model.usage_cloud_security_posture_management_response import UsageCloudSecurityPostureManagementResponse
+from datadog_api_client.v1.model.usage_custom_reports_attributes import UsageCustomReportsAttributes
+from datadog_api_client.v1.model.usage_custom_reports_data import UsageCustomReportsData
+from datadog_api_client.v1.model.usage_custom_reports_meta import UsageCustomReportsMeta
+from datadog_api_client.v1.model.usage_custom_reports_page import UsageCustomReportsPage
+from datadog_api_client.v1.model.usage_custom_reports_response import UsageCustomReportsResponse
+from datadog_api_client.v1.model.usage_dbm_hour import UsageDBMHour
+from datadog_api_client.v1.model.usage_dbm_response import UsageDBMResponse
+from datadog_api_client.v1.model.usage_fargate_hour import UsageFargateHour
+from datadog_api_client.v1.model.usage_fargate_response import UsageFargateResponse
+from datadog_api_client.v1.model.usage_host_hour import UsageHostHour
+from datadog_api_client.v1.model.usage_hosts_response import UsageHostsResponse
+from datadog_api_client.v1.model.usage_incident_management_hour import UsageIncidentManagementHour
+from datadog_api_client.v1.model.usage_incident_management_response import UsageIncidentManagementResponse
+from datadog_api_client.v1.model.usage_indexed_spans_hour import UsageIndexedSpansHour
+from datadog_api_client.v1.model.usage_indexed_spans_response import UsageIndexedSpansResponse
+from datadog_api_client.v1.model.usage_ingested_spans_hour import UsageIngestedSpansHour
+from datadog_api_client.v1.model.usage_ingested_spans_response import UsageIngestedSpansResponse
+from datadog_api_client.v1.model.usage_iot_hour import UsageIoTHour
+from datadog_api_client.v1.model.usage_iot_response import UsageIoTResponse
+from datadog_api_client.v1.model.usage_lambda_hour import UsageLambdaHour
+from datadog_api_client.v1.model.usage_lambda_response import UsageLambdaResponse
+from datadog_api_client.v1.model.usage_logs_by_index_hour import UsageLogsByIndexHour
+from datadog_api_client.v1.model.usage_logs_by_index_response import UsageLogsByIndexResponse
+from datadog_api_client.v1.model.usage_logs_by_retention_hour import UsageLogsByRetentionHour
+from datadog_api_client.v1.model.usage_logs_by_retention_response import UsageLogsByRetentionResponse
+from datadog_api_client.v1.model.usage_logs_hour import UsageLogsHour
+from datadog_api_client.v1.model.usage_logs_response import UsageLogsResponse
+from datadog_api_client.v1.model.usage_metric_category import UsageMetricCategory
+from datadog_api_client.v1.model.usage_network_flows_hour import UsageNetworkFlowsHour
+from datadog_api_client.v1.model.usage_network_flows_response import UsageNetworkFlowsResponse
+from datadog_api_client.v1.model.usage_network_hosts_hour import UsageNetworkHostsHour
+from datadog_api_client.v1.model.usage_network_hosts_response import UsageNetworkHostsResponse
+from datadog_api_client.v1.model.usage_online_archive_hour import UsageOnlineArchiveHour
+from datadog_api_client.v1.model.usage_online_archive_response import UsageOnlineArchiveResponse
+from datadog_api_client.v1.model.usage_profiling_hour import UsageProfilingHour
+from datadog_api_client.v1.model.usage_profiling_response import UsageProfilingResponse
+from datadog_api_client.v1.model.usage_reports_type import UsageReportsType
+from datadog_api_client.v1.model.usage_rum_sessions_hour import UsageRumSessionsHour
+from datadog_api_client.v1.model.usage_rum_sessions_response import UsageRumSessionsResponse
+from datadog_api_client.v1.model.usage_rum_units_hour import UsageRumUnitsHour
+from datadog_api_client.v1.model.usage_rum_units_response import UsageRumUnitsResponse
+from datadog_api_client.v1.model.usage_sds_hour import UsageSDSHour
+from datadog_api_client.v1.model.usage_sds_response import UsageSDSResponse
+from datadog_api_client.v1.model.usage_snmp_hour import UsageSNMPHour
+from datadog_api_client.v1.model.usage_snmp_response import UsageSNMPResponse
+from datadog_api_client.v1.model.usage_sort import UsageSort
+from datadog_api_client.v1.model.usage_sort_direction import UsageSortDirection
+from datadog_api_client.v1.model.usage_specified_custom_reports_attributes import UsageSpecifiedCustomReportsAttributes
+from datadog_api_client.v1.model.usage_specified_custom_reports_data import UsageSpecifiedCustomReportsData
+from datadog_api_client.v1.model.usage_specified_custom_reports_meta import UsageSpecifiedCustomReportsMeta
+from datadog_api_client.v1.model.usage_specified_custom_reports_page import UsageSpecifiedCustomReportsPage
+from datadog_api_client.v1.model.usage_specified_custom_reports_response import UsageSpecifiedCustomReportsResponse
+from datadog_api_client.v1.model.usage_summary_date import UsageSummaryDate
+from datadog_api_client.v1.model.usage_summary_date_org import UsageSummaryDateOrg
+from datadog_api_client.v1.model.usage_summary_response import UsageSummaryResponse
+from datadog_api_client.v1.model.usage_synthetics_api_hour import UsageSyntheticsAPIHour
+from datadog_api_client.v1.model.usage_synthetics_api_response import UsageSyntheticsAPIResponse
+from datadog_api_client.v1.model.usage_synthetics_browser_hour import UsageSyntheticsBrowserHour
+from datadog_api_client.v1.model.usage_synthetics_browser_response import UsageSyntheticsBrowserResponse
+from datadog_api_client.v1.model.usage_synthetics_hour import UsageSyntheticsHour
+from datadog_api_client.v1.model.usage_synthetics_response import UsageSyntheticsResponse
+from datadog_api_client.v1.model.usage_timeseries_hour import UsageTimeseriesHour
+from datadog_api_client.v1.model.usage_timeseries_response import UsageTimeseriesResponse
+from datadog_api_client.v1.model.usage_top_avg_metrics_hour import UsageTopAvgMetricsHour
+from datadog_api_client.v1.model.usage_top_avg_metrics_metadata import UsageTopAvgMetricsMetadata
+from datadog_api_client.v1.model.usage_top_avg_metrics_pagination import UsageTopAvgMetricsPagination
+from datadog_api_client.v1.model.usage_top_avg_metrics_response import UsageTopAvgMetricsResponse
+from datadog_api_client.v1.model.user import User
+from datadog_api_client.v1.model.user_disable_response import UserDisableResponse
+from datadog_api_client.v1.model.user_journey_formula_compute import UserJourneyFormulaCompute
+from datadog_api_client.v1.model.user_journey_formula_compute_metric import UserJourneyFormulaComputeMetric
+from datadog_api_client.v1.model.user_journey_formula_group_by import UserJourneyFormulaGroupBy
+from datadog_api_client.v1.model.user_journey_join_keys import UserJourneyJoinKeys
+from datadog_api_client.v1.model.user_journey_search import UserJourneySearch
+from datadog_api_client.v1.model.user_journey_search_filters import UserJourneySearchFilters
+from datadog_api_client.v1.model.user_journey_search_graph_filter import UserJourneySearchGraphFilter
+from datadog_api_client.v1.model.user_journey_search_target import UserJourneySearchTarget
+from datadog_api_client.v1.model.user_list_response import UserListResponse
+from datadog_api_client.v1.model.user_response import UserResponse
+from datadog_api_client.v1.model.viewing_preferences import ViewingPreferences
+from datadog_api_client.v1.model.viewing_preferences_theme import ViewingPreferencesTheme
+from datadog_api_client.v1.model.webhooks_integration import WebhooksIntegration
+from datadog_api_client.v1.model.webhooks_integration_custom_variable import WebhooksIntegrationCustomVariable
+from datadog_api_client.v1.model.webhooks_integration_custom_variable_response import WebhooksIntegrationCustomVariableResponse
+from datadog_api_client.v1.model.webhooks_integration_custom_variable_update_request import WebhooksIntegrationCustomVariableUpdateRequest
+from datadog_api_client.v1.model.webhooks_integration_encoding import WebhooksIntegrationEncoding
+from datadog_api_client.v1.model.webhooks_integration_update_request import WebhooksIntegrationUpdateRequest
+from datadog_api_client.v1.model.widget import Widget
+from datadog_api_client.v1.model.widget_aggregator import WidgetAggregator
+from datadog_api_client.v1.model.widget_axis import WidgetAxis
+from datadog_api_client.v1.model.widget_change_type import WidgetChangeType
+from datadog_api_client.v1.model.widget_color_preference import WidgetColorPreference
+from datadog_api_client.v1.model.widget_comparator import WidgetComparator
+from datadog_api_client.v1.model.widget_compare_to import WidgetCompareTo
+from datadog_api_client.v1.model.widget_conditional_format import WidgetConditionalFormat
+from datadog_api_client.v1.model.widget_custom_link import WidgetCustomLink
+from datadog_api_client.v1.model.widget_definition import WidgetDefinition
+from datadog_api_client.v1.model.widget_display_type import WidgetDisplayType
+from datadog_api_client.v1.model.widget_event import WidgetEvent
+from datadog_api_client.v1.model.widget_event_size import WidgetEventSize
+from datadog_api_client.v1.model.widget_field_sort import WidgetFieldSort
+from datadog_api_client.v1.model.widget_formula import WidgetFormula
+from datadog_api_client.v1.model.widget_formula_cell_display_mode_options import WidgetFormulaCellDisplayModeOptions
+from datadog_api_client.v1.model.widget_formula_cell_display_mode_options_trend_type import WidgetFormulaCellDisplayModeOptionsTrendType
+from datadog_api_client.v1.model.widget_formula_cell_display_mode_options_y_scale import WidgetFormulaCellDisplayModeOptionsYScale
+from datadog_api_client.v1.model.widget_formula_limit import WidgetFormulaLimit
+from datadog_api_client.v1.model.widget_formula_sort import WidgetFormulaSort
+from datadog_api_client.v1.model.widget_formula_style import WidgetFormulaStyle
+from datadog_api_client.v1.model.widget_group_sort import WidgetGroupSort
+from datadog_api_client.v1.model.widget_grouping import WidgetGrouping
+from datadog_api_client.v1.model.widget_histogram_request_type import WidgetHistogramRequestType
+from datadog_api_client.v1.model.widget_horizontal_align import WidgetHorizontalAlign
+from datadog_api_client.v1.model.widget_image_sizing import WidgetImageSizing
+from datadog_api_client.v1.model.widget_layout import WidgetLayout
+from datadog_api_client.v1.model.widget_layout_type import WidgetLayoutType
+from datadog_api_client.v1.model.widget_legacy_live_span import WidgetLegacyLiveSpan
+from datadog_api_client.v1.model.widget_line_type import WidgetLineType
+from datadog_api_client.v1.model.widget_line_width import WidgetLineWidth
+from datadog_api_client.v1.model.widget_live_span import WidgetLiveSpan
+from datadog_api_client.v1.model.widget_live_span_unit import WidgetLiveSpanUnit
+from datadog_api_client.v1.model.widget_margin import WidgetMargin
+from datadog_api_client.v1.model.widget_marker import WidgetMarker
+from datadog_api_client.v1.model.widget_message_display import WidgetMessageDisplay
+from datadog_api_client.v1.model.widget_monitor_summary_display_format import WidgetMonitorSummaryDisplayFormat
+from datadog_api_client.v1.model.widget_monitor_summary_sort import WidgetMonitorSummarySort
+from datadog_api_client.v1.model.widget_new_fixed_span import WidgetNewFixedSpan
+from datadog_api_client.v1.model.widget_new_fixed_span_type import WidgetNewFixedSpanType
+from datadog_api_client.v1.model.widget_new_live_span import WidgetNewLiveSpan
+from datadog_api_client.v1.model.widget_new_live_span_type import WidgetNewLiveSpanType
+from datadog_api_client.v1.model.widget_node_type import WidgetNodeType
+from datadog_api_client.v1.model.widget_number_format import WidgetNumberFormat
+from datadog_api_client.v1.model.widget_order_by import WidgetOrderBy
+from datadog_api_client.v1.model.widget_palette import WidgetPalette
+from datadog_api_client.v1.model.widget_request_style import WidgetRequestStyle
+from datadog_api_client.v1.model.widget_service_summary_display_format import WidgetServiceSummaryDisplayFormat
+from datadog_api_client.v1.model.widget_size_format import WidgetSizeFormat
+from datadog_api_client.v1.model.widget_sort import WidgetSort
+from datadog_api_client.v1.model.widget_sort_by import WidgetSortBy
+from datadog_api_client.v1.model.widget_sort_order_by import WidgetSortOrderBy
+from datadog_api_client.v1.model.widget_style import WidgetStyle
+from datadog_api_client.v1.model.widget_style_order_by import WidgetStyleOrderBy
+from datadog_api_client.v1.model.widget_summary_type import WidgetSummaryType
+from datadog_api_client.v1.model.widget_text_align import WidgetTextAlign
+from datadog_api_client.v1.model.widget_tick_edge import WidgetTickEdge
+from datadog_api_client.v1.model.widget_time import WidgetTime
+from datadog_api_client.v1.model.widget_time_windows import WidgetTimeWindows
+from datadog_api_client.v1.model.widget_vertical_align import WidgetVerticalAlign
+from datadog_api_client.v1.model.widget_view_mode import WidgetViewMode
+from datadog_api_client.v1.model.widget_viz_type import WidgetVizType
+from datadog_api_client.v1.model.wildcard_widget_definition import WildcardWidgetDefinition
+from datadog_api_client.v1.model.wildcard_widget_definition_type import WildcardWidgetDefinitionType
+from datadog_api_client.v1.model.wildcard_widget_request import WildcardWidgetRequest
+from datadog_api_client.v1.model.wildcard_widget_specification import WildcardWidgetSpecification
+from datadog_api_client.v1.model.wildcard_widget_specification_type import WildcardWidgetSpecificationType
+
+__all__ = [
+ "APIErrorResponse",
+ "AWSAccount",
+ "AWSAccountAndLambdaRequest",
+ "AWSAccountCreateResponse",
+ "AWSAccountDeleteRequest",
+ "AWSAccountListResponse",
+ "AWSEventBridgeAccountConfiguration",
+ "AWSEventBridgeCreateRequest",
+ "AWSEventBridgeCreateResponse",
+ "AWSEventBridgeCreateStatus",
+ "AWSEventBridgeDeleteRequest",
+ "AWSEventBridgeDeleteResponse",
+ "AWSEventBridgeDeleteStatus",
+ "AWSEventBridgeListResponse",
+ "AWSEventBridgeSource",
+ "AWSLogsAsyncError",
+ "AWSLogsAsyncResponse",
+ "AWSLogsLambda",
+ "AWSLogsListResponse",
+ "AWSLogsListServicesResponse",
+ "AWSLogsServicesRequest",
+ "AWSNamespace",
+ "AWSTagFilter",
+ "AWSTagFilterCreateRequest",
+ "AWSTagFilterDeleteRequest",
+ "AWSTagFilterListResponse",
+ "AccessRole",
+ "AddSignalToIncidentRequest",
+ "AgentCheck",
+ "AlertGraphWidgetDefinition",
+ "AlertGraphWidgetDefinitionType",
+ "AlertValueWidgetDefinition",
+ "AlertValueWidgetDefinitionType",
+ "ApiKey",
+ "ApiKeyListResponse",
+ "ApiKeyResponse",
+ "ApmStatsQueryColumnType",
+ "ApmStatsQueryDefinition",
+ "ApmStatsQueryRowType",
+ "ApplicationKey",
+ "ApplicationKeyListResponse",
+ "ApplicationKeyResponse",
+ "AuthenticationValidationResponse",
+ "AzureAccount",
+ "AzureAccountListResponse",
+ "BarChartWidgetDefinition",
+ "BarChartWidgetDefinitionType",
+ "BarChartWidgetDisplay",
+ "BarChartWidgetFlat",
+ "BarChartWidgetFlatType",
+ "BarChartWidgetLegend",
+ "BarChartWidgetRequest",
+ "BarChartWidgetScaling",
+ "BarChartWidgetStacked",
+ "BarChartWidgetStackedType",
+ "BarChartWidgetStyle",
+ "CalendarInterval",
+ "CalendarIntervalType",
+ "CancelDowntimesByScopeRequest",
+ "CanceledDowntimesIds",
+ "ChangeWidgetDefinition",
+ "ChangeWidgetDefinitionType",
+ "ChangeWidgetRequest",
+ "CheckCanDeleteMonitorResponse",
+ "CheckCanDeleteMonitorResponseData",
+ "CheckCanDeleteSLOResponse",
+ "CheckCanDeleteSLOResponseData",
+ "CheckStatusWidgetDefinition",
+ "CheckStatusWidgetDefinitionType",
+ "CohortWidgetDefinition",
+ "CohortWidgetDefinitionType",
+ "ComparisonCustomTimeframe",
+ "ComparisonDuration",
+ "ComparisonDurationType",
+ "ContentEncoding",
+ "Creator",
+ "Dashboard",
+ "DashboardBulkActionData",
+ "DashboardBulkActionDataList",
+ "DashboardBulkDeleteRequest",
+ "DashboardDefaultTimeframeSetting",
+ "DashboardDeleteResponse",
+ "DashboardFixedTimeframe",
+ "DashboardFixedTimeframeType",
+ "DashboardGlobalTime",
+ "DashboardGlobalTimeLiveSpan",
+ "DashboardInviteType",
+ "DashboardLayoutType",
+ "DashboardList",
+ "DashboardListDeleteResponse",
+ "DashboardListListResponse",
+ "DashboardLiveTimeframe",
+ "DashboardLiveTimeframeType",
+ "DashboardReflowType",
+ "DashboardResourceType",
+ "DashboardRestoreRequest",
+ "DashboardShareType",
+ "DashboardSummary",
+ "DashboardSummaryDefinition",
+ "DashboardTab",
+ "DashboardTemplateVariable",
+ "DashboardTemplateVariablePreset",
+ "DashboardTemplateVariablePresetValue",
+ "DashboardType",
+ "DataProjectionQuery",
+ "DataProjectionRequestType",
+ "DatasetListQuery",
+ "DatasetListQueryDataSourceType",
+ "DatasetListQuerySort",
+ "DatasetListQuerySortField",
+ "DeleteSharedDashboardResponse",
+ "DeletedMonitor",
+ "DistributionPoint",
+ "DistributionPointsContentEncoding",
+ "DistributionPointsPayload",
+ "DistributionPointsSeries",
+ "DistributionPointsType",
+ "DistributionWidgetDefinition",
+ "DistributionWidgetDefinitionType",
+ "DistributionWidgetHistogramRequestQuery",
+ "DistributionWidgetRequest",
+ "DistributionWidgetXAxis",
+ "DistributionWidgetYAxis",
+ "Downtime",
+ "DowntimeChild",
+ "DowntimeRecurrence",
+ "Event",
+ "EventAlertType",
+ "EventCreateRequest",
+ "EventCreateResponse",
+ "EventListResponse",
+ "EventPriority",
+ "EventQueryDefinition",
+ "EventResponse",
+ "EventStreamWidgetDefinition",
+ "EventStreamWidgetDefinitionType",
+ "EventTimelineWidgetDefinition",
+ "EventTimelineWidgetDefinitionType",
+ "EventsAggregation",
+ "EventsAggregationValue",
+ "FormulaAndFunctionApmDependencyStatName",
+ "FormulaAndFunctionApmDependencyStatsDataSource",
+ "FormulaAndFunctionApmDependencyStatsQueryDefinition",
+ "FormulaAndFunctionApmMetricStatName",
+ "FormulaAndFunctionApmMetricsDataSource",
+ "FormulaAndFunctionApmMetricsQueryDefinition",
+ "FormulaAndFunctionApmMetricsSpanKind",
+ "FormulaAndFunctionApmResourceStatName",
+ "FormulaAndFunctionApmResourceStatsDataSource",
+ "FormulaAndFunctionApmResourceStatsQueryDefinition",
+ "FormulaAndFunctionCloudCostDataSource",
+ "FormulaAndFunctionCloudCostQueryDefinition",
+ "FormulaAndFunctionEventAggregation",
+ "FormulaAndFunctionEventQueryDefinition",
+ "FormulaAndFunctionEventQueryDefinitionCompute",
+ "FormulaAndFunctionEventQueryDefinitionSearch",
+ "FormulaAndFunctionEventQueryGroupBy",
+ "FormulaAndFunctionEventQueryGroupByConfig",
+ "FormulaAndFunctionEventQueryGroupByFields",
+ "FormulaAndFunctionEventQueryGroupBySort",
+ "FormulaAndFunctionEventsDataSource",
+ "FormulaAndFunctionMetricAggregation",
+ "FormulaAndFunctionMetricDataSource",
+ "FormulaAndFunctionMetricQueryDefinition",
+ "FormulaAndFunctionMetricSemanticMode",
+ "FormulaAndFunctionProcessQueryDataSource",
+ "FormulaAndFunctionProcessQueryDefinition",
+ "FormulaAndFunctionProductAnalyticsExtendedDataSource",
+ "FormulaAndFunctionProductAnalyticsExtendedQueryDefinition",
+ "FormulaAndFunctionProductAnalyticsExtendedQueryDefinitionIndexesItems",
+ "FormulaAndFunctionQueryDefinition",
+ "FormulaAndFunctionResponseFormat",
+ "FormulaAndFunctionRetentionQueryDefinition",
+ "FormulaAndFunctionSLODataSource",
+ "FormulaAndFunctionSLOGroupMode",
+ "FormulaAndFunctionSLOMeasure",
+ "FormulaAndFunctionSLOQueryDefinition",
+ "FormulaAndFunctionSLOQueryType",
+ "FormulaAndFunctionUserJourneyQueryDefinition",
+ "FormulaType",
+ "FreeTextWidgetDefinition",
+ "FreeTextWidgetDefinitionType",
+ "FunnelComparisonCustomTimeframe",
+ "FunnelComparisonDuration",
+ "FunnelComparisonDurationType",
+ "FunnelGroupedDisplay",
+ "FunnelQuery",
+ "FunnelRequestType",
+ "FunnelSource",
+ "FunnelStep",
+ "FunnelWidgetDefinition",
+ "FunnelWidgetDefinitionType",
+ "FunnelWidgetRequest",
+ "GCPAccount",
+ "GCPAccountListResponse",
+ "GCPMonitoredResourceConfig",
+ "GCPMonitoredResourceConfigType",
+ "GeomapWidgetDefinition",
+ "GeomapWidgetDefinitionStyle",
+ "GeomapWidgetDefinitionType",
+ "GeomapWidgetDefinitionView",
+ "GeomapWidgetRequest",
+ "GeomapWidgetRequestStyle",
+ "GraphSnapshot",
+ "GroupType",
+ "GroupWidgetDefinition",
+ "GroupWidgetDefinitionType",
+ "HTTPLog",
+ "HTTPLogError",
+ "HTTPLogItem",
+ "HeatMapWidgetDefinition",
+ "HeatMapWidgetDefinitionType",
+ "HeatMapWidgetRequest",
+ "HeatMapWidgetXAxis",
+ "Host",
+ "HostListResponse",
+ "HostMapRequest",
+ "HostMapWidgetDefinition",
+ "HostMapWidgetDefinitionRequestType",
+ "HostMapWidgetDefinitionRequests",
+ "HostMapWidgetDefinitionStyle",
+ "HostMapWidgetDefinitionType",
+ "HostMapWidgetDimension",
+ "HostMapWidgetFormula",
+ "HostMapWidgetGroupBy",
+ "HostMapWidgetInfrastructureRequest",
+ "HostMapWidgetInfrastructureRequestLeaf",
+ "HostMapWidgetInfrastructureRequestRequestType",
+ "HostMapWidgetInfrastructureStyle",
+ "HostMapWidgetNodeType",
+ "HostMapWidgetProjection",
+ "HostMapWidgetProjectionDimensionMapping",
+ "HostMapWidgetProjectionType",
+ "HostMapWidgetScalarRequest",
+ "HostMapWidgetScalarRequestResponseFormat",
+ "HostMeta",
+ "HostMetaInstallMethod",
+ "HostMetrics",
+ "HostMuteResponse",
+ "HostMuteSettings",
+ "HostTags",
+ "HostTotals",
+ "HourlyUsageAttributionBody",
+ "HourlyUsageAttributionMetadata",
+ "HourlyUsageAttributionPagination",
+ "HourlyUsageAttributionResponse",
+ "HourlyUsageAttributionUsageType",
+ "IFrameWidgetDefinition",
+ "IFrameWidgetDefinitionType",
+ "IPPrefixesAPI",
+ "IPPrefixesAPM",
+ "IPPrefixesAgents",
+ "IPPrefixesGlobal",
+ "IPPrefixesLogs",
+ "IPPrefixesOrchestrator",
+ "IPPrefixesProcess",
+ "IPPrefixesRemoteConfiguration",
+ "IPPrefixesSynthetics",
+ "IPPrefixesSyntheticsPrivateLocations",
+ "IPPrefixesWebhooks",
+ "IPRanges",
+ "IdpFormData",
+ "IdpResponse",
+ "ImageWidgetDefinition",
+ "ImageWidgetDefinitionType",
+ "IntakePayloadAccepted",
+ "ListStreamColumn",
+ "ListStreamColumnWidth",
+ "ListStreamComputeAggregation",
+ "ListStreamComputeItems",
+ "ListStreamGroupByItems",
+ "ListStreamIssuePersona",
+ "ListStreamIssueState",
+ "ListStreamQuery",
+ "ListStreamQueryVersion",
+ "ListStreamResponseFormat",
+ "ListStreamSource",
+ "ListStreamWidgetDefinition",
+ "ListStreamWidgetDefinitionType",
+ "ListStreamWidgetRequest",
+ "Log",
+ "LogContent",
+ "LogQueryDefinition",
+ "LogQueryDefinitionGroupBy",
+ "LogQueryDefinitionGroupBySort",
+ "LogQueryDefinitionSearch",
+ "LogStreamWidgetDefinition",
+ "LogStreamWidgetDefinitionType",
+ "LogsAPIError",
+ "LogsAPIErrorResponse",
+ "LogsAPILimitReachedResponse",
+ "LogsArithmeticProcessor",
+ "LogsArithmeticProcessorType",
+ "LogsArrayMapArithmeticSubProcessor",
+ "LogsArrayMapAttributeRemapper",
+ "LogsArrayMapCategorySubProcessor",
+ "LogsArrayMapProcessor",
+ "LogsArrayMapProcessorType",
+ "LogsArrayMapStringBuilderSubProcessor",
+ "LogsArrayMapSubProcessor",
+ "LogsArrayProcessor",
+ "LogsArrayProcessorOperation",
+ "LogsArrayProcessorOperationAppend",
+ "LogsArrayProcessorOperationAppendType",
+ "LogsArrayProcessorOperationExtractKeyValue",
+ "LogsArrayProcessorOperationExtractKeyValueType",
+ "LogsArrayProcessorOperationLength",
+ "LogsArrayProcessorOperationLengthType",
+ "LogsArrayProcessorOperationSelect",
+ "LogsArrayProcessorOperationSelectType",
+ "LogsArrayProcessorType",
+ "LogsAttributeRemapper",
+ "LogsAttributeRemapperType",
+ "LogsByRetention",
+ "LogsByRetentionMonthlyUsage",
+ "LogsByRetentionOrgUsage",
+ "LogsByRetentionOrgs",
+ "LogsCategoryProcessor",
+ "LogsCategoryProcessorCategory",
+ "LogsCategoryProcessorType",
+ "LogsDailyLimitReset",
+ "LogsDateRemapper",
+ "LogsDateRemapperType",
+ "LogsDecoderProcessor",
+ "LogsDecoderProcessorBinaryToTextEncoding",
+ "LogsDecoderProcessorInputRepresentation",
+ "LogsDecoderProcessorType",
+ "LogsExcludeAttributeProcessor",
+ "LogsExcludeAttributeProcessorType",
+ "LogsExclusion",
+ "LogsExclusionFilter",
+ "LogsFilter",
+ "LogsGeoIPParser",
+ "LogsGeoIPParserType",
+ "LogsGrokParser",
+ "LogsGrokParserRules",
+ "LogsGrokParserType",
+ "LogsIndex",
+ "LogsIndexListResponse",
+ "LogsIndexUpdateRequest",
+ "LogsIndexesOrder",
+ "LogsListRequest",
+ "LogsListRequestTime",
+ "LogsListResponse",
+ "LogsLookupProcessor",
+ "LogsLookupProcessorType",
+ "LogsMessageRemapper",
+ "LogsMessageRemapperType",
+ "LogsPipeline",
+ "LogsPipelineList",
+ "LogsPipelineProcessor",
+ "LogsPipelineProcessorType",
+ "LogsPipelinesOrder",
+ "LogsProcessor",
+ "LogsQueryCompute",
+ "LogsRetentionAggSumUsage",
+ "LogsRetentionSumUsage",
+ "LogsSchemaCategoryMapper",
+ "LogsSchemaCategoryMapperCategory",
+ "LogsSchemaCategoryMapperFallback",
+ "LogsSchemaCategoryMapperTargets",
+ "LogsSchemaCategoryMapperType",
+ "LogsSchemaData",
+ "LogsSchemaMapper",
+ "LogsSchemaProcessor",
+ "LogsSchemaProcessorType",
+ "LogsSchemaRemapper",
+ "LogsSchemaRemapperType",
+ "LogsServiceRemapper",
+ "LogsServiceRemapperType",
+ "LogsSort",
+ "LogsSpanRemapper",
+ "LogsSpanRemapperType",
+ "LogsStatusRemapper",
+ "LogsStatusRemapperType",
+ "LogsStringBuilderProcessor",
+ "LogsStringBuilderProcessorType",
+ "LogsTraceRemapper",
+ "LogsTraceRemapperType",
+ "LogsURLParser",
+ "LogsURLParserType",
+ "LogsUserAgentParser",
+ "LogsUserAgentParserType",
+ "MatchingDowntime",
+ "MetricContentEncoding",
+ "MetricMetadata",
+ "MetricSearchResponse",
+ "MetricSearchResponseResults",
+ "MetricsListResponse",
+ "MetricsPayload",
+ "MetricsQueryMetadata",
+ "MetricsQueryResponse",
+ "MetricsQueryUnit",
+ "Monitor",
+ "MonitorAsset",
+ "MonitorAssetCategory",
+ "MonitorAssetResourceType",
+ "MonitorDeviceID",
+ "MonitorDraftStatus",
+ "MonitorFormulaAndFunctionAggregateAugmentQuery",
+ "MonitorFormulaAndFunctionAggregateAugmentedDataSource",
+ "MonitorFormulaAndFunctionAggregateAugmentedQueryDefinition",
+ "MonitorFormulaAndFunctionAggregateBaseQuery",
+ "MonitorFormulaAndFunctionAggregateFilterQuery",
+ "MonitorFormulaAndFunctionAggregateFilteredDataSource",
+ "MonitorFormulaAndFunctionAggregateFilteredQueryDefinition",
+ "MonitorFormulaAndFunctionAggregateQueryFilter",
+ "MonitorFormulaAndFunctionAggregateQueryJoinCondition",
+ "MonitorFormulaAndFunctionAggregateQueryJoinType",
+ "MonitorFormulaAndFunctionCostAggregator",
+ "MonitorFormulaAndFunctionCostDataSource",
+ "MonitorFormulaAndFunctionCostQueryDefinition",
+ "MonitorFormulaAndFunctionDataJobsQueryDefinition",
+ "MonitorFormulaAndFunctionDataQualityDataSource",
+ "MonitorFormulaAndFunctionDataQualityModelTypeOverride",
+ "MonitorFormulaAndFunctionDataQualityMonitorOptions",
+ "MonitorFormulaAndFunctionDataQualityQueryDefinition",
+ "MonitorFormulaAndFunctionEventAggregation",
+ "MonitorFormulaAndFunctionEventQueryDefinition",
+ "MonitorFormulaAndFunctionEventQueryDefinitionCompute",
+ "MonitorFormulaAndFunctionEventQueryDefinitionSearch",
+ "MonitorFormulaAndFunctionEventQueryGroupBy",
+ "MonitorFormulaAndFunctionEventQueryGroupBySort",
+ "MonitorFormulaAndFunctionEventsDataSource",
+ "MonitorFormulaAndFunctionMetricsAggregator",
+ "MonitorFormulaAndFunctionMetricsDataSource",
+ "MonitorFormulaAndFunctionMetricsQueryDefinition",
+ "MonitorFormulaAndFunctionQueryDefinition",
+ "MonitorFormulaAndFunctionReferenceTableColumn",
+ "MonitorFormulaAndFunctionReferenceTableDataSource",
+ "MonitorFormulaAndFunctionReferenceTableQueryDefinition",
+ "MonitorGroupSearchResponse",
+ "MonitorGroupSearchResponseCounts",
+ "MonitorGroupSearchResult",
+ "MonitorOptions",
+ "MonitorOptionsAggregation",
+ "MonitorOptionsCustomSchedule",
+ "MonitorOptionsCustomScheduleRecurrence",
+ "MonitorOptionsNotificationPresets",
+ "MonitorOptionsSchedulingOptions",
+ "MonitorOptionsSchedulingOptionsEvaluationWindow",
+ "MonitorOverallStates",
+ "MonitorRenotifyStatusType",
+ "MonitorSearchCount",
+ "MonitorSearchCountItem",
+ "MonitorSearchResponse",
+ "MonitorSearchResponseCounts",
+ "MonitorSearchResponseMetadata",
+ "MonitorSearchResult",
+ "MonitorSearchResultNotification",
+ "MonitorState",
+ "MonitorStateGroup",
+ "MonitorSummaryWidgetDefinition",
+ "MonitorSummaryWidgetDefinitionType",
+ "MonitorThresholdWindowOptions",
+ "MonitorThresholds",
+ "MonitorType",
+ "MonitorUpdateRequest",
+ "MonthlyUsageAttributionBody",
+ "MonthlyUsageAttributionMetadata",
+ "MonthlyUsageAttributionPagination",
+ "MonthlyUsageAttributionResponse",
+ "MonthlyUsageAttributionSupportedMetrics",
+ "MonthlyUsageAttributionValues",
+ "NoteWidgetDefinition",
+ "NoteWidgetDefinitionType",
+ "NotebookAbsoluteTime",
+ "NotebookAuthor",
+ "NotebookCellCreateRequest",
+ "NotebookCellCreateRequestAttributes",
+ "NotebookCellResourceType",
+ "NotebookCellResponse",
+ "NotebookCellResponseAttributes",
+ "NotebookCellTime",
+ "NotebookCellUpdateRequest",
+ "NotebookCellUpdateRequestAttributes",
+ "NotebookCreateData",
+ "NotebookCreateDataAttributes",
+ "NotebookCreateRequest",
+ "NotebookDistributionCellAttributes",
+ "NotebookGlobalTime",
+ "NotebookGraphSize",
+ "NotebookHeatMapCellAttributes",
+ "NotebookLogStreamCellAttributes",
+ "NotebookMarkdownCellAttributes",
+ "NotebookMarkdownCellDefinition",
+ "NotebookMarkdownCellDefinitionType",
+ "NotebookMetadata",
+ "NotebookMetadataType",
+ "NotebookRelativeTime",
+ "NotebookResourceType",
+ "NotebookResponse",
+ "NotebookResponseData",
+ "NotebookResponseDataAttributes",
+ "NotebookSplitBy",
+ "NotebookStatus",
+ "NotebookTemplateVariable",
+ "NotebookTemplateVariableAvailableValuesQuery",
+ "NotebookTemplateVariableAvailableValuesQueryGroupBy",
+ "NotebookTemplateVariableAvailableValuesQueryLogRumSpans",
+ "NotebookTemplateVariableAvailableValuesQueryMetrics",
+ "NotebookTemplateVariableAvailableValuesQuerySearch",
+ "NotebookTimeseriesCellAttributes",
+ "NotebookToplistCellAttributes",
+ "NotebookUpdateCell",
+ "NotebookUpdateData",
+ "NotebookUpdateDataAttributes",
+ "NotebookUpdateRequest",
+ "NotebooksResponse",
+ "NotebooksResponseData",
+ "NotebooksResponseDataAttributes",
+ "NotebooksResponseMeta",
+ "NotebooksResponsePage",
+ "NotifyEndState",
+ "NotifyEndType",
+ "NumberFormatUnit",
+ "NumberFormatUnitCanonical",
+ "NumberFormatUnitCustom",
+ "NumberFormatUnitCustomType",
+ "NumberFormatUnitScale",
+ "NumberFormatUnitScaleType",
+ "OnMissingDataOption",
+ "OrgDowngradedResponse",
+ "Organization",
+ "OrganizationBilling",
+ "OrganizationCreateBody",
+ "OrganizationCreateResponse",
+ "OrganizationListResponse",
+ "OrganizationResponse",
+ "OrganizationSettings",
+ "OrganizationSettingsSaml",
+ "OrganizationSettingsSamlAutocreateUsersDomains",
+ "OrganizationSettingsSamlIdpInitiatedLogin",
+ "OrganizationSettingsSamlStrictMode",
+ "OrganizationSubscription",
+ "PagerDutyService",
+ "PagerDutyServiceKey",
+ "PagerDutyServiceName",
+ "Pagination",
+ "Point",
+ "PointPlotDimension",
+ "PointPlotProjection",
+ "PointPlotProjectionDimension",
+ "PointPlotProjectionType",
+ "PointPlotWidgetDefinition",
+ "PointPlotWidgetDefinitionType",
+ "PointPlotWidgetLegend",
+ "PointPlotWidgetLegendType",
+ "PointPlotWidgetRequest",
+ "PowerpackTemplateVariableContents",
+ "PowerpackTemplateVariables",
+ "PowerpackWidgetDefinition",
+ "PowerpackWidgetDefinitionType",
+ "ProcessQueryDefinition",
+ "ProductAnalyticsAudienceAccountSubquery",
+ "ProductAnalyticsAudienceFilters",
+ "ProductAnalyticsAudienceOccurrenceFilter",
+ "ProductAnalyticsAudienceSegmentSubquery",
+ "ProductAnalyticsAudienceUserSubquery",
+ "ProductAnalyticsBaseQuery",
+ "ProductAnalyticsEventDataSource",
+ "ProductAnalyticsEventQuerySearch",
+ "ProductAnalyticsExtendedCompute",
+ "ProductAnalyticsExtendedGroupBy",
+ "ProductAnalyticsFunnelCompute",
+ "ProductAnalyticsFunnelComputeAggregation",
+ "ProductAnalyticsFunnelComputeMetric",
+ "ProductAnalyticsFunnelDataSource",
+ "ProductAnalyticsFunnelGroupBy",
+ "ProductAnalyticsFunnelGroupBySort",
+ "ProductAnalyticsFunnelQuery",
+ "ProductAnalyticsFunnelRequest",
+ "ProductAnalyticsFunnelRequestType",
+ "ProductAnalyticsFunnelWidgetDefinition",
+ "PublishedDatasetProvider",
+ "QuerySortOrder",
+ "QueryValueWidgetComparison",
+ "QueryValueWidgetComparisonDirectionality",
+ "QueryValueWidgetComparisonType",
+ "QueryValueWidgetDefinition",
+ "QueryValueWidgetDefinitionType",
+ "QueryValueWidgetRequest",
+ "ReferenceTableLogsLookupProcessor",
+ "ResourceProviderConfig",
+ "ResponseMetaAttributes",
+ "RetentionCohortCriteria",
+ "RetentionCohortCriteriaTimeInterval",
+ "RetentionCohortCriteriaTimeIntervalType",
+ "RetentionCompute",
+ "RetentionComputeMetric",
+ "RetentionCurveRequestType",
+ "RetentionCurveStyle",
+ "RetentionCurveWidgetDefinition",
+ "RetentionCurveWidgetDefinitionType",
+ "RetentionCurveWidgetRequest",
+ "RetentionDataSource",
+ "RetentionEntity",
+ "RetentionFilters",
+ "RetentionGridRequest",
+ "RetentionGridRequestType",
+ "RetentionGroupBy",
+ "RetentionGroupBySort",
+ "RetentionGroupByTarget",
+ "RetentionQuery",
+ "RetentionReturnCondition",
+ "RetentionReturnCriteria",
+ "RetentionReturnCriteriaTimeInterval",
+ "RetentionReturnCriteriaTimeIntervalType",
+ "RetentionReturnCriteriaTimeIntervalUnit",
+ "RetentionSearch",
+ "RunWorkflowWidgetDefinition",
+ "RunWorkflowWidgetDefinitionType",
+ "RunWorkflowWidgetInput",
+ "SLOBulkDelete",
+ "SLOBulkDeleteError",
+ "SLOBulkDeleteResponse",
+ "SLOBulkDeleteResponseData",
+ "SLOCorrection",
+ "SLOCorrectionCategory",
+ "SLOCorrectionCreateData",
+ "SLOCorrectionCreateRequest",
+ "SLOCorrectionCreateRequestAttributes",
+ "SLOCorrectionListResponse",
+ "SLOCorrectionResponse",
+ "SLOCorrectionResponseAttributes",
+ "SLOCorrectionResponseAttributesModifier",
+ "SLOCorrectionType",
+ "SLOCorrectionUpdateData",
+ "SLOCorrectionUpdateRequest",
+ "SLOCorrectionUpdateRequestAttributes",
+ "SLOCountDefinition",
+ "SLOCountDefinitionWithBadEventsFormula",
+ "SLOCountDefinitionWithTotalEventsFormula",
+ "SLOCountSpec",
+ "SLOCreator",
+ "SLODataSourceQueryDefinition",
+ "SLODeleteResponse",
+ "SLOErrorBudgetRemainingData",
+ "SLOErrorTimeframe",
+ "SLOFormula",
+ "SLOHistoryMetrics",
+ "SLOHistoryMetricsSeries",
+ "SLOHistoryMetricsSeriesMetadata",
+ "SLOHistoryMetricsSeriesMetadataUnit",
+ "SLOHistoryMonitor",
+ "SLOHistoryResponse",
+ "SLOHistoryResponseData",
+ "SLOHistoryResponseError",
+ "SLOHistoryResponseErrorWithType",
+ "SLOHistorySLIData",
+ "SLOListResponse",
+ "SLOListResponseMetadata",
+ "SLOListResponseMetadataPage",
+ "SLOListWidgetDefinition",
+ "SLOListWidgetDefinitionType",
+ "SLOListWidgetQuery",
+ "SLOListWidgetRequest",
+ "SLOListWidgetRequestType",
+ "SLOOverallStatuses",
+ "SLORawErrorBudgetRemaining",
+ "SLOResponse",
+ "SLOResponseData",
+ "SLOSliSpec",
+ "SLOState",
+ "SLOStatus",
+ "SLOThreshold",
+ "SLOTimeSliceComparator",
+ "SLOTimeSliceCondition",
+ "SLOTimeSliceInterval",
+ "SLOTimeSliceQuery",
+ "SLOTimeSliceSpec",
+ "SLOTimeframe",
+ "SLOType",
+ "SLOTypeNumeric",
+ "SLOWidgetDefinition",
+ "SLOWidgetDefinitionType",
+ "SankeyJoinKeys",
+ "SankeyNetworkDataSource",
+ "SankeyNetworkQuery",
+ "SankeyNetworkQueryCompute",
+ "SankeyNetworkQueryMode",
+ "SankeyNetworkQuerySort",
+ "SankeyNetworkRequest",
+ "SankeyNetworkRequestType",
+ "SankeyRumDataSource",
+ "SankeyRumQuery",
+ "SankeyRumQueryMode",
+ "SankeyRumRequest",
+ "SankeyWidgetDefinition",
+ "SankeyWidgetDefinitionType",
+ "SankeyWidgetRequest",
+ "ScatterPlotRequest",
+ "ScatterPlotWidgetDefinition",
+ "ScatterPlotWidgetDefinitionRequests",
+ "ScatterPlotWidgetDefinitionType",
+ "ScatterplotDimension",
+ "ScatterplotTableRequest",
+ "ScatterplotWidgetAggregator",
+ "ScatterplotWidgetFormula",
+ "SearchSLOQuery",
+ "SearchSLOResponse",
+ "SearchSLOResponseData",
+ "SearchSLOResponseDataAttributes",
+ "SearchSLOResponseDataAttributesFacets",
+ "SearchSLOResponseDataAttributesFacetsObjectInt",
+ "SearchSLOResponseDataAttributesFacetsObjectString",
+ "SearchSLOResponseLinks",
+ "SearchSLOResponseMeta",
+ "SearchSLOResponseMetaPage",
+ "SearchSLOThreshold",
+ "SearchSLOTimeframe",
+ "SearchServiceLevelObjective",
+ "SearchServiceLevelObjectiveAttributes",
+ "SearchServiceLevelObjectiveData",
+ "SelectableTemplateVariableItems",
+ "Series",
+ "ServiceCheck",
+ "ServiceCheckStatus",
+ "ServiceChecks",
+ "ServiceLevelObjective",
+ "ServiceLevelObjectiveQuery",
+ "ServiceLevelObjectiveRequest",
+ "ServiceMapWidgetDefinition",
+ "ServiceMapWidgetDefinitionType",
+ "ServiceSummaryWidgetDefinition",
+ "ServiceSummaryWidgetDefinitionType",
+ "SharedDashboard",
+ "SharedDashboardAuthor",
+ "SharedDashboardInviteesItems",
+ "SharedDashboardInvites",
+ "SharedDashboardInvitesData",
+ "SharedDashboardInvitesDataList",
+ "SharedDashboardInvitesDataObject",
+ "SharedDashboardInvitesDataObjectAttributes",
+ "SharedDashboardInvitesMeta",
+ "SharedDashboardInvitesMetaPage",
+ "SharedDashboardStatus",
+ "SharedDashboardUpdateRequest",
+ "SharedDashboardUpdateRequestGlobalTime",
+ "SignalArchiveReason",
+ "SignalAssigneeUpdateRequest",
+ "SignalStateUpdateRequest",
+ "SignalTriageState",
+ "SlackIntegrationChannel",
+ "SlackIntegrationChannelDisplay",
+ "SlackIntegrationChannels",
+ "SplitConfig",
+ "SplitConfigSortCompute",
+ "SplitDimension",
+ "SplitGraphSourceWidgetDefinition",
+ "SplitGraphVizSize",
+ "SplitGraphWidgetDefinition",
+ "SplitGraphWidgetDefinitionType",
+ "SplitSort",
+ "SplitVectorEntryItem",
+ "SuccessfulSignalUpdateResponse",
+ "SunburstWidgetDefinition",
+ "SunburstWidgetDefinitionType",
+ "SunburstWidgetLegend",
+ "SunburstWidgetLegendInlineAutomatic",
+ "SunburstWidgetLegendInlineAutomaticType",
+ "SunburstWidgetLegendTable",
+ "SunburstWidgetLegendTableType",
+ "SunburstWidgetRequest",
+ "SyntheticsAPIStep",
+ "SyntheticsAPISubtestStep",
+ "SyntheticsAPISubtestStepSubtype",
+ "SyntheticsAPITest",
+ "SyntheticsAPITestConfig",
+ "SyntheticsAPITestResultData",
+ "SyntheticsAPITestResultFull",
+ "SyntheticsAPITestResultFullCheck",
+ "SyntheticsAPITestResultShort",
+ "SyntheticsAPITestResultShortResult",
+ "SyntheticsAPITestStep",
+ "SyntheticsAPITestStepSubtype",
+ "SyntheticsAPITestType",
+ "SyntheticsAPIWaitStep",
+ "SyntheticsAPIWaitStepSubtype",
+ "SyntheticsApiTestFailureCode",
+ "SyntheticsApiTestResultFailure",
+ "SyntheticsAssertion",
+ "SyntheticsAssertionBodyHashOperator",
+ "SyntheticsAssertionBodyHashTarget",
+ "SyntheticsAssertionBodyHashType",
+ "SyntheticsAssertionJSONPathOperator",
+ "SyntheticsAssertionJSONPathTarget",
+ "SyntheticsAssertionJSONPathTargetTarget",
+ "SyntheticsAssertionJSONSchemaMetaSchema",
+ "SyntheticsAssertionJSONSchemaOperator",
+ "SyntheticsAssertionJSONSchemaTarget",
+ "SyntheticsAssertionJSONSchemaTargetTarget",
+ "SyntheticsAssertionJavascript",
+ "SyntheticsAssertionJavascriptType",
+ "SyntheticsAssertionMCPRespectsSpecification",
+ "SyntheticsAssertionMCPRespectsSpecificationType",
+ "SyntheticsAssertionMCPServerCapabilitiesTarget",
+ "SyntheticsAssertionMCPServerCapabilitiesType",
+ "SyntheticsAssertionOperator",
+ "SyntheticsAssertionTarget",
+ "SyntheticsAssertionTargetValue",
+ "SyntheticsAssertionTimingsScope",
+ "SyntheticsAssertionType",
+ "SyntheticsAssertionXPathOperator",
+ "SyntheticsAssertionXPathTarget",
+ "SyntheticsAssertionXPathTargetTarget",
+ "SyntheticsBasicAuth",
+ "SyntheticsBasicAuthDigest",
+ "SyntheticsBasicAuthDigestType",
+ "SyntheticsBasicAuthJWT",
+ "SyntheticsBasicAuthJWTAddClaims",
+ "SyntheticsBasicAuthJWTAlgorithm",
+ "SyntheticsBasicAuthJWTType",
+ "SyntheticsBasicAuthNTLM",
+ "SyntheticsBasicAuthNTLMType",
+ "SyntheticsBasicAuthOauthClient",
+ "SyntheticsBasicAuthOauthClientType",
+ "SyntheticsBasicAuthOauthROP",
+ "SyntheticsBasicAuthOauthROPType",
+ "SyntheticsBasicAuthOauthTokenApiAuthentication",
+ "SyntheticsBasicAuthSigv4",
+ "SyntheticsBasicAuthSigv4Type",
+ "SyntheticsBasicAuthWeb",
+ "SyntheticsBasicAuthWebType",
+ "SyntheticsBatchDetails",
+ "SyntheticsBatchDetailsData",
+ "SyntheticsBatchResult",
+ "SyntheticsBatchStatus",
+ "SyntheticsBrowserError",
+ "SyntheticsBrowserErrorType",
+ "SyntheticsBrowserTest",
+ "SyntheticsBrowserTestConfig",
+ "SyntheticsBrowserTestFailureCode",
+ "SyntheticsBrowserTestResultData",
+ "SyntheticsBrowserTestResultFailure",
+ "SyntheticsBrowserTestResultFull",
+ "SyntheticsBrowserTestResultFullCheck",
+ "SyntheticsBrowserTestResultShort",
+ "SyntheticsBrowserTestResultShortResult",
+ "SyntheticsBrowserTestRumSettings",
+ "SyntheticsBrowserTestType",
+ "SyntheticsBrowserVariable",
+ "SyntheticsBrowserVariableType",
+ "SyntheticsCIBatchMetadata",
+ "SyntheticsCIBatchMetadataCI",
+ "SyntheticsCIBatchMetadataGit",
+ "SyntheticsCIBatchMetadataPipeline",
+ "SyntheticsCIBatchMetadataProvider",
+ "SyntheticsCITest",
+ "SyntheticsCITestBody",
+ "SyntheticsCheckType",
+ "SyntheticsConfigVariable",
+ "SyntheticsConfigVariableType",
+ "SyntheticsCoreWebVitals",
+ "SyntheticsDeleteTestsPayload",
+ "SyntheticsDeleteTestsResponse",
+ "SyntheticsDeletedTest",
+ "SyntheticsDevice",
+ "SyntheticsFetchUptimesPayload",
+ "SyntheticsGetAPITestLatestResultsResponse",
+ "SyntheticsGetBrowserTestLatestResultsResponse",
+ "SyntheticsGlobalVariable",
+ "SyntheticsGlobalVariableAttributes",
+ "SyntheticsGlobalVariableOptions",
+ "SyntheticsGlobalVariableParseTestOptions",
+ "SyntheticsGlobalVariableParseTestOptionsType",
+ "SyntheticsGlobalVariableParserType",
+ "SyntheticsGlobalVariableRequest",
+ "SyntheticsGlobalVariableTOTPParameters",
+ "SyntheticsGlobalVariableValue",
+ "SyntheticsListGlobalVariablesResponse",
+ "SyntheticsListTestsResponse",
+ "SyntheticsLocalVariableParsingOptionsType",
+ "SyntheticsLocation",
+ "SyntheticsLocations",
+ "SyntheticsMCPProtocolVersion",
+ "SyntheticsMCPServerCapability",
+ "SyntheticsMobileStep",
+ "SyntheticsMobileStepParams",
+ "SyntheticsMobileStepParamsDirection",
+ "SyntheticsMobileStepParamsElement",
+ "SyntheticsMobileStepParamsElementContextType",
+ "SyntheticsMobileStepParamsElementRelativePosition",
+ "SyntheticsMobileStepParamsElementUserLocator",
+ "SyntheticsMobileStepParamsElementUserLocatorValuesItems",
+ "SyntheticsMobileStepParamsElementUserLocatorValuesItemsType",
+ "SyntheticsMobileStepParamsPositionsItems",
+ "SyntheticsMobileStepParamsValue",
+ "SyntheticsMobileStepParamsVariable",
+ "SyntheticsMobileStepType",
+ "SyntheticsMobileTest",
+ "SyntheticsMobileTestConfig",
+ "SyntheticsMobileTestInitialApplicationArguments",
+ "SyntheticsMobileTestOptions",
+ "SyntheticsMobileTestType",
+ "SyntheticsMobileTestsMobileApplication",
+ "SyntheticsMobileTestsMobileApplicationReferenceType",
+ "SyntheticsParsingOptions",
+ "SyntheticsPatchTestBody",
+ "SyntheticsPatchTestOperation",
+ "SyntheticsPatchTestOperationName",
+ "SyntheticsPlayingTab",
+ "SyntheticsPrivateLocation",
+ "SyntheticsPrivateLocationCreationResponse",
+ "SyntheticsPrivateLocationCreationResponseResultEncryption",
+ "SyntheticsPrivateLocationMetadata",
+ "SyntheticsPrivateLocationSecrets",
+ "SyntheticsPrivateLocationSecretsAuthentication",
+ "SyntheticsPrivateLocationSecretsConfigDecryption",
+ "SyntheticsRestrictedRoles",
+ "SyntheticsSSLCertificate",
+ "SyntheticsSSLCertificateIssuer",
+ "SyntheticsSSLCertificateSubject",
+ "SyntheticsStep",
+ "SyntheticsStepDetail",
+ "SyntheticsStepDetailWarning",
+ "SyntheticsStepType",
+ "SyntheticsTestCallType",
+ "SyntheticsTestCiOptions",
+ "SyntheticsTestConfig",
+ "SyntheticsTestDetails",
+ "SyntheticsTestDetailsSubType",
+ "SyntheticsTestDetailsType",
+ "SyntheticsTestDetailsWithoutSteps",
+ "SyntheticsTestExecutionRule",
+ "SyntheticsTestHeaders",
+ "SyntheticsTestMetadata",
+ "SyntheticsTestMonitorStatus",
+ "SyntheticsTestOptions",
+ "SyntheticsTestOptionsHTTPVersion",
+ "SyntheticsTestOptionsMonitorOptions",
+ "SyntheticsTestOptionsMonitorOptionsNotificationPresetName",
+ "SyntheticsTestOptionsRetry",
+ "SyntheticsTestOptionsScheduling",
+ "SyntheticsTestOptionsSchedulingTimeframe",
+ "SyntheticsTestPauseStatus",
+ "SyntheticsTestProcessStatus",
+ "SyntheticsTestRequest",
+ "SyntheticsTestRequestBodyFile",
+ "SyntheticsTestRequestBodyType",
+ "SyntheticsTestRequestCertificate",
+ "SyntheticsTestRequestCertificateItem",
+ "SyntheticsTestRequestDNSServerPort",
+ "SyntheticsTestRequestPort",
+ "SyntheticsTestRequestProxy",
+ "SyntheticsTestRestrictionPolicyBinding",
+ "SyntheticsTestRestrictionPolicyBindingRelation",
+ "SyntheticsTestUptime",
+ "SyntheticsTiming",
+ "SyntheticsTriggerBody",
+ "SyntheticsTriggerCITestLocation",
+ "SyntheticsTriggerCITestRunResult",
+ "SyntheticsTriggerCITestsResponse",
+ "SyntheticsTriggerTest",
+ "SyntheticsUpdateTestPauseStatusPayload",
+ "SyntheticsUptime",
+ "SyntheticsVariableParser",
+ "SyntheticsWarningType",
+ "TableWidgetCellDisplayMode",
+ "TableWidgetDefinition",
+ "TableWidgetDefinitionType",
+ "TableWidgetHasSearchBar",
+ "TableWidgetRequest",
+ "TableWidgetTextFormatMatch",
+ "TableWidgetTextFormatMatchType",
+ "TableWidgetTextFormatPalette",
+ "TableWidgetTextFormatReplace",
+ "TableWidgetTextFormatReplaceAll",
+ "TableWidgetTextFormatReplaceAllType",
+ "TableWidgetTextFormatReplaceSubstring",
+ "TableWidgetTextFormatReplaceSubstringType",
+ "TableWidgetTextFormatRule",
+ "TagToHosts",
+ "TargetFormatType",
+ "TimeseriesBackground",
+ "TimeseriesBackgroundType",
+ "TimeseriesRequestStyle",
+ "TimeseriesWidgetDefinition",
+ "TimeseriesWidgetDefinitionType",
+ "TimeseriesWidgetExpressionAlias",
+ "TimeseriesWidgetLegendColumn",
+ "TimeseriesWidgetLegendLayout",
+ "TimeseriesWidgetRequest",
+ "ToplistWidgetDefinition",
+ "ToplistWidgetDefinitionType",
+ "ToplistWidgetDisplay",
+ "ToplistWidgetFlat",
+ "ToplistWidgetFlatType",
+ "ToplistWidgetLegend",
+ "ToplistWidgetRequest",
+ "ToplistWidgetScaling",
+ "ToplistWidgetStacked",
+ "ToplistWidgetStackedType",
+ "ToplistWidgetStyle",
+ "TopologyMapWidgetDefinition",
+ "TopologyMapWidgetDefinitionDataStreams",
+ "TopologyMapWidgetDefinitionServiceMap",
+ "TopologyMapWidgetDefinitionType",
+ "TopologyQueryDataStreams",
+ "TopologyQueryDataStreamsDataSource",
+ "TopologyQueryServiceMap",
+ "TopologyQueryServiceMapDataSource",
+ "TopologyRequestDataStreams",
+ "TopologyRequestServiceMap",
+ "TopologyRequestType",
+ "TreeMapColorBy",
+ "TreeMapGroupBy",
+ "TreeMapSizeBy",
+ "TreeMapWidgetDefinition",
+ "TreeMapWidgetDefinitionType",
+ "TreeMapWidgetRequest",
+ "UsageAnalyzedLogsHour",
+ "UsageAnalyzedLogsResponse",
+ "UsageAttributionAggregates",
+ "UsageAttributionAggregatesBody",
+ "UsageAttributionTagNames",
+ "UsageAuditLogsHour",
+ "UsageAuditLogsResponse",
+ "UsageBillableSummaryBody",
+ "UsageBillableSummaryHour",
+ "UsageBillableSummaryKeys",
+ "UsageBillableSummaryResponse",
+ "UsageCIVisibilityHour",
+ "UsageCIVisibilityResponse",
+ "UsageCWSHour",
+ "UsageCWSResponse",
+ "UsageCloudSecurityPostureManagementHour",
+ "UsageCloudSecurityPostureManagementResponse",
+ "UsageCustomReportsAttributes",
+ "UsageCustomReportsData",
+ "UsageCustomReportsMeta",
+ "UsageCustomReportsPage",
+ "UsageCustomReportsResponse",
+ "UsageDBMHour",
+ "UsageDBMResponse",
+ "UsageFargateHour",
+ "UsageFargateResponse",
+ "UsageHostHour",
+ "UsageHostsResponse",
+ "UsageIncidentManagementHour",
+ "UsageIncidentManagementResponse",
+ "UsageIndexedSpansHour",
+ "UsageIndexedSpansResponse",
+ "UsageIngestedSpansHour",
+ "UsageIngestedSpansResponse",
+ "UsageIoTHour",
+ "UsageIoTResponse",
+ "UsageLambdaHour",
+ "UsageLambdaResponse",
+ "UsageLogsByIndexHour",
+ "UsageLogsByIndexResponse",
+ "UsageLogsByRetentionHour",
+ "UsageLogsByRetentionResponse",
+ "UsageLogsHour",
+ "UsageLogsResponse",
+ "UsageMetricCategory",
+ "UsageNetworkFlowsHour",
+ "UsageNetworkFlowsResponse",
+ "UsageNetworkHostsHour",
+ "UsageNetworkHostsResponse",
+ "UsageOnlineArchiveHour",
+ "UsageOnlineArchiveResponse",
+ "UsageProfilingHour",
+ "UsageProfilingResponse",
+ "UsageReportsType",
+ "UsageRumSessionsHour",
+ "UsageRumSessionsResponse",
+ "UsageRumUnitsHour",
+ "UsageRumUnitsResponse",
+ "UsageSDSHour",
+ "UsageSDSResponse",
+ "UsageSNMPHour",
+ "UsageSNMPResponse",
+ "UsageSort",
+ "UsageSortDirection",
+ "UsageSpecifiedCustomReportsAttributes",
+ "UsageSpecifiedCustomReportsData",
+ "UsageSpecifiedCustomReportsMeta",
+ "UsageSpecifiedCustomReportsPage",
+ "UsageSpecifiedCustomReportsResponse",
+ "UsageSummaryDate",
+ "UsageSummaryDateOrg",
+ "UsageSummaryResponse",
+ "UsageSyntheticsAPIHour",
+ "UsageSyntheticsAPIResponse",
+ "UsageSyntheticsBrowserHour",
+ "UsageSyntheticsBrowserResponse",
+ "UsageSyntheticsHour",
+ "UsageSyntheticsResponse",
+ "UsageTimeseriesHour",
+ "UsageTimeseriesResponse",
+ "UsageTopAvgMetricsHour",
+ "UsageTopAvgMetricsMetadata",
+ "UsageTopAvgMetricsPagination",
+ "UsageTopAvgMetricsResponse",
+ "User",
+ "UserDisableResponse",
+ "UserJourneyFormulaCompute",
+ "UserJourneyFormulaComputeMetric",
+ "UserJourneyFormulaGroupBy",
+ "UserJourneyJoinKeys",
+ "UserJourneySearch",
+ "UserJourneySearchFilters",
+ "UserJourneySearchGraphFilter",
+ "UserJourneySearchTarget",
+ "UserListResponse",
+ "UserResponse",
+ "ViewingPreferences",
+ "ViewingPreferencesTheme",
+ "WebhooksIntegration",
+ "WebhooksIntegrationCustomVariable",
+ "WebhooksIntegrationCustomVariableResponse",
+ "WebhooksIntegrationCustomVariableUpdateRequest",
+ "WebhooksIntegrationEncoding",
+ "WebhooksIntegrationUpdateRequest",
+ "Widget",
+ "WidgetAggregator",
+ "WidgetAxis",
+ "WidgetChangeType",
+ "WidgetColorPreference",
+ "WidgetComparator",
+ "WidgetCompareTo",
+ "WidgetConditionalFormat",
+ "WidgetCustomLink",
+ "WidgetDefinition",
+ "WidgetDisplayType",
+ "WidgetEvent",
+ "WidgetEventSize",
+ "WidgetFieldSort",
+ "WidgetFormula",
+ "WidgetFormulaCellDisplayModeOptions",
+ "WidgetFormulaCellDisplayModeOptionsTrendType",
+ "WidgetFormulaCellDisplayModeOptionsYScale",
+ "WidgetFormulaLimit",
+ "WidgetFormulaSort",
+ "WidgetFormulaStyle",
+ "WidgetGroupSort",
+ "WidgetGrouping",
+ "WidgetHistogramRequestType",
+ "WidgetHorizontalAlign",
+ "WidgetImageSizing",
+ "WidgetLayout",
+ "WidgetLayoutType",
+ "WidgetLegacyLiveSpan",
+ "WidgetLineType",
+ "WidgetLineWidth",
+ "WidgetLiveSpan",
+ "WidgetLiveSpanUnit",
+ "WidgetMargin",
+ "WidgetMarker",
+ "WidgetMessageDisplay",
+ "WidgetMonitorSummaryDisplayFormat",
+ "WidgetMonitorSummarySort",
+ "WidgetNewFixedSpan",
+ "WidgetNewFixedSpanType",
+ "WidgetNewLiveSpan",
+ "WidgetNewLiveSpanType",
+ "WidgetNodeType",
+ "WidgetNumberFormat",
+ "WidgetOrderBy",
+ "WidgetPalette",
+ "WidgetRequestStyle",
+ "WidgetServiceSummaryDisplayFormat",
+ "WidgetSizeFormat",
+ "WidgetSort",
+ "WidgetSortBy",
+ "WidgetSortOrderBy",
+ "WidgetStyle",
+ "WidgetStyleOrderBy",
+ "WidgetSummaryType",
+ "WidgetTextAlign",
+ "WidgetTickEdge",
+ "WidgetTime",
+ "WidgetTimeWindows",
+ "WidgetVerticalAlign",
+ "WidgetViewMode",
+ "WidgetVizType",
+ "WildcardWidgetDefinition",
+ "WildcardWidgetDefinitionType",
+ "WildcardWidgetRequest",
+ "WildcardWidgetSpecification",
+ "WildcardWidgetSpecificationType",
+]
\ No newline at end of file
diff --git a/datadog_api_client/v2/__init__.py b/datadog_api_client/v2/__init__.py
new file mode 100644
index 0000000000..0d508b1a42
--- /dev/null
+++ b/datadog_api_client/v2/__init__.py
@@ -0,0 +1,13 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+
+from datadog_api_client.api_client import ApiClient, AsyncApiClient
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.exceptions import (
+ OpenApiException, ApiAttributeError, ApiTypeError, ApiValueError, ApiKeyError, ApiException)
+
+
+__all__ = ["ApiClient", "AsyncApiClient", "Configuration", "OpenApiException",
+ "ApiAttributeError", "ApiTypeError", "ApiValueError", "ApiKeyError",
+ "ApiException"]
\ No newline at end of file
diff --git a/datadog_api_client/v2/api/__init__.py b/datadog_api_client/v2/api/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/datadog_api_client/v2/api/action_connection_api.py b/datadog_api_client/v2/api/action_connection_api.py
new file mode 100644
index 0000000000..b77bab0349
--- /dev/null
+++ b/datadog_api_client/v2/api/action_connection_api.py
@@ -0,0 +1,362 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_app_key_registrations_response import ListAppKeyRegistrationsResponse
+from datadog_api_client.v2.model.get_app_key_registration_response import GetAppKeyRegistrationResponse
+from datadog_api_client.v2.model.register_app_key_response import RegisterAppKeyResponse
+from datadog_api_client.v2.model.create_action_connection_response import CreateActionConnectionResponse
+from datadog_api_client.v2.model.create_action_connection_request import CreateActionConnectionRequest
+from datadog_api_client.v2.model.get_action_connection_response import GetActionConnectionResponse
+from datadog_api_client.v2.model.update_action_connection_response import UpdateActionConnectionResponse
+from datadog_api_client.v2.model.update_action_connection_request import UpdateActionConnectionRequest
+
+
+class ActionConnectionApi:
+ """
+ Action connections extend your installed integrations and allow you to take action in your third-party systems
+ (e.g. AWS, GitLab, and Statuspage) with Datadog’s Workflow Automation and App Builder products.
+
+ Datadog’s Integrations automatically provide authentication for Slack, Microsoft Teams, PagerDuty, Opsgenie,
+ JIRA, GitHub, and Statuspage. You do not need additional connections in order to access these tools within
+ Workflow Automation and App Builder.
+
+ We offer granular access control for editing and resolving connections.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_action_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateActionConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/connections",
+ "operation_id": "create_action_connection",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateActionConnectionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_action_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/connections/{connection_id}",
+ "operation_id": "delete_action_connection",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "connection_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "connection_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_action_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetActionConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/connections/{connection_id}",
+ "operation_id": "get_action_connection",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "connection_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "connection_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_app_key_registration_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetAppKeyRegistrationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/app_key_registrations/{app_key_id}",
+ "operation_id": "get_app_key_registration",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_app_key_registrations_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListAppKeyRegistrationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/app_key_registrations",
+ "operation_id": "list_app_key_registrations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._register_app_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (RegisterAppKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/app_key_registrations/{app_key_id}",
+ "operation_id": "register_app_key",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._unregister_app_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/app_key_registrations/{app_key_id}",
+ "operation_id": "unregister_app_key",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_action_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateActionConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions/connections/{connection_id}",
+ "operation_id": "update_action_connection",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "connection_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "connection_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateActionConnectionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_action_connection(self, body: CreateActionConnectionRequest, ) -> CreateActionConnectionResponse:
+ """Create a new Action Connection.
+
+ Create a new Action Connection. This API requires a `registered application key `_.
+
+ :type body: CreateActionConnectionRequest
+ :rtype: CreateActionConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_action_connection_endpoint.call_with_http_info(**kwargs)
+
+ def delete_action_connection(self, connection_id: str, ) -> None:
+ """Delete an existing Action Connection.
+
+ Delete an existing Action Connection. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param connection_id: The ID of the action connection
+ :type connection_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["connection_id"] = connection_id
+
+ return self._delete_action_connection_endpoint.call_with_http_info(**kwargs)
+
+ def get_action_connection(self, connection_id: str, ) -> GetActionConnectionResponse:
+ """Get an existing Action Connection.
+
+ Get an existing Action Connection. This API requires a `registered application key `_.
+
+ :param connection_id: The ID of the action connection
+ :type connection_id: str
+ :rtype: GetActionConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["connection_id"] = connection_id
+
+ return self._get_action_connection_endpoint.call_with_http_info(**kwargs)
+
+ def get_app_key_registration(self, app_key_id: str, ) -> GetAppKeyRegistrationResponse:
+ """Get an existing App Key Registration.
+
+ Get an existing App Key Registration
+
+ :param app_key_id: The ID of the app key
+ :type app_key_id: str
+ :rtype: GetAppKeyRegistrationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ return self._get_app_key_registration_endpoint.call_with_http_info(**kwargs)
+
+ def list_app_key_registrations(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> ListAppKeyRegistrationsResponse:
+ """List App Key Registrations.
+
+ List App Key Registrations
+
+ :param page_size: The number of App Key Registrations to return per page.
+ :type page_size: int, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :rtype: ListAppKeyRegistrationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_app_key_registrations_endpoint.call_with_http_info(**kwargs)
+
+ def register_app_key(self, app_key_id: str, ) -> RegisterAppKeyResponse:
+ """Register a new App Key.
+
+ Register a new App Key
+
+ :param app_key_id: The ID of the app key
+ :type app_key_id: str
+ :rtype: RegisterAppKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ return self._register_app_key_endpoint.call_with_http_info(**kwargs)
+
+ def unregister_app_key(self, app_key_id: str, ) -> None:
+ """Unregister an App Key.
+
+ Unregister an App Key
+
+ :param app_key_id: The ID of the app key
+ :type app_key_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ return self._unregister_app_key_endpoint.call_with_http_info(**kwargs)
+
+ def update_action_connection(self, connection_id: str, body: UpdateActionConnectionRequest, ) -> UpdateActionConnectionResponse:
+ """Update an existing Action Connection.
+
+ Update an existing Action Connection. This API requires a `registered application key `_.
+
+ :param connection_id: The ID of the action connection
+ :type connection_id: str
+ :param body: Update an existing Action Connection request body
+ :type body: UpdateActionConnectionRequest
+ :rtype: UpdateActionConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["connection_id"] = connection_id
+
+ kwargs["body"] = body
+
+ return self._update_action_connection_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/actions_datastores_api.py b/datadog_api_client/v2/api/actions_datastores_api.py
new file mode 100644
index 0000000000..b9bd0b1826
--- /dev/null
+++ b/datadog_api_client/v2/api/actions_datastores_api.py
@@ -0,0 +1,508 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.datastore_array import DatastoreArray
+from datadog_api_client.v2.model.create_apps_datastore_response import CreateAppsDatastoreResponse
+from datadog_api_client.v2.model.create_apps_datastore_request import CreateAppsDatastoreRequest
+from datadog_api_client.v2.model.datastore import Datastore
+from datadog_api_client.v2.model.update_apps_datastore_request import UpdateAppsDatastoreRequest
+from datadog_api_client.v2.model.delete_apps_datastore_item_response import DeleteAppsDatastoreItemResponse
+from datadog_api_client.v2.model.delete_apps_datastore_item_request import DeleteAppsDatastoreItemRequest
+from datadog_api_client.v2.model.item_api_payload_array import ItemApiPayloadArray
+from datadog_api_client.v2.model.item_api_payload import ItemApiPayload
+from datadog_api_client.v2.model.update_apps_datastore_item_request import UpdateAppsDatastoreItemRequest
+from datadog_api_client.v2.model.delete_apps_datastore_item_response_array import DeleteAppsDatastoreItemResponseArray
+from datadog_api_client.v2.model.bulk_delete_apps_datastore_items_request import BulkDeleteAppsDatastoreItemsRequest
+from datadog_api_client.v2.model.put_apps_datastore_item_response_array import PutAppsDatastoreItemResponseArray
+from datadog_api_client.v2.model.bulk_put_apps_datastore_items_request import BulkPutAppsDatastoreItemsRequest
+
+
+class ActionsDatastoresApi:
+ """
+ Leverage the Actions Datastore API to create, modify, and delete
+ items in datastores owned by your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._bulk_delete_datastore_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteAppsDatastoreItemResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}/items/bulk",
+ "operation_id": "bulk_delete_datastore_items",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (BulkDeleteAppsDatastoreItemsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_write_datastore_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (PutAppsDatastoreItemResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}/items/bulk",
+ "operation_id": "bulk_write_datastore_items",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (BulkPutAppsDatastoreItemsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_datastore_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateAppsDatastoreResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores",
+ "operation_id": "create_datastore",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateAppsDatastoreRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_datastore_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}",
+ "operation_id": "delete_datastore",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_datastore_item_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteAppsDatastoreItemResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}/items",
+ "operation_id": "delete_datastore_item",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DeleteAppsDatastoreItemRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_datastore_endpoint = _Endpoint(
+ settings={
+ "response_type": (Datastore,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}",
+ "operation_id": "get_datastore",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_datastore_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (ItemApiPayloadArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}/items",
+ "operation_id": "list_datastore_items",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "item_key": {
+ "validation": {
+ "max_length": 256,
+ },
+ "openapi_types": (str,),
+ "attribute": "item_key",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_datastores_endpoint = _Endpoint(
+ settings={
+ "response_type": (DatastoreArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores",
+ "operation_id": "list_datastores",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_datastore_endpoint = _Endpoint(
+ settings={
+ "response_type": (Datastore,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}",
+ "operation_id": "update_datastore",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppsDatastoreRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_datastore_item_endpoint = _Endpoint(
+ settings={
+ "response_type": (ItemApiPayload,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/actions-datastores/{datastore_id}/items",
+ "operation_id": "update_datastore_item",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "datastore_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "datastore_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppsDatastoreItemRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def bulk_delete_datastore_items(self, datastore_id: str, body: BulkDeleteAppsDatastoreItemsRequest, ) -> DeleteAppsDatastoreItemResponseArray:
+ """Bulk delete datastore items.
+
+ Deletes multiple items from a datastore by their keys in a single operation.
+
+ :param datastore_id: The ID of the datastore.
+ :type datastore_id: str
+ :type body: BulkDeleteAppsDatastoreItemsRequest
+ :rtype: DeleteAppsDatastoreItemResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ kwargs["body"] = body
+
+ return self._bulk_delete_datastore_items_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_write_datastore_items(self, datastore_id: str, body: BulkPutAppsDatastoreItemsRequest, ) -> PutAppsDatastoreItemResponseArray:
+ """Bulk write datastore items.
+
+ Creates or replaces multiple items in a datastore by their keys in a single operation.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :type body: BulkPutAppsDatastoreItemsRequest
+ :rtype: PutAppsDatastoreItemResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ kwargs["body"] = body
+
+ return self._bulk_write_datastore_items_endpoint.call_with_http_info(**kwargs)
+
+ def create_datastore(self, body: CreateAppsDatastoreRequest, ) -> CreateAppsDatastoreResponse:
+ """Create datastore.
+
+ Creates a new datastore.
+
+ :type body: CreateAppsDatastoreRequest
+ :rtype: CreateAppsDatastoreResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_datastore_endpoint.call_with_http_info(**kwargs)
+
+ def delete_datastore(self, datastore_id: str, ) -> None:
+ """Delete datastore.
+
+ Deletes a datastore by its unique identifier.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ return self._delete_datastore_endpoint.call_with_http_info(**kwargs)
+
+ def delete_datastore_item(self, datastore_id: str, body: DeleteAppsDatastoreItemRequest, ) -> DeleteAppsDatastoreItemResponse:
+ """Delete datastore item.
+
+ Deletes an item from a datastore by its key.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :type body: DeleteAppsDatastoreItemRequest
+ :rtype: DeleteAppsDatastoreItemResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ kwargs["body"] = body
+
+ return self._delete_datastore_item_endpoint.call_with_http_info(**kwargs)
+
+ def get_datastore(self, datastore_id: str, ) -> Datastore:
+ """Get datastore.
+
+ Retrieves a specific datastore by its ID.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :rtype: Datastore
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ return self._get_datastore_endpoint.call_with_http_info(**kwargs)
+
+ def list_datastore_items(self, datastore_id: str, *, filter: Union[str, UnsetType]=unset, item_key: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> ItemApiPayloadArray:
+ """List datastore items.
+
+ Lists items from a datastore. You can filter the results by specifying either an item key or a filter query parameter, but not both at the same time. Supports server-side pagination for large datasets.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :param filter: Optional query filter to search items using the `logs search syntax `_.
+ :type filter: str, optional
+ :param item_key: Optional primary key value to retrieve a specific item. Cannot be used together with the filter parameter.
+ :type item_key: str, optional
+ :param page_limit: Optional field to limit the number of items to return per page for pagination. Up to 100 items can be returned per page.
+ :type page_limit: int, optional
+ :param page_offset: Optional field to offset the number of items to skip from the beginning of the result set for pagination.
+ :type page_offset: int, optional
+ :param sort: Optional field to sort results by. Prefix with '-' for descending order (e.g., '-created_at').
+ :type sort: str, optional
+ :rtype: ItemApiPayloadArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if item_key is not unset:
+ kwargs["item_key"] = item_key
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_datastore_items_endpoint.call_with_http_info(**kwargs)
+
+ def list_datastores(self, ) -> DatastoreArray:
+ """List datastores.
+
+ Lists all datastores for the organization.
+
+ :rtype: DatastoreArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_datastores_endpoint.call_with_http_info(**kwargs)
+
+ def update_datastore(self, datastore_id: str, body: UpdateAppsDatastoreRequest, ) -> Datastore:
+ """Update datastore.
+
+ Updates an existing datastore's attributes.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :type body: UpdateAppsDatastoreRequest
+ :rtype: Datastore
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ kwargs["body"] = body
+
+ return self._update_datastore_endpoint.call_with_http_info(**kwargs)
+
+ def update_datastore_item(self, datastore_id: str, body: UpdateAppsDatastoreItemRequest, ) -> ItemApiPayload:
+ """Update datastore item.
+
+ Partially updates an item in a datastore by its key.
+
+ :param datastore_id: The unique identifier of the datastore to retrieve.
+ :type datastore_id: str
+ :type body: UpdateAppsDatastoreItemRequest
+ :rtype: ItemApiPayload
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["datastore_id"] = datastore_id
+
+ kwargs["body"] = body
+
+ return self._update_datastore_item_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/agentless_scanning_api.py b/datadog_api_client/v2/api/agentless_scanning_api.py
new file mode 100644
index 0000000000..454932645a
--- /dev/null
+++ b/datadog_api_client/v2/api/agentless_scanning_api.py
@@ -0,0 +1,703 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.aws_scan_options_list_response import AwsScanOptionsListResponse
+from datadog_api_client.v2.model.aws_scan_options_response import AwsScanOptionsResponse
+from datadog_api_client.v2.model.aws_scan_options_create_request import AwsScanOptionsCreateRequest
+from datadog_api_client.v2.model.aws_scan_options_update_request import AwsScanOptionsUpdateRequest
+from datadog_api_client.v2.model.azure_scan_options_array import AzureScanOptionsArray
+from datadog_api_client.v2.model.azure_scan_options import AzureScanOptions
+from datadog_api_client.v2.model.azure_scan_options_input_update import AzureScanOptionsInputUpdate
+from datadog_api_client.v2.model.gcp_scan_options_array import GcpScanOptionsArray
+from datadog_api_client.v2.model.gcp_scan_options import GcpScanOptions
+from datadog_api_client.v2.model.gcp_scan_options_input_update import GcpScanOptionsInputUpdate
+from datadog_api_client.v2.model.aws_on_demand_list_response import AwsOnDemandListResponse
+from datadog_api_client.v2.model.aws_on_demand_response import AwsOnDemandResponse
+from datadog_api_client.v2.model.aws_on_demand_create_request import AwsOnDemandCreateRequest
+
+
+class AgentlessScanningApi:
+ """
+ Datadog Agentless Scanning provides visibility into risks and vulnerabilities
+ within your hosts, running containers, and serverless functions—all without
+ requiring teams to install Agents on every host or where Agents cannot be installed.
+ Agentless offers also Sensitive Data Scanning capabilities on your storage.
+ Go to https://www.datadoghq.com/blog/agentless-scanning/ to learn more.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_aws_on_demand_task_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsOnDemandResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/ondemand/aws",
+ "operation_id": "create_aws_on_demand_task",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AwsOnDemandCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_aws_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsScanOptionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/aws",
+ "operation_id": "create_aws_scan_options",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AwsScanOptionsCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_azure_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureScanOptions,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/azure",
+ "operation_id": "create_azure_scan_options",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AzureScanOptions,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_gcp_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (GcpScanOptions,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/gcp",
+ "operation_id": "create_gcp_scan_options",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GcpScanOptions,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/aws/{account_id}",
+ "operation_id": "delete_aws_scan_options",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_azure_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/azure/{subscription_id}",
+ "operation_id": "delete_azure_scan_options",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "subscription_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "subscription_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_gcp_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/gcp/{project_id}",
+ "operation_id": "delete_gcp_scan_options",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_on_demand_task_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsOnDemandResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/ondemand/aws/{task_id}",
+ "operation_id": "get_aws_on_demand_task",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "task_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "task_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsScanOptionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/aws/{account_id}",
+ "operation_id": "get_aws_scan_options",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_azure_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureScanOptions,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/azure/{subscription_id}",
+ "operation_id": "get_azure_scan_options",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "subscription_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "subscription_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_gcp_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (GcpScanOptions,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/gcp/{project_id}",
+ "operation_id": "get_gcp_scan_options",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_on_demand_tasks_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsOnDemandListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/ondemand/aws",
+ "operation_id": "list_aws_on_demand_tasks",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsScanOptionsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/aws",
+ "operation_id": "list_aws_scan_options",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_azure_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureScanOptionsArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/azure",
+ "operation_id": "list_azure_scan_options",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_gcp_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (GcpScanOptionsArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/gcp",
+ "operation_id": "list_gcp_scan_options",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_aws_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/aws/{account_id}",
+ "operation_id": "update_aws_scan_options",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AwsScanOptionsUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_azure_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureScanOptions,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/azure/{subscription_id}",
+ "operation_id": "update_azure_scan_options",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "subscription_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "subscription_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AzureScanOptionsInputUpdate,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_gcp_scan_options_endpoint = _Endpoint(
+ settings={
+ "response_type": (GcpScanOptions,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/agentless_scanning/accounts/gcp/{project_id}",
+ "operation_id": "update_gcp_scan_options",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GcpScanOptionsInputUpdate,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_aws_on_demand_task(self, body: AwsOnDemandCreateRequest, ) -> AwsOnDemandResponse:
+ """Create AWS on demand task.
+
+ Trigger the scan of an AWS resource with a high priority. Agentless scanning must be activated for the AWS account containing the resource to scan.
+
+ :param body: The definition of the on demand task.
+ :type body: AwsOnDemandCreateRequest
+ :rtype: AwsOnDemandResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_aws_on_demand_task_endpoint.call_with_http_info(**kwargs)
+
+ def create_aws_scan_options(self, body: AwsScanOptionsCreateRequest, ) -> AwsScanOptionsResponse:
+ """Create AWS scan options.
+
+ Activate Agentless scan options for an AWS account.
+
+ :param body: The definition of the new scan options.
+ :type body: AwsScanOptionsCreateRequest
+ :rtype: AwsScanOptionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_aws_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def create_azure_scan_options(self, body: AzureScanOptions, ) -> AzureScanOptions:
+ """Create Azure scan options.
+
+ Activate Agentless scan options for an Azure subscription.
+
+ :type body: AzureScanOptions
+ :rtype: AzureScanOptions
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_azure_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def create_gcp_scan_options(self, body: GcpScanOptions, ) -> GcpScanOptions:
+ """Create GCP scan options.
+
+ Activate Agentless scan options for a GCP project.
+
+ :param body: The definition of the new scan options.
+ :type body: GcpScanOptions
+ :rtype: GcpScanOptions
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_gcp_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_scan_options(self, account_id: str, ) -> None:
+ """Delete AWS scan options.
+
+ Delete Agentless scan options for an AWS account.
+
+ :param account_id: The ID of an AWS account.
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_aws_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def delete_azure_scan_options(self, subscription_id: str, ) -> None:
+ """Delete Azure scan options.
+
+ Delete Agentless scan options for an Azure subscription.
+
+ :param subscription_id: The Azure subscription ID.
+ :type subscription_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["subscription_id"] = subscription_id
+
+ return self._delete_azure_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def delete_gcp_scan_options(self, project_id: str, ) -> None:
+ """Delete GCP scan options.
+
+ Delete Agentless scan options for a GCP project.
+
+ :param project_id: The GCP project ID.
+ :type project_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._delete_gcp_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_on_demand_task(self, task_id: str, ) -> AwsOnDemandResponse:
+ """Get AWS on demand task.
+
+ Fetch the data of a specific on demand task.
+
+ :param task_id: The UUID of the task.
+ :type task_id: str
+ :rtype: AwsOnDemandResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["task_id"] = task_id
+
+ return self._get_aws_on_demand_task_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_scan_options(self, account_id: str, ) -> AwsScanOptionsResponse:
+ """Get AWS scan options.
+
+ Fetches the Agentless scan options for an activated account.
+
+ :param account_id: The ID of an AWS account.
+ :type account_id: str
+ :rtype: AwsScanOptionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._get_aws_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def get_azure_scan_options(self, subscription_id: str, ) -> AzureScanOptions:
+ """Get Azure scan options.
+
+ Fetches the Agentless scan options for an activated subscription.
+
+ :param subscription_id: The Azure subscription ID.
+ :type subscription_id: str
+ :rtype: AzureScanOptions
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["subscription_id"] = subscription_id
+
+ return self._get_azure_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def get_gcp_scan_options(self, project_id: str, ) -> GcpScanOptions:
+ """Get GCP scan options.
+
+ Fetches the Agentless scan options for an activated GCP project.
+
+ :param project_id: The GCP project ID.
+ :type project_id: str
+ :rtype: GcpScanOptions
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._get_gcp_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_on_demand_tasks(self, ) -> AwsOnDemandListResponse:
+ """List AWS on demand tasks.
+
+ Fetches the most recent 1000 AWS on demand tasks.
+
+ :rtype: AwsOnDemandListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_aws_on_demand_tasks_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_scan_options(self, ) -> AwsScanOptionsListResponse:
+ """List AWS scan options.
+
+ Fetches the scan options configured for AWS accounts.
+
+ :rtype: AwsScanOptionsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_aws_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def list_azure_scan_options(self, ) -> AzureScanOptionsArray:
+ """List Azure scan options.
+
+ Fetches the scan options configured for Azure accounts.
+
+ :rtype: AzureScanOptionsArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_azure_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def list_gcp_scan_options(self, ) -> GcpScanOptionsArray:
+ """List GCP scan options.
+
+ Fetches the scan options configured for all GCP projects.
+
+ :rtype: GcpScanOptionsArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_gcp_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def update_aws_scan_options(self, account_id: str, body: AwsScanOptionsUpdateRequest, ) -> None:
+ """Update AWS scan options.
+
+ Update the Agentless scan options for an activated account.
+
+ :param account_id: The ID of an AWS account.
+ :type account_id: str
+ :param body: New definition of the scan options.
+ :type body: AwsScanOptionsUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_aws_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def update_azure_scan_options(self, subscription_id: str, body: AzureScanOptionsInputUpdate, ) -> AzureScanOptions:
+ """Update Azure scan options.
+
+ Update the Agentless scan options for an activated subscription.
+
+ :param subscription_id: The Azure subscription ID.
+ :type subscription_id: str
+ :type body: AzureScanOptionsInputUpdate
+ :rtype: AzureScanOptions
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["subscription_id"] = subscription_id
+
+ kwargs["body"] = body
+
+ return self._update_azure_scan_options_endpoint.call_with_http_info(**kwargs)
+
+ def update_gcp_scan_options(self, project_id: str, body: GcpScanOptionsInputUpdate, ) -> GcpScanOptions:
+ """Update GCP scan options.
+
+ Update the Agentless scan options for an activated GCP project.
+
+ :param project_id: The GCP project ID.
+ :type project_id: str
+ :param body: New definition of the scan options.
+ :type body: GcpScanOptionsInputUpdate
+ :rtype: GcpScanOptions
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._update_gcp_scan_options_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/annotations_api.py b/datadog_api_client/v2/api/annotations_api.py
new file mode 100644
index 0000000000..19c1b8ce97
--- /dev/null
+++ b/datadog_api_client/v2/api/annotations_api.py
@@ -0,0 +1,291 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.annotations_response import AnnotationsResponse
+from datadog_api_client.v2.model.annotation_response import AnnotationResponse
+from datadog_api_client.v2.model.annotation_create_request import AnnotationCreateRequest
+from datadog_api_client.v2.model.page_annotations_response import PageAnnotationsResponse
+from datadog_api_client.v2.model.annotation_update_request import AnnotationUpdateRequest
+
+
+class AnnotationsApi:
+ """
+ Add annotations to dashboards and notebooks to mark events such as deployments, incidents, or other notable moments in time.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_annotation_endpoint = _Endpoint(
+ settings={
+ "response_type": (AnnotationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/annotation",
+ "operation_id": "create_annotation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AnnotationCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_annotation_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/annotation/{annotation_id}",
+ "operation_id": "delete_annotation",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "annotation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "annotation_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_page_annotations_endpoint = _Endpoint(
+ settings={
+ "response_type": (PageAnnotationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/annotation/page/{page_id}",
+ "operation_id": "get_page_annotations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "start_time": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start_time",
+ "location": "query",
+ },
+ "end_time": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end_time",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_annotations_endpoint = _Endpoint(
+ settings={
+ "response_type": (AnnotationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/annotation",
+ "operation_id": "list_annotations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "page_id",
+ "location": "query",
+ },
+ "start_time": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start_time",
+ "location": "query",
+ },
+ "end_time": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end_time",
+ "location": "query",
+ },
+ "widget_id": {
+ "openapi_types": (str,),
+ "attribute": "widget_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_annotation_endpoint = _Endpoint(
+ settings={
+ "response_type": (AnnotationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/annotation/{annotation_id}",
+ "operation_id": "update_annotation",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "annotation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "annotation_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AnnotationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_annotation(self, body: AnnotationCreateRequest, ) -> AnnotationResponse:
+ """Create an annotation.
+
+ Creates a new annotation on a dashboard or notebook page.
+ Valid ``color`` values: ``gray`` , ``blue`` , ``purple`` , ``green`` , ``yellow`` , ``red``.
+ Valid ``type`` values: ``pointInTime`` (marks a single moment) or ``timeRegion`` (spans a range and requires ``end_time`` ).
+
+ :param body: Annotation to create.
+ :type body: AnnotationCreateRequest
+ :rtype: AnnotationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_annotation_endpoint.call_with_http_info(**kwargs)
+
+ def delete_annotation(self, annotation_id: UUID, ) -> None:
+ """Delete an annotation.
+
+ Deletes an existing annotation by ID.
+ Returns ``204 No Content`` if the annotation does not exist (idempotent).
+
+ :param annotation_id: The ID of the annotation.
+ :type annotation_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["annotation_id"] = annotation_id
+
+ return self._delete_annotation_endpoint.call_with_http_info(**kwargs)
+
+ def get_page_annotations(self, page_id: str, start_time: int, end_time: int, ) -> PageAnnotationsResponse:
+ """Get annotations for a page.
+
+ Returns all annotations on a specific page for a given time window, grouped by widget.
+ Unlike ``ListAnnotations`` , this endpoint returns a single structured object with annotations
+ indexed by their ID and a widget-to-annotation mapping for easy UI rendering.
+
+ :param page_id: The ID of the page, prefixed with the page type and joined by a colon
+ (for example, ``dashboard:abc-def-xyz`` or ``notebook:1234567890`` ).
+ :type page_id: str
+ :param start_time: Start of the time window in milliseconds since the Unix epoch.
+ :type start_time: int
+ :param end_time: End of the time window in milliseconds since the Unix epoch.
+ :type end_time: int
+ :rtype: PageAnnotationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["start_time"] = start_time
+
+ kwargs["end_time"] = end_time
+
+ return self._get_page_annotations_endpoint.call_with_http_info(**kwargs)
+
+ def list_annotations(self, page_id: str, start_time: int, end_time: int, *, widget_id: Union[str, UnsetType]=unset, ) -> AnnotationsResponse:
+ """List annotations.
+
+ Returns a flat list of annotations matching the given page, time window, and optional widget filter.
+
+ :param page_id: ID of the page to list annotations for, prefixed with the page type and joined by a colon
+ (for example, ``dashboard:abc-def-xyz`` or ``notebook:1234567890`` ).
+ :type page_id: str
+ :param start_time: Start of the time window in milliseconds since the Unix epoch.
+ :type start_time: int
+ :param end_time: End of the time window in milliseconds since the Unix epoch.
+ :type end_time: int
+ :param widget_id: Optional widget ID to restrict results to annotations on a specific widget.
+ :type widget_id: str, optional
+ :rtype: AnnotationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["start_time"] = start_time
+
+ kwargs["end_time"] = end_time
+
+ if widget_id is not unset:
+ kwargs["widget_id"] = widget_id
+
+ return self._list_annotations_endpoint.call_with_http_info(**kwargs)
+
+ def update_annotation(self, annotation_id: UUID, body: AnnotationUpdateRequest, ) -> AnnotationResponse:
+ """Update an annotation.
+
+ Updates an existing annotation.
+ Valid ``color`` values: ``gray`` , ``blue`` , ``purple`` , ``green`` , ``yellow`` , ``red``.
+ Valid ``type`` values: ``pointInTime`` (marks a single moment) or ``timeRegion`` (spans a range and requires ``end_time`` ).
+
+ :param annotation_id: The ID of the annotation.
+ :type annotation_id: UUID
+ :param body: Updated annotation payload.
+ :type body: AnnotationUpdateRequest
+ :rtype: AnnotationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["annotation_id"] = annotation_id
+
+ kwargs["body"] = body
+
+ return self._update_annotation_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/api_management_api.py b/datadog_api_client/v2/api/api_management_api.py
new file mode 100644
index 0000000000..ff7668a723
--- /dev/null
+++ b/datadog_api_client/v2/api/api_management_api.py
@@ -0,0 +1,268 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_apis_response import ListAPIsResponse
+from datadog_api_client.v2.model.update_open_api_response import UpdateOpenAPIResponse
+from datadog_api_client.v2.model.open_api_file import OpenAPIFile
+from datadog_api_client.v2.model.create_open_api_response import CreateOpenAPIResponse
+
+
+class APIManagementApi:
+ """
+ Configure your API endpoints through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_open_api_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateOpenAPIResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/apicatalog/openapi",
+ "operation_id": "create_open_api",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "openapi_spec_file": {
+ "openapi_types": (file_type,),
+ "attribute": "openapi_spec_file",
+ "location": "form",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["multipart/form-data"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_open_api_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/apicatalog/api/{id}",
+ "operation_id": "delete_open_api",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_open_api_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/apicatalog/api/{id}/openapi",
+ "operation_id": "get_open_api",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["multipart/form-data", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_apis_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListAPIsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/apicatalog/api",
+ "operation_id": "list_apis",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_open_api_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateOpenAPIResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/apicatalog/api/{id}/openapi",
+ "operation_id": "update_open_api",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "openapi_spec_file": {
+ "openapi_types": (file_type,),
+ "attribute": "openapi_spec_file",
+ "location": "form",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["multipart/form-data"]
+ },
+ api_client=api_client,
+ )
+
+ def create_open_api(self, *, openapi_spec_file: Union[file_type, UnsetType]=unset, ) -> CreateOpenAPIResponse:
+ """Create a new API. **Deprecated**.
+
+ Create a new API from the `OpenAPI `_ specification given.
+ See the `API Catalog documentation `_ for additional
+ information about the possible metadata.
+ It returns the created API ID.
+
+ :param openapi_spec_file: Binary ``OpenAPI`` spec file
+ :type openapi_spec_file: file_type, optional
+ :rtype: CreateOpenAPIResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if openapi_spec_file is not unset:
+ kwargs["openapi_spec_file"] = openapi_spec_file
+
+ warnings.warn("create_open_api is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_open_api_endpoint.call_with_http_info(**kwargs)
+
+ def delete_open_api(self, id: UUID, ) -> None:
+ """Delete an API. **Deprecated**.
+
+ Delete a specific API by ID.
+
+ :param id: ID of the API to delete
+ :type id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ warnings.warn("delete_open_api is deprecated", DeprecationWarning, stacklevel=2)
+ return self._delete_open_api_endpoint.call_with_http_info(**kwargs)
+
+ def get_open_api(self, id: UUID, ) -> file_type:
+ """Get an API. **Deprecated**.
+
+ Retrieve information about a specific API in `OpenAPI `_ format file.
+
+ :param id: ID of the API to retrieve
+ :type id: UUID
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ warnings.warn("get_open_api is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_open_api_endpoint.call_with_http_info(**kwargs)
+
+ def list_apis(self, *, query: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> ListAPIsResponse:
+ """List APIs. **Deprecated**.
+
+ List APIs and their IDs.
+
+ :param query: Filter APIs by name
+ :type query: str, optional
+ :param page_limit: Number of items per page.
+ :type page_limit: int, optional
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :rtype: ListAPIsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ warnings.warn("list_apis is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_apis_endpoint.call_with_http_info(**kwargs)
+
+ def update_open_api(self, id: UUID, *, openapi_spec_file: Union[file_type, UnsetType]=unset, ) -> UpdateOpenAPIResponse:
+ """Update an API. **Deprecated**.
+
+ Update information about a specific API. The given content will replace all API content of the given ID.
+ The ID is returned by the create API, or can be found in the URL in the API catalog UI.
+
+ :param id: ID of the API to modify
+ :type id: UUID
+ :param openapi_spec_file: Binary ``OpenAPI`` spec file
+ :type openapi_spec_file: file_type, optional
+ :rtype: UpdateOpenAPIResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if openapi_spec_file is not unset:
+ kwargs["openapi_spec_file"] = openapi_spec_file
+
+ warnings.warn("update_open_api is deprecated", DeprecationWarning, stacklevel=2)
+ return self._update_open_api_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/apm_api.py b/datadog_api_client/v2/api/apm_api.py
new file mode 100644
index 0000000000..bf5c88d51d
--- /dev/null
+++ b/datadog_api_client/v2/api/apm_api.py
@@ -0,0 +1,68 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.service_list import ServiceList
+
+
+class APMApi:
+ """
+ Observe, troubleshoot, and improve cloud-scale applications with all telemetry in context
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_service_list_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceList,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/apm/services",
+ "operation_id": "get_service_list",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_env": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[env]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_service_list(self, filter_env: str, ) -> ServiceList:
+ """Get service list.
+
+ :param filter_env: Filter services by environment. Can be set to ``*`` to return all services across all environments.
+ :type filter_env: str
+ :rtype: ServiceList
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_env"] = filter_env
+
+ return self._get_service_list_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/apm_retention_filters_api.py b/datadog_api_client/v2/api/apm_retention_filters_api.py
new file mode 100644
index 0000000000..8df20ce9ad
--- /dev/null
+++ b/datadog_api_client/v2/api/apm_retention_filters_api.py
@@ -0,0 +1,267 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.retention_filters_response import RetentionFiltersResponse
+from datadog_api_client.v2.model.retention_filter_create_response import RetentionFilterCreateResponse
+from datadog_api_client.v2.model.retention_filter_create_request import RetentionFilterCreateRequest
+from datadog_api_client.v2.model.reorder_retention_filters_request import ReorderRetentionFiltersRequest
+from datadog_api_client.v2.model.retention_filter_response import RetentionFilterResponse
+from datadog_api_client.v2.model.retention_filter_update_request import RetentionFilterUpdateRequest
+
+
+class APMRetentionFiltersApi:
+ """
+ Manage configuration of `APM retention filters `_ for your organization. You need an API and application key with Admin rights to interact with this endpoint. See `retention filters `_ on the Trace Retention page for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_apm_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RetentionFilterCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/retention-filters",
+ "operation_id": "create_apm_retention_filter",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RetentionFilterCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_apm_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/retention-filters/{filter_id}",
+ "operation_id": "delete_apm_retention_filter",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_apm_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/retention-filters/{filter_id}",
+ "operation_id": "get_apm_retention_filter",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_apm_retention_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (RetentionFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/retention-filters",
+ "operation_id": "list_apm_retention_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_apm_retention_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/retention-filters-execution-order",
+ "operation_id": "reorder_apm_retention_filters",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ReorderRetentionFiltersRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_apm_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/retention-filters/{filter_id}",
+ "operation_id": "update_apm_retention_filter",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RetentionFilterUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_apm_retention_filter(self, body: RetentionFilterCreateRequest, ) -> RetentionFilterCreateResponse:
+ """Create a retention filter.
+
+ Create a retention filter to index spans in your organization.
+ Returns the retention filter definition when the request is successful.
+
+ Default filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be created.
+
+ :param body: The definition of the new retention filter.
+ :type body: RetentionFilterCreateRequest
+ :rtype: RetentionFilterCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_apm_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def delete_apm_retention_filter(self, filter_id: str, ) -> None:
+ """Delete a retention filter.
+
+ Delete a specific retention filter from your organization.
+
+ Default filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be deleted.
+
+ :param filter_id: The ID of the retention filter.
+ :type filter_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_id"] = filter_id
+
+ return self._delete_apm_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def get_apm_retention_filter(self, filter_id: str, ) -> RetentionFilterResponse:
+ """Get a given APM retention filter.
+
+ Get an APM retention filter.
+
+ :param filter_id: The ID of the retention filter.
+ :type filter_id: str
+ :rtype: RetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_id"] = filter_id
+
+ return self._get_apm_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def list_apm_retention_filters(self, ) -> RetentionFiltersResponse:
+ """List all APM retention filters.
+
+ Get the list of APM retention filters.
+
+ :rtype: RetentionFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_apm_retention_filters_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_apm_retention_filters(self, body: ReorderRetentionFiltersRequest, ) -> None:
+ """Re-order retention filters.
+
+ Re-order the execution order of retention filters.
+
+ :param body: The list of retention filters in the new order.
+ :type body: ReorderRetentionFiltersRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_apm_retention_filters_endpoint.call_with_http_info(**kwargs)
+
+ def update_apm_retention_filter(self, filter_id: str, body: RetentionFilterUpdateRequest, ) -> RetentionFilterResponse:
+ """Update a retention filter.
+
+ Update a retention filter from your organization.
+
+ Default filters (filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor) cannot be renamed or removed.
+
+ :param filter_id: The ID of the retention filter.
+ :type filter_id: str
+ :param body: The updated definition of the retention filter.
+ :type body: RetentionFilterUpdateRequest
+ :rtype: RetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_id"] = filter_id
+
+ kwargs["body"] = body
+
+ return self._update_apm_retention_filter_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/apm_trace_api.py b/datadog_api_client/v2/api/apm_trace_api.py
new file mode 100644
index 0000000000..a614d913d1
--- /dev/null
+++ b/datadog_api_client/v2/api/apm_trace_api.py
@@ -0,0 +1,209 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.pruned_trace_response import PrunedTraceResponse
+from datadog_api_client.v2.model.trace_response import TraceResponse
+
+
+class APMTraceApi:
+ """
+ Retrieve full or pruned APM traces by trace ID.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_pruned_trace_by_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (PrunedTraceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/pruned_trace/{trace_id}",
+ "operation_id": "get_pruned_trace_by_id",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "trace_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "trace_id",
+ "location": "path",
+ },
+ "expand_span_id": {
+ "openapi_types": (int,),
+ "attribute": "expand_span_id",
+ "location": "query",
+ },
+ "time_hint": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "time_hint",
+ "location": "query",
+ },
+ "force_source": {
+ "openapi_types": (str,),
+ "attribute": "force_source",
+ "location": "query",
+ },
+ "include_path": {
+ "openapi_types": ([str],),
+ "attribute": "include_path",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "tag_include": {
+ "openapi_types": ([str],),
+ "attribute": "tag_include",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "tag_exclude": {
+ "openapi_types": ([str],),
+ "attribute": "tag_exclude",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "only_service_entry_spans": {
+ "openapi_types": (bool,),
+ "attribute": "only_service_entry_spans",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_trace_by_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (TraceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/trace/{trace_id}",
+ "operation_id": "get_trace_by_id",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "trace_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "trace_id",
+ "location": "path",
+ },
+ "include_fields": {
+ "openapi_types": ([str],),
+ "attribute": "include_fields",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_pruned_trace_by_id(self, trace_id: str, *, expand_span_id: Union[int, UnsetType]=unset, time_hint: Union[int, UnsetType]=unset, force_source: Union[str, UnsetType]=unset, include_path: Union[List[str], UnsetType]=unset, tag_include: Union[List[str], UnsetType]=unset, tag_exclude: Union[List[str], UnsetType]=unset, only_service_entry_spans: Union[bool, UnsetType]=unset, ) -> PrunedTraceResponse:
+ """Get a pruned trace by ID.
+
+ Retrieve a pruned, hierarchical view of an APM trace by its trace ID.
+ The trace is summarized as a tree of spans rooted at the trace root and reduced in size
+ to keep rendering large traces in the UI practical.
+ This endpoint is rate limited to ``60`` requests per minute per organization.
+
+ :param trace_id: The trace ID. Accepts either a 32-character hexadecimal string (128-bit trace ID)
+ or a decimal string of up to 39 digits.
+ :type trace_id: str
+ :param expand_span_id: Span ID to expand and preserve in the pruned tree even when its branch would
+ normally be summarized.
+ :type expand_span_id: int, optional
+ :param time_hint: Optional Unix time hint, in seconds, used to optimize the lookup of the trace
+ in long-term storage.
+ :type time_hint: int, optional
+ :param force_source: Force the trace to be loaded from a specific source. When unset, the API picks
+ the source automatically.
+ :type force_source: str, optional
+ :param include_path: Restrict the pruned tree to spans matching the given ``key:value`` pairs.
+ Values may be passed as repeated query parameters.
+ :type include_path: [str], optional
+ :param tag_include: Regex patterns of tag keys whose values must be included in the pruned spans.
+ Values may be passed as repeated query parameters.
+ :type tag_include: [str], optional
+ :param tag_exclude: Regex patterns of tag keys whose values must be excluded from the pruned spans.
+ Values may be passed as repeated query parameters.
+ :type tag_exclude: [str], optional
+ :param only_service_entry_spans: When set to ``true`` , only service entry spans are included in the pruned tree.
+ :type only_service_entry_spans: bool, optional
+ :rtype: PrunedTraceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["trace_id"] = trace_id
+
+ if expand_span_id is not unset:
+ kwargs["expand_span_id"] = expand_span_id
+
+ if time_hint is not unset:
+ kwargs["time_hint"] = time_hint
+
+ if force_source is not unset:
+ kwargs["force_source"] = force_source
+
+ if include_path is not unset:
+ kwargs["include_path"] = include_path
+
+ if tag_include is not unset:
+ kwargs["tag_include"] = tag_include
+
+ if tag_exclude is not unset:
+ kwargs["tag_exclude"] = tag_exclude
+
+ if only_service_entry_spans is not unset:
+ kwargs["only_service_entry_spans"] = only_service_entry_spans
+
+ return self._get_pruned_trace_by_id_endpoint.call_with_http_info(**kwargs)
+
+ def get_trace_by_id(self, trace_id: str, *, include_fields: Union[List[str], UnsetType]=unset, ) -> TraceResponse:
+ """Get a trace by ID.
+
+ Retrieve a full APM trace by its trace ID, including every span in the trace.
+ Traces are returned from live storage when available and fall back to longer-term storage.
+ This endpoint is rate limited to ``60`` requests per minute per organization.
+
+ :param trace_id: The trace ID. Accepts either a 32-character hexadecimal string (128-bit trace ID)
+ or a decimal string of up to 39 digits.
+ :type trace_id: str
+ :param include_fields: List of span fields to include in the response. When omitted, every available field is returned.
+ Values may be passed as repeated query parameters or as a single comma-separated value.
+ :type include_fields: [str], optional
+ :rtype: TraceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["trace_id"] = trace_id
+
+ if include_fields is not unset:
+ kwargs["include_fields"] = include_fields
+
+ return self._get_trace_by_id_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/app_builder_api.py b/datadog_api_client/v2/api/app_builder_api.py
new file mode 100644
index 0000000000..9c2496030f
--- /dev/null
+++ b/datadog_api_client/v2/api/app_builder_api.py
@@ -0,0 +1,1044 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.delete_apps_response import DeleteAppsResponse
+from datadog_api_client.v2.model.delete_apps_request import DeleteAppsRequest
+from datadog_api_client.v2.model.list_apps_response import ListAppsResponse
+from datadog_api_client.v2.model.apps_sort_field import AppsSortField
+from datadog_api_client.v2.model.create_app_response import CreateAppResponse
+from datadog_api_client.v2.model.create_app_request import CreateAppRequest
+from datadog_api_client.v2.model.delete_app_response import DeleteAppResponse
+from datadog_api_client.v2.model.get_app_response import GetAppResponse
+from datadog_api_client.v2.model.update_app_response import UpdateAppResponse
+from datadog_api_client.v2.model.update_app_request import UpdateAppRequest
+from datadog_api_client.v2.model.unpublish_app_response import UnpublishAppResponse
+from datadog_api_client.v2.model.publish_app_response import PublishAppResponse
+from datadog_api_client.v2.model.update_app_favorite_request import UpdateAppFavoriteRequest
+from datadog_api_client.v2.model.update_app_protection_level_request import UpdateAppProtectionLevelRequest
+from datadog_api_client.v2.model.create_publish_request_request import CreatePublishRequestRequest
+from datadog_api_client.v2.model.update_app_self_service_request import UpdateAppSelfServiceRequest
+from datadog_api_client.v2.model.update_app_tags_request import UpdateAppTagsRequest
+from datadog_api_client.v2.model.update_app_version_name_request import UpdateAppVersionNameRequest
+from datadog_api_client.v2.model.list_app_versions_response import ListAppVersionsResponse
+from datadog_api_client.v2.model.get_blueprint_response import GetBlueprintResponse
+from datadog_api_client.v2.model.list_blueprints_response import ListBlueprintsResponse
+from datadog_api_client.v2.model.get_blueprints_response import GetBlueprintsResponse
+from datadog_api_client.v2.model.app_builder_list_tags_response import AppBuilderListTagsResponse
+
+
+class AppBuilderApi:
+ """
+ Datadog App Builder provides a low-code solution to rapidly develop and integrate secure, customized applications into your monitoring stack that are built to accelerate remediation at scale. These API endpoints allow you to create, read, update, delete, and publish apps.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps",
+ "operation_id": "create_app",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateAppRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_publish_request_endpoint = _Endpoint(
+ settings={
+ "response_type": (PublishAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/publish-request",
+ "operation_id": "create_publish_request",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreatePublishRequestRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}",
+ "operation_id": "delete_app",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_apps_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteAppsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps",
+ "operation_id": "delete_apps",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DeleteAppsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}",
+ "operation_id": "get_app",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "version": {
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_blueprint_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetBlueprintResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/blueprint/{blueprint_id}",
+ "operation_id": "get_blueprint",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "blueprint_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "blueprint_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_blueprints_by_integration_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetBlueprintsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/blueprints/integration-id/{integration_id}",
+ "operation_id": "get_blueprints_by_integration_id",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "integration_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_blueprints_by_slugs_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetBlueprintsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/blueprints/slugs/{slugs}",
+ "operation_id": "get_blueprints_by_slugs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "slugs": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slugs",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_apps_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListAppsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps",
+ "operation_id": "list_apps",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "page": {
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "filter_user_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[user_name]",
+ "location": "query",
+ },
+ "filter_user_uuid": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[user_uuid]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_deployed": {
+ "openapi_types": (bool,),
+ "attribute": "filter[deployed]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "filter_favorite": {
+ "openapi_types": (bool,),
+ "attribute": "filter[favorite]",
+ "location": "query",
+ },
+ "filter_self_service": {
+ "openapi_types": (bool,),
+ "attribute": "filter[self_service]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": ([AppsSortField],),
+ "attribute": "sort",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_app_versions_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListAppVersionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/versions",
+ "operation_id": "list_app_versions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "page": {
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_blueprints_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListBlueprintsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/blueprints",
+ "operation_id": "list_blueprints",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "page": {
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (AppBuilderListTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/tags",
+ "operation_id": "list_tags",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._publish_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (PublishAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/deployment",
+ "operation_id": "publish_app",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._revert_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/revert",
+ "operation_id": "revert_app",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._unpublish_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (UnpublishAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/deployment",
+ "operation_id": "unpublish_app",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_app_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}",
+ "operation_id": "update_app",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_app_favorite_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/favorite",
+ "operation_id": "update_app_favorite",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppFavoriteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_app_self_service_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/self-service",
+ "operation_id": "update_app_self_service",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppSelfServiceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_app_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/tags",
+ "operation_id": "update_app_tags",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppTagsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_app_version_name_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/version-name",
+ "operation_id": "update_app_version_name",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppVersionNameRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_protection_level_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateAppResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/app-builder/apps/{app_id}/protection-level",
+ "operation_id": "update_protection_level",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateAppProtectionLevelRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_app(self, body: CreateAppRequest, ) -> CreateAppResponse:
+ """Create App.
+
+ Create a new app, returning the app ID. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :type body: CreateAppRequest
+ :rtype: CreateAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_app_endpoint.call_with_http_info(**kwargs)
+
+ def create_publish_request(self, app_id: UUID, body: CreatePublishRequestRequest, ) -> PublishAppResponse:
+ """Create Publish Request.
+
+ Create a publish request to ask for approval to publish an app whose protection level is ``approval_required``. Publishing happens automatically once the request is approved by a user with the appropriate permissions.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :type body: CreatePublishRequestRequest
+ :rtype: PublishAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._create_publish_request_endpoint.call_with_http_info(**kwargs)
+
+ def delete_app(self, app_id: UUID, ) -> DeleteAppResponse:
+ """Delete App.
+
+ Delete a single app. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param app_id: The ID of the app to delete.
+ :type app_id: UUID
+ :rtype: DeleteAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ return self._delete_app_endpoint.call_with_http_info(**kwargs)
+
+ def delete_apps(self, body: DeleteAppsRequest, ) -> DeleteAppsResponse:
+ """Delete Multiple Apps.
+
+ Delete multiple apps in a single request from a list of app IDs. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :type body: DeleteAppsRequest
+ :rtype: DeleteAppsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_apps_endpoint.call_with_http_info(**kwargs)
+
+ def get_app(self, app_id: UUID, *, version: Union[str, UnsetType]=unset, ) -> GetAppResponse:
+ """Get App.
+
+ Get the full definition of an app. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param app_id: The ID of the app to retrieve.
+ :type app_id: UUID
+ :param version: The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values ``latest`` and ``deployed`` can be used to retrieve the latest version or the published version, respectively.
+ :type version: str, optional
+ :rtype: GetAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ if version is not unset:
+ kwargs["version"] = version
+
+ return self._get_app_endpoint.call_with_http_info(**kwargs)
+
+ def get_blueprint(self, blueprint_id: UUID, ) -> GetBlueprintResponse:
+ """Get Blueprint.
+
+ Retrieve an app blueprint by its ID.
+
+ :param blueprint_id: The ID of the blueprint to retrieve.
+ :type blueprint_id: UUID
+ :rtype: GetBlueprintResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["blueprint_id"] = blueprint_id
+
+ return self._get_blueprint_endpoint.call_with_http_info(**kwargs)
+
+ def get_blueprints_by_integration_id(self, integration_id: str, ) -> GetBlueprintsResponse:
+ """Get Blueprints by Integration ID.
+
+ List app blueprints associated with a specific integration ID.
+
+ :param integration_id: The integration ID to filter blueprints by.
+ :type integration_id: str
+ :rtype: GetBlueprintsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_id"] = integration_id
+
+ return self._get_blueprints_by_integration_id_endpoint.call_with_http_info(**kwargs)
+
+ def get_blueprints_by_slugs(self, slugs: str, ) -> GetBlueprintsResponse:
+ """Get Blueprints by Slugs.
+
+ Retrieve app blueprints by their slugs.
+
+ :param slugs: A comma-separated list of blueprint slugs.
+ :type slugs: str
+ :rtype: GetBlueprintsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slugs"] = slugs
+
+ return self._get_blueprints_by_slugs_endpoint.call_with_http_info(**kwargs)
+
+ def list_apps(self, *, limit: Union[int, UnsetType]=unset, page: Union[int, UnsetType]=unset, filter_user_name: Union[str, UnsetType]=unset, filter_user_uuid: Union[UUID, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, filter_deployed: Union[bool, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_favorite: Union[bool, UnsetType]=unset, filter_self_service: Union[bool, UnsetType]=unset, sort: Union[List[AppsSortField], UnsetType]=unset, ) -> ListAppsResponse:
+ """List Apps.
+
+ List all apps, with optional filters and sorting. This endpoint is paginated. Only basic app information such as the app ID, name, and description is returned by this endpoint. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param limit: The number of apps to return per page.
+ :type limit: int, optional
+ :param page: The page number to return.
+ :type page: int, optional
+ :param filter_user_name: Filter apps by the app creator. Usually the user's email.
+ :type filter_user_name: str, optional
+ :param filter_user_uuid: Filter apps by the app creator's UUID.
+ :type filter_user_uuid: UUID, optional
+ :param filter_name: Filter by app name.
+ :type filter_name: str, optional
+ :param filter_query: Filter apps by the app name or the app creator.
+ :type filter_query: str, optional
+ :param filter_deployed: Filter apps by whether they are published.
+ :type filter_deployed: bool, optional
+ :param filter_tags: Filter apps by tags.
+ :type filter_tags: str, optional
+ :param filter_favorite: Filter apps by whether you have added them to your favorites.
+ :type filter_favorite: bool, optional
+ :param filter_self_service: Filter apps by whether they are enabled for self-service.
+ :type filter_self_service: bool, optional
+ :param sort: The fields and direction to sort apps by.
+ :type sort: [AppsSortField], optional
+ :rtype: ListAppsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ if filter_user_name is not unset:
+ kwargs["filter_user_name"] = filter_user_name
+
+ if filter_user_uuid is not unset:
+ kwargs["filter_user_uuid"] = filter_user_uuid
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_deployed is not unset:
+ kwargs["filter_deployed"] = filter_deployed
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_favorite is not unset:
+ kwargs["filter_favorite"] = filter_favorite
+
+ if filter_self_service is not unset:
+ kwargs["filter_self_service"] = filter_self_service
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_apps_endpoint.call_with_http_info(**kwargs)
+
+ def list_app_versions(self, app_id: UUID, *, limit: Union[int, UnsetType]=unset, page: Union[int, UnsetType]=unset, ) -> ListAppVersionsResponse:
+ """List App Versions.
+
+ List the versions of an app. This endpoint is paginated.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :param limit: The number of versions to return per page.
+ :type limit: int, optional
+ :param page: The page number to return.
+ :type page: int, optional
+ :rtype: ListAppVersionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ return self._list_app_versions_endpoint.call_with_http_info(**kwargs)
+
+ def list_blueprints(self, *, limit: Union[int, UnsetType]=unset, page: Union[int, UnsetType]=unset, ) -> ListBlueprintsResponse:
+ """List Blueprints.
+
+ List available app blueprints.
+
+ :param limit: The number of blueprints to return per page. Defaults to 10. Maximum is 100.
+ :type limit: int, optional
+ :param page: The page of results to return. Starts at 0.
+ :type page: int, optional
+ :rtype: ListBlueprintsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if page is not unset:
+ kwargs["page"] = page
+
+ return self._list_blueprints_endpoint.call_with_http_info(**kwargs)
+
+ def list_tags(self, ) -> AppBuilderListTagsResponse:
+ """List Tags.
+
+ List all tags associated with the authenticated user's apps.
+
+ :rtype: AppBuilderListTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_tags_endpoint.call_with_http_info(**kwargs)
+
+ def publish_app(self, app_id: UUID, ) -> PublishAppResponse:
+ """Publish App.
+
+ Publish an app for use by other users. To ensure the app is accessible to the correct users, you also need to set a `Restriction Policy `_ on the app if a policy does not yet exist. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param app_id: The ID of the app to publish.
+ :type app_id: UUID
+ :rtype: PublishAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ return self._publish_app_endpoint.call_with_http_info(**kwargs)
+
+ def revert_app(self, app_id: UUID, version: str, ) -> UpdateAppResponse:
+ """Revert App.
+
+ Revert an app to a previous version. The version to revert to is selected through the ``version`` query parameter. The reverted version becomes the new latest version of the app.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :param version: The version number of the app to revert to. Cannot be ``latest``. The special value ``deployed`` can be used to revert to the currently published version.
+ :type version: str
+ :rtype: UpdateAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["version"] = version
+
+ return self._revert_app_endpoint.call_with_http_info(**kwargs)
+
+ def unpublish_app(self, app_id: UUID, ) -> UnpublishAppResponse:
+ """Unpublish App.
+
+ Unpublish an app, removing the live version of the app. Unpublishing creates a new instance of a ``deployment`` object on the app, with a nil ``app_version_id`` ( ``00000000-0000-0000-0000-000000000000`` ). The app can still be updated and published again in the future. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param app_id: The ID of the app to unpublish.
+ :type app_id: UUID
+ :rtype: UnpublishAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ return self._unpublish_app_endpoint.call_with_http_info(**kwargs)
+
+ def update_app(self, app_id: UUID, body: UpdateAppRequest, ) -> UpdateAppResponse:
+ """Update App.
+
+ Update an existing app. This creates a new version of the app. This API requires a `registered application key `_. Alternatively, you can configure these permissions `in the UI `_.
+
+ :param app_id: The ID of the app to update.
+ :type app_id: UUID
+ :type body: UpdateAppRequest
+ :rtype: UpdateAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._update_app_endpoint.call_with_http_info(**kwargs)
+
+ def update_app_favorite(self, app_id: UUID, body: UpdateAppFavoriteRequest, ) -> None:
+ """Update App Favorite Status.
+
+ Add or remove an app from the current user's favorites. Favorited apps can be filtered for using the ``filter[favorite]`` query parameter on the `List Apps `_ endpoint.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :type body: UpdateAppFavoriteRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._update_app_favorite_endpoint.call_with_http_info(**kwargs)
+
+ def update_app_self_service(self, app_id: UUID, body: UpdateAppSelfServiceRequest, ) -> None:
+ """Update App Self-Service Status.
+
+ Enable or disable self-service for an app. Self-service apps can be discovered and run by users in your organization without explicit access being granted.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :type body: UpdateAppSelfServiceRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._update_app_self_service_endpoint.call_with_http_info(**kwargs)
+
+ def update_app_tags(self, app_id: UUID, body: UpdateAppTagsRequest, ) -> None:
+ """Update App Tags.
+
+ Replace the tags on an app. The provided list overwrites the existing tags entirely; tags not present in the request body are removed.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :type body: UpdateAppTagsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._update_app_tags_endpoint.call_with_http_info(**kwargs)
+
+ def update_app_version_name(self, app_id: UUID, version: str, body: UpdateAppVersionNameRequest, ) -> None:
+ """Name App Version.
+
+ Assign a human-readable name to a specific version of an app. The version is selected through the ``version`` query parameter.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :param version: The version number of the app to name. The special values ``latest`` and ``deployed`` can also be used to target the latest or currently published version.
+ :type version: str
+ :type body: UpdateAppVersionNameRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["version"] = version
+
+ kwargs["body"] = body
+
+ return self._update_app_version_name_endpoint.call_with_http_info(**kwargs)
+
+ def update_protection_level(self, app_id: UUID, body: UpdateAppProtectionLevelRequest, ) -> UpdateAppResponse:
+ """Update App Protection Level.
+
+ Update the publication protection level of an app. When set to ``approval_required`` , future publishes must go through an approval workflow before going live.
+
+ :param app_id: The ID of the app.
+ :type app_id: UUID
+ :type body: UpdateAppProtectionLevelRequest
+ :rtype: UpdateAppResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._update_protection_level_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/application_security_api.py b/datadog_api_client/v2/api/application_security_api.py
new file mode 100644
index 0000000000..52e8715572
--- /dev/null
+++ b/datadog_api_client/v2/api/application_security_api.py
@@ -0,0 +1,652 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.application_security_waf_custom_rule_list_response import ApplicationSecurityWafCustomRuleListResponse
+from datadog_api_client.v2.model.application_security_waf_custom_rule_response import ApplicationSecurityWafCustomRuleResponse
+from datadog_api_client.v2.model.application_security_waf_custom_rule_create_request import ApplicationSecurityWafCustomRuleCreateRequest
+from datadog_api_client.v2.model.application_security_waf_custom_rule_update_request import ApplicationSecurityWafCustomRuleUpdateRequest
+from datadog_api_client.v2.model.application_security_waf_exclusion_filters_response import ApplicationSecurityWafExclusionFiltersResponse
+from datadog_api_client.v2.model.application_security_waf_exclusion_filter_response import ApplicationSecurityWafExclusionFilterResponse
+from datadog_api_client.v2.model.application_security_waf_exclusion_filter_create_request import ApplicationSecurityWafExclusionFilterCreateRequest
+from datadog_api_client.v2.model.application_security_waf_exclusion_filter_update_request import ApplicationSecurityWafExclusionFilterUpdateRequest
+from datadog_api_client.v2.model.application_security_policy_list_response import ApplicationSecurityPolicyListResponse
+from datadog_api_client.v2.model.application_security_policy_response import ApplicationSecurityPolicyResponse
+from datadog_api_client.v2.model.application_security_policy_create_request import ApplicationSecurityPolicyCreateRequest
+from datadog_api_client.v2.model.application_security_policy_update_request import ApplicationSecurityPolicyUpdateRequest
+from datadog_api_client.v2.model.application_security_services_response import ApplicationSecurityServicesResponse
+
+
+class ApplicationSecurityApi:
+ """
+ `Datadog Application Security `_ provides protection against
+ application-level attacks that aim to exploit code-level vulnerabilities,
+ such as Server-Side-Request-Forgery (SSRF), SQL injection, Log4Shell, and
+ Reflected Cross-Site-Scripting (XSS). You can monitor and protect apps
+ hosted directly on a server, Docker, Kubernetes, Amazon ECS, and (for
+ supported languages) AWS Fargate.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_application_security_waf_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafCustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/custom_rules",
+ "operation_id": "create_application_security_waf_custom_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationSecurityWafCustomRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_application_security_waf_exclusion_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafExclusionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/exclusion_filters",
+ "operation_id": "create_application_security_waf_exclusion_filter",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationSecurityWafExclusionFilterCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_application_security_waf_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/policies",
+ "operation_id": "create_application_security_waf_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationSecurityPolicyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_application_security_waf_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}",
+ "operation_id": "delete_application_security_waf_custom_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "custom_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_application_security_waf_exclusion_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}",
+ "operation_id": "delete_application_security_waf_exclusion_filter",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "exclusion_filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "exclusion_filter_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_application_security_waf_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/policies/{policy_id}",
+ "operation_id": "delete_application_security_waf_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_application_security_waf_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafCustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}",
+ "operation_id": "get_application_security_waf_custom_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "custom_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_application_security_waf_exclusion_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafExclusionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}",
+ "operation_id": "get_application_security_waf_exclusion_filter",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "exclusion_filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "exclusion_filter_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_application_security_waf_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/policies/{policy_id}",
+ "operation_id": "get_application_security_waf_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_asm_service_by_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityServicesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/asm/services/{service_filter}",
+ "operation_id": "get_asm_service_by_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "service_filter": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_filter",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_application_security_waf_custom_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafCustomRuleListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/custom_rules",
+ "operation_id": "list_application_security_waf_custom_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_application_security_waf_exclusion_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafExclusionFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/exclusion_filters",
+ "operation_id": "list_application_security_waf_exclusion_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_application_security_waf_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityPolicyListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/policies",
+ "operation_id": "list_application_security_waf_policies",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_application_security_waf_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafCustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}",
+ "operation_id": "update_application_security_waf_custom_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "custom_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationSecurityWafCustomRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_application_security_waf_exclusion_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityWafExclusionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}",
+ "operation_id": "update_application_security_waf_exclusion_filter",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "exclusion_filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "exclusion_filter_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationSecurityWafExclusionFilterUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_application_security_waf_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationSecurityPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/asm/waf/policies/{policy_id}",
+ "operation_id": "update_application_security_waf_policy",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationSecurityPolicyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_application_security_waf_custom_rule(self, body: ApplicationSecurityWafCustomRuleCreateRequest, ) -> ApplicationSecurityWafCustomRuleResponse:
+ """Create a WAF custom rule.
+
+ Create a new WAF custom rule with the given parameters.
+
+ :param body: The definition of the new WAF Custom Rule.
+ :type body: ApplicationSecurityWafCustomRuleCreateRequest
+ :rtype: ApplicationSecurityWafCustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_application_security_waf_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_application_security_waf_exclusion_filter(self, body: ApplicationSecurityWafExclusionFilterCreateRequest, ) -> ApplicationSecurityWafExclusionFilterResponse:
+ """Create a WAF exclusion filter.
+
+ Create a new WAF exclusion filter with the given parameters.
+
+ A request matched by an exclusion filter will be ignored by the Application Security WAF product.
+ Go to https://app.datadoghq.com/security/appsec/passlist to review existing exclusion filters (also called passlist entries).
+
+ :param body: The definition of the new WAF exclusion filter.
+ :type body: ApplicationSecurityWafExclusionFilterCreateRequest
+ :rtype: ApplicationSecurityWafExclusionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_application_security_waf_exclusion_filter_endpoint.call_with_http_info(**kwargs)
+
+ def create_application_security_waf_policy(self, body: ApplicationSecurityPolicyCreateRequest, ) -> ApplicationSecurityPolicyResponse:
+ """Create a WAF Policy.
+
+ Create a new WAF policy.
+
+ :param body: The new WAF policy.
+ :type body: ApplicationSecurityPolicyCreateRequest
+ :rtype: ApplicationSecurityPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_application_security_waf_policy_endpoint.call_with_http_info(**kwargs)
+
+ def delete_application_security_waf_custom_rule(self, custom_rule_id: str, ) -> None:
+ """Delete a WAF Custom Rule.
+
+ Delete a specific WAF custom rule.
+
+ :param custom_rule_id: The ID of the custom rule.
+ :type custom_rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_rule_id"] = custom_rule_id
+
+ return self._delete_application_security_waf_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_application_security_waf_exclusion_filter(self, exclusion_filter_id: str, ) -> None:
+ """Delete a WAF exclusion filter.
+
+ Delete a specific WAF exclusion filter using its identifier.
+
+ :param exclusion_filter_id: The identifier of the WAF exclusion filter.
+ :type exclusion_filter_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exclusion_filter_id"] = exclusion_filter_id
+
+ return self._delete_application_security_waf_exclusion_filter_endpoint.call_with_http_info(**kwargs)
+
+ def delete_application_security_waf_policy(self, policy_id: str, ) -> None:
+ """Delete a WAF Policy.
+
+ Delete a specific WAF policy.
+
+ :param policy_id: The ID of the policy.
+ :type policy_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._delete_application_security_waf_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_application_security_waf_custom_rule(self, custom_rule_id: str, ) -> ApplicationSecurityWafCustomRuleResponse:
+ """Get a WAF custom rule.
+
+ Retrieve a WAF custom rule by ID.
+
+ :param custom_rule_id: The ID of the custom rule.
+ :type custom_rule_id: str
+ :rtype: ApplicationSecurityWafCustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_rule_id"] = custom_rule_id
+
+ return self._get_application_security_waf_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_application_security_waf_exclusion_filter(self, exclusion_filter_id: str, ) -> ApplicationSecurityWafExclusionFilterResponse:
+ """Get a WAF exclusion filter.
+
+ Retrieve a specific WAF exclusion filter using its identifier.
+
+ :param exclusion_filter_id: The identifier of the WAF exclusion filter.
+ :type exclusion_filter_id: str
+ :rtype: ApplicationSecurityWafExclusionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exclusion_filter_id"] = exclusion_filter_id
+
+ return self._get_application_security_waf_exclusion_filter_endpoint.call_with_http_info(**kwargs)
+
+ def get_application_security_waf_policy(self, policy_id: str, ) -> ApplicationSecurityPolicyResponse:
+ """Get a WAF Policy.
+
+ Retrieve a WAF policy by ID.
+
+ :param policy_id: The ID of the policy.
+ :type policy_id: str
+ :rtype: ApplicationSecurityPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._get_application_security_waf_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_asm_service_by_name(self, service_filter: str, ) -> ApplicationSecurityServicesResponse:
+ """Get Application Security details for a service.
+
+ Retrieve Application Security details for services matching the given name.
+ Returns Application Security activation, compatibility, and product enablement
+ information for each matching ``(service, environment)`` pair, along with a count
+ of services that have Application Security Management (Threats) enabled.
+
+ :param service_filter: The name of the service to retrieve Application Security details for.
+ Returns all matching services across environments.
+ :type service_filter: str
+ :rtype: ApplicationSecurityServicesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_filter"] = service_filter
+
+ return self._get_asm_service_by_name_endpoint.call_with_http_info(**kwargs)
+
+ def list_application_security_waf_custom_rules(self, ) -> ApplicationSecurityWafCustomRuleListResponse:
+ """List all WAF custom rules.
+
+ Retrieve a list of WAF custom rule.
+
+ :rtype: ApplicationSecurityWafCustomRuleListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_application_security_waf_custom_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_application_security_waf_exclusion_filters(self, ) -> ApplicationSecurityWafExclusionFiltersResponse:
+ """List all WAF exclusion filters.
+
+ Retrieve a list of WAF exclusion filters.
+
+ :rtype: ApplicationSecurityWafExclusionFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_application_security_waf_exclusion_filters_endpoint.call_with_http_info(**kwargs)
+
+ def list_application_security_waf_policies(self, ) -> ApplicationSecurityPolicyListResponse:
+ """List all WAF policies.
+
+ Retrieve a list of WAF policies.
+
+ :rtype: ApplicationSecurityPolicyListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_application_security_waf_policies_endpoint.call_with_http_info(**kwargs)
+
+ def update_application_security_waf_custom_rule(self, custom_rule_id: str, body: ApplicationSecurityWafCustomRuleUpdateRequest, ) -> ApplicationSecurityWafCustomRuleResponse:
+ """Update a WAF Custom Rule.
+
+ Update a specific WAF custom Rule.
+ Returns the Custom Rule object when the request is successful.
+
+ :param custom_rule_id: The ID of the custom rule.
+ :type custom_rule_id: str
+ :param body: New definition of the WAF Custom Rule.
+ :type body: ApplicationSecurityWafCustomRuleUpdateRequest
+ :rtype: ApplicationSecurityWafCustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_rule_id"] = custom_rule_id
+
+ kwargs["body"] = body
+
+ return self._update_application_security_waf_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_application_security_waf_exclusion_filter(self, exclusion_filter_id: str, body: ApplicationSecurityWafExclusionFilterUpdateRequest, ) -> ApplicationSecurityWafExclusionFilterResponse:
+ """Update a WAF exclusion filter.
+
+ Update a specific WAF exclusion filter using its identifier.
+ Returns the exclusion filter object when the request is successful.
+
+ :param exclusion_filter_id: The identifier of the WAF exclusion filter.
+ :type exclusion_filter_id: str
+ :param body: The exclusion filter to update.
+ :type body: ApplicationSecurityWafExclusionFilterUpdateRequest
+ :rtype: ApplicationSecurityWafExclusionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exclusion_filter_id"] = exclusion_filter_id
+
+ kwargs["body"] = body
+
+ return self._update_application_security_waf_exclusion_filter_endpoint.call_with_http_info(**kwargs)
+
+ def update_application_security_waf_policy(self, policy_id: str, body: ApplicationSecurityPolicyUpdateRequest, ) -> ApplicationSecurityPolicyResponse:
+ """Update a WAF Policy.
+
+ Update a specific WAF policy.
+ Returns the policy object when the request is successful.
+
+ :param policy_id: The ID of the policy.
+ :type policy_id: str
+ :param body: New WAF policy.
+ :type body: ApplicationSecurityPolicyUpdateRequest
+ :rtype: ApplicationSecurityPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ kwargs["body"] = body
+
+ return self._update_application_security_waf_policy_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/audit_api.py b/datadog_api_client/v2/api/audit_api.py
new file mode 100644
index 0000000000..92914016d9
--- /dev/null
+++ b/datadog_api_client/v2/api/audit_api.py
@@ -0,0 +1,248 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.audit_logs_events_response import AuditLogsEventsResponse
+from datadog_api_client.v2.model.audit_logs_sort import AuditLogsSort
+from datadog_api_client.v2.model.audit_logs_event import AuditLogsEvent
+from datadog_api_client.v2.model.audit_logs_search_events_request import AuditLogsSearchEventsRequest
+
+
+class AuditApi:
+ """
+ Search your Audit Logs events over HTTP.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_audit_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuditLogsEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/audit/events",
+ "operation_id": "list_audit_logs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (AuditLogsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_audit_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuditLogsEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/audit/events/search",
+ "operation_id": "search_audit_logs",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (AuditLogsSearchEventsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def list_audit_logs(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[AuditLogsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> AuditLogsEventsResponse:
+ """Get a list of Audit Logs events.
+
+ List endpoint returns events that match a Audit Logs search query.
+ `Results are paginated `_.
+
+ Use this endpoint to see your latest Audit Logs events.
+
+ :param filter_query: Search query following Audit Logs syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: AuditLogsSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+ :rtype: AuditLogsEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_audit_logs_endpoint.call_with_http_info(**kwargs)
+
+ def list_audit_logs_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[AuditLogsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[AuditLogsEvent]:
+ """Get a list of Audit Logs events.
+
+ Provide a paginated version of :meth:`list_audit_logs`, returning all items.
+
+ :param filter_query: Search query following Audit Logs syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: AuditLogsSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[AuditLogsEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_audit_logs_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_audit_logs(self, *, body: Union[AuditLogsSearchEventsRequest, UnsetType]=unset, ) -> AuditLogsEventsResponse:
+ """Search Audit Logs events.
+
+ List endpoint returns Audit Logs events that match an Audit search query.
+ `Results are paginated `_.
+
+ Use this endpoint to build complex Audit Logs events filtering and search.
+
+ :type body: AuditLogsSearchEventsRequest, optional
+ :rtype: AuditLogsEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_audit_logs_endpoint.call_with_http_info(**kwargs)
+
+ def search_audit_logs_with_pagination(self, *, body: Union[AuditLogsSearchEventsRequest, UnsetType]=unset, ) -> collections.abc.Iterable[AuditLogsEvent]:
+ """Search Audit Logs events.
+
+ Provide a paginated version of :meth:`search_audit_logs`, returning all items.
+
+ :type body: AuditLogsSearchEventsRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[AuditLogsEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._search_audit_logs_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/authn_mappings_api.py b/datadog_api_client/v2/api/authn_mappings_api.py
new file mode 100644
index 0000000000..e3bf102413
--- /dev/null
+++ b/datadog_api_client/v2/api/authn_mappings_api.py
@@ -0,0 +1,273 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.authn_mappings_response import AuthNMappingsResponse
+from datadog_api_client.v2.model.authn_mappings_sort import AuthNMappingsSort
+from datadog_api_client.v2.model.authn_mapping_resource_type import AuthNMappingResourceType
+from datadog_api_client.v2.model.authn_mapping_response import AuthNMappingResponse
+from datadog_api_client.v2.model.authn_mapping_create_request import AuthNMappingCreateRequest
+from datadog_api_client.v2.model.authn_mapping_update_request import AuthNMappingUpdateRequest
+
+
+class AuthNMappingsApi:
+ """
+ `The AuthN Mappings API `_
+ is used to automatically map groups of users to roles in Datadog using attributes
+ sent from Identity Providers. Use these endpoints to manage your AuthN Mappings.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_authn_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuthNMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/authn_mappings",
+ "operation_id": "create_authn_mapping",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AuthNMappingCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_authn_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/authn_mappings/{authn_mapping_id}",
+ "operation_id": "delete_authn_mapping",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "authn_mapping_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "authn_mapping_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_authn_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuthNMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/authn_mappings/{authn_mapping_id}",
+ "operation_id": "get_authn_mapping",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "authn_mapping_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "authn_mapping_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_authn_mappings_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuthNMappingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/authn_mappings",
+ "operation_id": "list_authn_mappings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (AuthNMappingsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "resource_type": {
+ "openapi_types": (AuthNMappingResourceType,),
+ "attribute": "resource_type",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_authn_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (AuthNMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/authn_mappings/{authn_mapping_id}",
+ "operation_id": "update_authn_mapping",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "authn_mapping_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "authn_mapping_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AuthNMappingUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_authn_mapping(self, body: AuthNMappingCreateRequest, ) -> AuthNMappingResponse:
+ """Create an AuthN Mapping.
+
+ Create an AuthN Mapping.
+
+ :type body: AuthNMappingCreateRequest
+ :rtype: AuthNMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_authn_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def delete_authn_mapping(self, authn_mapping_id: str, ) -> None:
+ """Delete an AuthN Mapping.
+
+ Delete an AuthN Mapping specified by AuthN Mapping UUID.
+
+ :param authn_mapping_id: The UUID of the AuthN Mapping.
+ :type authn_mapping_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["authn_mapping_id"] = authn_mapping_id
+
+ return self._delete_authn_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def get_authn_mapping(self, authn_mapping_id: str, ) -> AuthNMappingResponse:
+ """Get an AuthN Mapping by UUID.
+
+ Get an AuthN Mapping specified by the AuthN Mapping UUID.
+
+ :param authn_mapping_id: The UUID of the AuthN Mapping.
+ :type authn_mapping_id: str
+ :rtype: AuthNMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["authn_mapping_id"] = authn_mapping_id
+
+ return self._get_authn_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def list_authn_mappings(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[AuthNMappingsSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, resource_type: Union[AuthNMappingResourceType, UnsetType]=unset, ) -> AuthNMappingsResponse:
+ """List all AuthN Mappings.
+
+ List all AuthN Mappings in the org.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Sort AuthN Mappings depending on the given field.
+ :type sort: AuthNMappingsSort, optional
+ :param filter: Filter all mappings by the given string.
+ :type filter: str, optional
+ :param resource_type: Filter by mapping resource type. Defaults to "role" if not specified.
+ :type resource_type: AuthNMappingResourceType, optional
+ :rtype: AuthNMappingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if resource_type is not unset:
+ kwargs["resource_type"] = resource_type
+
+ return self._list_authn_mappings_endpoint.call_with_http_info(**kwargs)
+
+ def update_authn_mapping(self, authn_mapping_id: str, body: AuthNMappingUpdateRequest, ) -> AuthNMappingResponse:
+ """Edit an AuthN Mapping.
+
+ Edit an AuthN Mapping.
+
+ :param authn_mapping_id: The UUID of the AuthN Mapping.
+ :type authn_mapping_id: str
+ :type body: AuthNMappingUpdateRequest
+ :rtype: AuthNMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["authn_mapping_id"] = authn_mapping_id
+
+ kwargs["body"] = body
+
+ return self._update_authn_mapping_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/aws_integration_api.py b/datadog_api_client/v2/api/aws_integration_api.py
new file mode 100644
index 0000000000..87cfa38ef6
--- /dev/null
+++ b/datadog_api_client/v2/api/aws_integration_api.py
@@ -0,0 +1,794 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.aws_accounts_response import AWSAccountsResponse
+from datadog_api_client.v2.model.aws_account_response import AWSAccountResponse
+from datadog_api_client.v2.model.aws_account_create_request import AWSAccountCreateRequest
+from datadog_api_client.v2.model.aws_account_update_request import AWSAccountUpdateRequest
+from datadog_api_client.v2.model.aws_ccm_config_response import AWSCcmConfigResponse
+from datadog_api_client.v2.model.aws_ccm_config_request import AWSCcmConfigRequest
+from datadog_api_client.v2.model.aws_metric_name_filter_preview_response import AWSMetricNameFilterPreviewResponse
+from datadog_api_client.v2.model.aws_metric_name_filter_preview_request import AWSMetricNameFilterPreviewRequest
+from datadog_api_client.v2.model.aws_namespaces_response import AWSNamespacesResponse
+from datadog_api_client.v2.model.aws_event_bridge_delete_response import AWSEventBridgeDeleteResponse
+from datadog_api_client.v2.model.aws_event_bridge_delete_request import AWSEventBridgeDeleteRequest
+from datadog_api_client.v2.model.aws_event_bridge_list_response import AWSEventBridgeListResponse
+from datadog_api_client.v2.model.aws_event_bridge_create_response import AWSEventBridgeCreateResponse
+from datadog_api_client.v2.model.aws_event_bridge_create_request import AWSEventBridgeCreateRequest
+from datadog_api_client.v2.model.aws_new_external_id_response import AWSNewExternalIDResponse
+from datadog_api_client.v2.model.aws_integration_iam_permissions_response import AWSIntegrationIamPermissionsResponse
+from datadog_api_client.v2.model.aws_ccm_config_validation_response import AWSCcmConfigValidationResponse
+from datadog_api_client.v2.model.aws_ccm_config_validation_request import AWSCcmConfigValidationRequest
+
+
+class AWSIntegrationApi:
+ """
+ Configure your Datadog-AWS integration directly through the Datadog API.
+ For more information, see the `AWS integration page `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts",
+ "operation_id": "create_aws_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_aws_account_ccm_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCcmConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config",
+ "operation_id": "create_aws_account_ccm_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AWSCcmConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_aws_event_bridge_source_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSEventBridgeCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/event_bridge",
+ "operation_id": "create_aws_event_bridge_source",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSEventBridgeCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_new_aws_external_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSNewExternalIDResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/generate_new_external_id",
+ "operation_id": "create_new_aws_external_id",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}",
+ "operation_id": "delete_aws_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_account_ccm_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config",
+ "operation_id": "delete_aws_account_ccm_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_event_bridge_source_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSEventBridgeDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/event_bridge",
+ "operation_id": "delete_aws_event_bridge_source",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSEventBridgeDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}",
+ "operation_id": "get_aws_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_account_ccm_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCcmConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config",
+ "operation_id": "get_aws_account_ccm_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_integration_iam_permissions_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSIntegrationIamPermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/iam_permissions",
+ "operation_id": "get_aws_integration_iam_permissions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_integration_iam_permissions_resource_collection_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSIntegrationIamPermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/iam_permissions/resource_collection",
+ "operation_id": "get_aws_integration_iam_permissions_resource_collection",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_integration_iam_permissions_standard_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSIntegrationIamPermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/iam_permissions/standard",
+ "operation_id": "get_aws_integration_iam_permissions_standard",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_metric_name_filter_preview_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSMetricNameFilterPreviewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/metric_name_filter_preview",
+ "operation_id": "get_aws_metric_name_filter_preview",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts",
+ "operation_id": "list_aws_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_id": {
+ "openapi_types": (str,),
+ "attribute": "aws_account_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_event_bridge_sources_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSEventBridgeListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/event_bridge",
+ "operation_id": "list_aws_event_bridge_sources",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_namespaces_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSNamespacesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/available_namespaces",
+ "operation_id": "list_aws_namespaces",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._preview_aws_metric_name_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSMetricNameFilterPreviewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/metric_name_filter_preview",
+ "operation_id": "preview_aws_metric_name_filter",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AWSMetricNameFilterPreviewRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_aws_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}",
+ "operation_id": "update_aws_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AWSAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_aws_account_ccm_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCcmConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/accounts/{aws_account_config_id}/ccm_config",
+ "operation_id": "update_aws_account_ccm_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "aws_account_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "aws_account_config_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AWSCcmConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_awsccm_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCcmConfigValidationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/validate_ccm_config",
+ "operation_id": "validate_awsccm_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSCcmConfigValidationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_aws_account(self, body: AWSAccountCreateRequest, ) -> AWSAccountResponse:
+ """Create an AWS integration.
+
+ Create a new AWS Account Integration Config.
+
+ :type body: AWSAccountCreateRequest
+ :rtype: AWSAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_aws_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_aws_account_ccm_config(self, aws_account_config_id: str, body: AWSCcmConfigRequest, ) -> AWSCcmConfigResponse:
+ """Create AWS CCM config.
+
+ Create the Cloud Cost Management config for an AWS Account Integration Config using Cost and Usage Report
+ (CUR) 2.0 by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :param body: Create a Cloud Cost Management config for an AWS Account Integration Config.
+ :type body: AWSCcmConfigRequest
+ :rtype: AWSCcmConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ kwargs["body"] = body
+
+ return self._create_aws_account_ccm_config_endpoint.call_with_http_info(**kwargs)
+
+ def create_aws_event_bridge_source(self, body: AWSEventBridgeCreateRequest, ) -> AWSEventBridgeCreateResponse:
+ """Create an Amazon EventBridge source.
+
+ Create an Amazon EventBridge source.
+
+ :param body: Create an Amazon EventBridge source for an AWS account with a given name and region.
+ :type body: AWSEventBridgeCreateRequest
+ :rtype: AWSEventBridgeCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_aws_event_bridge_source_endpoint.call_with_http_info(**kwargs)
+
+ def create_new_aws_external_id(self, ) -> AWSNewExternalIDResponse:
+ """Generate a new external ID.
+
+ Generate a new external ID for AWS role-based authentication.
+
+ :rtype: AWSNewExternalIDResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._create_new_aws_external_id_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_account(self, aws_account_config_id: str, ) -> None:
+ """Delete an AWS integration.
+
+ Delete an AWS Account Integration Config by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ return self._delete_aws_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_account_ccm_config(self, aws_account_config_id: str, ) -> None:
+ """Delete AWS CCM config.
+
+ Delete the Cloud Cost Management config for an AWS Account Integration Config using Cost and Usage Report
+ (CUR) 2.0 by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ return self._delete_aws_account_ccm_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_event_bridge_source(self, body: AWSEventBridgeDeleteRequest, ) -> AWSEventBridgeDeleteResponse:
+ """Delete an Amazon EventBridge source.
+
+ Delete an Amazon EventBridge source.
+
+ :param body: Delete the Amazon EventBridge source with the given name, region, and associated AWS account.
+ :type body: AWSEventBridgeDeleteRequest
+ :rtype: AWSEventBridgeDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_aws_event_bridge_source_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_account(self, aws_account_config_id: str, ) -> AWSAccountResponse:
+ """Get an AWS integration by config ID.
+
+ Get an AWS Account Integration Config by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :rtype: AWSAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ return self._get_aws_account_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_account_ccm_config(self, aws_account_config_id: str, ) -> AWSCcmConfigResponse:
+ """Get AWS CCM config.
+
+ Get the Cloud Cost Management config for an AWS Account Integration Config using Cost and Usage Report
+ (CUR) 2.0 by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :rtype: AWSCcmConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ return self._get_aws_account_ccm_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_integration_iam_permissions(self, ) -> AWSIntegrationIamPermissionsResponse:
+ """Get AWS integration IAM permissions.
+
+ Get all AWS IAM permissions required for the AWS integration.
+
+ :rtype: AWSIntegrationIamPermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_aws_integration_iam_permissions_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_integration_iam_permissions_resource_collection(self, ) -> AWSIntegrationIamPermissionsResponse:
+ """Get resource collection IAM permissions.
+
+ Get all resource collection AWS IAM permissions required for the AWS integration.
+
+ :rtype: AWSIntegrationIamPermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_aws_integration_iam_permissions_resource_collection_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_integration_iam_permissions_standard(self, ) -> AWSIntegrationIamPermissionsResponse:
+ """Get AWS integration standard IAM permissions.
+
+ Get all standard AWS IAM permissions required for the AWS integration.
+
+ :rtype: AWSIntegrationIamPermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_aws_integration_iam_permissions_standard_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_metric_name_filter_preview(self, aws_account_config_id: str, ) -> AWSMetricNameFilterPreviewResponse:
+ """Get AWS metric name filter preview.
+
+ Preview which collected CloudWatch metrics would be filtered by the account's saved metric name filters.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :rtype: AWSMetricNameFilterPreviewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ return self._get_aws_metric_name_filter_preview_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_accounts(self, *, aws_account_id: Union[str, UnsetType]=unset, ) -> AWSAccountsResponse:
+ """List all AWS integrations.
+
+ Get a list of AWS Account Integration Configs.
+
+ :param aws_account_id: Optional query parameter to filter accounts by AWS Account ID.
+ If not provided, all accounts are returned.
+ :type aws_account_id: str, optional
+ :rtype: AWSAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if aws_account_id is not unset:
+ kwargs["aws_account_id"] = aws_account_id
+
+ return self._list_aws_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_event_bridge_sources(self, ) -> AWSEventBridgeListResponse:
+ """Get all Amazon EventBridge sources.
+
+ Get all Amazon EventBridge sources.
+
+ :rtype: AWSEventBridgeListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_aws_event_bridge_sources_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_namespaces(self, ) -> AWSNamespacesResponse:
+ """List available namespaces.
+
+ Get a list of available AWS CloudWatch namespaces that can send metrics to Datadog.
+
+ :rtype: AWSNamespacesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_aws_namespaces_endpoint.call_with_http_info(**kwargs)
+
+ def preview_aws_metric_name_filter(self, aws_account_config_id: str, body: AWSMetricNameFilterPreviewRequest, ) -> AWSMetricNameFilterPreviewResponse:
+ """Preview AWS metric name filter.
+
+ Preview which collected CloudWatch metrics would be filtered by the supplied metric name filters.
+ The filters are not persisted.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :param body: The metric name filters to preview.
+ :type body: AWSMetricNameFilterPreviewRequest
+ :rtype: AWSMetricNameFilterPreviewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ kwargs["body"] = body
+
+ return self._preview_aws_metric_name_filter_endpoint.call_with_http_info(**kwargs)
+
+ def update_aws_account(self, aws_account_config_id: str, body: AWSAccountUpdateRequest, ) -> AWSAccountResponse:
+ """Update an AWS integration.
+
+ Update an AWS Account Integration Config by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :type body: AWSAccountUpdateRequest
+ :rtype: AWSAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ kwargs["body"] = body
+
+ return self._update_aws_account_endpoint.call_with_http_info(**kwargs)
+
+ def update_aws_account_ccm_config(self, aws_account_config_id: str, body: AWSCcmConfigRequest, ) -> AWSCcmConfigResponse:
+ """Update AWS CCM config.
+
+ Update the Cloud Cost Management config for an AWS Account Integration Config using Cost and Usage Report
+ (CUR) 2.0 by config ID.
+
+ :param aws_account_config_id: Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the
+ `List all AWS integrations `_
+ endpoint and query by AWS Account ID.
+ :type aws_account_config_id: str
+ :param body: Update a Cloud Cost Management config for an AWS Account Integration Config.
+ :type body: AWSCcmConfigRequest
+ :rtype: AWSCcmConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aws_account_config_id"] = aws_account_config_id
+
+ kwargs["body"] = body
+
+ return self._update_aws_account_ccm_config_endpoint.call_with_http_info(**kwargs)
+
+ def validate_awsccm_config(self, body: AWSCcmConfigValidationRequest, ) -> AWSCcmConfigValidationResponse:
+ """Validate AWS CCM config.
+
+ Validate a Cloud Cost Management config for an AWS account using Cost and Usage Report
+ (CUR) 2.0 against Datadog's ingest requirements without persisting it.
+
+ :param body: Validate a Cloud Cost Management config for an AWS account integration config.
+ :type body: AWSCcmConfigValidationRequest
+ :rtype: AWSCcmConfigValidationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_awsccm_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/aws_logs_integration_api.py b/datadog_api_client/v2/api/aws_logs_integration_api.py
new file mode 100644
index 0000000000..454235d7f3
--- /dev/null
+++ b/datadog_api_client/v2/api/aws_logs_integration_api.py
@@ -0,0 +1,61 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.aws_logs_services_response import AWSLogsServicesResponse
+
+
+class AWSLogsIntegrationApi:
+ """
+ Configure your Datadog-AWS-Logs integration directly through Datadog API.
+ For more information, see the `AWS integration page `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_aws_logs_services_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSLogsServicesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/aws/logs/services",
+ "operation_id": "list_aws_logs_services",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_aws_logs_services(self, ) -> AWSLogsServicesResponse:
+ """Get list of AWS log ready services.
+
+ Get a list of AWS services that can send logs to Datadog.
+
+ :rtype: AWSLogsServicesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_aws_logs_services_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/bits_ai_api.py b/datadog_api_client/v2/api/bits_ai_api.py
new file mode 100644
index 0000000000..45560a6625
--- /dev/null
+++ b/datadog_api_client/v2/api/bits_ai_api.py
@@ -0,0 +1,208 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_investigations_response import ListInvestigationsResponse
+from datadog_api_client.v2.model.list_investigations_response_data import ListInvestigationsResponseData
+from datadog_api_client.v2.model.trigger_investigation_response import TriggerInvestigationResponse
+from datadog_api_client.v2.model.trigger_investigation_request import TriggerInvestigationRequest
+from datadog_api_client.v2.model.get_investigation_response import GetInvestigationResponse
+
+
+class BitsAIApi:
+ """
+ Use the Bits AI endpoints to retrieve AI-powered investigations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_investigation_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetInvestigationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/bits-ai/investigations/{id}",
+ "operation_id": "get_investigation",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_investigations_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListInvestigationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/bits-ai/investigations",
+ "operation_id": "list_investigations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 100,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "filter_monitor_id": {
+ "openapi_types": (int,),
+ "attribute": "filter[monitor_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._trigger_investigation_endpoint = _Endpoint(
+ settings={
+ "response_type": (TriggerInvestigationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/bits-ai/investigations",
+ "operation_id": "trigger_investigation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TriggerInvestigationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_investigation(self, id: str, ) -> GetInvestigationResponse:
+ """Get a Bits AI investigation.
+
+ Get a specific Bits AI investigation by ID.
+
+ :param id: The ID of the investigation.
+ :type id: str
+ :rtype: GetInvestigationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_investigation_endpoint.call_with_http_info(**kwargs)
+
+ def list_investigations(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_monitor_id: Union[int, UnsetType]=unset, ) -> ListInvestigationsResponse:
+ """List Bits AI investigations.
+
+ List all Bits AI investigations for the organization.
+
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of investigations to return.
+ :type page_limit: int, optional
+ :param filter_monitor_id: Filter investigations by monitor ID.
+ :type filter_monitor_id: int, optional
+ :rtype: ListInvestigationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_monitor_id is not unset:
+ kwargs["filter_monitor_id"] = filter_monitor_id
+
+ return self._list_investigations_endpoint.call_with_http_info(**kwargs)
+
+ def list_investigations_with_pagination(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_monitor_id: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[ListInvestigationsResponseData]:
+ """List Bits AI investigations.
+
+ Provide a paginated version of :meth:`list_investigations`, returning all items.
+
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of investigations to return.
+ :type page_limit: int, optional
+ :param filter_monitor_id: Filter investigations by monitor ID.
+ :type filter_monitor_id: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ListInvestigationsResponseData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_monitor_id is not unset:
+ kwargs["filter_monitor_id"] = filter_monitor_id
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 25)
+ endpoint = self._list_investigations_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def trigger_investigation(self, body: TriggerInvestigationRequest, ) -> TriggerInvestigationResponse:
+ """Trigger a Bits AI investigation.
+
+ Trigger a new Bits AI investigation based on a monitor alert.
+
+ :param body: Trigger investigation request body.
+ :type body: TriggerInvestigationRequest
+ :rtype: TriggerInvestigationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._trigger_investigation_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/case_management_api.py b/datadog_api_client/v2/api/case_management_api.py
new file mode 100644
index 0000000000..108a9eb99e
--- /dev/null
+++ b/datadog_api_client/v2/api/case_management_api.py
@@ -0,0 +1,3076 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.cases_response import CasesResponse
+from datadog_api_client.v2.model.case_sortable_field import CaseSortableField
+from datadog_api_client.v2.model.case import Case
+from datadog_api_client.v2.model.case_response import CaseResponse
+from datadog_api_client.v2.model.case_create_request import CaseCreateRequest
+from datadog_api_client.v2.model.case_aggregate_response import CaseAggregateResponse
+from datadog_api_client.v2.model.case_aggregate_request import CaseAggregateRequest
+from datadog_api_client.v2.model.case_bulk_update_request import CaseBulkUpdateRequest
+from datadog_api_client.v2.model.case_count_response import CaseCountResponse
+from datadog_api_client.v2.model.case_links_response import CaseLinksResponse
+from datadog_api_client.v2.model.case_link_response import CaseLinkResponse
+from datadog_api_client.v2.model.case_link_create_request import CaseLinkCreateRequest
+from datadog_api_client.v2.model.projects_response import ProjectsResponse
+from datadog_api_client.v2.model.project_response import ProjectResponse
+from datadog_api_client.v2.model.project_create_request import ProjectCreateRequest
+from datadog_api_client.v2.model.project_favorites_response import ProjectFavoritesResponse
+from datadog_api_client.v2.model.project_update_request import ProjectUpdateRequest
+from datadog_api_client.v2.model.case_notification_rules_response import CaseNotificationRulesResponse
+from datadog_api_client.v2.model.case_notification_rule_response import CaseNotificationRuleResponse
+from datadog_api_client.v2.model.case_notification_rule_create_request import CaseNotificationRuleCreateRequest
+from datadog_api_client.v2.model.case_notification_rule_update_request import CaseNotificationRuleUpdateRequest
+from datadog_api_client.v2.model.automation_rules_response import AutomationRulesResponse
+from datadog_api_client.v2.model.automation_rule_response import AutomationRuleResponse
+from datadog_api_client.v2.model.automation_rule_create_request import AutomationRuleCreateRequest
+from datadog_api_client.v2.model.automation_rule_update_request import AutomationRuleUpdateRequest
+from datadog_api_client.v2.model.case_views_response import CaseViewsResponse
+from datadog_api_client.v2.model.case_view_response import CaseViewResponse
+from datadog_api_client.v2.model.case_view_create_request import CaseViewCreateRequest
+from datadog_api_client.v2.model.case_view_update_request import CaseViewUpdateRequest
+from datadog_api_client.v2.model.case_empty_request import CaseEmptyRequest
+from datadog_api_client.v2.model.case_assign_request import CaseAssignRequest
+from datadog_api_client.v2.model.case_update_attributes_request import CaseUpdateAttributesRequest
+from datadog_api_client.v2.model.timeline_response import TimelineResponse
+from datadog_api_client.v2.model.case_comment_request import CaseCommentRequest
+from datadog_api_client.v2.model.case_update_comment_request import CaseUpdateCommentRequest
+from datadog_api_client.v2.model.case_update_custom_attribute_request import CaseUpdateCustomAttributeRequest
+from datadog_api_client.v2.model.case_update_description_request import CaseUpdateDescriptionRequest
+from datadog_api_client.v2.model.case_update_due_date_request import CaseUpdateDueDateRequest
+from datadog_api_client.v2.model.case_insights_request import CaseInsightsRequest
+from datadog_api_client.v2.model.case_update_priority_request import CaseUpdatePriorityRequest
+from datadog_api_client.v2.model.relationship_to_incident_request import RelationshipToIncidentRequest
+from datadog_api_client.v2.model.jira_issue_link_request import JiraIssueLinkRequest
+from datadog_api_client.v2.model.jira_issue_create_request import JiraIssueCreateRequest
+from datadog_api_client.v2.model.notebook_create_request import NotebookCreateRequest
+from datadog_api_client.v2.model.project_relationship import ProjectRelationship
+from datadog_api_client.v2.model.service_now_ticket_create_request import ServiceNowTicketCreateRequest
+from datadog_api_client.v2.model.case_update_resolved_reason_request import CaseUpdateResolvedReasonRequest
+from datadog_api_client.v2.model.case_update_status_request import CaseUpdateStatusRequest
+from datadog_api_client.v2.model.case_update_title_request import CaseUpdateTitleRequest
+from datadog_api_client.v2.model.case_watchers_response import CaseWatchersResponse
+from datadog_api_client.v2.model.maintenance_windows_response import MaintenanceWindowsResponse
+from datadog_api_client.v2.model.maintenance_window_response import MaintenanceWindowResponse
+from datadog_api_client.v2.model.maintenance_window_create_request import MaintenanceWindowCreateRequest
+from datadog_api_client.v2.model.maintenance_window_update_request import MaintenanceWindowUpdateRequest
+
+
+class CaseManagementApi:
+ """
+ View and manage cases and projects within Case Management. See the `Case Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_case_insights_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/insights",
+ "operation_id": "add_case_insights",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseInsightsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._aggregate_cases_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseAggregateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/aggregate",
+ "operation_id": "aggregate_cases",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CaseAggregateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._archive_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/archive",
+ "operation_id": "archive_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseEmptyRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._assign_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/assign",
+ "operation_id": "assign_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseAssignRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_update_cases_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/bulk",
+ "operation_id": "bulk_update_cases",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CaseBulkUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._comment_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (TimelineResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/{case_id}/comment",
+ "operation_id": "comment_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseCommentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._count_cases_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseCountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/count",
+ "operation_id": "count_cases",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "query_filter": {
+ "openapi_types": (str,),
+ "attribute": "query_filter",
+ "location": "query",
+ },
+ "group_bys": {
+ "openapi_types": (str,),
+ "attribute": "group_bys",
+ "location": "query",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases",
+ "operation_id": "create_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CaseCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_automation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AutomationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules",
+ "operation_id": "create_case_automation_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AutomationRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_jira_issue_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/jira_issues",
+ "operation_id": "create_case_jira_issue",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (JiraIssueCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/link",
+ "operation_id": "create_case_link",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CaseLinkCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_notebook_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/notebook",
+ "operation_id": "create_case_notebook",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (NotebookCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_service_now_ticket_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/servicenow_tickets",
+ "operation_id": "create_case_service_now_ticket",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceNowTicketCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_case_view_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseViewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/views",
+ "operation_id": "create_case_view",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CaseViewCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_maintenance_window_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceWindowResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/maintenance_windows",
+ "operation_id": "create_maintenance_window",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MaintenanceWindowCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProjectResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects",
+ "operation_id": "create_project",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ProjectCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_project_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/notification_rules",
+ "operation_id": "create_project_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseNotificationRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_case_automation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules/{rule_id}",
+ "operation_id": "delete_case_automation_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_case_comment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/{case_id}/comment/{cell_id}",
+ "operation_id": "delete_case_comment",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "cell_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "cell_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_case_custom_attribute_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}",
+ "operation_id": "delete_case_custom_attribute",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "custom_attribute_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_attribute_key",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_case_link_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/link/{link_id}",
+ "operation_id": "delete_case_link",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "link_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "link_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_case_view_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/views/{view_id}",
+ "operation_id": "delete_case_view",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "view_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "view_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_maintenance_window_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/maintenance_windows/{maintenance_window_id}",
+ "operation_id": "delete_maintenance_window",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "maintenance_window_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "maintenance_window_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_project_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}",
+ "operation_id": "delete_project",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_project_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/notification_rules/{notification_rule_id}",
+ "operation_id": "delete_project_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "notification_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "notification_rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._disable_case_automation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AutomationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules/{rule_id}/disable",
+ "operation_id": "disable_case_automation_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._enable_case_automation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AutomationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules/{rule_id}/enable",
+ "operation_id": "enable_case_automation_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._favorite_case_project_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/favorites",
+ "operation_id": "favorite_case_project",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}",
+ "operation_id": "get_case",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_case_automation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AutomationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules/{rule_id}",
+ "operation_id": "get_case_automation_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_case_view_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseViewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/views/{view_id}",
+ "operation_id": "get_case_view",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "view_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "view_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProjectResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}",
+ "operation_id": "get_project",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_project_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseNotificationRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/notification_rules",
+ "operation_id": "get_project_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_projects_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProjectsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects",
+ "operation_id": "get_projects",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._link_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/incidents",
+ "operation_id": "link_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToIncidentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._link_jira_issue_to_case_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/jira_issues",
+ "operation_id": "link_jira_issue_to_case",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (JiraIssueLinkRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_case_automation_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (AutomationRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules",
+ "operation_id": "list_case_automation_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_case_links_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseLinksResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/link",
+ "operation_id": "list_case_links",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "entity_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity_type",
+ "location": "query",
+ },
+ "entity_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity_id",
+ "location": "query",
+ },
+ "relationship": {
+ "openapi_types": (str,),
+ "attribute": "relationship",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_case_timeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (TimelineResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/timelines",
+ "operation_id": "list_case_timeline",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort_ascending": {
+ "openapi_types": (bool,),
+ "attribute": "sort[ascending]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_case_views_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseViewsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/views",
+ "operation_id": "list_case_views",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_case_watchers_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseWatchersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/watchers",
+ "operation_id": "list_case_watchers",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_maintenance_windows_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceWindowsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/maintenance_windows",
+ "operation_id": "list_maintenance_windows",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_user_case_project_favorites_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProjectFavoritesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/favorites",
+ "operation_id": "list_user_case_project_favorites",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._move_case_to_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/project",
+ "operation_id": "move_case_to_project",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ProjectRelationship,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._remove_case_insights_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/insights",
+ "operation_id": "remove_case_insights",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseInsightsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_cases_endpoint = _Endpoint(
+ settings={
+ "response_type": (CasesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases",
+ "operation_id": "search_cases",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort_field": {
+ "openapi_types": (CaseSortableField,),
+ "attribute": "sort[field]",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "sort_asc": {
+ "openapi_types": (bool,),
+ "attribute": "sort[asc]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._unarchive_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/unarchive",
+ "operation_id": "unarchive_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseEmptyRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._unassign_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/unassign",
+ "operation_id": "unassign_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseEmptyRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._unfavorite_case_project_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/favorites",
+ "operation_id": "unfavorite_case_project",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._unlink_jira_issue_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/relationships/jira_issues",
+ "operation_id": "unlink_jira_issue",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._unwatch_case_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/watchers/{user_uuid}",
+ "operation_id": "unwatch_case",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "user_uuid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_attributes_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/attributes",
+ "operation_id": "update_attributes",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateAttributesRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_automation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AutomationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/rules/{rule_id}",
+ "operation_id": "update_case_automation_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AutomationRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_comment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/comment/{cell_id}",
+ "operation_id": "update_case_comment",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "cell_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "cell_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateCommentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_custom_attribute_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}",
+ "operation_id": "update_case_custom_attribute",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "custom_attribute_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_attribute_key",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateCustomAttributeRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_description_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/description",
+ "operation_id": "update_case_description",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateDescriptionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_due_date_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/due_date",
+ "operation_id": "update_case_due_date",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateDueDateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_resolved_reason_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/resolved_reason",
+ "operation_id": "update_case_resolved_reason",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateResolvedReasonRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_title_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/title",
+ "operation_id": "update_case_title",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateTitleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_view_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseViewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/views/{view_id}",
+ "operation_id": "update_case_view",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "view_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "view_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseViewUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_maintenance_window_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceWindowResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/maintenance_windows/{maintenance_window_id}",
+ "operation_id": "update_maintenance_window",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "maintenance_window_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "maintenance_window_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MaintenanceWindowUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_priority_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/priority",
+ "operation_id": "update_priority",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdatePriorityRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProjectResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}",
+ "operation_id": "update_project",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ProjectUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_project_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/projects/{project_id}/notification_rules/{notification_rule_id}",
+ "operation_id": "update_project_notification_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "notification_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "notification_rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseNotificationRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/status",
+ "operation_id": "update_status",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseUpdateStatusRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._watch_case_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/{case_id}/watchers/{user_uuid}",
+ "operation_id": "watch_case",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "user_uuid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ def add_case_insights(self, case_id: str, body: CaseInsightsRequest, ) -> CaseResponse:
+ """Add insights to a case.
+
+ Adds one or more insights to a case. Insights are references to related Datadog resources (such as monitors, security signals, incidents, or error tracking issues) that provide investigative context. Up to 100 insights can be added per request. Each insight requires a type (see ``CaseInsightType`` for allowed values), a ref (URL path to the resource), and a resource_id.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case insights request.
+ :type body: CaseInsightsRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._add_case_insights_endpoint.call_with_http_info(**kwargs)
+
+ def aggregate_cases(self, body: CaseAggregateRequest, ) -> CaseAggregateResponse:
+ """Aggregate cases.
+
+ Performs an aggregation query over cases, grouping results by specified fields and returning counts per group along with a total. Useful for dashboards and analytics.
+
+ :param body: Case aggregate request payload.
+ :type body: CaseAggregateRequest
+ :rtype: CaseAggregateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_cases_endpoint.call_with_http_info(**kwargs)
+
+ def archive_case(self, case_id: str, body: CaseEmptyRequest, ) -> CaseResponse:
+ """Archive case.
+
+ Archive case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Archive case payload
+ :type body: CaseEmptyRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._archive_case_endpoint.call_with_http_info(**kwargs)
+
+ def assign_case(self, case_id: str, body: CaseAssignRequest, ) -> CaseResponse:
+ """Assign case.
+
+ Assign case to a user
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Assign case payload
+ :type body: CaseAssignRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._assign_case_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_update_cases(self, body: CaseBulkUpdateRequest, ) -> None:
+ """Bulk update cases.
+
+ Applies a single action (such as changing priority, status, assignment, or archiving) to multiple cases at once. The list of case IDs and the action type with its payload are specified in the request body.
+
+ :param body: Case bulk update request payload.
+ :type body: CaseBulkUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_update_cases_endpoint.call_with_http_info(**kwargs)
+
+ def comment_case(self, case_id: str, body: CaseCommentRequest, ) -> TimelineResponse:
+ """Comment case.
+
+ Comment case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case comment payload
+ :type body: CaseCommentRequest
+ :rtype: TimelineResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._comment_case_endpoint.call_with_http_info(**kwargs)
+
+ def count_cases(self, *, query_filter: Union[str, UnsetType]=unset, group_bys: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> CaseCountResponse:
+ """Count cases.
+
+ Returns case counts, optionally grouped by one or more fields (for example, status, priority). Supports a query filter to narrow the scope.
+
+ :param query_filter: Filter query for cases.
+ :type query_filter: str, optional
+ :param group_bys: Comma-separated fields to group by.
+ :type group_bys: str, optional
+ :param limit: Maximum facet values to return.
+ :type limit: int, optional
+ :rtype: CaseCountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query_filter is not unset:
+ kwargs["query_filter"] = query_filter
+
+ if group_bys is not unset:
+ kwargs["group_bys"] = group_bys
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._count_cases_endpoint.call_with_http_info(**kwargs)
+
+ def create_case(self, body: CaseCreateRequest, ) -> CaseResponse:
+ """Create a case.
+
+ Create a Case
+
+ :param body: Case payload
+ :type body: CaseCreateRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_case_endpoint.call_with_http_info(**kwargs)
+
+ def create_case_automation_rule(self, project_id: str, body: AutomationRuleCreateRequest, ) -> AutomationRuleResponse:
+ """Create an automation rule.
+
+ Creates an automation rule for a project. The rule defines a trigger event (for example, case created, status transitioned) and an action to execute.
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :param body: Automation rule payload.
+ :type body: AutomationRuleCreateRequest
+ :rtype: AutomationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._create_case_automation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_case_jira_issue(self, case_id: str, body: JiraIssueCreateRequest, ) -> None:
+ """Create Jira issue for case.
+
+ Create a new Jira issue and link it to a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Jira issue creation request
+ :type body: JiraIssueCreateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._create_case_jira_issue_endpoint.call_with_http_info(**kwargs)
+
+ def create_case_link(self, body: CaseLinkCreateRequest, ) -> CaseLinkResponse:
+ """Create a case link.
+
+ Creates a directional link between two cases (for example, case A blocks case B). The parent and child cases and their relationship type must be specified.
+
+ :param body: Case link create request.
+ :type body: CaseLinkCreateRequest
+ :rtype: CaseLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_case_link_endpoint.call_with_http_info(**kwargs)
+
+ def create_case_notebook(self, case_id: str, body: NotebookCreateRequest, ) -> None:
+ """Create investigation notebook for case.
+
+ Create a new investigation notebook and link it to a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Notebook creation request
+ :type body: NotebookCreateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._create_case_notebook_endpoint.call_with_http_info(**kwargs)
+
+ def create_case_service_now_ticket(self, case_id: str, body: ServiceNowTicketCreateRequest, ) -> None:
+ """Create ServiceNow ticket for case.
+
+ Create a new ServiceNow incident ticket and link it to a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: ServiceNow ticket creation request
+ :type body: ServiceNowTicketCreateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._create_case_service_now_ticket_endpoint.call_with_http_info(**kwargs)
+
+ def create_case_view(self, body: CaseViewCreateRequest, ) -> CaseViewResponse:
+ """Create a case view.
+
+ Creates a new saved case view with a name, filter query, and associated project. Optionally, a notification rule can be linked to the view.
+
+ :param body: Case view payload.
+ :type body: CaseViewCreateRequest
+ :rtype: CaseViewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_case_view_endpoint.call_with_http_info(**kwargs)
+
+ def create_maintenance_window(self, body: MaintenanceWindowCreateRequest, ) -> MaintenanceWindowResponse:
+ """Create a maintenance window.
+
+ Creates a maintenance window for event management cases with a name, case filter query, and time range (start and end).
+
+ :param body: Maintenance window payload.
+ :type body: MaintenanceWindowCreateRequest
+ :rtype: MaintenanceWindowResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_maintenance_window_endpoint.call_with_http_info(**kwargs)
+
+ def create_project(self, body: ProjectCreateRequest, ) -> ProjectResponse:
+ """Create a project.
+
+ Create a project.
+
+ :param body: Project payload.
+ :type body: ProjectCreateRequest
+ :rtype: ProjectResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_project_endpoint.call_with_http_info(**kwargs)
+
+ def create_project_notification_rule(self, project_id: str, body: CaseNotificationRuleCreateRequest, ) -> CaseNotificationRuleResponse:
+ """Create a notification rule.
+
+ Create a notification rule for a project.
+
+ :param project_id: Project UUID
+ :type project_id: str
+ :param body: Notification rule payload
+ :type body: CaseNotificationRuleCreateRequest
+ :rtype: CaseNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._create_project_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_case_automation_rule(self, project_id: str, rule_id: str, ) -> None:
+ """Delete an automation rule.
+
+ Permanently deletes an automation rule from a project.
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :param rule_id: The UUID of the automation rule.
+ :type rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_case_automation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_case_comment(self, case_id: str, cell_id: str, ) -> None:
+ """Delete case comment.
+
+ Delete case comment
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param cell_id: The UUID of the timeline cell (comment) to update.
+ :type cell_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["cell_id"] = cell_id
+
+ return self._delete_case_comment_endpoint.call_with_http_info(**kwargs)
+
+ def delete_case_custom_attribute(self, case_id: str, custom_attribute_key: str, ) -> CaseResponse:
+ """Delete custom attribute from case.
+
+ Delete custom attribute from case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param custom_attribute_key: Case Custom attribute's key
+ :type custom_attribute_key: str
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["custom_attribute_key"] = custom_attribute_key
+
+ return self._delete_case_custom_attribute_endpoint.call_with_http_info(**kwargs)
+
+ def delete_case_link(self, link_id: str, ) -> None:
+ """Delete a case link.
+
+ Deletes an existing link between cases by link ID.
+
+ :param link_id: The UUID of the case link.
+ :type link_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["link_id"] = link_id
+
+ return self._delete_case_link_endpoint.call_with_http_info(**kwargs)
+
+ def delete_case_view(self, view_id: str, ) -> None:
+ """Delete a case view.
+
+ Permanently deletes a saved case view.
+
+ :param view_id: The UUID of the case view.
+ :type view_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["view_id"] = view_id
+
+ return self._delete_case_view_endpoint.call_with_http_info(**kwargs)
+
+ def delete_maintenance_window(self, maintenance_window_id: str, ) -> None:
+ """Delete a maintenance window.
+
+ Permanently deletes a maintenance window.
+
+ :param maintenance_window_id: The UUID of the maintenance window.
+ :type maintenance_window_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["maintenance_window_id"] = maintenance_window_id
+
+ return self._delete_maintenance_window_endpoint.call_with_http_info(**kwargs)
+
+ def delete_project(self, project_id: str, ) -> None:
+ """Remove a project.
+
+ Remove a project using the project's ``id``.
+
+ :param project_id: Project UUID.
+ :type project_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._delete_project_endpoint.call_with_http_info(**kwargs)
+
+ def delete_project_notification_rule(self, project_id: str, notification_rule_id: str, ) -> None:
+ """Delete a notification rule.
+
+ Delete a notification rule using the notification rule's ``id``.
+
+ :param project_id: Project UUID
+ :type project_id: str
+ :param notification_rule_id: Notification Rule UUID
+ :type notification_rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["notification_rule_id"] = notification_rule_id
+
+ return self._delete_project_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def disable_case_automation_rule(self, project_id: str, rule_id: str, ) -> AutomationRuleResponse:
+ """Disable an automation rule.
+
+ Disables an automation rule so it no longer triggers on case events. The rule configuration is preserved.
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :param rule_id: The UUID of the automation rule.
+ :type rule_id: str
+ :rtype: AutomationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._disable_case_automation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def enable_case_automation_rule(self, project_id: str, rule_id: str, ) -> AutomationRuleResponse:
+ """Enable an automation rule.
+
+ Enables a previously disabled automation rule so it triggers on matching case events.
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :param rule_id: The UUID of the automation rule.
+ :type rule_id: str
+ :rtype: AutomationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._enable_case_automation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def favorite_case_project(self, project_id: str, ) -> None:
+ """Favorite a project.
+
+ Marks a case project as a favorite for the current authenticated user.
+
+ :param project_id: Project UUID.
+ :type project_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._favorite_case_project_endpoint.call_with_http_info(**kwargs)
+
+ def get_case(self, case_id: str, ) -> CaseResponse:
+ """Get the details of a case.
+
+ Get the details of case by ``case_id``
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ return self._get_case_endpoint.call_with_http_info(**kwargs)
+
+ def get_case_automation_rule(self, project_id: str, rule_id: str, ) -> AutomationRuleResponse:
+ """Get an automation rule.
+
+ Returns a single automation rule identified by its UUID, including its trigger, action, and current state (enabled/disabled).
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :param rule_id: The UUID of the automation rule.
+ :type rule_id: str
+ :rtype: AutomationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._get_case_automation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_case_view(self, view_id: str, ) -> CaseViewResponse:
+ """Get a case view.
+
+ Returns a single saved case view identified by its UUID, including its query, associated project, and timestamps.
+
+ :param view_id: The UUID of the case view.
+ :type view_id: str
+ :rtype: CaseViewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["view_id"] = view_id
+
+ return self._get_case_view_endpoint.call_with_http_info(**kwargs)
+
+ def get_project(self, project_id: str, ) -> ProjectResponse:
+ """Get the details of a project.
+
+ Get the details of a project by ``project_id``.
+
+ :param project_id: Project UUID.
+ :type project_id: str
+ :rtype: ProjectResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._get_project_endpoint.call_with_http_info(**kwargs)
+
+ def get_project_notification_rules(self, project_id: str, ) -> CaseNotificationRulesResponse:
+ """Get notification rules.
+
+ Get all notification rules for a project.
+
+ :param project_id: Project UUID
+ :type project_id: str
+ :rtype: CaseNotificationRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._get_project_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_projects(self, ) -> ProjectsResponse:
+ """Get all projects.
+
+ Get all projects.
+
+ :rtype: ProjectsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_projects_endpoint.call_with_http_info(**kwargs)
+
+ def link_incident(self, case_id: str, body: RelationshipToIncidentRequest, ) -> CaseResponse:
+ """Link incident to case.
+
+ Link an incident to a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Incident link request
+ :type body: RelationshipToIncidentRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._link_incident_endpoint.call_with_http_info(**kwargs)
+
+ def link_jira_issue_to_case(self, case_id: str, body: JiraIssueLinkRequest, ) -> None:
+ """Link existing Jira issue to case.
+
+ Link an existing Jira issue to a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Jira issue link request
+ :type body: JiraIssueLinkRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._link_jira_issue_to_case_endpoint.call_with_http_info(**kwargs)
+
+ def list_case_automation_rules(self, project_id: str, ) -> AutomationRulesResponse:
+ """List automation rules.
+
+ Returns all automation rules configured for a project. Automation rules allow automatic actions to be triggered by case events like creation, status transitions, or attribute changes.
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :rtype: AutomationRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._list_case_automation_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_case_links(self, entity_type: str, entity_id: str, *, relationship: Union[str, UnsetType]=unset, ) -> CaseLinksResponse:
+ """List case links.
+
+ Returns all links associated with a case. Links define relationships (for example, BLOCKS) between cases. Requires entity_type and entity_id query parameters.
+
+ :param entity_type: The entity type to look up links for. Use ``CASE`` to find links for a specific case.
+ :type entity_type: str
+ :param entity_id: The UUID of the entity to look up links for.
+ :type entity_id: str
+ :param relationship: Optional filter to only return links of a specific relationship type (for example, ``BLOCKS`` or ``CAUSES`` ).
+ :type relationship: str, optional
+ :rtype: CaseLinksResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity_type"] = entity_type
+
+ kwargs["entity_id"] = entity_id
+
+ if relationship is not unset:
+ kwargs["relationship"] = relationship
+
+ return self._list_case_links_endpoint.call_with_http_info(**kwargs)
+
+ def list_case_timeline(self, case_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort_ascending: Union[bool, UnsetType]=unset, ) -> TimelineResponse:
+ """Get case timeline.
+
+ Returns the timeline of events for a case, including comments, status changes, and other activity. Supports pagination and sort order.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param page_size: Number of timeline cells to return per page.
+ :type page_size: int, optional
+ :param page_number: Zero-based page number for pagination.
+ :type page_number: int, optional
+ :param sort_ascending: If ``true`` , returns timeline cells in chronological order (oldest first). Defaults to ``false`` (newest first).
+ :type sort_ascending: bool, optional
+ :rtype: TimelineResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort_ascending is not unset:
+ kwargs["sort_ascending"] = sort_ascending
+
+ return self._list_case_timeline_endpoint.call_with_http_info(**kwargs)
+
+ def list_case_views(self, project_id: str, ) -> CaseViewsResponse:
+ """List case views.
+
+ Returns all saved case views for a given project. Views are saved search queries that allow quick access to filtered lists of cases.
+
+ :param project_id: Filter views by project identifier.
+ :type project_id: str
+ :rtype: CaseViewsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._list_case_views_endpoint.call_with_http_info(**kwargs)
+
+ def list_case_watchers(self, case_id: str, ) -> CaseWatchersResponse:
+ """List case watchers.
+
+ Returns the list of users who are watching a case. Watchers receive notifications about updates to the case.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :rtype: CaseWatchersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ return self._list_case_watchers_endpoint.call_with_http_info(**kwargs)
+
+ def list_maintenance_windows(self, ) -> MaintenanceWindowsResponse:
+ """List maintenance windows.
+
+ Returns all configured maintenance windows for event management cases. Maintenance windows define time periods during which case notifications and automation rules are suppressed for cases matching a given query.
+
+ :rtype: MaintenanceWindowsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_maintenance_windows_endpoint.call_with_http_info(**kwargs)
+
+ def list_user_case_project_favorites(self, ) -> ProjectFavoritesResponse:
+ """List project favorites.
+
+ Returns the list of case projects that the current authenticated user has marked as favorites.
+
+ :rtype: ProjectFavoritesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_user_case_project_favorites_endpoint.call_with_http_info(**kwargs)
+
+ def move_case_to_project(self, case_id: str, body: ProjectRelationship, ) -> CaseResponse:
+ """Update case project.
+
+ Update the project associated with a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Project update request
+ :type body: ProjectRelationship
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._move_case_to_project_endpoint.call_with_http_info(**kwargs)
+
+ def remove_case_insights(self, case_id: str, body: CaseInsightsRequest, ) -> CaseResponse:
+ """Remove insights from a case.
+
+ Removes one or more previously added insights from a case by specifying their type and resource identifier in the request body.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case insights request.
+ :type body: CaseInsightsRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._remove_case_insights_endpoint.call_with_http_info(**kwargs)
+
+ def search_cases(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort_field: Union[CaseSortableField, UnsetType]=unset, filter: Union[str, UnsetType]=unset, sort_asc: Union[bool, UnsetType]=unset, ) -> CasesResponse:
+ """Search cases.
+
+ Search cases.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort_field: Specify which field to sort
+ :type sort_field: CaseSortableField, optional
+ :param filter: Search query
+ :type filter: str, optional
+ :param sort_asc: Specify if order is ascending or not
+ :type sort_asc: bool, optional
+ :rtype: CasesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort_field is not unset:
+ kwargs["sort_field"] = sort_field
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if sort_asc is not unset:
+ kwargs["sort_asc"] = sort_asc
+
+ return self._search_cases_endpoint.call_with_http_info(**kwargs)
+
+ def search_cases_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort_field: Union[CaseSortableField, UnsetType]=unset, filter: Union[str, UnsetType]=unset, sort_asc: Union[bool, UnsetType]=unset, ) -> collections.abc.Iterable[Case]:
+ """Search cases.
+
+ Provide a paginated version of :meth:`search_cases`, returning all items.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort_field: Specify which field to sort
+ :type sort_field: CaseSortableField, optional
+ :param filter: Search query
+ :type filter: str, optional
+ :param sort_asc: Specify if order is ascending or not
+ :type sort_asc: bool, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Case]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort_field is not unset:
+ kwargs["sort_field"] = sort_field
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if sort_asc is not unset:
+ kwargs["sort_asc"] = sort_asc
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._search_cases_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 1,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def unarchive_case(self, case_id: str, body: CaseEmptyRequest, ) -> CaseResponse:
+ """Unarchive case.
+
+ Unarchive case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Unarchive case payload
+ :type body: CaseEmptyRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._unarchive_case_endpoint.call_with_http_info(**kwargs)
+
+ def unassign_case(self, case_id: str, body: CaseEmptyRequest, ) -> CaseResponse:
+ """Unassign case.
+
+ Unassign case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Unassign case payload
+ :type body: CaseEmptyRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._unassign_case_endpoint.call_with_http_info(**kwargs)
+
+ def unfavorite_case_project(self, project_id: str, ) -> None:
+ """Unfavorite a project.
+
+ Removes a case project from the current user's favorites list.
+
+ :param project_id: Project UUID.
+ :type project_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._unfavorite_case_project_endpoint.call_with_http_info(**kwargs)
+
+ def unlink_jira_issue(self, case_id: str, ) -> None:
+ """Remove Jira issue link from case.
+
+ Remove the link between a Jira issue and a case
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ return self._unlink_jira_issue_endpoint.call_with_http_info(**kwargs)
+
+ def unwatch_case(self, case_id: str, user_uuid: str, ) -> None:
+ """Unwatch a case.
+
+ Removes a user from the watchers list of a case. The user no longer receives notifications about updates to the case.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param user_uuid: The UUID of the user to add or remove as a watcher.
+ :type user_uuid: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["user_uuid"] = user_uuid
+
+ return self._unwatch_case_endpoint.call_with_http_info(**kwargs)
+
+ def update_attributes(self, case_id: str, body: CaseUpdateAttributesRequest, ) -> CaseResponse:
+ """Update case attributes.
+
+ Update case attributes
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case attributes update payload
+ :type body: CaseUpdateAttributesRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_attributes_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_automation_rule(self, project_id: str, rule_id: str, body: AutomationRuleUpdateRequest, ) -> AutomationRuleResponse:
+ """Update an automation rule.
+
+ Updates the trigger, action, name, or state of an existing automation rule.
+
+ :param project_id: The UUID of the project that owns the automation rules.
+ :type project_id: str
+ :param rule_id: The UUID of the automation rule.
+ :type rule_id: str
+ :param body: Automation rule payload.
+ :type body: AutomationRuleUpdateRequest
+ :rtype: AutomationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_case_automation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_comment(self, case_id: str, cell_id: str, body: CaseUpdateCommentRequest, ) -> None:
+ """Update case comment.
+
+ Updates the text content of an existing comment on a case timeline. The comment is identified by its cell ID.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param cell_id: The UUID of the timeline cell (comment) to update.
+ :type cell_id: str
+ :param body: Case update comment payload.
+ :type body: CaseUpdateCommentRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["cell_id"] = cell_id
+
+ kwargs["body"] = body
+
+ return self._update_case_comment_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_custom_attribute(self, case_id: str, custom_attribute_key: str, body: CaseUpdateCustomAttributeRequest, ) -> CaseResponse:
+ """Update case custom attribute.
+
+ Update case custom attribute
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param custom_attribute_key: Case Custom attribute's key
+ :type custom_attribute_key: str
+ :param body: Update case custom attribute payload
+ :type body: CaseUpdateCustomAttributeRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["custom_attribute_key"] = custom_attribute_key
+
+ kwargs["body"] = body
+
+ return self._update_case_custom_attribute_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_description(self, case_id: str, body: CaseUpdateDescriptionRequest, ) -> CaseResponse:
+ """Update case description.
+
+ Update case description
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case description update payload
+ :type body: CaseUpdateDescriptionRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_case_description_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_due_date(self, case_id: str, body: CaseUpdateDueDateRequest, ) -> CaseResponse:
+ """Update case due date.
+
+ Sets or updates the due date for a case. The due date is a calendar date (without a time component) indicating when the case should be resolved.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case due date update payload.
+ :type body: CaseUpdateDueDateRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_case_due_date_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_resolved_reason(self, case_id: str, body: CaseUpdateResolvedReasonRequest, ) -> CaseResponse:
+ """Update case resolved reason.
+
+ Sets the resolved reason for a security case (for example, FALSE_POSITIVE, TRUE_POSITIVE). Applicable to security-type cases.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case resolved reason update payload.
+ :type body: CaseUpdateResolvedReasonRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_case_resolved_reason_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_title(self, case_id: str, body: CaseUpdateTitleRequest, ) -> CaseResponse:
+ """Update case title.
+
+ Update case title
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case title update payload
+ :type body: CaseUpdateTitleRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_case_title_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_view(self, view_id: str, body: CaseViewUpdateRequest, ) -> CaseViewResponse:
+ """Update a case view.
+
+ Updates the name, query, or notification rule of an existing case view.
+
+ :param view_id: The UUID of the case view.
+ :type view_id: str
+ :param body: Case view payload.
+ :type body: CaseViewUpdateRequest
+ :rtype: CaseViewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["view_id"] = view_id
+
+ kwargs["body"] = body
+
+ return self._update_case_view_endpoint.call_with_http_info(**kwargs)
+
+ def update_maintenance_window(self, maintenance_window_id: str, body: MaintenanceWindowUpdateRequest, ) -> MaintenanceWindowResponse:
+ """Update a maintenance window.
+
+ Updates the name, query, start time, or end time of an existing maintenance window.
+
+ :param maintenance_window_id: The UUID of the maintenance window.
+ :type maintenance_window_id: str
+ :param body: Maintenance window payload.
+ :type body: MaintenanceWindowUpdateRequest
+ :rtype: MaintenanceWindowResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["maintenance_window_id"] = maintenance_window_id
+
+ kwargs["body"] = body
+
+ return self._update_maintenance_window_endpoint.call_with_http_info(**kwargs)
+
+ def update_priority(self, case_id: str, body: CaseUpdatePriorityRequest, ) -> CaseResponse:
+ """Update case priority.
+
+ Update case priority
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case priority update payload
+ :type body: CaseUpdatePriorityRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_priority_endpoint.call_with_http_info(**kwargs)
+
+ def update_project(self, project_id: str, body: ProjectUpdateRequest, ) -> ProjectResponse:
+ """Update a project.
+
+ Update a project.
+
+ :param project_id: Project UUID.
+ :type project_id: str
+ :param body: Project payload.
+ :type body: ProjectUpdateRequest
+ :rtype: ProjectResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._update_project_endpoint.call_with_http_info(**kwargs)
+
+ def update_project_notification_rule(self, project_id: str, notification_rule_id: str, body: CaseNotificationRuleUpdateRequest, ) -> None:
+ """Update a notification rule.
+
+ Update a notification rule.
+
+ :param project_id: Project UUID
+ :type project_id: str
+ :param notification_rule_id: Notification Rule UUID
+ :type notification_rule_id: str
+ :param body: Notification rule payload
+ :type body: CaseNotificationRuleUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["notification_rule_id"] = notification_rule_id
+
+ kwargs["body"] = body
+
+ return self._update_project_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_status(self, case_id: str, body: CaseUpdateStatusRequest, ) -> CaseResponse:
+ """Update case status.
+
+ Update case status
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param body: Case status update payload
+ :type body: CaseUpdateStatusRequest
+ :rtype: CaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._update_status_endpoint.call_with_http_info(**kwargs)
+
+ def watch_case(self, case_id: str, user_uuid: str, ) -> None:
+ """Watch a case.
+
+ Adds a user (identified by their UUID) as a watcher of a case. The user receives notifications about subsequent updates to the case.
+
+ :param case_id: Case's UUID or key
+ :type case_id: str
+ :param user_uuid: The UUID of the user to add or remove as a watcher.
+ :type user_uuid: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["user_uuid"] = user_uuid
+
+ return self._watch_case_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/case_management_attribute_api.py b/datadog_api_client/v2/api/case_management_attribute_api.py
new file mode 100644
index 0000000000..fed504e4dc
--- /dev/null
+++ b/datadog_api_client/v2/api/case_management_attribute_api.py
@@ -0,0 +1,251 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.custom_attribute_configs_response import CustomAttributeConfigsResponse
+from datadog_api_client.v2.model.custom_attribute_config_response import CustomAttributeConfigResponse
+from datadog_api_client.v2.model.custom_attribute_config_create_request import CustomAttributeConfigCreateRequest
+from datadog_api_client.v2.model.custom_attribute_config_update_request import CustomAttributeConfigUpdateRequest
+
+
+class CaseManagementAttributeApi:
+ """
+ View and configure custom attributes within Case Management. See the `Case Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_custom_attribute_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomAttributeConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types/{case_type_id}/custom_attributes",
+ "operation_id": "create_custom_attribute_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "case_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_type_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CustomAttributeConfigCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_attribute_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types/{case_type_id}/custom_attributes/{custom_attribute_id}",
+ "operation_id": "delete_custom_attribute_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_type_id",
+ "location": "path",
+ },
+ "custom_attribute_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_attribute_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_all_custom_attribute_configs_by_case_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomAttributeConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types/{case_type_id}/custom_attributes",
+ "operation_id": "get_all_custom_attribute_configs_by_case_type",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "case_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_type_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_all_custom_attributes_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomAttributeConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types/custom_attributes",
+ "operation_id": "get_all_custom_attributes",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_custom_attribute_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomAttributeConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/types/{case_type_id}/custom_attributes/{custom_attribute_id}",
+ "operation_id": "update_custom_attribute_config",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "case_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_type_id",
+ "location": "path",
+ },
+ "custom_attribute_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_attribute_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CustomAttributeConfigUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_custom_attribute_config(self, case_type_id: str, body: CustomAttributeConfigCreateRequest, ) -> CustomAttributeConfigResponse:
+ """Create custom attribute config for a case type.
+
+ Create custom attribute config for a case type
+
+ :param case_type_id: The UUID of the case type.
+ :type case_type_id: str
+ :param body: Custom attribute config payload
+ :type body: CustomAttributeConfigCreateRequest
+ :rtype: CustomAttributeConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_type_id"] = case_type_id
+
+ kwargs["body"] = body
+
+ return self._create_custom_attribute_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_attribute_config(self, case_type_id: str, custom_attribute_id: str, ) -> None:
+ """Delete custom attributes config.
+
+ Delete custom attribute config
+
+ :param case_type_id: The UUID of the case type.
+ :type case_type_id: str
+ :param custom_attribute_id: Case Custom attribute's UUID
+ :type custom_attribute_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_type_id"] = case_type_id
+
+ kwargs["custom_attribute_id"] = custom_attribute_id
+
+ return self._delete_custom_attribute_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_all_custom_attribute_configs_by_case_type(self, case_type_id: str, ) -> CustomAttributeConfigsResponse:
+ """Get all custom attributes config of case type.
+
+ Get all custom attribute config of case type
+
+ :param case_type_id: The UUID of the case type.
+ :type case_type_id: str
+ :rtype: CustomAttributeConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_type_id"] = case_type_id
+
+ return self._get_all_custom_attribute_configs_by_case_type_endpoint.call_with_http_info(**kwargs)
+
+ def get_all_custom_attributes(self, ) -> CustomAttributeConfigsResponse:
+ """Get all custom attributes.
+
+ Get all custom attributes
+
+ :rtype: CustomAttributeConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_all_custom_attributes_endpoint.call_with_http_info(**kwargs)
+
+ def update_custom_attribute_config(self, case_type_id: str, custom_attribute_id: str, body: CustomAttributeConfigUpdateRequest, ) -> CustomAttributeConfigResponse:
+ """Update custom attribute config.
+
+ Updates the display name, description, type, or options of an existing custom attribute configuration for a case type.
+
+ :param case_type_id: The UUID of the case type.
+ :type case_type_id: str
+ :param custom_attribute_id: Case Custom attribute's UUID
+ :type custom_attribute_id: str
+ :param body: Custom attribute config payload.
+ :type body: CustomAttributeConfigUpdateRequest
+ :rtype: CustomAttributeConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_type_id"] = case_type_id
+
+ kwargs["custom_attribute_id"] = custom_attribute_id
+
+ kwargs["body"] = body
+
+ return self._update_custom_attribute_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/case_management_type_api.py b/datadog_api_client/v2/api/case_management_type_api.py
new file mode 100644
index 0000000000..a92d7576ef
--- /dev/null
+++ b/datadog_api_client/v2/api/case_management_type_api.py
@@ -0,0 +1,184 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.case_types_response import CaseTypesResponse
+from datadog_api_client.v2.model.case_type_response import CaseTypeResponse
+from datadog_api_client.v2.model.case_type_create_request import CaseTypeCreateRequest
+from datadog_api_client.v2.model.case_type_update_request import CaseTypeUpdateRequest
+
+
+class CaseManagementTypeApi:
+ """
+ View and configure case types within Case Management. See the `Case Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_case_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseTypeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types",
+ "operation_id": "create_case_type",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CaseTypeCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_case_type_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types/{case_type_id}",
+ "operation_id": "delete_case_type",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "case_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_type_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_all_case_types_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseTypesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cases/types",
+ "operation_id": "get_all_case_types",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_case_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (CaseTypeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cases/types/{case_type_id}",
+ "operation_id": "update_case_type",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "case_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_type_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CaseTypeUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_case_type(self, body: CaseTypeCreateRequest, ) -> CaseTypeResponse:
+ """Create a case type.
+
+ Create a Case Type
+
+ :param body: Case type payload
+ :type body: CaseTypeCreateRequest
+ :rtype: CaseTypeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_case_type_endpoint.call_with_http_info(**kwargs)
+
+ def delete_case_type(self, case_type_id: str, ) -> None:
+ """Delete a case type.
+
+ Delete a case type
+
+ :param case_type_id: The UUID of the case type.
+ :type case_type_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_type_id"] = case_type_id
+
+ return self._delete_case_type_endpoint.call_with_http_info(**kwargs)
+
+ def get_all_case_types(self, ) -> CaseTypesResponse:
+ """Get all case types.
+
+ Get all case types
+
+ :rtype: CaseTypesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_all_case_types_endpoint.call_with_http_info(**kwargs)
+
+ def update_case_type(self, case_type_id: str, body: CaseTypeUpdateRequest, ) -> CaseTypeResponse:
+ """Update a case type.
+
+ Updates the name, emoji, or description of an existing case type.
+
+ :param case_type_id: The UUID of the case type.
+ :type case_type_id: str
+ :param body: Case type payload.
+ :type body: CaseTypeUpdateRequest
+ :rtype: CaseTypeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_type_id"] = case_type_id
+
+ kwargs["body"] = body
+
+ return self._update_case_type_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/change_management_api.py b/datadog_api_client/v2/api/change_management_api.py
new file mode 100644
index 0000000000..c662eafab9
--- /dev/null
+++ b/datadog_api_client/v2/api/change_management_api.py
@@ -0,0 +1,309 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.change_request_response import ChangeRequestResponse
+from datadog_api_client.v2.model.change_request_create_request import ChangeRequestCreateRequest
+from datadog_api_client.v2.model.change_request_update_request import ChangeRequestUpdateRequest
+from datadog_api_client.v2.model.change_request_branch_create_request import ChangeRequestBranchCreateRequest
+from datadog_api_client.v2.model.change_request_decision_update_request import ChangeRequestDecisionUpdateRequest
+
+
+class ChangeManagementApi:
+ """
+ View and manage change requests within Change Management. See the `Case Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_change_request_endpoint = _Endpoint(
+ settings={
+ "response_type": (ChangeRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/change-management/change-request",
+ "operation_id": "create_change_request",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ChangeRequestCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_change_request_branch_endpoint = _Endpoint(
+ settings={
+ "response_type": (ChangeRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/change-management/change-request/{change_request_id}/branch",
+ "operation_id": "create_change_request_branch",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "change_request_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "change_request_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ChangeRequestBranchCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_change_request_decision_endpoint = _Endpoint(
+ settings={
+ "response_type": (ChangeRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/change-management/change-request/{change_request_id}/decisions/{decision_id}",
+ "operation_id": "delete_change_request_decision",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "change_request_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "change_request_id",
+ "location": "path",
+ },
+ "decision_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "decision_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_change_request_endpoint = _Endpoint(
+ settings={
+ "response_type": (ChangeRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/change-management/change-request/{change_request_id}",
+ "operation_id": "get_change_request",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "change_request_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "change_request_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_change_request_endpoint = _Endpoint(
+ settings={
+ "response_type": (ChangeRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/change-management/change-request/{change_request_id}",
+ "operation_id": "update_change_request",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "change_request_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "change_request_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ChangeRequestUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_change_request_decision_endpoint = _Endpoint(
+ settings={
+ "response_type": (ChangeRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/change-management/change-request/{change_request_id}/decisions/{decision_id}",
+ "operation_id": "update_change_request_decision",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "change_request_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "change_request_id",
+ "location": "path",
+ },
+ "decision_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "decision_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ChangeRequestDecisionUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_change_request(self, body: ChangeRequestCreateRequest, ) -> ChangeRequestResponse:
+ """Create a change request.
+
+ Create a new change request.
+
+ :param body: Change request payload.
+ :type body: ChangeRequestCreateRequest
+ :rtype: ChangeRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_change_request_endpoint.call_with_http_info(**kwargs)
+
+ def create_change_request_branch(self, change_request_id: str, body: ChangeRequestBranchCreateRequest, ) -> ChangeRequestResponse:
+ """Create a change request branch.
+
+ Create a new branch in a repository for a change request.
+
+ :param change_request_id: The identifier of the change request.
+ :type change_request_id: str
+ :param body: Branch creation payload.
+ :type body: ChangeRequestBranchCreateRequest
+ :rtype: ChangeRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["change_request_id"] = change_request_id
+
+ kwargs["body"] = body
+
+ return self._create_change_request_branch_endpoint.call_with_http_info(**kwargs)
+
+ def delete_change_request_decision(self, change_request_id: str, decision_id: str, ) -> ChangeRequestResponse:
+ """Delete a change request decision.
+
+ Delete a decision from a change request.
+
+ :param change_request_id: The identifier of the change request.
+ :type change_request_id: str
+ :param decision_id: The identifier of the change request decision.
+ :type decision_id: str
+ :rtype: ChangeRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["change_request_id"] = change_request_id
+
+ kwargs["decision_id"] = decision_id
+
+ return self._delete_change_request_decision_endpoint.call_with_http_info(**kwargs)
+
+ def get_change_request(self, change_request_id: str, ) -> ChangeRequestResponse:
+ """Get a change request.
+
+ Get the details of a change request by its ID.
+
+ :param change_request_id: The identifier of the change request.
+ :type change_request_id: str
+ :rtype: ChangeRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["change_request_id"] = change_request_id
+
+ return self._get_change_request_endpoint.call_with_http_info(**kwargs)
+
+ def update_change_request(self, change_request_id: str, body: ChangeRequestUpdateRequest, ) -> ChangeRequestResponse:
+ """Update a change request.
+
+ Update the properties of a change request.
+
+ :param change_request_id: The identifier of the change request.
+ :type change_request_id: str
+ :param body: Change request update payload.
+ :type body: ChangeRequestUpdateRequest
+ :rtype: ChangeRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["change_request_id"] = change_request_id
+
+ kwargs["body"] = body
+
+ return self._update_change_request_endpoint.call_with_http_info(**kwargs)
+
+ def update_change_request_decision(self, change_request_id: str, decision_id: str, body: ChangeRequestDecisionUpdateRequest, ) -> ChangeRequestResponse:
+ """Update a change request decision.
+
+ Update a decision on a change request, such as approving or declining it.
+
+ :param change_request_id: The identifier of the change request.
+ :type change_request_id: str
+ :param decision_id: The identifier of the change request decision.
+ :type decision_id: str
+ :param body: Decision update payload.
+ :type body: ChangeRequestDecisionUpdateRequest
+ :rtype: ChangeRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["change_request_id"] = change_request_id
+
+ kwargs["decision_id"] = decision_id
+
+ kwargs["body"] = body
+
+ return self._update_change_request_decision_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/ci_visibility_git_hub_accounts_api.py b/datadog_api_client/v2/api/ci_visibility_git_hub_accounts_api.py
new file mode 100644
index 0000000000..f5147843e7
--- /dev/null
+++ b/datadog_api_client/v2/api/ci_visibility_git_hub_accounts_api.py
@@ -0,0 +1,107 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.ci_app_git_hub_accounts_response import CIAppGitHubAccountsResponse
+from datadog_api_client.v2.model.ci_app_git_hub_account_response import CIAppGitHubAccountResponse
+from datadog_api_client.v2.model.ci_app_git_hub_account_update_request import CIAppGitHubAccountUpdateRequest
+
+
+class CIVisibilityGitHubAccountsApi:
+ """
+ Manage CI Visibility opt-in status for your GitHub accounts and repositories. See the
+ `CI Visibility GitHub Actions setup page `_
+ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_ci_app_git_hub_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppGitHubAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/github/accounts",
+ "operation_id": "list_ci_app_git_hub_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_ci_app_git_hub_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppGitHubAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/github/accounts",
+ "operation_id": "update_ci_app_git_hub_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CIAppGitHubAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def list_ci_app_git_hub_accounts(self, ) -> CIAppGitHubAccountsResponse:
+ """List GitHub CI Visibility status.
+
+ Retrieve the list of GitHub accounts (organizations or users) available to this Datadog organization
+ through its GitHub App installation, along with each account's and repository's CI Visibility opt-in status.
+
+ :rtype: CIAppGitHubAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_ci_app_git_hub_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def update_ci_app_git_hub_account(self, body: CIAppGitHubAccountUpdateRequest, ) -> CIAppGitHubAccountResponse:
+ """Update GitHub CI Visibility status.
+
+ Enable or disable CI Visibility for a GitHub account, one of its repositories, or both in the same request.
+ The account (and, optionally, repository) are identified by name. Account-level and repository-level
+ changes are independent and may both be supplied in the same request. At least one of ``enabled`` or
+ ``repository.enabled`` must be provided. If the account name matches installations on more than one host,
+ ``host`` must be supplied to disambiguate, otherwise a 409 is returned. Returns a 404 if the CI Visibility
+ GitHub integration is not enabled for this organization, or if the given account or repository cannot be
+ found by name.
+
+ :type body: CIAppGitHubAccountUpdateRequest
+ :rtype: CIAppGitHubAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_ci_app_git_hub_account_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/ci_visibility_pipelines_api.py b/datadog_api_client/v2/api/ci_visibility_pipelines_api.py
new file mode 100644
index 0000000000..c251a46077
--- /dev/null
+++ b/datadog_api_client/v2/api/ci_visibility_pipelines_api.py
@@ -0,0 +1,328 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.ci_app_create_pipeline_event_request import CIAppCreatePipelineEventRequest
+from datadog_api_client.v2.model.ci_app_pipelines_analytics_aggregate_response import CIAppPipelinesAnalyticsAggregateResponse
+from datadog_api_client.v2.model.ci_app_pipelines_aggregate_request import CIAppPipelinesAggregateRequest
+from datadog_api_client.v2.model.ci_app_pipeline_events_response import CIAppPipelineEventsResponse
+from datadog_api_client.v2.model.ci_app_sort import CIAppSort
+from datadog_api_client.v2.model.ci_app_pipeline_event import CIAppPipelineEvent
+from datadog_api_client.v2.model.ci_app_pipeline_events_request import CIAppPipelineEventsRequest
+
+
+class CIVisibilityPipelinesApi:
+ """
+ Search or aggregate your CI Visibility pipeline events and send them to your Datadog site over HTTP. See the `CI Pipeline Visibility in Datadog page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._aggregate_ci_app_pipeline_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppPipelinesAnalyticsAggregateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/pipelines/analytics/aggregate",
+ "operation_id": "aggregate_ci_app_pipeline_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CIAppPipelinesAggregateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_ci_app_pipeline_event_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/ci/pipeline",
+ "operation_id": "create_ci_app_pipeline_event",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CIAppCreatePipelineEventRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_ci_app_pipeline_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppPipelineEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/pipelines/events",
+ "operation_id": "list_ci_app_pipeline_events",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (CIAppSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_ci_app_pipeline_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppPipelineEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/pipelines/events/search",
+ "operation_id": "search_ci_app_pipeline_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (CIAppPipelineEventsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def aggregate_ci_app_pipeline_events(self, body: CIAppPipelinesAggregateRequest, ) -> CIAppPipelinesAnalyticsAggregateResponse:
+ """Aggregate pipelines events.
+
+ Use this API endpoint to aggregate CI Visibility pipeline events into buckets of computed metrics and timeseries.
+
+ :type body: CIAppPipelinesAggregateRequest
+ :rtype: CIAppPipelinesAnalyticsAggregateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_ci_app_pipeline_events_endpoint.call_with_http_info(**kwargs)
+
+ def create_ci_app_pipeline_event(self, body: CIAppCreatePipelineEventRequest, ) -> dict:
+ """Send pipeline event.
+
+ Send your pipeline event to your Datadog platform over HTTP. For details about how pipeline executions are modeled and what execution types we support, see `Pipeline Data Model And Execution Types `_.
+
+ Multiple events can be sent in an array (up to 1000).
+
+ Pipeline events can be submitted with a timestamp that is up to 18 hours in the past.
+ The duration between the event start and end times cannot exceed 1 year.
+
+ :type body: CIAppCreatePipelineEventRequest
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_ci_app_pipeline_event_endpoint.call_with_http_info(**kwargs)
+
+ def list_ci_app_pipeline_events(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[CIAppSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> CIAppPipelineEventsResponse:
+ """Get a list of pipelines events.
+
+ List endpoint returns CI Visibility pipeline events that match a `search query `_.
+ `Results are paginated similarly to logs `_.
+
+ Use this endpoint to see your latest pipeline events.
+
+ :param filter_query: Search query following log syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: CIAppSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+ :rtype: CIAppPipelineEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_ci_app_pipeline_events_endpoint.call_with_http_info(**kwargs)
+
+ def list_ci_app_pipeline_events_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[CIAppSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[CIAppPipelineEvent]:
+ """Get a list of pipelines events.
+
+ Provide a paginated version of :meth:`list_ci_app_pipeline_events`, returning all items.
+
+ :param filter_query: Search query following log syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: CIAppSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[CIAppPipelineEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_ci_app_pipeline_events_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_ci_app_pipeline_events(self, *, body: Union[CIAppPipelineEventsRequest, UnsetType]=unset, ) -> CIAppPipelineEventsResponse:
+ """Search pipelines events.
+
+ List endpoint returns CI Visibility pipeline events that match a `search query `_.
+ `Results are paginated similarly to logs `_.
+
+ Use this endpoint to build complex events filtering and search.
+
+ :type body: CIAppPipelineEventsRequest, optional
+ :rtype: CIAppPipelineEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_ci_app_pipeline_events_endpoint.call_with_http_info(**kwargs)
+
+ def search_ci_app_pipeline_events_with_pagination(self, *, body: Union[CIAppPipelineEventsRequest, UnsetType]=unset, ) -> collections.abc.Iterable[CIAppPipelineEvent]:
+ """Search pipelines events.
+
+ Provide a paginated version of :meth:`search_ci_app_pipeline_events`, returning all items.
+
+ :type body: CIAppPipelineEventsRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[CIAppPipelineEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._search_ci_app_pipeline_events_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/ci_visibility_tests_api.py b/datadog_api_client/v2/api/ci_visibility_tests_api.py
new file mode 100644
index 0000000000..c110709c63
--- /dev/null
+++ b/datadog_api_client/v2/api/ci_visibility_tests_api.py
@@ -0,0 +1,286 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.ci_app_tests_analytics_aggregate_response import CIAppTestsAnalyticsAggregateResponse
+from datadog_api_client.v2.model.ci_app_tests_aggregate_request import CIAppTestsAggregateRequest
+from datadog_api_client.v2.model.ci_app_test_events_response import CIAppTestEventsResponse
+from datadog_api_client.v2.model.ci_app_sort import CIAppSort
+from datadog_api_client.v2.model.ci_app_test_event import CIAppTestEvent
+from datadog_api_client.v2.model.ci_app_test_events_request import CIAppTestEventsRequest
+
+
+class CIVisibilityTestsApi:
+ """
+ Search or aggregate your CI Visibility test events over HTTP. See the `Test Visibility in Datadog page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._aggregate_ci_app_test_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppTestsAnalyticsAggregateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/tests/analytics/aggregate",
+ "operation_id": "aggregate_ci_app_test_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CIAppTestsAggregateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_ci_app_test_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppTestEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/tests/events",
+ "operation_id": "list_ci_app_test_events",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (CIAppSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_ci_app_test_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (CIAppTestEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/tests/events/search",
+ "operation_id": "search_ci_app_test_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (CIAppTestEventsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def aggregate_ci_app_test_events(self, body: CIAppTestsAggregateRequest, ) -> CIAppTestsAnalyticsAggregateResponse:
+ """Aggregate tests events.
+
+ The API endpoint to aggregate CI Visibility test events into buckets of computed metrics and timeseries.
+
+ :type body: CIAppTestsAggregateRequest
+ :rtype: CIAppTestsAnalyticsAggregateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_ci_app_test_events_endpoint.call_with_http_info(**kwargs)
+
+ def list_ci_app_test_events(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[CIAppSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> CIAppTestEventsResponse:
+ """Get a list of tests events.
+
+ List endpoint returns CI Visibility test events that match a `search query `_.
+ `Results are paginated similarly to logs `_.
+
+ Use this endpoint to see your latest test events.
+
+ :param filter_query: Search query following log syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: CIAppSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+ :rtype: CIAppTestEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_ci_app_test_events_endpoint.call_with_http_info(**kwargs)
+
+ def list_ci_app_test_events_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[CIAppSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[CIAppTestEvent]:
+ """Get a list of tests events.
+
+ Provide a paginated version of :meth:`list_ci_app_test_events`, returning all items.
+
+ :param filter_query: Search query following log syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: CIAppSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[CIAppTestEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_ci_app_test_events_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_ci_app_test_events(self, *, body: Union[CIAppTestEventsRequest, UnsetType]=unset, ) -> CIAppTestEventsResponse:
+ """Search tests events.
+
+ List endpoint returns CI Visibility test events that match a `search query `_.
+ `Results are paginated similarly to logs `_.
+
+ Use this endpoint to build complex events filtering and search.
+
+ :type body: CIAppTestEventsRequest, optional
+ :rtype: CIAppTestEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_ci_app_test_events_endpoint.call_with_http_info(**kwargs)
+
+ def search_ci_app_test_events_with_pagination(self, *, body: Union[CIAppTestEventsRequest, UnsetType]=unset, ) -> collections.abc.Iterable[CIAppTestEvent]:
+ """Search tests events.
+
+ Provide a paginated version of :meth:`search_ci_app_test_events`, returning all items.
+
+ :type body: CIAppTestEventsRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[CIAppTestEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._search_ci_app_test_events_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/cloud_authentication_api.py b/datadog_api_client/v2/api/cloud_authentication_api.py
new file mode 100644
index 0000000000..5a700efbbc
--- /dev/null
+++ b/datadog_api_client/v2/api/cloud_authentication_api.py
@@ -0,0 +1,172 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.aws_cloud_auth_persona_mappings_response import AWSCloudAuthPersonaMappingsResponse
+from datadog_api_client.v2.model.aws_cloud_auth_persona_mapping_response import AWSCloudAuthPersonaMappingResponse
+from datadog_api_client.v2.model.aws_cloud_auth_persona_mapping_create_request import AWSCloudAuthPersonaMappingCreateRequest
+
+
+class CloudAuthenticationApi:
+ """
+ Configure AWS cloud authentication mappings for persona and intake authentication through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_aws_cloud_auth_persona_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCloudAuthPersonaMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cloud_auth/aws/persona_mapping",
+ "operation_id": "create_aws_cloud_auth_persona_mapping",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AWSCloudAuthPersonaMappingCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_aws_cloud_auth_persona_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cloud_auth/aws/persona_mapping/{persona_mapping_id}",
+ "operation_id": "delete_aws_cloud_auth_persona_mapping",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "persona_mapping_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "persona_mapping_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aws_cloud_auth_persona_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCloudAuthPersonaMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cloud_auth/aws/persona_mapping/{persona_mapping_id}",
+ "operation_id": "get_aws_cloud_auth_persona_mapping",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "persona_mapping_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "persona_mapping_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_aws_cloud_auth_persona_mappings_endpoint = _Endpoint(
+ settings={
+ "response_type": (AWSCloudAuthPersonaMappingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cloud_auth/aws/persona_mapping",
+ "operation_id": "list_aws_cloud_auth_persona_mappings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_aws_cloud_auth_persona_mapping(self, body: AWSCloudAuthPersonaMappingCreateRequest, ) -> AWSCloudAuthPersonaMappingResponse:
+ """Create an AWS cloud authentication persona mapping.
+
+ Create an AWS cloud authentication persona mapping. This endpoint associates an AWS IAM principal with a Datadog user.
+
+ :type body: AWSCloudAuthPersonaMappingCreateRequest
+ :rtype: AWSCloudAuthPersonaMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_aws_cloud_auth_persona_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def delete_aws_cloud_auth_persona_mapping(self, persona_mapping_id: str, ) -> None:
+ """Delete an AWS cloud authentication persona mapping.
+
+ Delete an AWS cloud authentication persona mapping by ID. This removes the association between an AWS IAM principal and a Datadog user.
+
+ :param persona_mapping_id: The ID of the persona mapping
+ :type persona_mapping_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["persona_mapping_id"] = persona_mapping_id
+
+ return self._delete_aws_cloud_auth_persona_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def get_aws_cloud_auth_persona_mapping(self, persona_mapping_id: str, ) -> AWSCloudAuthPersonaMappingResponse:
+ """Get an AWS cloud authentication persona mapping.
+
+ Get a specific AWS cloud authentication persona mapping by ID. This endpoint retrieves a single configured persona mapping that associates an AWS IAM principal with a Datadog user.
+
+ :param persona_mapping_id: The ID of the persona mapping
+ :type persona_mapping_id: str
+ :rtype: AWSCloudAuthPersonaMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["persona_mapping_id"] = persona_mapping_id
+
+ return self._get_aws_cloud_auth_persona_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def list_aws_cloud_auth_persona_mappings(self, ) -> AWSCloudAuthPersonaMappingsResponse:
+ """List AWS cloud authentication persona mappings.
+
+ List all AWS cloud authentication persona mappings. This endpoint retrieves all configured persona mappings that associate AWS IAM principals with Datadog users.
+
+ :rtype: AWSCloudAuthPersonaMappingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_aws_cloud_auth_persona_mappings_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/cloud_cost_management_api.py b/datadog_api_client/v2/api/cloud_cost_management_api.py
new file mode 100644
index 0000000000..7ebd1bf2eb
--- /dev/null
+++ b/datadog_api_client/v2/api/cloud_cost_management_api.py
@@ -0,0 +1,3469 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.account_filters_response import AccountFiltersResponse
+from datadog_api_client.v2.model.account_filters_patch_request import AccountFiltersPatchRequest
+from datadog_api_client.v2.model.cost_anomalies_response import CostAnomaliesResponse
+from datadog_api_client.v2.model.cost_anomaly_response import CostAnomalyResponse
+from datadog_api_client.v2.model.arbitrary_rule_response_array import ArbitraryRuleResponseArray
+from datadog_api_client.v2.model.arbitrary_rule_response import ArbitraryRuleResponse
+from datadog_api_client.v2.model.arbitrary_cost_upsert_request import ArbitraryCostUpsertRequest
+from datadog_api_client.v2.model.reorder_rule_resource_array import ReorderRuleResourceArray
+from datadog_api_client.v2.model.arbitrary_rule_status_response_array import ArbitraryRuleStatusResponseArray
+from datadog_api_client.v2.model.aws_cur_configs_response import AwsCURConfigsResponse
+from datadog_api_client.v2.model.aws_cur_config_response import AwsCurConfigResponse
+from datadog_api_client.v2.model.aws_cur_config_post_request import AwsCURConfigPostRequest
+from datadog_api_client.v2.model.aws_cur_config_patch_request import AwsCURConfigPatchRequest
+from datadog_api_client.v2.model.azure_uc_configs_response import AzureUCConfigsResponse
+from datadog_api_client.v2.model.azure_uc_config_pairs_response import AzureUCConfigPairsResponse
+from datadog_api_client.v2.model.azure_uc_config_post_request import AzureUCConfigPostRequest
+from datadog_api_client.v2.model.uc_config_pair import UCConfigPair
+from datadog_api_client.v2.model.azure_uc_config_patch_request import AzureUCConfigPatchRequest
+from datadog_api_client.v2.model.budget_with_entries import BudgetWithEntries
+from datadog_api_client.v2.model.validation_response import ValidationResponse
+from datadog_api_client.v2.model.custom_forecast_response import CustomForecastResponse
+from datadog_api_client.v2.model.custom_forecast_upsert_request import CustomForecastUpsertRequest
+from datadog_api_client.v2.model.budget_validation_response import BudgetValidationResponse
+from datadog_api_client.v2.model.budget_validation_request import BudgetValidationRequest
+from datadog_api_client.v2.model.budget_array import BudgetArray
+from datadog_api_client.v2.model.commitments_list_response import CommitmentsListResponse
+from datadog_api_client.v2.model.commitments_provider import CommitmentsProvider
+from datadog_api_client.v2.model.commitments_commitment_type import CommitmentsCommitmentType
+from datadog_api_client.v2.model.commitments_coverage_scalar_response import CommitmentsCoverageScalarResponse
+from datadog_api_client.v2.model.commitments_coverage_timeseries_response import CommitmentsCoverageTimeseriesResponse
+from datadog_api_client.v2.model.commitments_on_demand_hotspots_scalar_response import CommitmentsOnDemandHotspotsScalarResponse
+from datadog_api_client.v2.model.commitments_savings_scalar_response import CommitmentsSavingsScalarResponse
+from datadog_api_client.v2.model.commitments_savings_timeseries_response import CommitmentsSavingsTimeseriesResponse
+from datadog_api_client.v2.model.commitments_utilization_scalar_response import CommitmentsUtilizationScalarResponse
+from datadog_api_client.v2.model.commitments_utilization_timeseries_response import CommitmentsUtilizationTimeseriesResponse
+from datadog_api_client.v2.model.custom_costs_file_list_response import CustomCostsFileListResponse
+from datadog_api_client.v2.model.custom_costs_file_upload_response import CustomCostsFileUploadResponse
+from datadog_api_client.v2.model.custom_costs_file_upload_request import CustomCostsFileUploadRequest
+from datadog_api_client.v2.model.custom_costs_file_line_item import CustomCostsFileLineItem
+from datadog_api_client.v2.model.custom_costs_file_get_response import CustomCostsFileGetResponse
+from datadog_api_client.v2.model.gcp_usage_cost_configs_response import GCPUsageCostConfigsResponse
+from datadog_api_client.v2.model.gcp_usage_cost_config_response import GCPUsageCostConfigResponse
+from datadog_api_client.v2.model.gcp_usage_cost_config_post_request import GCPUsageCostConfigPostRequest
+from datadog_api_client.v2.model.gcp_uc_config_response import GcpUcConfigResponse
+from datadog_api_client.v2.model.gcp_usage_cost_config_patch_request import GCPUsageCostConfigPatchRequest
+from datadog_api_client.v2.model.oci_configs_response import OCIConfigsResponse
+from datadog_api_client.v2.model.cost_recommendation_array import CostRecommendationArray
+from datadog_api_client.v2.model.recommendations_filter_request import RecommendationsFilterRequest
+from datadog_api_client.v2.model.cost_tag_descriptions_response import CostTagDescriptionsResponse
+from datadog_api_client.v2.model.cost_tag_description_response import CostTagDescriptionResponse
+from datadog_api_client.v2.model.cost_tag_description_upsert_request import CostTagDescriptionUpsertRequest
+from datadog_api_client.v2.model.generate_cost_tag_description_response import GenerateCostTagDescriptionResponse
+from datadog_api_client.v2.model.cost_tag_keys_response import CostTagKeysResponse
+from datadog_api_client.v2.model.cost_tag_key_response import CostTagKeyResponse
+from datadog_api_client.v2.model.cost_tag_key_metadata_response import CostTagKeyMetadataResponse
+from datadog_api_client.v2.model.cost_tag_metadata_daily_filter import CostTagMetadataDailyFilter
+from datadog_api_client.v2.model.cost_currency_response import CostCurrencyResponse
+from datadog_api_client.v2.model.cost_metrics_response import CostMetricsResponse
+from datadog_api_client.v2.model.cost_tag_metadata_months_response import CostTagMetadataMonthsResponse
+from datadog_api_client.v2.model.cost_orchestrators_response import CostOrchestratorsResponse
+from datadog_api_client.v2.model.cost_tag_key_sources_response import CostTagKeySourcesResponse
+from datadog_api_client.v2.model.cost_tags_response import CostTagsResponse
+from datadog_api_client.v2.model.ruleset_resp_array import RulesetRespArray
+from datadog_api_client.v2.model.ruleset_resp import RulesetResp
+from datadog_api_client.v2.model.create_ruleset_request import CreateRulesetRequest
+from datadog_api_client.v2.model.reorder_ruleset_resource_array import ReorderRulesetResourceArray
+from datadog_api_client.v2.model.ruleset_status_resp_array import RulesetStatusRespArray
+from datadog_api_client.v2.model.rules_validate_query_response import RulesValidateQueryResponse
+from datadog_api_client.v2.model.rules_validate_query_request import RulesValidateQueryRequest
+from datadog_api_client.v2.model.update_ruleset_request import UpdateRulesetRequest
+
+
+class CloudCostManagementApi:
+ """
+ The Cloud Cost Management API allows you to set up, edit, and delete Cloud Cost Management accounts for AWS, Azure, and Google Cloud. You can query your cost data by using the `Metrics endpoint `_ and the ``cloud_cost`` data source. For more information, see the `Cloud Cost Management documentation `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_cost_awscur_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsCurConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/aws_cur_config",
+ "operation_id": "create_cost_awscur_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AwsCURConfigPostRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_cost_azure_uc_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureUCConfigPairsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/azure_uc_config",
+ "operation_id": "create_cost_azure_uc_configs",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AzureUCConfigPostRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_cost_gcp_usage_cost_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPUsageCostConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/gcp_uc_config",
+ "operation_id": "create_cost_gcp_usage_cost_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GCPUsageCostConfigPostRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_custom_allocation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ArbitraryRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule",
+ "operation_id": "create_custom_allocation_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ArbitraryCostUpsertRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_tag_pipelines_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (RulesetResp,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment",
+ "operation_id": "create_tag_pipelines_ruleset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateRulesetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_budget_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget/{budget_id}",
+ "operation_id": "delete_budget",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "budget_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "budget_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_cost_awscur_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/aws_cur_config/{cloud_account_id}",
+ "operation_id": "delete_cost_awscur_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_cost_azure_uc_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/azure_uc_config/{cloud_account_id}",
+ "operation_id": "delete_cost_azure_uc_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_cost_gcp_usage_cost_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/gcp_uc_config/{cloud_account_id}",
+ "operation_id": "delete_cost_gcp_usage_cost_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_cost_tag_description_by_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_descriptions/{tag_key}",
+ "operation_id": "delete_cost_tag_description_by_key",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "tag_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tag_key",
+ "location": "path",
+ },
+ "cloud": {
+ "openapi_types": (str,),
+ "attribute": "cloud",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_allocation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule/{rule_id}",
+ "operation_id": "delete_custom_allocation_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_costs_file_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/custom_costs/{file_id}",
+ "operation_id": "delete_custom_costs_file",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "file_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "file_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_forecast_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget/{budget_id}/custom-forecast",
+ "operation_id": "delete_custom_forecast",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "budget_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "budget_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tag_pipelines_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment/{ruleset_id}",
+ "operation_id": "delete_tag_pipelines_ruleset",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._generate_cost_tag_description_by_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (GenerateCostTagDescriptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_descriptions/{tag_key}/generate",
+ "operation_id": "generate_cost_tag_description_by_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "tag_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tag_key",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_budget_endpoint = _Endpoint(
+ settings={
+ "response_type": (BudgetWithEntries,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget/{budget_id}",
+ "operation_id": "get_budget",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "budget_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "budget_id",
+ "location": "path",
+ },
+ "actual": {
+ "openapi_types": (bool,),
+ "attribute": "actual",
+ "location": "query",
+ },
+ "forecast": {
+ "openapi_types": (bool,),
+ "attribute": "forecast",
+ "location": "query",
+ },
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_commitment_list_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/commitment-list",
+ "operation_id": "get_commitments_commitment_list",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ "commitment_type": {
+ "openapi_types": (CommitmentsCommitmentType,),
+ "attribute": "commitmentType",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_coverage_scalar_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsCoverageScalarResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/coverage/scalar",
+ "operation_id": "get_commitments_coverage_scalar",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_coverage_timeseries_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsCoverageTimeseriesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/coverage/timeseries",
+ "operation_id": "get_commitments_coverage_timeseries",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_on_demand_hotspots_scalar_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsOnDemandHotspotsScalarResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/on-demand-hot-spots/scalar",
+ "operation_id": "get_commitments_on_demand_hotspots_scalar",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_savings_scalar_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsSavingsScalarResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/savings/scalar",
+ "operation_id": "get_commitments_savings_scalar",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_savings_timeseries_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsSavingsTimeseriesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/savings/timeseries",
+ "operation_id": "get_commitments_savings_timeseries",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_utilization_scalar_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsUtilizationScalarResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/utilization/scalar",
+ "operation_id": "get_commitments_utilization_scalar",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ "commitment_type": {
+ "openapi_types": (CommitmentsCommitmentType,),
+ "attribute": "commitmentType",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_commitments_utilization_timeseries_endpoint = _Endpoint(
+ settings={
+ "response_type": (CommitmentsUtilizationTimeseriesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/commitments/utilization/timeseries",
+ "operation_id": "get_commitments_utilization_timeseries",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "provider": {
+ "required": True,
+ "openapi_types": (CommitmentsProvider,),
+ "attribute": "provider",
+ "location": "query",
+ },
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "start": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter_by": {
+ "openapi_types": (str,),
+ "attribute": "filterBy",
+ "location": "query",
+ },
+ "commitment_type": {
+ "openapi_types": (CommitmentsCommitmentType,),
+ "attribute": "commitmentType",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_account_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (AccountFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/account_filters/{cloud_account_id}",
+ "operation_id": "get_cost_account_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_anomaly_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostAnomalyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/anomalies/{anomaly_id}",
+ "operation_id": "get_cost_anomaly",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "anomaly_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "anomaly_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_awscur_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsCurConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/aws_cur_config/{cloud_account_id}",
+ "operation_id": "get_cost_awscur_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_azure_uc_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (UCConfigPair,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/azure_uc_config/{cloud_account_id}",
+ "operation_id": "get_cost_azure_uc_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_gcp_usage_cost_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (GcpUcConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/gcp_uc_config/{cloud_account_id}",
+ "operation_id": "get_cost_gcp_usage_cost_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_tag_description_by_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagDescriptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_descriptions/{tag_key}",
+ "operation_id": "get_cost_tag_description_by_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "tag_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tag_key",
+ "location": "path",
+ },
+ "filter_cloud": {
+ "openapi_types": (str,),
+ "attribute": "filter[cloud]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_tag_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_keys/{tag_key}",
+ "operation_id": "get_cost_tag_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "tag_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tag_key",
+ "location": "path",
+ },
+ "filter_metric": {
+ "openapi_types": (str,),
+ "attribute": "filter[metric]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 10000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_tag_metadata_currency_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostCurrencyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_metadata/currency",
+ "operation_id": "get_cost_tag_metadata_currency",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_month": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[month]",
+ "location": "query",
+ },
+ "filter_provider": {
+ "openapi_types": (str,),
+ "attribute": "filter[provider]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_allocation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ArbitraryRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule/{rule_id}",
+ "operation_id": "get_custom_allocation_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_costs_file_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomCostsFileGetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/custom_costs/{file_id}",
+ "operation_id": "get_custom_costs_file",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "file_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "file_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_forecast_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomForecastResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget/{budget_id}/custom-forecast",
+ "operation_id": "get_custom_forecast",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "budget_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "budget_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tag_pipelines_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (RulesetResp,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment/{ruleset_id}",
+ "operation_id": "get_tag_pipelines_ruleset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_budgets_endpoint = _Endpoint(
+ settings={
+ "response_type": (BudgetArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budgets",
+ "operation_id": "list_budgets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_anomalies_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostAnomaliesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/anomalies",
+ "operation_id": "list_cost_anomalies",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "end": {
+ "openapi_types": (int,),
+ "attribute": "end",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "min_anomalous_threshold": {
+ "openapi_types": (str,),
+ "attribute": "min_anomalous_threshold",
+ "location": "query",
+ },
+ "min_cost_threshold": {
+ "openapi_types": (str,),
+ "attribute": "min_cost_threshold",
+ "location": "query",
+ },
+ "dismissal_cause": {
+ "openapi_types": (str,),
+ "attribute": "dismissal_cause",
+ "location": "query",
+ },
+ "order_by": {
+ "openapi_types": (str,),
+ "attribute": "order_by",
+ "location": "query",
+ },
+ "order": {
+ "openapi_types": (str,),
+ "attribute": "order",
+ "location": "query",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "offset": {
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ "provider_ids": {
+ "openapi_types": ([str],),
+ "attribute": "provider_ids",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_awscur_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsCURConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/aws_cur_config",
+ "operation_id": "list_cost_awscur_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_azure_uc_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureUCConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/azure_uc_config",
+ "operation_id": "list_cost_azure_uc_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_gcp_usage_cost_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPUsageCostConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/gcp_uc_config",
+ "operation_id": "list_cost_gcp_usage_cost_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_oci_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (OCIConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/oci_config",
+ "operation_id": "list_cost_oci_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_descriptions_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagDescriptionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_descriptions",
+ "operation_id": "list_cost_tag_descriptions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_cloud": {
+ "openapi_types": (str,),
+ "attribute": "filter[cloud]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_keys",
+ "operation_id": "list_cost_tag_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_metric": {
+ "openapi_types": (str,),
+ "attribute": "filter[metric]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": ([str],),
+ "attribute": "filter[tags]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_key_sources_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagKeySourcesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_metadata/tag_sources",
+ "operation_id": "list_cost_tag_key_sources",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_month": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[month]",
+ "location": "query",
+ },
+ "filter_provider": {
+ "openapi_types": (str,),
+ "attribute": "filter[provider]",
+ "location": "query",
+ },
+ "filter_metric": {
+ "openapi_types": (str,),
+ "attribute": "filter[metric]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_metadata_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagKeyMetadataResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_metadata",
+ "operation_id": "list_cost_tag_metadata",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_month": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[month]",
+ "location": "query",
+ },
+ "filter_provider": {
+ "openapi_types": (str,),
+ "attribute": "filter[provider]",
+ "location": "query",
+ },
+ "filter_metric": {
+ "openapi_types": (str,),
+ "attribute": "filter[metric]",
+ "location": "query",
+ },
+ "filter_tag_key": {
+ "openapi_types": (str,),
+ "attribute": "filter[tag_key]",
+ "location": "query",
+ },
+ "filter_daily": {
+ "openapi_types": (CostTagMetadataDailyFilter,),
+ "attribute": "filter[daily]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_metadata_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostMetricsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_metadata/metrics",
+ "operation_id": "list_cost_tag_metadata_metrics",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_month": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[month]",
+ "location": "query",
+ },
+ "filter_provider": {
+ "openapi_types": (str,),
+ "attribute": "filter[provider]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_metadata_months_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagMetadataMonthsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_metadata/months",
+ "operation_id": "list_cost_tag_metadata_months",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_provider": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[provider]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tag_metadata_orchestrators_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostOrchestratorsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_metadata/orchestrators",
+ "operation_id": "list_cost_tag_metadata_orchestrators",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_month": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[month]",
+ "location": "query",
+ },
+ "filter_provider": {
+ "openapi_types": (str,),
+ "attribute": "filter[provider]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cost_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tags",
+ "operation_id": "list_cost_tags",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_metric": {
+ "openapi_types": (str,),
+ "attribute": "filter[metric]",
+ "location": "query",
+ },
+ "filter_match": {
+ "openapi_types": (str,),
+ "attribute": "filter[match]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": ([str],),
+ "attribute": "filter[tags]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_tag_keys": {
+ "openapi_types": ([str],),
+ "attribute": "filter[tag_keys]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 10000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_custom_allocation_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (ArbitraryRuleResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule",
+ "operation_id": "list_custom_allocation_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_custom_allocation_rules_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (ArbitraryRuleStatusResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule/status",
+ "operation_id": "list_custom_allocation_rules_status",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_custom_costs_files_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomCostsFileListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/custom_costs",
+ "operation_id": "list_custom_costs_files",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (str,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "filter_provider": {
+ "openapi_types": ([str],),
+ "attribute": "filter[provider]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_pipelines_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": (RulesetRespArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment",
+ "operation_id": "list_tag_pipelines_rulesets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_pipelines_rulesets_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (RulesetStatusRespArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment/status",
+ "operation_id": "list_tag_pipelines_rulesets_status",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_custom_allocation_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule/reorder",
+ "operation_id": "reorder_custom_allocation_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ReorderRuleResourceArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_tag_pipelines_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment/reorder",
+ "operation_id": "reorder_tag_pipelines_rulesets",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ReorderRulesetResourceArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_cost_recommendations_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostRecommendationArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/recommendations",
+ "operation_id": "search_cost_recommendations",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (str,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page[token]",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RecommendationsFilterRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_cost_account_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (AccountFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/account_filters/{cloud_account_id}",
+ "operation_id": "update_cost_account_filters",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AccountFiltersPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_cost_awscur_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (AwsCURConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/aws_cur_config/{cloud_account_id}",
+ "operation_id": "update_cost_awscur_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AwsCURConfigPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_cost_azure_uc_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (AzureUCConfigPairsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/azure_uc_config/{cloud_account_id}",
+ "operation_id": "update_cost_azure_uc_configs",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AzureUCConfigPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_cost_gcp_usage_cost_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPUsageCostConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/gcp_uc_config/{cloud_account_id}",
+ "operation_id": "update_cost_gcp_usage_cost_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_account_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "cloud_account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GCPUsageCostConfigPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_custom_allocation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ArbitraryRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/arbitrary_rule/{rule_id}",
+ "operation_id": "update_custom_allocation_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ArbitraryCostUpsertRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_tag_pipelines_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (RulesetResp,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment/{ruleset_id}",
+ "operation_id": "update_tag_pipelines_ruleset",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateRulesetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upload_custom_costs_file_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomCostsFileUploadResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/custom_costs",
+ "operation_id": "upload_custom_costs_file",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": ([CustomCostsFileLineItem],),
+ "location": "body",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_budget_endpoint = _Endpoint(
+ settings={
+ "response_type": (BudgetWithEntries,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget",
+ "operation_id": "upsert_budget",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (BudgetWithEntries,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_cost_tag_description_by_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost/tag_descriptions/{tag_key}",
+ "operation_id": "upsert_cost_tag_description_by_key",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "tag_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tag_key",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CostTagDescriptionUpsertRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_custom_forecast_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomForecastResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget/custom-forecast",
+ "operation_id": "upsert_custom_forecast",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CustomForecastUpsertRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_budget_endpoint = _Endpoint(
+ settings={
+ "response_type": (BudgetValidationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cost/budget/validate",
+ "operation_id": "validate_budget",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (BudgetValidationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_csv_budget_endpoint = _Endpoint(
+ settings={
+ "response_type": (ValidationResponse,),
+ "auth": [],
+ "endpoint_path": "/api/v2/cost/budget/csv/validate",
+ "operation_id": "validate_csv_budget",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._validate_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (RulesValidateQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/tags/enrichment/validate-query",
+ "operation_id": "validate_query",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RulesValidateQueryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_cost_awscur_config(self, body: AwsCURConfigPostRequest, ) -> AwsCurConfigResponse:
+ """Create Cloud Cost Management AWS CUR config.
+
+ Create a Cloud Cost Management account for an AWS CUR config.
+
+ :type body: AwsCURConfigPostRequest
+ :rtype: AwsCurConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_cost_awscur_config_endpoint.call_with_http_info(**kwargs)
+
+ def create_cost_azure_uc_configs(self, body: AzureUCConfigPostRequest, ) -> AzureUCConfigPairsResponse:
+ """Create Cloud Cost Management Azure configs.
+
+ Create a Cloud Cost Management account for an Azure config.
+
+ :type body: AzureUCConfigPostRequest
+ :rtype: AzureUCConfigPairsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_cost_azure_uc_configs_endpoint.call_with_http_info(**kwargs)
+
+ def create_cost_gcp_usage_cost_config(self, body: GCPUsageCostConfigPostRequest, ) -> GCPUsageCostConfigResponse:
+ """Create Google Cloud Usage Cost config.
+
+ Create a Cloud Cost Management account for an Google Cloud Usage Cost config.
+
+ :type body: GCPUsageCostConfigPostRequest
+ :rtype: GCPUsageCostConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_cost_gcp_usage_cost_config_endpoint.call_with_http_info(**kwargs)
+
+ def create_custom_allocation_rule(self, body: ArbitraryCostUpsertRequest, ) -> ArbitraryRuleResponse:
+ """Create custom allocation rule.
+
+ Create a new custom allocation rule with the specified filters and allocation strategy.
+
+ **Strategy Methods:**
+
+ * **PROPORTIONAL/EVEN** : Allocates costs proportionally/evenly based on existing costs. Requires: granularity, allocated_by_tag_keys. Optional: based_on_costs, allocated_by_filters, evaluate_grouped_by_tag_keys, evaluate_grouped_by_filters.
+ * **PROPORTIONAL_TIMESERIES/EVEN_TIMESERIES** : Allocates based on timeseries data. Requires: granularity, based_on_timeseries. Optional: evaluate_grouped_by_tag_keys.
+ * **PERCENT** : Allocates fixed percentages to specific tags. Requires: allocated_by (array of percentage allocations).
+
+ **Filter Conditions:**
+
+ * Use **value** for single-value conditions: "is", "is not", "contains", "=", "!=", "like", "not like"
+ * Use **values** for multi-value conditions: "in", "not in"
+ * Cannot use both value and values simultaneously.
+
+ **Supported operators** : is, is not, contains, in, not in, =, !=, like, not like
+
+ :type body: ArbitraryCostUpsertRequest
+ :rtype: ArbitraryRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_custom_allocation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_tag_pipelines_ruleset(self, body: CreateRulesetRequest, ) -> RulesetResp:
+ """Create tag pipeline ruleset.
+
+ Create a new tag pipeline ruleset with the specified rules and configuration
+
+ :type body: CreateRulesetRequest
+ :rtype: RulesetResp
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_tag_pipelines_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def delete_budget(self, budget_id: str, ) -> None:
+ """Delete budget.
+
+ Delete a budget
+
+ :param budget_id: Budget id.
+ :type budget_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["budget_id"] = budget_id
+
+ return self._delete_budget_endpoint.call_with_http_info(**kwargs)
+
+ def delete_cost_awscur_config(self, cloud_account_id: int, ) -> None:
+ """Delete Cloud Cost Management AWS CUR config.
+
+ Archive a Cloud Cost Management Account.
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._delete_cost_awscur_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_cost_azure_uc_config(self, cloud_account_id: int, ) -> None:
+ """Delete Cloud Cost Management Azure config.
+
+ Archive a Cloud Cost Management Account.
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._delete_cost_azure_uc_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_cost_gcp_usage_cost_config(self, cloud_account_id: int, ) -> None:
+ """Delete Google Cloud Usage Cost config.
+
+ Archive a Cloud Cost Management account.
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._delete_cost_gcp_usage_cost_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_cost_tag_description_by_key(self, tag_key: str, *, cloud: Union[str, UnsetType]=unset, ) -> None:
+ """Delete a Cloud Cost Management tag description.
+
+ Delete a Cloud Cost Management tag key description. When ``cloud`` is omitted, deletes every description for the tag key, falling back to Datadog's global default when available. When ``cloud`` is provided, deletes only the description scoped to that cloud provider.
+
+ :param tag_key: The tag key whose description is being deleted.
+ :type tag_key: str
+ :param cloud: Cloud provider to scope the deletion to (for example, ``aws`` ). Omit to delete every description for the tag key.
+ :type cloud: str, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tag_key"] = tag_key
+
+ if cloud is not unset:
+ kwargs["cloud"] = cloud
+
+ return self._delete_cost_tag_description_by_key_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_allocation_rule(self, rule_id: int, ) -> None:
+ """Delete custom allocation rule.
+
+ Delete a custom allocation rule - Delete an existing custom allocation rule by its ID
+
+ :param rule_id: The unique identifier of the custom allocation rule
+ :type rule_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_custom_allocation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_costs_file(self, file_id: str, ) -> None:
+ """Delete Custom Costs file.
+
+ Delete the specified Custom Costs file.
+
+ :param file_id: File ID.
+ :type file_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["file_id"] = file_id
+
+ return self._delete_custom_costs_file_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_forecast(self, budget_id: str, ) -> None:
+ """Delete a budget's custom forecast.
+
+ Delete the custom forecast for a budget.
+
+ :param budget_id: Budget id.
+ :type budget_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["budget_id"] = budget_id
+
+ return self._delete_custom_forecast_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tag_pipelines_ruleset(self, ruleset_id: str, ) -> None:
+ """Delete tag pipeline ruleset.
+
+ Delete a tag pipeline ruleset - Delete an existing tag pipeline ruleset by its ID
+
+ :param ruleset_id: The unique identifier of the ruleset
+ :type ruleset_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_id"] = ruleset_id
+
+ return self._delete_tag_pipelines_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def generate_cost_tag_description_by_key(self, tag_key: str, ) -> GenerateCostTagDescriptionResponse:
+ """Generate a Cloud Cost Management tag description.
+
+ Use AI to draft a Cloud Cost Management tag key description based on associated cost data. The generated description is returned in the response and is not persisted by this endpoint; follow up with ``UpsertCostTagDescriptionByKey`` to save it.
+
+ :param tag_key: The tag key to generate an AI description for.
+ :type tag_key: str
+ :rtype: GenerateCostTagDescriptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tag_key"] = tag_key
+
+ return self._generate_cost_tag_description_by_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_budget(self, budget_id: str, *, actual: Union[bool, UnsetType]=unset, forecast: Union[bool, UnsetType]=unset, start: Union[int, UnsetType]=unset, end: Union[int, UnsetType]=unset, ) -> BudgetWithEntries:
+ """Get budget.
+
+ Get a budget by ID. Pass ``actual=true`` or ``forecast=true`` to include cost data in the response. Use ``start`` and ``end`` (millisecond epochs, both required) to set the cost window. When ``forecast=true`` , each entry also includes ``ootb_forecast`` (the ML forecast before overrides) and ``custom_forecast`` ( ``null`` if no override is set, a number if one is).
+
+ :param budget_id: Budget id.
+ :type budget_id: str
+ :param actual: When ``true`` , includes actual cost data in the response.
+ :type actual: bool, optional
+ :param forecast: When ``true`` , includes forecast cost data in the response, including ``ootb_forecast`` and ``custom_forecast`` per entry.
+ :type forecast: bool, optional
+ :param start: Start of the cost window in milliseconds since epoch. Must be used together with ``end``.
+ :type start: int, optional
+ :param end: End of the cost window in milliseconds since epoch. Must be used together with ``start``.
+ :type end: int, optional
+ :rtype: BudgetWithEntries
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["budget_id"] = budget_id
+
+ if actual is not unset:
+ kwargs["actual"] = actual
+
+ if forecast is not unset:
+ kwargs["forecast"] = forecast
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ if end is not unset:
+ kwargs["end"] = end
+
+ return self._get_budget_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_commitment_list(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, commitment_type: Union[CommitmentsCommitmentType, UnsetType]=unset, ) -> CommitmentsListResponse:
+ """Get commitments list.
+
+ Get a list of individual cloud commitments (Reserved Instances or Savings Plans) with their utilization details. The response schema varies based on the provider, product, and commitment type.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :param commitment_type: Type of commitment to query. ri for Reserved Instances, sp for Savings Plans. Defaults to ri.
+ :type commitment_type: CommitmentsCommitmentType, optional
+ :rtype: CommitmentsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ if commitment_type is not unset:
+ kwargs["commitment_type"] = commitment_type
+
+ return self._get_commitments_commitment_list_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_coverage_scalar(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, ) -> CommitmentsCoverageScalarResponse:
+ """Get commitments coverage (scalar).
+
+ Get scalar coverage metrics for cloud commitment programs, including hours and cost coverage percentages.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :rtype: CommitmentsCoverageScalarResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ return self._get_commitments_coverage_scalar_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_coverage_timeseries(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, ) -> CommitmentsCoverageTimeseriesResponse:
+ """Get commitments coverage (timeseries).
+
+ Get timeseries coverage metrics for cloud commitment programs, broken down by coverage type (Reserved Instances, Savings Plans, On-Demand, and Spot) for both hours and cost.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :rtype: CommitmentsCoverageTimeseriesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ return self._get_commitments_coverage_timeseries_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_on_demand_hotspots_scalar(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, ) -> CommitmentsOnDemandHotspotsScalarResponse:
+ """Get commitments on-demand hot spots (scalar).
+
+ Get scalar on-demand hot-spots data for cloud commitment programs, showing per-dimension breakdowns of on-demand spending with coverage metrics and potential savings.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :rtype: CommitmentsOnDemandHotspotsScalarResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ return self._get_commitments_on_demand_hotspots_scalar_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_savings_scalar(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, ) -> CommitmentsSavingsScalarResponse:
+ """Get commitments savings (scalar).
+
+ Get scalar savings metrics for cloud commitment programs, including realized savings and effective savings rate.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :rtype: CommitmentsSavingsScalarResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ return self._get_commitments_savings_scalar_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_savings_timeseries(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, ) -> CommitmentsSavingsTimeseriesResponse:
+ """Get commitments savings (timeseries).
+
+ Get timeseries savings metrics for cloud commitment programs, including actual cost, on-demand equivalent cost, realized savings, and effective savings rate over time.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :rtype: CommitmentsSavingsTimeseriesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ return self._get_commitments_savings_timeseries_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_utilization_scalar(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, commitment_type: Union[CommitmentsCommitmentType, UnsetType]=unset, ) -> CommitmentsUtilizationScalarResponse:
+ """Get commitments utilization (scalar).
+
+ Get scalar utilization metrics for cloud commitment programs, including utilization percentage and unused cost.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :param commitment_type: Type of commitment to query. ri for Reserved Instances, sp for Savings Plans. Defaults to ri.
+ :type commitment_type: CommitmentsCommitmentType, optional
+ :rtype: CommitmentsUtilizationScalarResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ if commitment_type is not unset:
+ kwargs["commitment_type"] = commitment_type
+
+ return self._get_commitments_utilization_scalar_endpoint.call_with_http_info(**kwargs)
+
+ def get_commitments_utilization_timeseries(self, provider: CommitmentsProvider, product: str, start: int, end: int, *, filter_by: Union[str, UnsetType]=unset, commitment_type: Union[CommitmentsCommitmentType, UnsetType]=unset, ) -> CommitmentsUtilizationTimeseriesResponse:
+ """Get commitments utilization (timeseries).
+
+ Get timeseries utilization metrics for cloud commitment programs, including used and unused cost series over time.
+
+ :param provider: Cloud provider for commitment programs (aws or azure).
+ :type provider: CommitmentsProvider
+ :param product: Cloud product identifier (for example, ec2, rds, virtualmachines).
+ :type product: str
+ :param start: Start of the query time range in Unix milliseconds.
+ :type start: int
+ :param end: End of the query time range in Unix milliseconds.
+ :type end: int
+ :param filter_by: Optional filter expression to narrow down results.
+ :type filter_by: str, optional
+ :param commitment_type: Type of commitment to query. ri for Reserved Instances, sp for Savings Plans. Defaults to ri.
+ :type commitment_type: CommitmentsCommitmentType, optional
+ :rtype: CommitmentsUtilizationTimeseriesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["provider"] = provider
+
+ kwargs["product"] = product
+
+ kwargs["start"] = start
+
+ kwargs["end"] = end
+
+ if filter_by is not unset:
+ kwargs["filter_by"] = filter_by
+
+ if commitment_type is not unset:
+ kwargs["commitment_type"] = commitment_type
+
+ return self._get_commitments_utilization_timeseries_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_account_filters(self, cloud_account_id: int, ) -> AccountFiltersResponse:
+ """Get account filters.
+
+ Get the account filters for a cloud account (AWS CUR 1.0/2.0, OCI, and other clouds).
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :rtype: AccountFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._get_cost_account_filters_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_anomaly(self, anomaly_id: str, ) -> CostAnomalyResponse:
+ """Get cost anomaly.
+
+ Get a detected Cloud Cost Management anomaly by UUID.
+
+ :param anomaly_id: The UUID of the cost anomaly.
+ :type anomaly_id: str
+ :rtype: CostAnomalyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["anomaly_id"] = anomaly_id
+
+ return self._get_cost_anomaly_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_awscur_config(self, cloud_account_id: int, ) -> AwsCurConfigResponse:
+ """Get cost AWS CUR config.
+
+ Get a specific AWS CUR config.
+
+ :param cloud_account_id: The unique identifier of the cloud account
+ :type cloud_account_id: int
+ :rtype: AwsCurConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._get_cost_awscur_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_azure_uc_config(self, cloud_account_id: int, ) -> UCConfigPair:
+ """Get cost Azure UC config.
+
+ Get a specific Azure config.
+
+ :param cloud_account_id: The unique identifier of the cloud account
+ :type cloud_account_id: int
+ :rtype: UCConfigPair
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._get_cost_azure_uc_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_gcp_usage_cost_config(self, cloud_account_id: int, ) -> GcpUcConfigResponse:
+ """Get Google Cloud Usage Cost config.
+
+ Get a specific Google Cloud Usage Cost config.
+
+ :param cloud_account_id: The unique identifier of the cloud account
+ :type cloud_account_id: int
+ :rtype: GcpUcConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ return self._get_cost_gcp_usage_cost_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_tag_description_by_key(self, tag_key: str, *, filter_cloud: Union[str, UnsetType]=unset, ) -> CostTagDescriptionResponse:
+ """Get a Cloud Cost Management tag description.
+
+ Get the Cloud Cost Management description for a single tag key. Use ``filter[cloud]`` to scope the lookup to a specific cloud provider; when omitted, the response resolves the description in fallback order (cloud-specific organization override, then cloudless organization default, then Datadog's global default).
+
+ :param tag_key: The tag key whose description is being fetched.
+ :type tag_key: str
+ :param filter_cloud: Cloud provider to scope the lookup to (for example, ``aws`` ). Omit to use the resolved fallback.
+ :type filter_cloud: str, optional
+ :rtype: CostTagDescriptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tag_key"] = tag_key
+
+ if filter_cloud is not unset:
+ kwargs["filter_cloud"] = filter_cloud
+
+ return self._get_cost_tag_description_by_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_tag_key(self, tag_key: str, *, filter_metric: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> CostTagKeyResponse:
+ """Get a Cloud Cost Management tag key.
+
+ Get details for a specific Cloud Cost Management tag key, including example tag values and description.
+
+ :param tag_key: The Cloud Cost Management tag key. Tag keys can contain forward slashes (for example, ``kubernetes/instance`` ).
+ :type tag_key: str
+ :param filter_metric: The Cloud Cost Management metric to scope the tag key details to. When omitted, returns details across all metrics.
+ :type filter_metric: str, optional
+ :param page_size: Controls the size of the internal tag value search scope. This does **not** restrict the number of example tag values returned in the response. Defaults to 50, maximum 10000.
+ :type page_size: int, optional
+ :rtype: CostTagKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tag_key"] = tag_key
+
+ if filter_metric is not unset:
+ kwargs["filter_metric"] = filter_metric
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._get_cost_tag_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_tag_metadata_currency(self, filter_month: str, *, filter_provider: Union[str, UnsetType]=unset, ) -> CostCurrencyResponse:
+ """Get the Cloud Cost Management billing currency.
+
+ Get the dominant billing currency observed in Cloud Cost Management data for the requested period. The response wraps the currency in a JSON:API ``data`` array containing at most one entry; the array is empty when no currency data is available.
+
+ :param filter_month: The month to scope the query to, in ``YYYY-MM`` format.
+ :type filter_month: str
+ :param filter_provider: Filter results to a specific provider. Common cloud values are ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` (OCI), and ``custom``. SaaS billing integrations (for example, ``Snowflake`` , ``MongoDB`` , ``Databricks`` ) are also accepted using their display-name string. Values are case-sensitive.
+ :type filter_provider: str, optional
+ :rtype: CostCurrencyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_month"] = filter_month
+
+ if filter_provider is not unset:
+ kwargs["filter_provider"] = filter_provider
+
+ return self._get_cost_tag_metadata_currency_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_allocation_rule(self, rule_id: int, ) -> ArbitraryRuleResponse:
+ """Get custom allocation rule.
+
+ Get a specific custom allocation rule - Retrieve a specific custom allocation rule by its ID
+
+ :param rule_id: The unique identifier of the custom allocation rule
+ :type rule_id: int
+ :rtype: ArbitraryRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_custom_allocation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_costs_file(self, file_id: str, ) -> CustomCostsFileGetResponse:
+ """Get Custom Costs file.
+
+ Fetch the specified Custom Costs file.
+
+ :param file_id: File ID.
+ :type file_id: str
+ :rtype: CustomCostsFileGetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["file_id"] = file_id
+
+ return self._get_custom_costs_file_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_forecast(self, budget_id: str, ) -> CustomForecastResponse:
+ """Get a budget's custom forecast.
+
+ Get the custom forecast for a budget.
+
+ :param budget_id: Budget id.
+ :type budget_id: str
+ :rtype: CustomForecastResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["budget_id"] = budget_id
+
+ return self._get_custom_forecast_endpoint.call_with_http_info(**kwargs)
+
+ def get_tag_pipelines_ruleset(self, ruleset_id: str, ) -> RulesetResp:
+ """Get a tag pipeline ruleset.
+
+ Get a specific tag pipeline ruleset - Retrieve a specific tag pipeline ruleset by its ID
+
+ :param ruleset_id: The unique identifier of the ruleset
+ :type ruleset_id: str
+ :rtype: RulesetResp
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_id"] = ruleset_id
+
+ return self._get_tag_pipelines_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def list_budgets(self, ) -> BudgetArray:
+ """List budgets.
+
+ List budgets.
+
+ :rtype: BudgetArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_budgets_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_anomalies(self, *, start: Union[int, UnsetType]=unset, end: Union[int, UnsetType]=unset, filter: Union[str, UnsetType]=unset, min_anomalous_threshold: Union[str, UnsetType]=unset, min_cost_threshold: Union[str, UnsetType]=unset, dismissal_cause: Union[str, UnsetType]=unset, order_by: Union[str, UnsetType]=unset, order: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, provider_ids: Union[List[str], UnsetType]=unset, ) -> CostAnomaliesResponse:
+ """List cost anomalies.
+
+ List detected Cloud Cost Management anomalies for the organization.
+
+ :param start: Start time as Unix milliseconds. Defaults to the start of the latest stable seven-day window.
+ :type start: int, optional
+ :param end: End time as Unix milliseconds. Defaults to the end of the latest stable seven-day window.
+ :type end: int, optional
+ :param filter: Optional JSON object mapping cost tag keys to allowed values, for example ``{"team":["payments"],"env":["prod"]}``. Filters match anomaly dimensions or correlated tags.
+ :type filter: str, optional
+ :param min_anomalous_threshold: Minimum absolute anomalous cost change to include. Numeric value; defaults to ``1``.
+ :type min_anomalous_threshold: str, optional
+ :param min_cost_threshold: Minimum absolute actual cost to include. Numeric value; defaults to ``0``.
+ :type min_cost_threshold: str, optional
+ :param dismissal_cause: Filter by resolution state. Use ``none`` for unresolved anomalies, ``all`` or ``*`` for resolved anomalies, or a comma-separated list of causes.
+ :type dismissal_cause: str, optional
+ :param order_by: Sort field. One of ``start_date`` , ``end_date`` , ``duration`` , ``max_cost`` , ``anomalous_cost`` , or ``dismissal_date``. Defaults to ``anomalous_cost``.
+ :type order_by: str, optional
+ :param order: Sort direction. One of ``asc`` or ``desc``. Defaults to ``desc``.
+ :type order: str, optional
+ :param limit: Maximum number of anomalies to return. Defaults to ``200``.
+ :type limit: int, optional
+ :param offset: Pagination offset. Defaults to ``0``.
+ :type offset: int, optional
+ :param provider_ids: Optional repeated cloud or SaaS provider filters, such as ``aws`` , ``gcp`` , ``azure`` , ``Oracle`` , ``datadog`` , ``OpenAI`` , or ``Anthropic``.
+ :type provider_ids: [str], optional
+ :rtype: CostAnomaliesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if start is not unset:
+ kwargs["start"] = start
+
+ if end is not unset:
+ kwargs["end"] = end
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if min_anomalous_threshold is not unset:
+ kwargs["min_anomalous_threshold"] = min_anomalous_threshold
+
+ if min_cost_threshold is not unset:
+ kwargs["min_cost_threshold"] = min_cost_threshold
+
+ if dismissal_cause is not unset:
+ kwargs["dismissal_cause"] = dismissal_cause
+
+ if order_by is not unset:
+ kwargs["order_by"] = order_by
+
+ if order is not unset:
+ kwargs["order"] = order
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ if provider_ids is not unset:
+ kwargs["provider_ids"] = provider_ids
+
+ return self._list_cost_anomalies_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_awscur_configs(self, ) -> AwsCURConfigsResponse:
+ """List Cloud Cost Management AWS CUR configs.
+
+ List the AWS CUR configs.
+
+ :rtype: AwsCURConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_cost_awscur_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_azure_uc_configs(self, ) -> AzureUCConfigsResponse:
+ """List Cloud Cost Management Azure configs.
+
+ List the Azure configs.
+
+ :rtype: AzureUCConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_cost_azure_uc_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_gcp_usage_cost_configs(self, ) -> GCPUsageCostConfigsResponse:
+ """List Google Cloud Usage Cost configs.
+
+ List the Google Cloud Usage Cost configs.
+
+ :rtype: GCPUsageCostConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_cost_gcp_usage_cost_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_oci_configs(self, ) -> OCIConfigsResponse:
+ """List Cloud Cost Management OCI configs.
+
+ List the OCI configs.
+
+ :rtype: OCIConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_cost_oci_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_descriptions(self, *, filter_cloud: Union[str, UnsetType]=unset, ) -> CostTagDescriptionsResponse:
+ """List Cloud Cost Management tag descriptions.
+
+ List Cloud Cost Management tag key descriptions for the organization. Use ``filter[cloud]`` to scope the result to a single cloud provider; when omitted, both cross-cloud defaults and cloud-specific descriptions are returned.
+
+ :param filter_cloud: Filter descriptions to a specific cloud provider (for example, ``aws`` ). Omit to return descriptions across all clouds.
+ :type filter_cloud: str, optional
+ :rtype: CostTagDescriptionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_cloud is not unset:
+ kwargs["filter_cloud"] = filter_cloud
+
+ return self._list_cost_tag_descriptions_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_keys(self, *, filter_metric: Union[str, UnsetType]=unset, filter_tags: Union[List[str], UnsetType]=unset, ) -> CostTagKeysResponse:
+ """List Cloud Cost Management tag keys.
+
+ List Cloud Cost Management tag keys.
+
+ :param filter_metric: The Cloud Cost Management metric to scope the tag keys to. When omitted, returns tag keys across all metrics.
+ :type filter_metric: str, optional
+ :param filter_tags: Filter to return only tag keys that appear with the given ``key:value`` tag values. For example, ``filter[tags]=providername:aws`` returns tag keys found on the same cost data, such as ``is_aws_ec2_compute`` and ``aws_instance_type``.
+ :type filter_tags: [str], optional
+ :rtype: CostTagKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_metric is not unset:
+ kwargs["filter_metric"] = filter_metric
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ return self._list_cost_tag_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_key_sources(self, filter_month: str, *, filter_provider: Union[str, UnsetType]=unset, filter_metric: Union[str, UnsetType]=unset, ) -> CostTagKeySourcesResponse:
+ """List Cloud Cost Management tag sources.
+
+ List Cloud Cost Management tag keys observed for the requested period, along with the origin sources that produced them (for example, ``aws-user-defined`` , ``custom`` ).
+
+ :param filter_month: The month to scope the query to, in ``YYYY-MM`` format.
+ :type filter_month: str
+ :param filter_provider: Filter results to a specific provider. Common cloud values are ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` (OCI), and ``custom``. SaaS billing integrations (for example, ``Snowflake`` , ``MongoDB`` , ``Databricks`` ) are also accepted using their display-name string. Values are case-sensitive.
+ :type filter_provider: str, optional
+ :param filter_metric: Filter results to tag keys that have data for a specific Cloud Cost Management metric (for example, ``aws.cost.net.amortized`` ). When omitted, all tag keys for the requested period are returned.
+ :type filter_metric: str, optional
+ :rtype: CostTagKeySourcesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_month"] = filter_month
+
+ if filter_provider is not unset:
+ kwargs["filter_provider"] = filter_provider
+
+ if filter_metric is not unset:
+ kwargs["filter_metric"] = filter_metric
+
+ return self._list_cost_tag_key_sources_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_metadata(self, filter_month: str, *, filter_provider: Union[str, UnsetType]=unset, filter_metric: Union[str, UnsetType]=unset, filter_tag_key: Union[str, UnsetType]=unset, filter_daily: Union[CostTagMetadataDailyFilter, UnsetType]=unset, ) -> CostTagKeyMetadataResponse:
+ """List Cloud Cost Management tag key metadata.
+
+ List Cloud Cost Management tag key metadata, including row counts, cost covered, cardinality, and a sample of top tag values per cloud account. Use ``filter[daily]=true`` to return daily rows instead of the default monthly roll-up.
+
+ :param filter_month: The month to scope the query to, in ``YYYY-MM`` format.
+ :type filter_month: str
+ :param filter_provider: Filter results to a specific provider. Common cloud values are ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` (OCI), and ``custom``. SaaS billing integrations (for example, ``Snowflake`` , ``MongoDB`` , ``Databricks`` ) are also accepted using their display-name string. Values are case-sensitive.
+ :type filter_provider: str, optional
+ :param filter_metric: Filter results to a specific Cloud Cost Management metric (for example, ``aws.cost.net.amortized`` ). When omitted, every available metric for the requested period is returned.
+ :type filter_metric: str, optional
+ :param filter_tag_key: Restrict results to a single tag key.
+ :type filter_tag_key: str, optional
+ :param filter_daily: When ``true`` , return one row per day with the day in the ``date`` attribute. Defaults to the monthly roll-up when omitted.
+ :type filter_daily: CostTagMetadataDailyFilter, optional
+ :rtype: CostTagKeyMetadataResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_month"] = filter_month
+
+ if filter_provider is not unset:
+ kwargs["filter_provider"] = filter_provider
+
+ if filter_metric is not unset:
+ kwargs["filter_metric"] = filter_metric
+
+ if filter_tag_key is not unset:
+ kwargs["filter_tag_key"] = filter_tag_key
+
+ if filter_daily is not unset:
+ kwargs["filter_daily"] = filter_daily
+
+ return self._list_cost_tag_metadata_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_metadata_metrics(self, filter_month: str, *, filter_provider: Union[str, UnsetType]=unset, ) -> CostMetricsResponse:
+ """List available Cloud Cost Management metrics.
+
+ List Cloud Cost Management metrics that have data for the requested period.
+
+ :param filter_month: The month to scope the query to, in ``YYYY-MM`` format.
+ :type filter_month: str
+ :param filter_provider: Filter results to a specific provider. Common cloud values are ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` (OCI), and ``custom``. SaaS billing integrations (for example, ``Snowflake`` , ``MongoDB`` , ``Databricks`` ) are also accepted using their display-name string. Values are case-sensitive.
+ :type filter_provider: str, optional
+ :rtype: CostMetricsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_month"] = filter_month
+
+ if filter_provider is not unset:
+ kwargs["filter_provider"] = filter_provider
+
+ return self._list_cost_tag_metadata_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_metadata_months(self, filter_provider: str, ) -> CostTagMetadataMonthsResponse:
+ """List Cloud Cost Management tag metadata months.
+
+ List months that have Cloud Cost Management tag metadata for a given provider,
+ ordered most-recent first. The response is capped at 36 months.
+
+ :param filter_provider: Provider to scope the query to. Use the value of the ``providername`` tag in CCM
+ (for example, ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` , ``Confluent Cloud`` , ``Snowflake`` ).
+ For costs uploaded through the Custom Costs API, use ``custom``.
+ Values are case-sensitive.
+ :type filter_provider: str
+ :rtype: CostTagMetadataMonthsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_provider"] = filter_provider
+
+ return self._list_cost_tag_metadata_months_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tag_metadata_orchestrators(self, filter_month: str, *, filter_provider: Union[str, UnsetType]=unset, ) -> CostOrchestratorsResponse:
+ """List Cloud Cost Management orchestrators.
+
+ List container orchestrators (for example, ``kubernetes`` , ``ecs`` ) detected in Cloud Cost Management data for the requested period.
+
+ :param filter_month: The month to scope the query to, in ``YYYY-MM`` format.
+ :type filter_month: str
+ :param filter_provider: Filter results to a specific provider. Common cloud values are ``aws`` , ``azure`` , ``gcp`` , ``Oracle`` (OCI), and ``custom``. SaaS billing integrations (for example, ``Snowflake`` , ``MongoDB`` , ``Databricks`` ) are also accepted using their display-name string. Values are case-sensitive.
+ :type filter_provider: str, optional
+ :rtype: CostOrchestratorsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_month"] = filter_month
+
+ if filter_provider is not unset:
+ kwargs["filter_provider"] = filter_provider
+
+ return self._list_cost_tag_metadata_orchestrators_endpoint.call_with_http_info(**kwargs)
+
+ def list_cost_tags(self, *, filter_metric: Union[str, UnsetType]=unset, filter_match: Union[str, UnsetType]=unset, filter_tags: Union[List[str], UnsetType]=unset, filter_tag_keys: Union[List[str], UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> CostTagsResponse:
+ """List Cloud Cost Management tags.
+
+ List Cloud Cost Management tags for a given metric.
+
+ :param filter_metric: The Cloud Cost Management metric to scope the tags to. When omitted, returns tags across all metrics.
+ :type filter_metric: str, optional
+ :param filter_match: A substring used to filter the returned tags by name.
+ :type filter_match: str, optional
+ :param filter_tags: Filter to return only tags that appear with the given ``key:value`` tag values. For example, ``filter[tags]=providername:aws`` returns tags found on the same cost data, such as ``aws_instance_type:t3.micro`` and ``aws_instance_type:m5.large``.
+ :type filter_tags: [str], optional
+ :param filter_tag_keys: Restrict the returned tags to those whose key matches one of the given tag keys.
+ :type filter_tag_keys: [str], optional
+ :param page_size: Controls the size of the internal tag search scope. This does **not** restrict the number of tags returned in the response. Defaults to 50, maximum 10000.
+ :type page_size: int, optional
+ :rtype: CostTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_metric is not unset:
+ kwargs["filter_metric"] = filter_metric
+
+ if filter_match is not unset:
+ kwargs["filter_match"] = filter_match
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_tag_keys is not unset:
+ kwargs["filter_tag_keys"] = filter_tag_keys
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._list_cost_tags_endpoint.call_with_http_info(**kwargs)
+
+ def list_custom_allocation_rules(self, ) -> ArbitraryRuleResponseArray:
+ """List custom allocation rules.
+
+ List all custom allocation rules - Retrieve a list of all custom allocation rules for the organization
+
+ :rtype: ArbitraryRuleResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_custom_allocation_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_custom_allocation_rules_status(self, ) -> ArbitraryRuleStatusResponseArray:
+ """List custom allocation rule statuses.
+
+ List the processing status of all custom allocation rules. Returns only the ID and processing status for each rule.
+
+ :rtype: ArbitraryRuleStatusResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_custom_allocation_rules_status_endpoint.call_with_http_info(**kwargs)
+
+ def list_custom_costs_files(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, filter_status: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, filter_provider: Union[List[str], UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> CustomCostsFileListResponse:
+ """List Custom Costs files.
+
+ List the Custom Costs files.
+
+ :param page_number: Page number for pagination
+ :type page_number: int, optional
+ :param page_size: Page size for pagination
+ :type page_size: int, optional
+ :param filter_status: Filter by file status
+ :type filter_status: str, optional
+ :param filter_name: Filter files by name with case-insensitive substring matching.
+ :type filter_name: str, optional
+ :param filter_provider: Filter by provider.
+ :type filter_provider: [str], optional
+ :param sort: Sort key with optional descending prefix
+ :type sort: str, optional
+ :rtype: CustomCostsFileListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_provider is not unset:
+ kwargs["filter_provider"] = filter_provider
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_custom_costs_files_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_pipelines_rulesets(self, ) -> RulesetRespArray:
+ """List tag pipeline rulesets.
+
+ List all tag pipeline rulesets - Retrieve a list of all tag pipeline rulesets for the organization
+
+ :rtype: RulesetRespArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_tag_pipelines_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_pipelines_rulesets_status(self, ) -> RulesetStatusRespArray:
+ """List tag pipeline ruleset statuses.
+
+ List the processing status of all tag pipeline rulesets. Returns only the ID and processing status for each ruleset.
+
+ :rtype: RulesetStatusRespArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_tag_pipelines_rulesets_status_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_custom_allocation_rules(self, body: ReorderRuleResourceArray, ) -> None:
+ """Reorder custom allocation rules.
+
+ Reorder custom allocation rules - Change the execution order of custom allocation rules.
+
+ **Important** : You must provide the **complete list** of all rule IDs in the desired execution order. The API will reorder ALL rules according to the provided sequence.
+
+ Rules are executed in the order specified, with lower indices (earlier in the array) having higher priority.
+
+ **Example** : If you have rules with IDs [123, 456, 789] and want to change order from 123→456→789 to 456→123→789, send: [{"id": "456"}, {"id": "123"}, {"id": "789"}]
+
+ :type body: ReorderRuleResourceArray
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_custom_allocation_rules_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_tag_pipelines_rulesets(self, body: ReorderRulesetResourceArray, ) -> None:
+ """Reorder tag pipeline rulesets.
+
+ Reorder tag pipeline rulesets - Change the execution order of tag pipeline rulesets
+
+ :type body: ReorderRulesetResourceArray
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_tag_pipelines_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def search_cost_recommendations(self, body: RecommendationsFilterRequest, *, page_size: Union[str, UnsetType]=unset, page_token: Union[str, UnsetType]=unset, ) -> CostRecommendationArray:
+ """Search cost recommendations.
+
+ List cost recommendations matching a filter, with pagination and sorting.
+
+ :type body: RecommendationsFilterRequest
+ :param page_size: Number of results per page (1–10000).
+ :type page_size: str, optional
+ :param page_token: Pagination token from a previous response.
+ :type page_token: str, optional
+ :rtype: CostRecommendationArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ kwargs["body"] = body
+
+ return self._search_cost_recommendations_endpoint.call_with_http_info(**kwargs)
+
+ def update_cost_account_filters(self, cloud_account_id: int, body: AccountFiltersPatchRequest, ) -> AccountFiltersResponse:
+ """Update account filters.
+
+ Update the account filters for a cloud account (AWS CUR 1.0/2.0, OCI, and other clouds).
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :type body: AccountFiltersPatchRequest
+ :rtype: AccountFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ kwargs["body"] = body
+
+ return self._update_cost_account_filters_endpoint.call_with_http_info(**kwargs)
+
+ def update_cost_awscur_config(self, cloud_account_id: int, body: AwsCURConfigPatchRequest, ) -> AwsCURConfigsResponse:
+ """Update Cloud Cost Management AWS CUR config.
+
+ Update the status (active/archived) and/or account filtering configuration of an AWS CUR config.
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :type body: AwsCURConfigPatchRequest
+ :rtype: AwsCURConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ kwargs["body"] = body
+
+ return self._update_cost_awscur_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_cost_azure_uc_configs(self, cloud_account_id: int, body: AzureUCConfigPatchRequest, ) -> AzureUCConfigPairsResponse:
+ """Update Cloud Cost Management Azure config.
+
+ Update the status of an Azure config (active/archived).
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :type body: AzureUCConfigPatchRequest
+ :rtype: AzureUCConfigPairsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ kwargs["body"] = body
+
+ return self._update_cost_azure_uc_configs_endpoint.call_with_http_info(**kwargs)
+
+ def update_cost_gcp_usage_cost_config(self, cloud_account_id: int, body: GCPUsageCostConfigPatchRequest, ) -> GCPUsageCostConfigResponse:
+ """Update Google Cloud Usage Cost config.
+
+ Update the status of an Google Cloud Usage Cost config (active/archived).
+
+ :param cloud_account_id: Cloud Account id.
+ :type cloud_account_id: int
+ :type body: GCPUsageCostConfigPatchRequest
+ :rtype: GCPUsageCostConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["cloud_account_id"] = cloud_account_id
+
+ kwargs["body"] = body
+
+ return self._update_cost_gcp_usage_cost_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_custom_allocation_rule(self, rule_id: int, body: ArbitraryCostUpsertRequest, ) -> ArbitraryRuleResponse:
+ """Update custom allocation rule.
+
+ Update an existing custom allocation rule with new filters and allocation strategy.
+
+ **Strategy Methods:**
+
+ * **PROPORTIONAL/EVEN** : Allocates costs proportionally/evenly based on existing costs. Requires: granularity, allocated_by_tag_keys. Optional: based_on_costs, allocated_by_filters, evaluate_grouped_by_tag_keys, evaluate_grouped_by_filters.
+ * **PROPORTIONAL_TIMESERIES/EVEN_TIMESERIES** : Allocates based on timeseries data. Requires: granularity, based_on_timeseries. Optional: evaluate_grouped_by_tag_keys.
+ * **PERCENT** : Allocates fixed percentages to specific tags. Requires: allocated_by (array of percentage allocations).
+ * **USAGE_METRIC** : Allocates based on usage metrics (implementation varies).
+
+ **Filter Conditions:**
+
+ * Use **value** for single-value conditions: "is", "is not", "contains", "=", "!=", "like", "not like"
+ * Use **values** for multi-value conditions: "in", "not in"
+ * Cannot use both value and values simultaneously.
+
+ **Supported operators** : is, is not, contains, in, not in, =, !=, like, not like
+
+ :param rule_id: The unique identifier of the custom allocation rule
+ :type rule_id: int
+ :type body: ArbitraryCostUpsertRequest
+ :rtype: ArbitraryRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_custom_allocation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_tag_pipelines_ruleset(self, ruleset_id: str, body: UpdateRulesetRequest, ) -> RulesetResp:
+ """Update tag pipeline ruleset.
+
+ Update a tag pipeline ruleset - Update an existing tag pipeline ruleset with new rules and configuration
+
+ :param ruleset_id: The unique identifier of the ruleset
+ :type ruleset_id: str
+ :type body: UpdateRulesetRequest
+ :rtype: RulesetResp
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_id"] = ruleset_id
+
+ kwargs["body"] = body
+
+ return self._update_tag_pipelines_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def upload_custom_costs_file(self, body: List[CustomCostsFileLineItem], ) -> CustomCostsFileUploadResponse:
+ """Upload Custom Costs file.
+
+ Upload a Custom Costs file.
+
+ :type body: [CustomCostsFileLineItem]
+ :rtype: CustomCostsFileUploadResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upload_custom_costs_file_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_budget(self, body: BudgetWithEntries, ) -> BudgetWithEntries:
+ """Create or update a budget.
+
+ Create a new budget or update an existing one.
+
+ :type body: BudgetWithEntries
+ :rtype: BudgetWithEntries
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upsert_budget_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_cost_tag_description_by_key(self, tag_key: str, body: CostTagDescriptionUpsertRequest, ) -> None:
+ """Upsert a Cloud Cost Management tag description.
+
+ Create or update a Cloud Cost Management tag key description. The new description and optional cloud scoping are supplied in the request body. Omit ``cloud`` to set a cross-cloud default for the tag key.
+
+ :param tag_key: The tag key whose description is being upserted.
+ :type tag_key: str
+ :type body: CostTagDescriptionUpsertRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tag_key"] = tag_key
+
+ kwargs["body"] = body
+
+ return self._upsert_cost_tag_description_by_key_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_custom_forecast(self, body: CustomForecastUpsertRequest, ) -> CustomForecastResponse:
+ """Create or replace a budget's custom forecast.
+
+ Create or replace the custom forecast for an existing budget.
+ Pass an empty ``entries`` list to delete the custom forecast for the budget.
+
+ :type body: CustomForecastUpsertRequest
+ :rtype: CustomForecastResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upsert_custom_forecast_endpoint.call_with_http_info(**kwargs)
+
+ def validate_budget(self, body: BudgetValidationRequest, ) -> BudgetValidationResponse:
+ """Validate budget.
+
+ Validate a budget configuration without creating or modifying it
+
+ :type body: BudgetValidationRequest
+ :rtype: BudgetValidationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_budget_endpoint.call_with_http_info(**kwargs)
+
+ def validate_csv_budget(self, ) -> ValidationResponse:
+ """Validate CSV budget.
+
+ :rtype: ValidationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._validate_csv_budget_endpoint.call_with_http_info(**kwargs)
+
+ def validate_query(self, body: RulesValidateQueryRequest, ) -> RulesValidateQueryResponse:
+ """Validate query.
+
+ Validate a tag pipeline query - Validate the syntax and structure of a tag pipeline query
+
+ :type body: RulesValidateQueryRequest
+ :rtype: RulesValidateQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_query_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/cloud_network_monitoring_api.py b/datadog_api_client/v2/api/cloud_network_monitoring_api.py
new file mode 100644
index 0000000000..9553a1a42a
--- /dev/null
+++ b/datadog_api_client/v2/api/cloud_network_monitoring_api.py
@@ -0,0 +1,216 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.single_aggregated_connection_response_array import SingleAggregatedConnectionResponseArray
+from datadog_api_client.v2.model.single_aggregated_dns_response_array import SingleAggregatedDnsResponseArray
+
+
+class CloudNetworkMonitoringApi:
+ """
+ The Cloud Network Monitoring API allows you to fetch aggregated connections and DNS traffic with their attributes. See the `Cloud Network Monitoring page `_ and `DNS Monitoring page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_aggregated_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (SingleAggregatedConnectionResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/network/connections/aggregate",
+ "operation_id": "get_aggregated_connections",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "_from": {
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (int,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "group_by": {
+ "openapi_types": (str,),
+ "attribute": "group_by",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": (str,),
+ "attribute": "tags",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 7500,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_aggregated_dns_endpoint = _Endpoint(
+ settings={
+ "response_type": (SingleAggregatedDnsResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/network/dns/aggregate",
+ "operation_id": "get_aggregated_dns",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "_from": {
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (int,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "group_by": {
+ "openapi_types": (str,),
+ "attribute": "group_by",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": (str,),
+ "attribute": "tags",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 7500,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_aggregated_connections(self, *, _from: Union[int, UnsetType]=unset, to: Union[int, UnsetType]=unset, group_by: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> SingleAggregatedConnectionResponseArray:
+ """Get all aggregated connections.
+
+ Get all aggregated connections.
+
+ :param _from: Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the ``to`` timestamp. If neither ``from`` nor ``to`` are provided, the query window is ``[now - 15m, now]``.
+ :type _from: int, optional
+ :param to: Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither ``from`` nor ``to`` are provided, the query window is ``[now - 15m, now]``.
+ :type to: int, optional
+ :param group_by: Comma-separated list of fields to group connections by. The maximum number of group_by(s) is 10.
+ :type group_by: str, optional
+ :param tags: Comma-separated list of tags to filter connections by.
+ :type tags: str, optional
+ :param query: Free-form search query using AND/OR/NOT operators, wildcards, and parentheses. When provided, takes precedence over the ``tags`` parameter.
+ :type query: str, optional
+ :param limit: The number of connections to be returned. The maximum value is 7500. The default is 100.
+ :type limit: int, optional
+ :rtype: SingleAggregatedConnectionResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._get_aggregated_connections_endpoint.call_with_http_info(**kwargs)
+
+ def get_aggregated_dns(self, *, _from: Union[int, UnsetType]=unset, to: Union[int, UnsetType]=unset, group_by: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> SingleAggregatedDnsResponseArray:
+ """Get all aggregated DNS traffic.
+
+ Get all aggregated DNS traffic.
+
+ :param _from: Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the ``to`` timestamp. If neither ``from`` nor ``to`` are provided, the query window is ``[now - 15m, now]``.
+ :type _from: int, optional
+ :param to: Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither ``from`` nor ``to`` are provided, the query window is ``[now - 15m, now]``.
+ :type to: int, optional
+ :param group_by: Comma-separated list of fields to group DNS traffic by. The server side defaults to ``network.dns_query`` if unspecified. ``server_ungrouped`` may be used if groups are not desired. The maximum number of group_by(s) is 10.
+ :type group_by: str, optional
+ :param tags: Comma-separated list of tags to filter DNS traffic by.
+ :type tags: str, optional
+ :param query: Free-form search query using AND/OR/NOT operators, wildcards, and parentheses. When provided, takes precedence over the ``tags`` parameter.
+ :type query: str, optional
+ :param limit: The number of aggregated DNS entries to be returned. The maximum value is 7500. The default is 100.
+ :type limit: int, optional
+ :rtype: SingleAggregatedDnsResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._get_aggregated_dns_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/cloudflare_integration_api.py b/datadog_api_client/v2/api/cloudflare_integration_api.py
new file mode 100644
index 0000000000..80356170fc
--- /dev/null
+++ b/datadog_api_client/v2/api/cloudflare_integration_api.py
@@ -0,0 +1,219 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.cloudflare_accounts_response import CloudflareAccountsResponse
+from datadog_api_client.v2.model.cloudflare_account_response import CloudflareAccountResponse
+from datadog_api_client.v2.model.cloudflare_account_create_request import CloudflareAccountCreateRequest
+from datadog_api_client.v2.model.cloudflare_account_update_request import CloudflareAccountUpdateRequest
+
+
+class CloudflareIntegrationApi:
+ """
+ Manage your Datadog Cloudflare integration directly through the Datadog API. See the `Cloudflare integration page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_cloudflare_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudflareAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/cloudflare/accounts",
+ "operation_id": "create_cloudflare_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CloudflareAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_cloudflare_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/cloudflare/accounts/{account_id}",
+ "operation_id": "delete_cloudflare_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cloudflare_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudflareAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/cloudflare/accounts/{account_id}",
+ "operation_id": "get_cloudflare_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cloudflare_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudflareAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/cloudflare/accounts",
+ "operation_id": "list_cloudflare_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_cloudflare_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudflareAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/cloudflare/accounts/{account_id}",
+ "operation_id": "update_cloudflare_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CloudflareAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_cloudflare_account(self, body: CloudflareAccountCreateRequest, ) -> CloudflareAccountResponse:
+ """Add Cloudflare account.
+
+ Create a Cloudflare account.
+
+ :type body: CloudflareAccountCreateRequest
+ :rtype: CloudflareAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_cloudflare_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_cloudflare_account(self, account_id: str, ) -> None:
+ """Delete Cloudflare account.
+
+ Delete a Cloudflare account.
+
+ :param account_id: None
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_cloudflare_account_endpoint.call_with_http_info(**kwargs)
+
+ def get_cloudflare_account(self, account_id: str, ) -> CloudflareAccountResponse:
+ """Get Cloudflare account.
+
+ Get a Cloudflare account.
+
+ :param account_id: None
+ :type account_id: str
+ :rtype: CloudflareAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._get_cloudflare_account_endpoint.call_with_http_info(**kwargs)
+
+ def list_cloudflare_accounts(self, ) -> CloudflareAccountsResponse:
+ """List Cloudflare accounts.
+
+ List Cloudflare accounts.
+
+ :rtype: CloudflareAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_cloudflare_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def update_cloudflare_account(self, account_id: str, body: CloudflareAccountUpdateRequest, ) -> CloudflareAccountResponse:
+ """Update Cloudflare account.
+
+ Update a Cloudflare account.
+
+ :param account_id: None
+ :type account_id: str
+ :type body: CloudflareAccountUpdateRequest
+ :rtype: CloudflareAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_cloudflare_account_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/code_coverage_api.py b/datadog_api_client/v2/api/code_coverage_api.py
new file mode 100644
index 0000000000..6d973f9cf8
--- /dev/null
+++ b/datadog_api_client/v2/api/code_coverage_api.py
@@ -0,0 +1,113 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.coverage_summary_response import CoverageSummaryResponse
+from datadog_api_client.v2.model.branch_coverage_summary_request import BranchCoverageSummaryRequest
+from datadog_api_client.v2.model.commit_coverage_summary_request import CommitCoverageSummaryRequest
+
+
+class CodeCoverageApi:
+ """
+ Retrieve and analyze code coverage data from Code Coverage. See the `Code Coverage page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_code_coverage_branch_summary_endpoint = _Endpoint(
+ settings={
+ "response_type": (CoverageSummaryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/code-coverage/branch/summary",
+ "operation_id": "get_code_coverage_branch_summary",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (BranchCoverageSummaryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_code_coverage_commit_summary_endpoint = _Endpoint(
+ settings={
+ "response_type": (CoverageSummaryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/code-coverage/commit/summary",
+ "operation_id": "get_code_coverage_commit_summary",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CommitCoverageSummaryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_code_coverage_branch_summary(self, body: BranchCoverageSummaryRequest, ) -> CoverageSummaryResponse:
+ """Get code coverage summary for a branch.
+
+ Retrieve aggregated code coverage statistics for a specific branch in a repository.
+ This endpoint provides overall coverage metrics as well as breakdowns by service
+ and code owner.
+
+ :type body: BranchCoverageSummaryRequest
+ :rtype: CoverageSummaryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_code_coverage_branch_summary_endpoint.call_with_http_info(**kwargs)
+
+ def get_code_coverage_commit_summary(self, body: CommitCoverageSummaryRequest, ) -> CoverageSummaryResponse:
+ """Get code coverage summary for a commit.
+
+ Retrieve aggregated code coverage statistics for a specific commit in a repository.
+ This endpoint provides overall coverage metrics as well as breakdowns by service
+ and code owner.
+
+ The commit SHA must be a 40-character hexadecimal string (SHA-1 hash).
+
+ :type body: CommitCoverageSummaryRequest
+ :rtype: CoverageSummaryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_code_coverage_commit_summary_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/compliance_api.py b/datadog_api_client/v2/api/compliance_api.py
new file mode 100644
index 0000000000..efd6816297
--- /dev/null
+++ b/datadog_api_client/v2/api/compliance_api.py
@@ -0,0 +1,137 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rule_based_view_response import RuleBasedViewResponse
+
+
+class ComplianceApi:
+ """
+ Datadog Cloud Security Misconfigurations provides aggregated views of
+ compliance rules and findings across your cloud resources, helping you assess
+ posture against industry frameworks (such as HIPAA, SOC 2, ISO 27001) and custom
+ frameworks. Learn more at https://docs.datadoghq.com/security/cloud_security_management/misconfigurations/#maintain-compliance-with-industry-frameworks-and-benchmarks.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_rule_based_view_endpoint = _Endpoint(
+ settings={
+ "response_type": (RuleBasedViewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/compliance_findings/rule_based_view",
+ "operation_id": "get_rule_based_view",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "to": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "framework": {
+ "openapi_types": (str,),
+ "attribute": "framework",
+ "location": "query",
+ },
+ "version": {
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "query",
+ },
+ "query_findings_without_framework_version": {
+ "openapi_types": (bool,),
+ "attribute": "query_findings_without_framework_version",
+ "location": "query",
+ },
+ "include_rules_without_findings": {
+ "openapi_types": (bool,),
+ "attribute": "include_rules_without_findings",
+ "location": "query",
+ },
+ "is_custom": {
+ "openapi_types": (bool,),
+ "attribute": "is_custom",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_rule_based_view(self, to: int, *, framework: Union[str, UnsetType]=unset, version: Union[str, UnsetType]=unset, query_findings_without_framework_version: Union[bool, UnsetType]=unset, include_rules_without_findings: Union[bool, UnsetType]=unset, is_custom: Union[bool, UnsetType]=unset, query: Union[str, UnsetType]=unset, ) -> RuleBasedViewResponse:
+ """Get the rule-based view of compliance findings. **Deprecated**.
+
+ **This endpoint is deprecated.** Use the `Security Monitoring - Search Security Findings `_ endpoint instead.
+
+ Get an aggregated view of compliance rules with their pass, fail, and muted finding counts.
+ Supports filtering by compliance framework, framework version, and additional query filters.
+
+ :param to: Timestamp of the query end, in milliseconds since the Unix epoch.
+ :type to: int
+ :param framework: Compliance framework handle to filter rules and findings by.
+ :type framework: str, optional
+ :param version: Version of the compliance framework to filter rules and findings by.
+ :type version: str, optional
+ :param query_findings_without_framework_version: When ``true`` , returns findings without a ``framework_version`` tag. Used for findings from custom frameworks or those created before framework versioning was introduced.
+ :type query_findings_without_framework_version: bool, optional
+ :param include_rules_without_findings: When ``true`` , includes rules in the response that have no associated findings.
+ :type include_rules_without_findings: bool, optional
+ :param is_custom: Set to ``true`` when the requested ``framework`` is a custom framework.
+ :type is_custom: bool, optional
+ :param query: Additional event-platform filters applied to the underlying findings query. For example, ``scored:true project_id:datadog-prod-us5``.
+ :type query: str, optional
+ :rtype: RuleBasedViewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["to"] = to
+
+ if framework is not unset:
+ kwargs["framework"] = framework
+
+ if version is not unset:
+ kwargs["version"] = version
+
+ if query_findings_without_framework_version is not unset:
+ kwargs["query_findings_without_framework_version"] = query_findings_without_framework_version
+
+ if include_rules_without_findings is not unset:
+ kwargs["include_rules_without_findings"] = include_rules_without_findings
+
+ if is_custom is not unset:
+ kwargs["is_custom"] = is_custom
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ warnings.warn("get_rule_based_view is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_rule_based_view_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/confluent_cloud_api.py b/datadog_api_client/v2/api/confluent_cloud_api.py
new file mode 100644
index 0000000000..bc1cbd04a3
--- /dev/null
+++ b/datadog_api_client/v2/api/confluent_cloud_api.py
@@ -0,0 +1,459 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.confluent_accounts_response import ConfluentAccountsResponse
+from datadog_api_client.v2.model.confluent_account_response import ConfluentAccountResponse
+from datadog_api_client.v2.model.confluent_account_create_request import ConfluentAccountCreateRequest
+from datadog_api_client.v2.model.confluent_account_update_request import ConfluentAccountUpdateRequest
+from datadog_api_client.v2.model.confluent_resources_response import ConfluentResourcesResponse
+from datadog_api_client.v2.model.confluent_resource_response import ConfluentResourceResponse
+from datadog_api_client.v2.model.confluent_resource_request import ConfluentResourceRequest
+
+
+class ConfluentCloudApi:
+ """
+ Manage your Datadog Confluent Cloud integration accounts and account resources directly through the Datadog API. See the `Confluent Cloud page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_confluent_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts",
+ "operation_id": "create_confluent_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ConfluentAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_confluent_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentResourceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources",
+ "operation_id": "create_confluent_resource",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ConfluentResourceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_confluent_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}",
+ "operation_id": "delete_confluent_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_confluent_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}",
+ "operation_id": "delete_confluent_resource",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_confluent_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}",
+ "operation_id": "get_confluent_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_confluent_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentResourceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}",
+ "operation_id": "get_confluent_resource",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_confluent_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts",
+ "operation_id": "list_confluent_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_confluent_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentResourcesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources",
+ "operation_id": "list_confluent_resource",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_confluent_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}",
+ "operation_id": "update_confluent_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ConfluentAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_confluent_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (ConfluentResourceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}",
+ "operation_id": "update_confluent_resource",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ConfluentResourceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_confluent_account(self, body: ConfluentAccountCreateRequest, ) -> ConfluentAccountResponse:
+ """Add Confluent account.
+
+ Create a Confluent account.
+
+ :param body: Confluent payload
+ :type body: ConfluentAccountCreateRequest
+ :rtype: ConfluentAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_confluent_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_confluent_resource(self, account_id: str, body: ConfluentResourceRequest, ) -> ConfluentResourceResponse:
+ """Add resource to Confluent account.
+
+ Create a Confluent resource for the account associated with the provided ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :param body: Confluent payload
+ :type body: ConfluentResourceRequest
+ :rtype: ConfluentResourceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._create_confluent_resource_endpoint.call_with_http_info(**kwargs)
+
+ def delete_confluent_account(self, account_id: str, ) -> None:
+ """Delete Confluent account.
+
+ Delete a Confluent account with the provided account ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_confluent_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_confluent_resource(self, account_id: str, resource_id: str, ) -> None:
+ """Delete resource from Confluent account.
+
+ Delete a Confluent resource with the provided resource id for the account associated with the provided account ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :param resource_id: Confluent Account Resource ID.
+ :type resource_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["resource_id"] = resource_id
+
+ return self._delete_confluent_resource_endpoint.call_with_http_info(**kwargs)
+
+ def get_confluent_account(self, account_id: str, ) -> ConfluentAccountResponse:
+ """Get Confluent account.
+
+ Get the Confluent account with the provided account ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :rtype: ConfluentAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._get_confluent_account_endpoint.call_with_http_info(**kwargs)
+
+ def get_confluent_resource(self, account_id: str, resource_id: str, ) -> ConfluentResourceResponse:
+ """Get resource from Confluent account.
+
+ Get a Confluent resource with the provided resource id for the account associated with the provided account ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :param resource_id: Confluent Account Resource ID.
+ :type resource_id: str
+ :rtype: ConfluentResourceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["resource_id"] = resource_id
+
+ return self._get_confluent_resource_endpoint.call_with_http_info(**kwargs)
+
+ def list_confluent_account(self, ) -> ConfluentAccountsResponse:
+ """List Confluent accounts.
+
+ List Confluent accounts.
+
+ :rtype: ConfluentAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_confluent_account_endpoint.call_with_http_info(**kwargs)
+
+ def list_confluent_resource(self, account_id: str, ) -> ConfluentResourcesResponse:
+ """List Confluent Account resources.
+
+ Get a Confluent resource for the account associated with the provided ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :rtype: ConfluentResourcesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._list_confluent_resource_endpoint.call_with_http_info(**kwargs)
+
+ def update_confluent_account(self, account_id: str, body: ConfluentAccountUpdateRequest, ) -> ConfluentAccountResponse:
+ """Update Confluent account.
+
+ Update the Confluent account with the provided account ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :param body: Confluent payload
+ :type body: ConfluentAccountUpdateRequest
+ :rtype: ConfluentAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_confluent_account_endpoint.call_with_http_info(**kwargs)
+
+ def update_confluent_resource(self, account_id: str, resource_id: str, body: ConfluentResourceRequest, ) -> ConfluentResourceResponse:
+ """Update resource in Confluent account.
+
+ Update a Confluent resource with the provided resource id for the account associated with the provided account ID.
+
+ :param account_id: Confluent Account ID.
+ :type account_id: str
+ :param resource_id: Confluent Account Resource ID.
+ :type resource_id: str
+ :param body: Confluent payload
+ :type body: ConfluentResourceRequest
+ :rtype: ConfluentResourceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["resource_id"] = resource_id
+
+ kwargs["body"] = body
+
+ return self._update_confluent_resource_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/container_images_api.py b/datadog_api_client/v2/api/container_images_api.py
new file mode 100644
index 0000000000..a04a531f5b
--- /dev/null
+++ b/datadog_api_client/v2/api/container_images_api.py
@@ -0,0 +1,166 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.container_images_response import ContainerImagesResponse
+from datadog_api_client.v2.model.container_image_item import ContainerImageItem
+
+
+class ContainerImagesApi:
+ """
+ The Container Images API allows you to query Container Image data for your organization. See the `Container Images View page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_container_images_endpoint = _Endpoint(
+ settings={
+ "response_type": (ContainerImagesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/container_images",
+ "operation_id": "list_container_images",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "group_by": {
+ "openapi_types": (str,),
+ "attribute": "group_by",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 10000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_container_images(self, *, filter_tags: Union[str, UnsetType]=unset, group_by: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> ContainerImagesResponse:
+ """Get all Container Images.
+
+ Get all Container Images for your organization.
+ **Note** : To enrich the data returned by this endpoint with security scans, see the new `api/v2/security/scanned-assets-metadata `_ endpoint.
+
+ :param filter_tags: Comma-separated list of tags to filter Container Images by.
+ :type filter_tags: str, optional
+ :param group_by: Comma-separated list of tags to group Container Images by.
+ :type group_by: str, optional
+ :param sort: Attribute to sort Container Images by.
+ :type sort: str, optional
+ :param page_size: Maximum number of results returned.
+ :type page_size: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.pagination.next_cursor``.
+ :type page_cursor: str, optional
+ :rtype: ContainerImagesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._list_container_images_endpoint.call_with_http_info(**kwargs)
+
+ def list_container_images_with_pagination(self, *, filter_tags: Union[str, UnsetType]=unset, group_by: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[ContainerImageItem]:
+ """Get all Container Images.
+
+ Provide a paginated version of :meth:`list_container_images`, returning all items.
+
+ :param filter_tags: Comma-separated list of tags to filter Container Images by.
+ :type filter_tags: str, optional
+ :param group_by: Comma-separated list of tags to group Container Images by.
+ :type group_by: str, optional
+ :param sort: Attribute to sort Container Images by.
+ :type sort: str, optional
+ :param page_size: Maximum number of results returned.
+ :type page_size: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.pagination.next_cursor``.
+ :type page_cursor: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ContainerImageItem]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 1000)
+ endpoint = self._list_container_images_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.pagination.next_cursor",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/containers_api.py b/datadog_api_client/v2/api/containers_api.py
new file mode 100644
index 0000000000..bf5316a789
--- /dev/null
+++ b/datadog_api_client/v2/api/containers_api.py
@@ -0,0 +1,165 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.containers_response import ContainersResponse
+from datadog_api_client.v2.model.container_item import ContainerItem
+
+
+class ContainersApi:
+ """
+ The Containers API allows you to query container data for your organization. See the `Container Monitoring page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_containers_endpoint = _Endpoint(
+ settings={
+ "response_type": (ContainersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/containers",
+ "operation_id": "list_containers",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "group_by": {
+ "openapi_types": (str,),
+ "attribute": "group_by",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 10000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_containers(self, *, filter_tags: Union[str, UnsetType]=unset, group_by: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> ContainersResponse:
+ """Get All Containers.
+
+ Get all containers for your organization.
+
+ :param filter_tags: Comma-separated list of tags to filter containers by.
+ :type filter_tags: str, optional
+ :param group_by: Comma-separated list of tags to group containers by.
+ :type group_by: str, optional
+ :param sort: Attribute to sort containers by.
+ :type sort: str, optional
+ :param page_size: Maximum number of results returned.
+ :type page_size: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.pagination.next_cursor``.
+ :type page_cursor: str, optional
+ :rtype: ContainersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._list_containers_endpoint.call_with_http_info(**kwargs)
+
+ def list_containers_with_pagination(self, *, filter_tags: Union[str, UnsetType]=unset, group_by: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[ContainerItem]:
+ """Get All Containers.
+
+ Provide a paginated version of :meth:`list_containers`, returning all items.
+
+ :param filter_tags: Comma-separated list of tags to filter containers by.
+ :type filter_tags: str, optional
+ :param group_by: Comma-separated list of tags to group containers by.
+ :type group_by: str, optional
+ :param sort: Attribute to sort containers by.
+ :type sort: str, optional
+ :param page_size: Maximum number of results returned.
+ :type page_size: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.pagination.next_cursor``.
+ :type page_cursor: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ContainerItem]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if group_by is not unset:
+ kwargs["group_by"] = group_by
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 1000)
+ endpoint = self._list_containers_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.pagination.next_cursor",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/csm_agents_api.py b/datadog_api_client/v2/api/csm_agents_api.py
new file mode 100644
index 0000000000..aa6daa7d97
--- /dev/null
+++ b/datadog_api_client/v2/api/csm_agents_api.py
@@ -0,0 +1,187 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.csm_agents_response import CsmAgentsResponse
+from datadog_api_client.v2.model.order_direction import OrderDirection
+
+
+class CSMAgentsApi:
+ """
+ Datadog Cloud Security Management (CSM) delivers real-time threat detection
+ and continuous configuration audits across your entire cloud infrastructure,
+ all in a unified view for seamless collaboration and faster remediation.
+ Go to https://docs.datadoghq.com/security/cloud_security_management to learn more
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_all_csm_agents_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmAgentsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/onboarding/agents",
+ "operation_id": "list_all_csm_agents",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page": {
+ "validation": {
+ "inclusive_maximum": 1000000,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "size",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "order_direction": {
+ "openapi_types": (OrderDirection,),
+ "attribute": "order_direction",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_all_csm_serverless_agents_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmAgentsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/onboarding/serverless/agents",
+ "operation_id": "list_all_csm_serverless_agents",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page": {
+ "validation": {
+ "inclusive_maximum": 1000000,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "size",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "order_direction": {
+ "openapi_types": (OrderDirection,),
+ "attribute": "order_direction",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_all_csm_agents(self, *, page: Union[int, UnsetType]=unset, size: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, order_direction: Union[OrderDirection, UnsetType]=unset, ) -> CsmAgentsResponse:
+ """Get all CSM Agents.
+
+ Get the list of all CSM Agents running on your hosts and containers.
+
+ :param page: The page index for pagination (zero-based).
+ :type page: int, optional
+ :param size: The number of items to include in a single page.
+ :type size: int, optional
+ :param query: A search query string to filter results (for example, ``hostname:COMP-T2H4J27423`` ).
+ :type query: str, optional
+ :param order_direction: The sort direction for results. Use ``asc`` for ascending or ``desc`` for descending.
+ :type order_direction: OrderDirection, optional
+ :rtype: CsmAgentsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page is not unset:
+ kwargs["page"] = page
+
+ if size is not unset:
+ kwargs["size"] = size
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if order_direction is not unset:
+ kwargs["order_direction"] = order_direction
+
+ return self._list_all_csm_agents_endpoint.call_with_http_info(**kwargs)
+
+ def list_all_csm_serverless_agents(self, *, page: Union[int, UnsetType]=unset, size: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, order_direction: Union[OrderDirection, UnsetType]=unset, ) -> CsmAgentsResponse:
+ """Get all CSM Serverless Agents.
+
+ Get the list of all CSM Serverless Agents running on your hosts and containers.
+
+ :param page: The page index for pagination (zero-based).
+ :type page: int, optional
+ :param size: The number of items to include in a single page.
+ :type size: int, optional
+ :param query: A search query string to filter results (for example, ``hostname:COMP-T2H4J27423`` ).
+ :type query: str, optional
+ :param order_direction: The sort direction for results. Use ``asc`` for ascending or ``desc`` for descending.
+ :type order_direction: OrderDirection, optional
+ :rtype: CsmAgentsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page is not unset:
+ kwargs["page"] = page
+
+ if size is not unset:
+ kwargs["size"] = size
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if order_direction is not unset:
+ kwargs["order_direction"] = order_direction
+
+ return self._list_all_csm_serverless_agents_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/csm_coverage_analysis_api.py b/datadog_api_client/v2/api/csm_coverage_analysis_api.py
new file mode 100644
index 0000000000..3fa52a4aec
--- /dev/null
+++ b/datadog_api_client/v2/api/csm_coverage_analysis_api.py
@@ -0,0 +1,125 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.csm_cloud_accounts_coverage_analysis_response import CsmCloudAccountsCoverageAnalysisResponse
+from datadog_api_client.v2.model.csm_hosts_and_containers_coverage_analysis_response import CsmHostsAndContainersCoverageAnalysisResponse
+from datadog_api_client.v2.model.csm_serverless_coverage_analysis_response import CsmServerlessCoverageAnalysisResponse
+
+
+class CSMCoverageAnalysisApi:
+ """
+ Datadog Cloud Security Management (CSM) delivers real-time threat detection
+ and continuous configuration audits across your entire cloud infrastructure,
+ all in a unified view for seamless collaboration and faster remediation.
+ Go to https://docs.datadoghq.com/security/cloud_security_management to learn more.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_csm_cloud_accounts_coverage_analysis_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmCloudAccountsCoverageAnalysisResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/onboarding/coverage_analysis/cloud_accounts",
+ "operation_id": "get_csm_cloud_accounts_coverage_analysis",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_csm_hosts_and_containers_coverage_analysis_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmHostsAndContainersCoverageAnalysisResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/onboarding/coverage_analysis/hosts_and_containers",
+ "operation_id": "get_csm_hosts_and_containers_coverage_analysis",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_csm_serverless_coverage_analysis_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmServerlessCoverageAnalysisResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/onboarding/coverage_analysis/serverless",
+ "operation_id": "get_csm_serverless_coverage_analysis",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_csm_cloud_accounts_coverage_analysis(self, ) -> CsmCloudAccountsCoverageAnalysisResponse:
+ """Get the CSM Cloud Accounts Coverage Analysis.
+
+ Get the CSM Coverage Analysis of your Cloud Accounts.
+ This is calculated based on the number of your Cloud Accounts that are
+ scanned for security issues.
+
+ :rtype: CsmCloudAccountsCoverageAnalysisResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_csm_cloud_accounts_coverage_analysis_endpoint.call_with_http_info(**kwargs)
+
+ def get_csm_hosts_and_containers_coverage_analysis(self, ) -> CsmHostsAndContainersCoverageAnalysisResponse:
+ """Get the CSM Hosts and Containers Coverage Analysis.
+
+ Get the CSM Coverage Analysis of your Hosts and Containers.
+ This is calculated based on the number of agents running on your Hosts
+ and Containers with CSM feature(s) enabled.
+
+ :rtype: CsmHostsAndContainersCoverageAnalysisResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_csm_hosts_and_containers_coverage_analysis_endpoint.call_with_http_info(**kwargs)
+
+ def get_csm_serverless_coverage_analysis(self, ) -> CsmServerlessCoverageAnalysisResponse:
+ """Get the CSM Serverless Coverage Analysis.
+
+ Get the CSM Coverage Analysis of your Serverless Resources.
+ This is calculated based on the number of agents running on your Serverless
+ Resources with CSM feature(s) enabled.
+
+ :rtype: CsmServerlessCoverageAnalysisResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_csm_serverless_coverage_analysis_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/csm_ownership_api.py b/datadog_api_client/v2/api/csm_ownership_api.py
new file mode 100644
index 0000000000..b0d07c2ad6
--- /dev/null
+++ b/datadog_api_client/v2/api/csm_ownership_api.py
@@ -0,0 +1,483 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.ownership_settings_response import OwnershipSettingsResponse
+from datadog_api_client.v2.model.ownership_settings_request import OwnershipSettingsRequest
+from datadog_api_client.v2.model.ownership_untagged_findings_response import OwnershipUntaggedFindingsResponse
+from datadog_api_client.v2.model.ownership_inference_list_response import OwnershipInferenceListResponse
+from datadog_api_client.v2.model.ownership_history_response import OwnershipHistoryResponse
+from datadog_api_client.v2.model.ownership_inference_response import OwnershipInferenceResponse
+from datadog_api_client.v2.model.ownership_owner_type import OwnershipOwnerType
+from datadog_api_client.v2.model.ownership_evidence_response import OwnershipEvidenceResponse
+from datadog_api_client.v2.model.ownership_feedback_response import OwnershipFeedbackResponse
+from datadog_api_client.v2.model.ownership_feedback_request import OwnershipFeedbackRequest
+
+
+class CSMOwnershipApi:
+ """
+ Datadog Cloud Security Management (CSM) Ownership infers the most likely owner
+ for a cloud resource by combining ownership signals from across the platform,
+ and lets you review the inference, inspect its evidence, and submit feedback to
+ persist, override, or correct the inferred owner.
+ For more information, see `Cloud Security Management `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_ownership_feedback_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipFeedbackResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}/feedback",
+ "operation_id": "create_ownership_feedback",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "owner_type": {
+ "required": True,
+ "openapi_types": (OwnershipOwnerType,),
+ "attribute": "owner_type",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OwnershipFeedbackRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_ownership_evidence_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipEvidenceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}/evidence",
+ "operation_id": "get_ownership_evidence",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "owner_type": {
+ "required": True,
+ "openapi_types": (OwnershipOwnerType,),
+ "attribute": "owner_type",
+ "location": "path",
+ },
+ "if_none_match": {
+ "openapi_types": (str,),
+ "attribute": "If-None-Match",
+ "location": "header",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ownership_inference_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipInferenceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}",
+ "operation_id": "get_ownership_inference",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "owner_type": {
+ "required": True,
+ "openapi_types": (OwnershipOwnerType,),
+ "attribute": "owner_type",
+ "location": "path",
+ },
+ "if_none_match": {
+ "openapi_types": (str,),
+ "attribute": "If-None-Match",
+ "location": "header",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ownership_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/settings",
+ "operation_id": "get_ownership_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ownership_untagged_findings_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipUntaggedFindingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/settings/untagged",
+ "operation_id": "get_ownership_untagged_findings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ownership_history_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/{resource_id}/history",
+ "operation_id": "list_ownership_history",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "cursor": {
+ "openapi_types": (str,),
+ "attribute": "cursor",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ownership_history_by_owner_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/{resource_id}/{owner_type}/history",
+ "operation_id": "list_ownership_history_by_owner_type",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "owner_type": {
+ "required": True,
+ "openapi_types": (OwnershipOwnerType,),
+ "attribute": "owner_type",
+ "location": "path",
+ },
+ "cursor": {
+ "openapi_types": (str,),
+ "attribute": "cursor",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ownership_inferences_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipInferenceListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/{resource_id}",
+ "operation_id": "list_ownership_inferences",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._post_ownership_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (OwnershipSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/ownership/settings",
+ "operation_id": "post_ownership_settings",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OwnershipSettingsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_ownership_feedback(self, resource_id: str, owner_type: OwnershipOwnerType, body: OwnershipFeedbackRequest, ) -> OwnershipFeedbackResponse:
+ """Submit feedback on an ownership inference.
+
+ Submit feedback on the current ownership inference for a resource and owner type. Valid actions are ``confirm`` , ``reject`` , ``correct`` , and ``persist``.
+
+ The request must include the current inference ``checksum`` in ``inference_checksum``. If the checksum does not match the current inference state, the endpoint returns ``409 Conflict``.
+
+ When ``action`` is ``correct`` , ``corrected_owner_handle`` and ``corrected_owner_type`` are required.
+
+ :param resource_id: The identifier of the resource that the feedback applies to.
+ :type resource_id: str
+ :param owner_type: The type of owner that the feedback applies to.
+ :type owner_type: OwnershipOwnerType
+ :type body: OwnershipFeedbackRequest
+ :rtype: OwnershipFeedbackResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ kwargs["owner_type"] = owner_type
+
+ kwargs["body"] = body
+
+ return self._create_ownership_feedback_endpoint.call_with_http_info(**kwargs)
+
+ def get_ownership_evidence(self, resource_id: str, owner_type: OwnershipOwnerType, *, if_none_match: Union[str, UnsetType]=unset, ) -> OwnershipEvidenceResponse:
+ """Get the evidence for an ownership inference.
+
+ Get the evidence versions backing the current ownership inference for a resource and owner type.
+
+ This endpoint supports weak ETag caching. Pass the previously returned ``ETag`` value in the ``If-None-Match`` request header to receive a ``304 Not Modified`` response when the evidence has not changed.
+
+ :param resource_id: The identifier of the resource to retrieve evidence for.
+ :type resource_id: str
+ :param owner_type: The owner type of the inference to retrieve evidence for.
+ :type owner_type: OwnershipOwnerType
+ :param if_none_match: A previously returned weak ``ETag`` value. When supplied and the evidence has not changed, the endpoint returns ``304 Not Modified``.
+ :type if_none_match: str, optional
+ :rtype: OwnershipEvidenceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ kwargs["owner_type"] = owner_type
+
+ if if_none_match is not unset:
+ kwargs["if_none_match"] = if_none_match
+
+ return self._get_ownership_evidence_endpoint.call_with_http_info(**kwargs)
+
+ def get_ownership_inference(self, resource_id: str, owner_type: OwnershipOwnerType, *, if_none_match: Union[str, UnsetType]=unset, ) -> OwnershipInferenceResponse:
+ """Get an ownership inference by owner type.
+
+ Get the current ownership inference for a resource for a specific owner type.
+
+ This endpoint supports ETag-based caching. Pass the previously returned ``ETag`` value in the ``If-None-Match`` request header to receive a ``304 Not Modified`` response when the inference has not changed.
+
+ :param resource_id: The identifier of the resource to retrieve the ownership inference for.
+ :type resource_id: str
+ :param owner_type: The owner type of the inference to retrieve.
+ :type owner_type: OwnershipOwnerType
+ :param if_none_match: A previously returned ``ETag`` value. When supplied and the resource has not changed, the endpoint returns ``304 Not Modified``.
+ :type if_none_match: str, optional
+ :rtype: OwnershipInferenceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ kwargs["owner_type"] = owner_type
+
+ if if_none_match is not unset:
+ kwargs["if_none_match"] = if_none_match
+
+ return self._get_ownership_inference_endpoint.call_with_http_info(**kwargs)
+
+ def get_ownership_settings(self, ) -> OwnershipSettingsResponse:
+ """Get ownership settings for the org.
+
+ Get ownership settings for the org. When settings are unset, the API returns the default opt-out configuration with ``auto_tag`` set to ``true`` and ``confidence_level`` set to ``high``.
+
+ :rtype: OwnershipSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_ownership_settings_endpoint.call_with_http_info(**kwargs)
+
+ def get_ownership_untagged_findings(self, ) -> OwnershipUntaggedFindingsResponse:
+ """Count untagged findings by ownership confidence.
+
+ Count findings with no team tag, grouped by ownership confidence level.
+
+ :rtype: OwnershipUntaggedFindingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_ownership_untagged_findings_endpoint.call_with_http_info(**kwargs)
+
+ def list_ownership_history(self, resource_id: str, *, cursor: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> OwnershipHistoryResponse:
+ """List ownership inference history for a resource.
+
+ List inference history entries for a resource across all owner types, ordered from most recent to oldest. Uses cursor-based pagination.
+
+ :param resource_id: The identifier of the resource to retrieve inference history for.
+ :type resource_id: str
+ :param cursor: An opaque, base64-encoded cursor token returned by a previous call in ``pagination.next_cursor``. Omit to fetch the first page.
+ :type cursor: str, optional
+ :param limit: The maximum number of history entries to return per page.
+ :type limit: int, optional
+ :rtype: OwnershipHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ if cursor is not unset:
+ kwargs["cursor"] = cursor
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._list_ownership_history_endpoint.call_with_http_info(**kwargs)
+
+ def list_ownership_history_by_owner_type(self, resource_id: str, owner_type: OwnershipOwnerType, *, cursor: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> OwnershipHistoryResponse:
+ """List ownership history by owner type.
+
+ List inference history entries for a resource filtered by owner type, ordered from most recent to oldest. Uses cursor-based pagination.
+
+ :param resource_id: The identifier of the resource to retrieve inference history for.
+ :type resource_id: str
+ :param owner_type: The owner type to filter history by.
+ :type owner_type: OwnershipOwnerType
+ :param cursor: An opaque, base64-encoded cursor token returned by a previous call in ``pagination.next_cursor``. Omit to fetch the first page.
+ :type cursor: str, optional
+ :param limit: The maximum number of history entries to return per page.
+ :type limit: int, optional
+ :rtype: OwnershipHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ kwargs["owner_type"] = owner_type
+
+ if cursor is not unset:
+ kwargs["cursor"] = cursor
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._list_ownership_history_by_owner_type_endpoint.call_with_http_info(**kwargs)
+
+ def list_ownership_inferences(self, resource_id: str, ) -> OwnershipInferenceListResponse:
+ """List ownership inferences for a resource.
+
+ Get all current ownership inferences for a resource, one per owner type ( ``user`` , ``team`` , ``service`` , ``unknown`` ).
+
+ :param resource_id: The identifier of the resource to retrieve ownership inferences for.
+ :type resource_id: str
+ :rtype: OwnershipInferenceListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ return self._list_ownership_inferences_endpoint.call_with_http_info(**kwargs)
+
+ def post_ownership_settings(self, body: OwnershipSettingsRequest, ) -> OwnershipSettingsResponse:
+ """Update ownership settings for the org.
+
+ Update ownership settings for the org.
+
+ :type body: OwnershipSettingsRequest
+ :rtype: OwnershipSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._post_ownership_settings_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/csm_settings_api.py b/datadog_api_client/v2/api/csm_settings_api.py
new file mode 100644
index 0000000000..56dd3bcd23
--- /dev/null
+++ b/datadog_api_client/v2/api/csm_settings_api.py
@@ -0,0 +1,337 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.csm_agentless_hosts_response import CsmAgentlessHostsResponse
+from datadog_api_client.v2.model.csm_host_facet_info_response import CsmHostFacetInfoResponse
+from datadog_api_client.v2.model.csm_agentless_host_facets_response import CsmAgentlessHostFacetsResponse
+from datadog_api_client.v2.model.csm_unified_hosts_response import CsmUnifiedHostsResponse
+from datadog_api_client.v2.model.csm_unified_host_facets_response import CsmUnifiedHostFacetsResponse
+
+
+class CSMSettingsApi:
+ """
+ Datadog Cloud Security Management (CSM) Settings APIs allow you to list and filter
+ your cloud hosts monitored by CSM, covering both agentless and agent-based discovery.
+ For more information, see `Cloud Security Management `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_csm_agentless_host_facet_info_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmHostFacetInfoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/settings/agentless_hosts/facet_info",
+ "operation_id": "get_csm_agentless_host_facet_info",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "facet": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "facet",
+ "location": "query",
+ },
+ "search": {
+ "openapi_types": (str,),
+ "attribute": "search",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_csm_unified_host_facet_info_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmHostFacetInfoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/settings/hosts/facet_info",
+ "operation_id": "get_csm_unified_host_facet_info",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "facet": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "facet",
+ "location": "query",
+ },
+ "search": {
+ "openapi_types": (str,),
+ "attribute": "search",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_csm_agentless_host_facets_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmAgentlessHostFacetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/settings/agentless_hosts/facets",
+ "operation_id": "list_csm_agentless_host_facets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_csm_agentless_hosts_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmAgentlessHostsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/settings/agentless_hosts",
+ "operation_id": "list_csm_agentless_hosts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page": {
+ "validation": {
+ "inclusive_maximum": 1000000,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "size",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_csm_unified_host_facets_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmUnifiedHostFacetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/settings/hosts/facets",
+ "operation_id": "list_csm_unified_host_facets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_csm_unified_hosts_endpoint = _Endpoint(
+ settings={
+ "response_type": (CsmUnifiedHostsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/csm/settings/hosts",
+ "operation_id": "list_csm_unified_hosts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page": {
+ "validation": {
+ "inclusive_maximum": 1000000,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "size",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_csm_agentless_host_facet_info(self, facet: str, *, search: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, ) -> CsmHostFacetInfoResponse:
+ """Get agentless host facet info.
+
+ Get the value distribution for a specific agentless host facet, with optional search and filtering.
+
+ :param facet: The facet identifier to retrieve value distribution for. Valid values are ``resource_name`` , ``account_id`` , ``resource_type`` , ``cloud_provider`` , ``has_vulnerability_scanning`` , and ``has_posture_management``.
+ :type facet: str
+ :param search: A search string to filter the facet values.
+ :type search: str, optional
+ :param query: A filter query to scope the facet value counts.
+ :type query: str, optional
+ :rtype: CsmHostFacetInfoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["facet"] = facet
+
+ if search is not unset:
+ kwargs["search"] = search
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ return self._get_csm_agentless_host_facet_info_endpoint.call_with_http_info(**kwargs)
+
+ def get_csm_unified_host_facet_info(self, facet: str, *, search: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, ) -> CsmHostFacetInfoResponse:
+ """Get unified host facet info.
+
+ Get the value distribution for a specific unified host facet, with optional search and filtering.
+
+ :param facet: The facet identifier to retrieve value distribution for. Valid values include ``resource_name`` , ``account_id`` , ``resource_type`` , ``cloud_provider`` , ``agentless_vulnerability_scanning`` , ``agentless_posture_management`` , ``hostname`` , ``agent_version`` , ``os`` , ``cluster_name`` , ``agent_posture_management`` , ``agent_cws_enabled`` , ``agent_csm_vm_hosts_enabled`` , and ``agent_csm_vm_containers_enabled``.
+ :type facet: str
+ :param search: A search string to filter the facet values.
+ :type search: str, optional
+ :param query: A filter query to scope the facet value counts.
+ :type query: str, optional
+ :rtype: CsmHostFacetInfoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["facet"] = facet
+
+ if search is not unset:
+ kwargs["search"] = search
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ return self._get_csm_unified_host_facet_info_endpoint.call_with_http_info(**kwargs)
+
+ def list_csm_agentless_host_facets(self, ) -> CsmAgentlessHostFacetsResponse:
+ """List agentless host facets.
+
+ Get the list of available facets for filtering agentless hosts.
+
+ :rtype: CsmAgentlessHostFacetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_csm_agentless_host_facets_endpoint.call_with_http_info(**kwargs)
+
+ def list_csm_agentless_hosts(self, *, page: Union[int, UnsetType]=unset, size: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, ) -> CsmAgentlessHostsResponse:
+ """List agentless hosts.
+
+ Get the list of agentless hosts for CSM, with optional pagination and filtering.
+
+ :param page: The page index for pagination (zero-based).
+ :type page: int, optional
+ :param size: The number of agentless hosts to return per page.
+ :type size: int, optional
+ :param query: A search query string to filter agentless hosts.
+ :type query: str, optional
+ :rtype: CsmAgentlessHostsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page is not unset:
+ kwargs["page"] = page
+
+ if size is not unset:
+ kwargs["size"] = size
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ return self._list_csm_agentless_hosts_endpoint.call_with_http_info(**kwargs)
+
+ def list_csm_unified_host_facets(self, ) -> CsmUnifiedHostFacetsResponse:
+ """List unified host facets.
+
+ Get the list of available facets for filtering unified hosts.
+
+ :rtype: CsmUnifiedHostFacetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_csm_unified_host_facets_endpoint.call_with_http_info(**kwargs)
+
+ def list_csm_unified_hosts(self, *, page: Union[int, UnsetType]=unset, size: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, ) -> CsmUnifiedHostsResponse:
+ """List unified hosts.
+
+ Get the list of unified hosts for CSM, combining agent and agentless host data, with optional pagination and filtering.
+
+ :param page: The page index for pagination (zero-based).
+ :type page: int, optional
+ :param size: The number of hosts to return per page.
+ :type size: int, optional
+ :param query: A search query string to filter unified hosts.
+ :type query: str, optional
+ :rtype: CsmUnifiedHostsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page is not unset:
+ kwargs["page"] = page
+
+ if size is not unset:
+ kwargs["size"] = size
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ return self._list_csm_unified_hosts_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/csm_threats_api.py b/datadog_api_client/v2/api/csm_threats_api.py
new file mode 100644
index 0000000000..0717e8c320
--- /dev/null
+++ b/datadog_api_client/v2/api/csm_threats_api.py
@@ -0,0 +1,732 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.cloud_workload_security_agent_rules_list_response import CloudWorkloadSecurityAgentRulesListResponse
+from datadog_api_client.v2.model.cloud_workload_security_agent_rule_response import CloudWorkloadSecurityAgentRuleResponse
+from datadog_api_client.v2.model.cloud_workload_security_agent_rule_create_request import CloudWorkloadSecurityAgentRuleCreateRequest
+from datadog_api_client.v2.model.cloud_workload_security_agent_rule_update_request import CloudWorkloadSecurityAgentRuleUpdateRequest
+from datadog_api_client.v2.model.cloud_workload_security_agent_policies_list_response import CloudWorkloadSecurityAgentPoliciesListResponse
+from datadog_api_client.v2.model.cloud_workload_security_agent_policy_response import CloudWorkloadSecurityAgentPolicyResponse
+from datadog_api_client.v2.model.cloud_workload_security_agent_policy_create_request import CloudWorkloadSecurityAgentPolicyCreateRequest
+from datadog_api_client.v2.model.cloud_workload_security_agent_policy_update_request import CloudWorkloadSecurityAgentPolicyUpdateRequest
+
+
+class CSMThreatsApi:
+ """
+ Workload Protection monitors file, network, and process activity across your environment to detect real-time threats to your infrastructure. See `Workload Protection `_ for more information on setting up Workload Protection.
+
+ **Note** : These endpoints are split based on whether you are using the US1-FED site or not. Please reference the specific resource for the site you are using.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_cloud_workload_security_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/cloud_workload_security/agent_rules",
+ "operation_id": "create_cloud_workload_security_agent_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CloudWorkloadSecurityAgentRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_csm_threats_agent_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/policy",
+ "operation_id": "create_csm_threats_agent_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CloudWorkloadSecurityAgentPolicyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_csm_threats_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/agent_rules",
+ "operation_id": "create_csm_threats_agent_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CloudWorkloadSecurityAgentRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_cloud_workload_security_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}",
+ "operation_id": "delete_cloud_workload_security_agent_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "agent_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_csm_threats_agent_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/policy/{policy_id}",
+ "operation_id": "delete_csm_threats_agent_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_csm_threats_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}",
+ "operation_id": "delete_csm_threats_agent_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "agent_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_rule_id",
+ "location": "path",
+ },
+ "policy_id": {
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._download_cloud_workload_policy_file_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/cloud_workload/policy/download",
+ "operation_id": "download_cloud_workload_policy_file",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/yaml", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._download_csm_threats_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/policy/download",
+ "operation_id": "download_csm_threats_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/zip", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cloud_workload_security_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}",
+ "operation_id": "get_cloud_workload_security_agent_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "agent_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_csm_threats_agent_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/policy/{policy_id}",
+ "operation_id": "get_csm_threats_agent_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_csm_threats_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}",
+ "operation_id": "get_csm_threats_agent_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "agent_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_rule_id",
+ "location": "path",
+ },
+ "policy_id": {
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_cloud_workload_security_agent_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRulesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/cloud_workload_security/agent_rules",
+ "operation_id": "list_cloud_workload_security_agent_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_csm_threats_agent_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentPoliciesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/policy",
+ "operation_id": "list_csm_threats_agent_policies",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_csm_threats_agent_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRulesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/agent_rules",
+ "operation_id": "list_csm_threats_agent_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_cloud_workload_security_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}",
+ "operation_id": "update_cloud_workload_security_agent_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "agent_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CloudWorkloadSecurityAgentRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_csm_threats_agent_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/policy/{policy_id}",
+ "operation_id": "update_csm_threats_agent_policy",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CloudWorkloadSecurityAgentPolicyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_csm_threats_agent_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudWorkloadSecurityAgentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}",
+ "operation_id": "update_csm_threats_agent_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "agent_rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_rule_id",
+ "location": "path",
+ },
+ "policy_id": {
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CloudWorkloadSecurityAgentRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_cloud_workload_security_agent_rule(self, body: CloudWorkloadSecurityAgentRuleCreateRequest, ) -> CloudWorkloadSecurityAgentRuleResponse:
+ """Create a Workload Protection agent rule (US1-FED).
+
+ Create a new agent rule with the given parameters.
+
+ **Note** : This endpoint should only be used for the Government (US1-FED) site.
+
+ :param body: The definition of the new agent rule
+ :type body: CloudWorkloadSecurityAgentRuleCreateRequest
+ :rtype: CloudWorkloadSecurityAgentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_cloud_workload_security_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_csm_threats_agent_policy(self, body: CloudWorkloadSecurityAgentPolicyCreateRequest, ) -> CloudWorkloadSecurityAgentPolicyResponse:
+ """Create a Workload Protection policy.
+
+ Create a new Workload Protection policy with the given parameters.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param body: The definition of the new Agent policy
+ :type body: CloudWorkloadSecurityAgentPolicyCreateRequest
+ :rtype: CloudWorkloadSecurityAgentPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_csm_threats_agent_policy_endpoint.call_with_http_info(**kwargs)
+
+ def create_csm_threats_agent_rule(self, body: CloudWorkloadSecurityAgentRuleCreateRequest, ) -> CloudWorkloadSecurityAgentRuleResponse:
+ """Create a Workload Protection agent rule.
+
+ Create a new Workload Protection agent rule with the given parameters.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param body: The definition of the new agent rule
+ :type body: CloudWorkloadSecurityAgentRuleCreateRequest
+ :rtype: CloudWorkloadSecurityAgentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_csm_threats_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_cloud_workload_security_agent_rule(self, agent_rule_id: str, ) -> None:
+ """Delete a Workload Protection agent rule (US1-FED).
+
+ Delete a specific agent rule.
+
+ **Note** : This endpoint should only be used for the Government (US1-FED) site.
+
+ :param agent_rule_id: The ID of the Agent rule
+ :type agent_rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_rule_id"] = agent_rule_id
+
+ return self._delete_cloud_workload_security_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_csm_threats_agent_policy(self, policy_id: str, ) -> None:
+ """Delete a Workload Protection policy.
+
+ Delete a specific Workload Protection policy.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._delete_csm_threats_agent_policy_endpoint.call_with_http_info(**kwargs)
+
+ def delete_csm_threats_agent_rule(self, agent_rule_id: str, *, policy_id: Union[str, UnsetType]=unset, ) -> None:
+ """Delete a Workload Protection agent rule.
+
+ Delete a specific Workload Protection agent rule.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param agent_rule_id: The ID of the Agent rule
+ :type agent_rule_id: str
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_rule_id"] = agent_rule_id
+
+ if policy_id is not unset:
+ kwargs["policy_id"] = policy_id
+
+ return self._delete_csm_threats_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def download_cloud_workload_policy_file(self, ) -> file_type:
+ """Download the Workload Protection policy (US1-FED).
+
+ The download endpoint generates a Workload Protection policy file from your currently active
+ Workload Protection agent rules, and downloads them as a ``.policy`` file. This file can then be deployed to
+ your agents to update the policy running in your environment.
+
+ **Note** : This endpoint should only be used for the Government (US1-FED) site.
+
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._download_cloud_workload_policy_file_endpoint.call_with_http_info(**kwargs)
+
+ def download_csm_threats_policy(self, ) -> file_type:
+ """Download the Workload Protection policy.
+
+ The download endpoint generates a Workload Protection policy file from your currently active
+ Workload Protection agent rules, and downloads them as a ``.policy`` file. This file can then be deployed to
+ your agents to update the policy running in your environment.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._download_csm_threats_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_cloud_workload_security_agent_rule(self, agent_rule_id: str, ) -> CloudWorkloadSecurityAgentRuleResponse:
+ """Get a Workload Protection agent rule (US1-FED).
+
+ Get the details of a specific agent rule.
+
+ **Note** : This endpoint should only be used for the Government (US1-FED) site.
+
+ :param agent_rule_id: The ID of the Agent rule
+ :type agent_rule_id: str
+ :rtype: CloudWorkloadSecurityAgentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_rule_id"] = agent_rule_id
+
+ return self._get_cloud_workload_security_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_csm_threats_agent_policy(self, policy_id: str, ) -> CloudWorkloadSecurityAgentPolicyResponse:
+ """Get a Workload Protection policy.
+
+ Get the details of a specific Workload Protection policy.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str
+ :rtype: CloudWorkloadSecurityAgentPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._get_csm_threats_agent_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_csm_threats_agent_rule(self, agent_rule_id: str, *, policy_id: Union[str, UnsetType]=unset, ) -> CloudWorkloadSecurityAgentRuleResponse:
+ """Get a Workload Protection agent rule.
+
+ Get the details of a specific Workload Protection agent rule.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param agent_rule_id: The ID of the Agent rule
+ :type agent_rule_id: str
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str, optional
+ :rtype: CloudWorkloadSecurityAgentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_rule_id"] = agent_rule_id
+
+ if policy_id is not unset:
+ kwargs["policy_id"] = policy_id
+
+ return self._get_csm_threats_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def list_cloud_workload_security_agent_rules(self, ) -> CloudWorkloadSecurityAgentRulesListResponse:
+ """Get all Workload Protection agent rules (US1-FED).
+
+ Get the list of agent rules.
+
+ **Note** : This endpoint should only be used for the Government (US1-FED) site.
+
+ :rtype: CloudWorkloadSecurityAgentRulesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_cloud_workload_security_agent_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_csm_threats_agent_policies(self, ) -> CloudWorkloadSecurityAgentPoliciesListResponse:
+ """Get all Workload Protection policies.
+
+ Get the list of Workload Protection policies.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :rtype: CloudWorkloadSecurityAgentPoliciesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_csm_threats_agent_policies_endpoint.call_with_http_info(**kwargs)
+
+ def list_csm_threats_agent_rules(self, *, policy_id: Union[str, UnsetType]=unset, ) -> CloudWorkloadSecurityAgentRulesListResponse:
+ """Get all Workload Protection agent rules.
+
+ Get the list of Workload Protection agent rules.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str, optional
+ :rtype: CloudWorkloadSecurityAgentRulesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if policy_id is not unset:
+ kwargs["policy_id"] = policy_id
+
+ return self._list_csm_threats_agent_rules_endpoint.call_with_http_info(**kwargs)
+
+ def update_cloud_workload_security_agent_rule(self, agent_rule_id: str, body: CloudWorkloadSecurityAgentRuleUpdateRequest, ) -> CloudWorkloadSecurityAgentRuleResponse:
+ """Update a Workload Protection agent rule (US1-FED).
+
+ Update a specific agent rule.
+ Returns the agent rule object when the request is successful.
+
+ **Note** : This endpoint should only be used for the Government (US1-FED) site.
+
+ :param agent_rule_id: The ID of the Agent rule
+ :type agent_rule_id: str
+ :param body: New definition of the agent rule
+ :type body: CloudWorkloadSecurityAgentRuleUpdateRequest
+ :rtype: CloudWorkloadSecurityAgentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_rule_id"] = agent_rule_id
+
+ kwargs["body"] = body
+
+ return self._update_cloud_workload_security_agent_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_csm_threats_agent_policy(self, policy_id: str, body: CloudWorkloadSecurityAgentPolicyUpdateRequest, ) -> CloudWorkloadSecurityAgentPolicyResponse:
+ """Update a Workload Protection policy.
+
+ Update a specific Workload Protection policy.
+ Returns the policy object when the request is successful.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str
+ :param body: New definition of the Agent policy
+ :type body: CloudWorkloadSecurityAgentPolicyUpdateRequest
+ :rtype: CloudWorkloadSecurityAgentPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ kwargs["body"] = body
+
+ return self._update_csm_threats_agent_policy_endpoint.call_with_http_info(**kwargs)
+
+ def update_csm_threats_agent_rule(self, agent_rule_id: str, body: CloudWorkloadSecurityAgentRuleUpdateRequest, *, policy_id: Union[str, UnsetType]=unset, ) -> CloudWorkloadSecurityAgentRuleResponse:
+ """Update a Workload Protection agent rule.
+
+ Update a specific Workload Protection Agent rule.
+ Returns the agent rule object when the request is successful.
+
+ **Note** : This endpoint is not available for the Government (US1-FED) site. Please reference the (US1-FED) specific resource below.
+
+ :param agent_rule_id: The ID of the Agent rule
+ :type agent_rule_id: str
+ :param body: New definition of the agent rule
+ :type body: CloudWorkloadSecurityAgentRuleUpdateRequest
+ :param policy_id: The ID of the Agent policy
+ :type policy_id: str, optional
+ :rtype: CloudWorkloadSecurityAgentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_rule_id"] = agent_rule_id
+
+ if policy_id is not unset:
+ kwargs["policy_id"] = policy_id
+
+ kwargs["body"] = body
+
+ return self._update_csm_threats_agent_rule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/customer_org_api.py b/datadog_api_client/v2/api/customer_org_api.py
new file mode 100644
index 0000000000..3a7fa8ad31
--- /dev/null
+++ b/datadog_api_client/v2/api/customer_org_api.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.customer_org_disable_response import CustomerOrgDisableResponse
+from datadog_api_client.v2.model.customer_org_disable_request import CustomerOrgDisableRequest
+
+
+class CustomerOrgApi:
+ """
+ Programmatic management of a customer's Datadog organization. Use this API to perform
+ self-service organization lifecycle actions such as disabling the authenticated org.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._disable_customer_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomerOrgDisableResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org/disable",
+ "operation_id": "disable_customer_org",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CustomerOrgDisableRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def disable_customer_org(self, body: CustomerOrgDisableRequest, ) -> CustomerOrgDisableResponse:
+ """Disable the authenticated customer organization.
+
+ Disable the Datadog organization associated with the authenticated user or API key.
+ The request body uses JSON:API format. If ``org_uuid`` is supplied, it must match
+ the authenticated org or the request is rejected. Successful calls disable the org
+ and return the resulting state from the downstream service. Requires the
+ ``org_management`` permission.
+
+ :type body: CustomerOrgDisableRequest
+ :rtype: CustomerOrgDisableResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._disable_customer_org_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/dashboard_lists_api.py b/datadog_api_client/v2/api/dashboard_lists_api.py
new file mode 100644
index 0000000000..825391a72c
--- /dev/null
+++ b/datadog_api_client/v2/api/dashboard_lists_api.py
@@ -0,0 +1,219 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.dashboard_list_delete_items_response import DashboardListDeleteItemsResponse
+from datadog_api_client.v2.model.dashboard_list_delete_items_request import DashboardListDeleteItemsRequest
+from datadog_api_client.v2.model.dashboard_list_items import DashboardListItems
+from datadog_api_client.v2.model.dashboard_list_add_items_response import DashboardListAddItemsResponse
+from datadog_api_client.v2.model.dashboard_list_add_items_request import DashboardListAddItemsRequest
+from datadog_api_client.v2.model.dashboard_list_update_items_response import DashboardListUpdateItemsResponse
+from datadog_api_client.v2.model.dashboard_list_update_items_request import DashboardListUpdateItemsRequest
+
+
+class DashboardListsApi:
+ """
+ Interact with your dashboard lists through the API to
+ organize, find, and share all of your dashboards with your team and
+ organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_dashboard_list_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardListAddItemsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards",
+ "operation_id": "create_dashboard_list_items",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "dashboard_list_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardListAddItemsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dashboard_list_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardListDeleteItemsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards",
+ "operation_id": "delete_dashboard_list_items",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "dashboard_list_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardListDeleteItemsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_dashboard_list_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardListItems,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards",
+ "operation_id": "get_dashboard_list_items",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "dashboard_list_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_dashboard_list_items_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardListUpdateItemsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards",
+ "operation_id": "update_dashboard_list_items",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_list_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "dashboard_list_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DashboardListUpdateItemsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_dashboard_list_items(self, dashboard_list_id: int, body: DashboardListAddItemsRequest, ) -> DashboardListAddItemsResponse:
+ """Add Items to a Dashboard List.
+
+ Add dashboards to an existing dashboard list.
+
+ :param dashboard_list_id: ID of the dashboard list to add items to.
+ :type dashboard_list_id: int
+ :param body: Dashboards to add to the dashboard list.
+ :type body: DashboardListAddItemsRequest
+ :rtype: DashboardListAddItemsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_list_id"] = dashboard_list_id
+
+ kwargs["body"] = body
+
+ return self._create_dashboard_list_items_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dashboard_list_items(self, dashboard_list_id: int, body: DashboardListDeleteItemsRequest, ) -> DashboardListDeleteItemsResponse:
+ """Delete items from a dashboard list.
+
+ Delete dashboards from an existing dashboard list.
+
+ :param dashboard_list_id: ID of the dashboard list to delete items from.
+ :type dashboard_list_id: int
+ :param body: Dashboards to delete from the dashboard list.
+ :type body: DashboardListDeleteItemsRequest
+ :rtype: DashboardListDeleteItemsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_list_id"] = dashboard_list_id
+
+ kwargs["body"] = body
+
+ return self._delete_dashboard_list_items_endpoint.call_with_http_info(**kwargs)
+
+ def get_dashboard_list_items(self, dashboard_list_id: int, ) -> DashboardListItems:
+ """Get items of a Dashboard List.
+
+ Fetch the dashboard list’s dashboard definitions.
+
+ :param dashboard_list_id: ID of the dashboard list to get items from.
+ :type dashboard_list_id: int
+ :rtype: DashboardListItems
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_list_id"] = dashboard_list_id
+
+ return self._get_dashboard_list_items_endpoint.call_with_http_info(**kwargs)
+
+ def update_dashboard_list_items(self, dashboard_list_id: int, body: DashboardListUpdateItemsRequest, ) -> DashboardListUpdateItemsResponse:
+ """Update items of a dashboard list.
+
+ Update dashboards of an existing dashboard list.
+
+ :param dashboard_list_id: ID of the dashboard list to update items from.
+ :type dashboard_list_id: int
+ :param body: New dashboards of the dashboard list.
+ :type body: DashboardListUpdateItemsRequest
+ :rtype: DashboardListUpdateItemsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_list_id"] = dashboard_list_id
+
+ kwargs["body"] = body
+
+ return self._update_dashboard_list_items_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/dashboard_secure_embed_api.py b/datadog_api_client/v2/api/dashboard_secure_embed_api.py
new file mode 100644
index 0000000000..164dbfbc0a
--- /dev/null
+++ b/datadog_api_client/v2/api/dashboard_secure_embed_api.py
@@ -0,0 +1,243 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.secure_embed_create_response import SecureEmbedCreateResponse
+from datadog_api_client.v2.model.secure_embed_create_request import SecureEmbedCreateRequest
+from datadog_api_client.v2.model.secure_embed_get_response import SecureEmbedGetResponse
+from datadog_api_client.v2.model.secure_embed_update_response import SecureEmbedUpdateResponse
+from datadog_api_client.v2.model.secure_embed_update_request import SecureEmbedUpdateRequest
+
+
+class DashboardSecureEmbedApi:
+ """
+ Manage securely embedded Datadog dashboards. Secure embeds use HMAC-SHA256 signed sessions
+ for authentication, enabling customers to embed dashboards in their own applications with
+ server-side auth control. Unlike public dashboards (open URL) or invite dashboards
+ (email-based access), secure embeds provide programmatic access control.
+
+ **Requirements:**
+
+ * **Embed** sharing must be enabled under **Organization Settings** > **Public Sharing** > **Shared Dashboards**.
+ * You need `an API key and an application key `_ to interact with these endpoints.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_dashboard_secure_embed_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecureEmbedCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboard/{dashboard_id}/shared/secure-embed",
+ "operation_id": "create_dashboard_secure_embed",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecureEmbedCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dashboard_secure_embed_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboard/{dashboard_id}/shared/secure-embed/{token}",
+ "operation_id": "delete_dashboard_secure_embed",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_dashboard_secure_embed_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecureEmbedGetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboard/{dashboard_id}/shared/secure-embed/{token}",
+ "operation_id": "get_dashboard_secure_embed",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_dashboard_secure_embed_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecureEmbedUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboard/{dashboard_id}/shared/secure-embed/{token}",
+ "operation_id": "update_dashboard_secure_embed",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ "token": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecureEmbedUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_dashboard_secure_embed(self, dashboard_id: str, body: SecureEmbedCreateRequest, ) -> SecureEmbedCreateResponse:
+ """Create a secure embed for a dashboard.
+
+ Create a secure embed share for a dashboard. The response includes a one-time ``credential`` used for HMAC-SHA256 signing. Store it securely — it cannot be retrieved again.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :param body: Secure embed creation request body.
+ :type body: SecureEmbedCreateRequest
+ :rtype: SecureEmbedCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ kwargs["body"] = body
+
+ return self._create_dashboard_secure_embed_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dashboard_secure_embed(self, dashboard_id: str, token: str, ) -> None:
+ """Delete a secure embed for a dashboard.
+
+ Delete a secure embed share for a dashboard.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :param token: The share token identifying the secure embed.
+ :type token: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ kwargs["token"] = token
+
+ return self._delete_dashboard_secure_embed_endpoint.call_with_http_info(**kwargs)
+
+ def get_dashboard_secure_embed(self, dashboard_id: str, token: str, ) -> SecureEmbedGetResponse:
+ """Get a secure embed for a dashboard.
+
+ Retrieve an existing secure embed configuration for a dashboard.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :param token: The share token identifying the secure embed.
+ :type token: str
+ :rtype: SecureEmbedGetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ kwargs["token"] = token
+
+ return self._get_dashboard_secure_embed_endpoint.call_with_http_info(**kwargs)
+
+ def update_dashboard_secure_embed(self, dashboard_id: str, token: str, body: SecureEmbedUpdateRequest, ) -> SecureEmbedUpdateResponse:
+ """Update a secure embed for a dashboard.
+
+ Partially update a secure embed configuration. All fields are optional (PATCH semantics).
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :param token: The share token identifying the secure embed.
+ :type token: str
+ :param body: Secure embed update request body.
+ :type body: SecureEmbedUpdateRequest
+ :rtype: SecureEmbedUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ kwargs["token"] = token
+
+ kwargs["body"] = body
+
+ return self._update_dashboard_secure_embed_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/dashboard_sharing_api.py b/datadog_api_client/v2/api/dashboard_sharing_api.py
new file mode 100644
index 0000000000..a234aedbfa
--- /dev/null
+++ b/datadog_api_client/v2/api/dashboard_sharing_api.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_shared_dashboards_response import ListSharedDashboardsResponse
+
+
+class DashboardSharingApi:
+ """
+ Manage dashboard sharing configurations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_shared_dashboards_by_dashboard_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListSharedDashboardsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboard/{dashboard_id}/shared",
+ "operation_id": "list_shared_dashboards_by_dashboard_id",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_shared_dashboards_by_dashboard_id(self, dashboard_id: str, ) -> ListSharedDashboardsResponse:
+ """List shared dashboards for a dashboard.
+
+ Retrieve shared dashboards associated with the specified dashboard.
+
+ :param dashboard_id: ID of the dashboard.
+ :type dashboard_id: str
+ :rtype: ListSharedDashboardsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ return self._list_shared_dashboards_by_dashboard_id_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/dashboards_api.py b/datadog_api_client/v2/api/dashboards_api.py
new file mode 100644
index 0000000000..144419d595
--- /dev/null
+++ b/datadog_api_client/v2/api/dashboards_api.py
@@ -0,0 +1,187 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_dashboards_usage_response import ListDashboardsUsageResponse
+from datadog_api_client.v2.model.dashboard_usage import DashboardUsage
+from datadog_api_client.v2.model.dashboard_usage_response import DashboardUsageResponse
+
+
+class DashboardsApi:
+ """
+ Get usage statistics for the dashboards in your organization, including view
+ counts, last-edit times, widget counts, and quality scores. See the
+ `Dashboards documentation `_ for more
+ information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_dashboard_usage_endpoint = _Endpoint(
+ settings={
+ "response_type": (DashboardUsageResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboards/{dashboard_id}/usage",
+ "operation_id": "get_dashboard_usage",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dashboard_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dashboard_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_dashboards_usage_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListDashboardsUsageResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/dashboards/usage",
+ "operation_id": "list_dashboards_usage",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "filter_edited_before": {
+ "openapi_types": (str,),
+ "attribute": "filter[edited_before]",
+ "location": "query",
+ },
+ "filter_viewed_before": {
+ "openapi_types": (str,),
+ "attribute": "filter[viewed_before]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_dashboard_usage(self, dashboard_id: str, ) -> DashboardUsageResponse:
+ """Get usage stats for a dashboard.
+
+ Get usage statistics for a single dashboard. The response includes view counts, the most recent view and edit times, widget counts, and the dashboard quality score. View-count fields depend on Real User Monitoring (RUM) and are ``null`` or ``0`` in orgs without RUM. **View counts are refreshed once per day** and **only reflect views recorded starting January 2025** ; views prior to that date are not included.
+
+ :param dashboard_id: The ID of the dashboard.
+ :type dashboard_id: str
+ :rtype: DashboardUsageResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dashboard_id"] = dashboard_id
+
+ return self._get_dashboard_usage_endpoint.call_with_http_info(**kwargs)
+
+ def list_dashboards_usage(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, filter_edited_before: Union[str, UnsetType]=unset, filter_viewed_before: Union[str, UnsetType]=unset, ) -> ListDashboardsUsageResponse:
+ """Get usage stats for all dashboards.
+
+ Get paginated usage statistics for every dashboard in the caller's organization. Use ``page[limit]`` and ``page[offset]`` to walk the result set. Use ``filter[edited_before]`` or ``filter[viewed_before]`` to narrow results by edit or view date. View-count fields depend on Real User Monitoring (RUM) and are ``null`` or ``0`` in orgs without RUM. **View counts are refreshed once per day** and **only reflect views recorded starting January 2025** ; views prior to that date are not included.
+
+ :param page_limit: Maximum number of dashboards to return per page. Server-side maximum is 500; values above 500 return a 400 Bad Request.
+ :type page_limit: int, optional
+ :param page_offset: Zero-based offset into the result set.
+ :type page_offset: int, optional
+ :param filter_edited_before: Return only dashboards whose last edit ( ``edited_at`` ) is strictly before this ISO 8601 timestamp ( ``edited_at < value`` ; boundary matches are excluded). Must include a timezone offset (for example, ``Z`` or ``+00:00`` ); naive timestamps return HTTP 400.
+ :type filter_edited_before: str, optional
+ :param filter_viewed_before: Return only dashboards whose most recent view ( ``viewed_at`` ) is strictly before this ISO 8601 timestamp, including dashboards that have never been viewed. Must include a timezone offset; naive timestamps return HTTP 400. Orgs without Real User Monitoring (RUM) will see all dashboards returned by this filter.
+ :type filter_viewed_before: str, optional
+ :rtype: ListDashboardsUsageResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if filter_edited_before is not unset:
+ kwargs["filter_edited_before"] = filter_edited_before
+
+ if filter_viewed_before is not unset:
+ kwargs["filter_viewed_before"] = filter_viewed_before
+
+ return self._list_dashboards_usage_endpoint.call_with_http_info(**kwargs)
+
+ def list_dashboards_usage_with_pagination(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, filter_edited_before: Union[str, UnsetType]=unset, filter_viewed_before: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[DashboardUsage]:
+ """Get usage stats for all dashboards.
+
+ Provide a paginated version of :meth:`list_dashboards_usage`, returning all items.
+
+ :param page_limit: Maximum number of dashboards to return per page. Server-side maximum is 500; values above 500 return a 400 Bad Request.
+ :type page_limit: int, optional
+ :param page_offset: Zero-based offset into the result set.
+ :type page_offset: int, optional
+ :param filter_edited_before: Return only dashboards whose last edit ( ``edited_at`` ) is strictly before this ISO 8601 timestamp ( ``edited_at < value`` ; boundary matches are excluded). Must include a timezone offset (for example, ``Z`` or ``+00:00`` ); naive timestamps return HTTP 400.
+ :type filter_edited_before: str, optional
+ :param filter_viewed_before: Return only dashboards whose most recent view ( ``viewed_at`` ) is strictly before this ISO 8601 timestamp, including dashboards that have never been viewed. Must include a timezone offset; naive timestamps return HTTP 400. Orgs without Real User Monitoring (RUM) will see all dashboards returned by this filter.
+ :type filter_viewed_before: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[DashboardUsage]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if filter_edited_before is not unset:
+ kwargs["filter_edited_before"] = filter_edited_before
+
+ if filter_viewed_before is not unset:
+ kwargs["filter_viewed_before"] = filter_viewed_before
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 250)
+ endpoint = self._list_dashboards_usage_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/data_deletion_api.py b/datadog_api_client/v2/api/data_deletion_api.py
new file mode 100644
index 0000000000..0724c51672
--- /dev/null
+++ b/datadog_api_client/v2/api/data_deletion_api.py
@@ -0,0 +1,200 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.create_data_deletion_response_body import CreateDataDeletionResponseBody
+from datadog_api_client.v2.model.create_data_deletion_request_body import CreateDataDeletionRequestBody
+from datadog_api_client.v2.model.get_data_deletions_response_body import GetDataDeletionsResponseBody
+from datadog_api_client.v2.model.cancel_data_deletion_response_body import CancelDataDeletionResponseBody
+
+
+class DataDeletionApi:
+ """
+ The Data Deletion API allows the user to target and delete data from the allowed products. It's currently enabled for Logs and RUM and depends on ``logs_delete_data`` and ``rum_delete_data`` permissions respectively.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._cancel_data_deletion_request_endpoint = _Endpoint(
+ settings={
+ "response_type": (CancelDataDeletionResponseBody,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deletion/requests/{id}/cancel",
+ "operation_id": "cancel_data_deletion_request",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_data_deletion_request_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateDataDeletionResponseBody,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deletion/data/{product}",
+ "operation_id": "create_data_deletion_request",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "product": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateDataDeletionRequestBody,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_data_deletion_requests_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetDataDeletionsResponseBody,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deletion/requests",
+ "operation_id": "get_data_deletion_requests",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "next_page": {
+ "openapi_types": (str,),
+ "attribute": "next_page",
+ "location": "query",
+ },
+ "product": {
+ "openapi_types": (str,),
+ "attribute": "product",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "status": {
+ "openapi_types": (str,),
+ "attribute": "status",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 50,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def cancel_data_deletion_request(self, id: str, ) -> CancelDataDeletionResponseBody:
+ """Cancels a data deletion request.
+
+ Cancels a data deletion request by providing its ID.
+
+ :param id: ID of the deletion request.
+ :type id: str
+ :rtype: CancelDataDeletionResponseBody
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._cancel_data_deletion_request_endpoint.call_with_http_info(**kwargs)
+
+ def create_data_deletion_request(self, product: str, body: CreateDataDeletionRequestBody, ) -> CreateDataDeletionResponseBody:
+ """Creates a data deletion request.
+
+ Creates a data deletion request by providing a query and a timeframe targeting the proper data.
+
+ :param product: Name of the product to be deleted, either ``logs`` or ``rum``.
+ :type product: str
+ :type body: CreateDataDeletionRequestBody
+ :rtype: CreateDataDeletionResponseBody
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["product"] = product
+
+ kwargs["body"] = body
+
+ return self._create_data_deletion_request_endpoint.call_with_http_info(**kwargs)
+
+ def get_data_deletion_requests(self, *, next_page: Union[str, UnsetType]=unset, product: Union[str, UnsetType]=unset, query: Union[str, UnsetType]=unset, status: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> GetDataDeletionsResponseBody:
+ """Gets a list of data deletion requests.
+
+ Gets a list of data deletion requests based on several filter parameters.
+
+ :param next_page: The next page of the previous search. If the next_page parameter is included, the rest of the query elements are ignored.
+ :type next_page: str, optional
+ :param product: Retrieve only the requests related to the given product.
+ :type product: str, optional
+ :param query: Retrieve only the requests that matches the given query.
+ :type query: str, optional
+ :param status: Retrieve only the requests with the given status.
+ :type status: str, optional
+ :param page_size: Sets the page size of the search.
+ :type page_size: int, optional
+ :rtype: GetDataDeletionsResponseBody
+ """
+ kwargs: Dict[str, Any] = {}
+ if next_page is not unset:
+ kwargs["next_page"] = next_page
+
+ if product is not unset:
+ kwargs["product"] = product
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if status is not unset:
+ kwargs["status"] = status
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._get_data_deletion_requests_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/data_observability_api.py b/datadog_api_client/v2/api/data_observability_api.py
new file mode 100644
index 0000000000..2076b28a39
--- /dev/null
+++ b/datadog_api_client/v2/api/data_observability_api.py
@@ -0,0 +1,108 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.get_data_observability_monitor_run_status_response import GetDataObservabilityMonitorRunStatusResponse
+from datadog_api_client.v2.model.run_data_observability_monitor_response import RunDataObservabilityMonitorResponse
+
+
+class DataObservabilityApi:
+ """
+ Manage and run data observability monitors.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_data_observability_monitor_run_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetDataObservabilityMonitorRunStatusResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/data-observability/monitors/runs/{run_id}/status",
+ "operation_id": "get_data_observability_monitor_run_status",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "run_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "run_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._run_data_observability_monitor_endpoint = _Endpoint(
+ settings={
+ "response_type": (RunDataObservabilityMonitorResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/data-observability/monitors/{monitor_id}/run",
+ "operation_id": "run_data_observability_monitor",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_data_observability_monitor_run_status(self, run_id: str, ) -> GetDataObservabilityMonitorRunStatusResponse:
+ """Get data observability monitor run status.
+
+ Retrieves the current status of a data observability monitor run. Poll this endpoint after triggering a run to determine when evaluation is complete.
+
+ :param run_id: The ID of the monitor run to retrieve status for.
+ :type run_id: str
+ :rtype: GetDataObservabilityMonitorRunStatusResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["run_id"] = run_id
+
+ return self._get_data_observability_monitor_run_status_endpoint.call_with_http_info(**kwargs)
+
+ def run_data_observability_monitor(self, monitor_id: int, ) -> RunDataObservabilityMonitorResponse:
+ """Run a data observability monitor.
+
+ Manually triggers a run for a data observability monitor. Only monitors that are not scheduled (manually-runnable) can be triggered this way.
+
+ :param monitor_id: The ID of the data observability monitor to run.
+ :type monitor_id: int
+ :rtype: RunDataObservabilityMonitorResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ return self._run_data_observability_monitor_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/datasets_api.py b/datadog_api_client/v2/api/datasets_api.py
new file mode 100644
index 0000000000..b12f976a90
--- /dev/null
+++ b/datadog_api_client/v2/api/datasets_api.py
@@ -0,0 +1,223 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.dataset_response_multi import DatasetResponseMulti
+from datadog_api_client.v2.model.dataset_response_single import DatasetResponseSingle
+from datadog_api_client.v2.model.dataset_create_request import DatasetCreateRequest
+from datadog_api_client.v2.model.dataset_update_request import DatasetUpdateRequest
+
+
+class DatasetsApi:
+ """
+ Data Access Controls in Datadog is a feature that allows administrators and access managers to regulate
+ access to sensitive data. By defining Restricted Datasets, you can ensure that only specific teams or roles can
+ view certain types of telemetry (for example, logs, traces, metrics, and RUM data).
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (DatasetResponseSingle,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/datasets",
+ "operation_id": "create_dataset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DatasetCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/datasets/{dataset_id}",
+ "operation_id": "delete_dataset",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_all_datasets_endpoint = _Endpoint(
+ settings={
+ "response_type": (DatasetResponseMulti,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/datasets",
+ "operation_id": "get_all_datasets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (DatasetResponseSingle,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/datasets/{dataset_id}",
+ "operation_id": "get_dataset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (DatasetResponseSingle,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/datasets/{dataset_id}",
+ "operation_id": "update_dataset",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DatasetUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_dataset(self, body: DatasetCreateRequest, ) -> DatasetResponseSingle:
+ """Create a dataset.
+
+ Create a dataset with the configurations in the request.
+
+ :param body: Dataset payload
+ :type body: DatasetCreateRequest
+ :rtype: DatasetResponseSingle
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dataset(self, dataset_id: str, ) -> None:
+ """Delete a dataset.
+
+ Deletes the dataset associated with the ID.
+
+ :param dataset_id: The ID of a defined dataset.
+ :type dataset_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ return self._delete_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def get_all_datasets(self, ) -> DatasetResponseMulti:
+ """Get all datasets.
+
+ Get all datasets that have been configured for an organization.
+
+ :rtype: DatasetResponseMulti
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_all_datasets_endpoint.call_with_http_info(**kwargs)
+
+ def get_dataset(self, dataset_id: str, ) -> DatasetResponseSingle:
+ """Get a single dataset by ID.
+
+ Retrieves the dataset associated with the ID.
+
+ :param dataset_id: The ID of a defined dataset.
+ :type dataset_id: str
+ :rtype: DatasetResponseSingle
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ return self._get_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def update_dataset(self, dataset_id: str, body: DatasetUpdateRequest, ) -> DatasetResponseSingle:
+ """Edit a dataset.
+
+ Edits the dataset associated with the ID.
+
+ :param dataset_id: The ID of a defined dataset.
+ :type dataset_id: str
+ :param body: Dataset payload
+ :type body: DatasetUpdateRequest
+ :rtype: DatasetResponseSingle
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._update_dataset_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/ddsql_api.py b/datadog_api_client/v2/api/ddsql_api.py
new file mode 100644
index 0000000000..f4a76be6b3
--- /dev/null
+++ b/datadog_api_client/v2/api/ddsql_api.py
@@ -0,0 +1,115 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.ddsql_tabular_query_response import DdsqlTabularQueryResponse
+from datadog_api_client.v2.model.ddsql_tabular_query_request import DdsqlTabularQueryRequest
+from datadog_api_client.v2.model.ddsql_tabular_query_fetch_request import DdsqlTabularQueryFetchRequest
+
+
+class DDSQLApi:
+ """
+ Execute DDSQL queries against the Datadog data catalog and poll for their results.
+ Queries are dispatched asynchronously: the initial request may return a ``running`` state with
+ a ``query_id`` , and clients poll the fetch endpoint until the response transitions to
+ ``completed`` with a column-major result set.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._execute_ddsql_tabular_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (DdsqlTabularQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ddsql/query/tabular",
+ "operation_id": "execute_ddsql_tabular_query",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DdsqlTabularQueryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._fetch_ddsql_tabular_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (DdsqlTabularQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ddsql/query/tabular/fetch",
+ "operation_id": "fetch_ddsql_tabular_query",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DdsqlTabularQueryFetchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def execute_ddsql_tabular_query(self, body: DdsqlTabularQueryRequest, ) -> DdsqlTabularQueryResponse:
+ """Execute a tabular DDSQL query.
+
+ Submit a DDSQL statement and return either a ``running`` state with an opaque ``query_id``
+ for the client to poll, or a ``completed`` state with the column-major result set inlined
+ when the query finishes quickly enough to be served synchronously.
+
+ :type body: DdsqlTabularQueryRequest
+ :rtype: DdsqlTabularQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._execute_ddsql_tabular_query_endpoint.call_with_http_info(**kwargs)
+
+ def fetch_ddsql_tabular_query(self, body: DdsqlTabularQueryFetchRequest, ) -> DdsqlTabularQueryResponse:
+ """Fetch the result of a DDSQL query.
+
+ Poll a previously submitted DDSQL query for results. Pass the opaque ``query_id`` returned
+ by a prior ``ExecuteDdsqlTabularQuery`` (or by a prior ``FetchDdsqlTabularQuery`` that
+ returned ``state: running`` ) and the server returns either a ``running`` state to poll again
+ or a ``completed`` state with the column-major result set inlined.
+
+ :type body: DdsqlTabularQueryFetchRequest
+ :rtype: DdsqlTabularQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._fetch_ddsql_tabular_query_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/deployment_gates_api.py b/datadog_api_client/v2/api/deployment_gates_api.py
new file mode 100644
index 0000000000..9660bcff2e
--- /dev/null
+++ b/datadog_api_client/v2/api/deployment_gates_api.py
@@ -0,0 +1,567 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.deployment_gates_list_response import DeploymentGatesListResponse
+from datadog_api_client.v2.model.deployment_gate_response import DeploymentGateResponse
+from datadog_api_client.v2.model.create_deployment_gate_params import CreateDeploymentGateParams
+from datadog_api_client.v2.model.deployment_gate_rules_response import DeploymentGateRulesResponse
+from datadog_api_client.v2.model.deployment_rule_response import DeploymentRuleResponse
+from datadog_api_client.v2.model.create_deployment_rule_params import CreateDeploymentRuleParams
+from datadog_api_client.v2.model.update_deployment_rule_params import UpdateDeploymentRuleParams
+from datadog_api_client.v2.model.update_deployment_gate_params import UpdateDeploymentGateParams
+from datadog_api_client.v2.model.deployment_gates_evaluation_response import DeploymentGatesEvaluationResponse
+from datadog_api_client.v2.model.deployment_gates_evaluation_request import DeploymentGatesEvaluationRequest
+from datadog_api_client.v2.model.deployment_gates_evaluation_result_response import DeploymentGatesEvaluationResultResponse
+
+
+class DeploymentGatesApi:
+ """
+ Manage Deployment Gates using this API to reduce the likelihood and impact of incidents caused by deployments. See the `Deployment Gates documentation `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_deployment_gate_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates",
+ "operation_id": "create_deployment_gate",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateDeploymentGateParams,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_deployment_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{gate_id}/rules",
+ "operation_id": "create_deployment_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "gate_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "gate_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateDeploymentRuleParams,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_deployment_gate_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{id}",
+ "operation_id": "delete_deployment_gate",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_deployment_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{gate_id}/rules/{id}",
+ "operation_id": "delete_deployment_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "gate_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "gate_id",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_deployment_gate_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{id}",
+ "operation_id": "get_deployment_gate",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_deployment_gate_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGateRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{gate_id}/rules",
+ "operation_id": "get_deployment_gate_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "gate_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "gate_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_deployment_gates_evaluation_result_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGatesEvaluationResultResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployments/gates/evaluation/{id}",
+ "operation_id": "get_deployment_gates_evaluation_result",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_deployment_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{gate_id}/rules/{id}",
+ "operation_id": "get_deployment_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "gate_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "gate_id",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_deployment_gates_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGatesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates",
+ "operation_id": "list_deployment_gates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._trigger_deployment_gates_evaluation_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGatesEvaluationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployments/gates/evaluation",
+ "operation_id": "trigger_deployment_gates_evaluation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DeploymentGatesEvaluationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_deployment_gate_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentGateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{id}",
+ "operation_id": "update_deployment_gate",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateDeploymentGateParams,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_deployment_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeploymentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/deployment_gates/{gate_id}/rules/{id}",
+ "operation_id": "update_deployment_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "gate_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "gate_id",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateDeploymentRuleParams,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_deployment_gate(self, body: CreateDeploymentGateParams, ) -> DeploymentGateResponse:
+ """Create deployment gate.
+
+ Endpoint to create a deployment gate.
+
+ :type body: CreateDeploymentGateParams
+ :rtype: DeploymentGateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_deployment_gate_endpoint.call_with_http_info(**kwargs)
+
+ def create_deployment_rule(self, gate_id: str, body: CreateDeploymentRuleParams, ) -> DeploymentRuleResponse:
+ """Create deployment rule.
+
+ Endpoint to create a deployment rule. A gate for the rule must already exist.
+
+ :param gate_id: The ID of the deployment gate.
+ :type gate_id: str
+ :type body: CreateDeploymentRuleParams
+ :rtype: DeploymentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["gate_id"] = gate_id
+
+ kwargs["body"] = body
+
+ return self._create_deployment_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_deployment_gate(self, id: str, ) -> None:
+ """Delete deployment gate.
+
+ Endpoint to delete a deployment gate. Rules associated with the gate are also deleted.
+
+ :param id: The ID of the deployment gate.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_deployment_gate_endpoint.call_with_http_info(**kwargs)
+
+ def delete_deployment_rule(self, gate_id: str, id: str, ) -> None:
+ """Delete deployment rule.
+
+ Endpoint to delete a deployment rule.
+
+ :param gate_id: The ID of the deployment gate.
+ :type gate_id: str
+ :param id: The ID of the deployment rule.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["gate_id"] = gate_id
+
+ kwargs["id"] = id
+
+ return self._delete_deployment_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_deployment_gate(self, id: str, ) -> DeploymentGateResponse:
+ """Get deployment gate.
+
+ Endpoint to get a deployment gate.
+
+ :param id: The ID of the deployment gate.
+ :type id: str
+ :rtype: DeploymentGateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_deployment_gate_endpoint.call_with_http_info(**kwargs)
+
+ def get_deployment_gate_rules(self, gate_id: str, ) -> DeploymentGateRulesResponse:
+ """Get rules for a deployment gate.
+
+ Endpoint to get rules for a deployment gate.
+
+ :param gate_id: The ID of the deployment gate.
+ :type gate_id: str
+ :rtype: DeploymentGateRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["gate_id"] = gate_id
+
+ return self._get_deployment_gate_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_deployment_gates_evaluation_result(self, id: UUID, ) -> DeploymentGatesEvaluationResultResponse:
+ """Get a deployment gate evaluation result.
+
+ Retrieves the result of a deployment gate evaluation by its evaluation ID.
+ If the evaluation is still in progress, ``data.attributes.gate_status`` will be ``in_progress`` ;
+ continue polling until it returns ``pass`` or ``fail``.
+ Polling every 10-20 seconds is recommended.
+ The endpoint may return a 404 if called too soon after triggering; retry after a few seconds.
+
+ :param id: The evaluation ID returned by the trigger endpoint.
+ :type id: UUID
+ :rtype: DeploymentGatesEvaluationResultResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_deployment_gates_evaluation_result_endpoint.call_with_http_info(**kwargs)
+
+ def get_deployment_rule(self, gate_id: str, id: str, ) -> DeploymentRuleResponse:
+ """Get deployment rule.
+
+ Endpoint to get a deployment rule.
+
+ :param gate_id: The ID of the deployment gate.
+ :type gate_id: str
+ :param id: The ID of the deployment rule.
+ :type id: str
+ :rtype: DeploymentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["gate_id"] = gate_id
+
+ kwargs["id"] = id
+
+ return self._get_deployment_rule_endpoint.call_with_http_info(**kwargs)
+
+ def list_deployment_gates(self, *, page_cursor: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> DeploymentGatesListResponse:
+ """Get all deployment gates.
+
+ Returns a paginated list of all deployment gates for the organization.
+ Use ``page[cursor]`` and ``page[size]`` query parameters to paginate through results.
+
+ :param page_cursor: Cursor for pagination. Use the ``meta.page.next_cursor`` value from the previous response.
+ :type page_cursor: str, optional
+ :param page_size: Number of results per page. Defaults to 50. Must be between 1 and 1000.
+ :type page_size: int, optional
+ :rtype: DeploymentGatesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._list_deployment_gates_endpoint.call_with_http_info(**kwargs)
+
+ def trigger_deployment_gates_evaluation(self, body: DeploymentGatesEvaluationRequest, ) -> DeploymentGatesEvaluationResponse:
+ """Trigger a deployment gate evaluation.
+
+ Triggers an asynchronous deployment gate evaluation for the given service and environment.
+ Returns an evaluation ID that can be used to poll for the result via the
+ ``GET /api/v2/deployments/gates/evaluation/{id}`` endpoint.
+
+ When the ``configuration`` attribute is provided, rules are evaluated inline from that configuration
+ and no pre-configured gate is required. When ``configuration`` is omitted, rules are resolved from the
+ gate pre-configured for the given service and environment through the Datadog UI, API, or Terraform.
+
+ :type body: DeploymentGatesEvaluationRequest
+ :rtype: DeploymentGatesEvaluationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._trigger_deployment_gates_evaluation_endpoint.call_with_http_info(**kwargs)
+
+ def update_deployment_gate(self, id: str, body: UpdateDeploymentGateParams, ) -> DeploymentGateResponse:
+ """Update deployment gate.
+
+ Endpoint to update a deployment gate.
+
+ :param id: The ID of the deployment gate.
+ :type id: str
+ :type body: UpdateDeploymentGateParams
+ :rtype: DeploymentGateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_deployment_gate_endpoint.call_with_http_info(**kwargs)
+
+ def update_deployment_rule(self, gate_id: str, id: str, body: UpdateDeploymentRuleParams, ) -> DeploymentRuleResponse:
+ """Update deployment rule.
+
+ Endpoint to update a deployment rule.
+
+ :param gate_id: The ID of the deployment gate.
+ :type gate_id: str
+ :param id: The ID of the deployment rule.
+ :type id: str
+ :type body: UpdateDeploymentRuleParams
+ :rtype: DeploymentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["gate_id"] = gate_id
+
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_deployment_rule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/domain_allowlist_api.py b/datadog_api_client/v2/api/domain_allowlist_api.py
new file mode 100644
index 0000000000..63e639e4c0
--- /dev/null
+++ b/datadog_api_client/v2/api/domain_allowlist_api.py
@@ -0,0 +1,99 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.domain_allowlist_response import DomainAllowlistResponse
+from datadog_api_client.v2.model.domain_allowlist_request import DomainAllowlistRequest
+
+
+class DomainAllowlistApi:
+ """
+ Configure your Datadog Email Domain Allowlist directly through the Datadog API.
+ The Email Domain Allowlist controls the domains that certain datadog emails can be sent to.
+ For more information, see the `Domain Allowlist docs page `_
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_domain_allowlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (DomainAllowlistResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/domain_allowlist",
+ "operation_id": "get_domain_allowlist",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._patch_domain_allowlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (DomainAllowlistResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/domain_allowlist",
+ "operation_id": "patch_domain_allowlist",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DomainAllowlistRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_domain_allowlist(self, ) -> DomainAllowlistResponse:
+ """Get Domain Allowlist.
+
+ Get the domain allowlist for an organization.
+
+ :rtype: DomainAllowlistResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_domain_allowlist_endpoint.call_with_http_info(**kwargs)
+
+ def patch_domain_allowlist(self, body: DomainAllowlistRequest, ) -> DomainAllowlistResponse:
+ """Sets Domain Allowlist.
+
+ Update the domain allowlist for an organization.
+
+ :type body: DomainAllowlistRequest
+ :rtype: DomainAllowlistResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._patch_domain_allowlist_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/dora_metrics_api.py b/datadog_api_client/v2/api/dora_metrics_api.py
new file mode 100644
index 0000000000..d87b67ae67
--- /dev/null
+++ b/datadog_api_client/v2/api/dora_metrics_api.py
@@ -0,0 +1,469 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.dora_deployment_response import DORADeploymentResponse
+from datadog_api_client.v2.model.dora_deployment_request import DORADeploymentRequest
+from datadog_api_client.v2.model.dora_deployment_patch_by_version_request import DORADeploymentPatchByVersionRequest
+from datadog_api_client.v2.model.dora_deployments_list_response import DORADeploymentsListResponse
+from datadog_api_client.v2.model.dora_list_deployments_request import DORAListDeploymentsRequest
+from datadog_api_client.v2.model.dora_deployment_fetch_response import DORADeploymentFetchResponse
+from datadog_api_client.v2.model.dora_deployment_patch_request import DORADeploymentPatchRequest
+from datadog_api_client.v2.model.dora_failure_response import DORAFailureResponse
+from datadog_api_client.v2.model.dora_failure_request import DORAFailureRequest
+from datadog_api_client.v2.model.dora_failures_list_response import DORAFailuresListResponse
+from datadog_api_client.v2.model.dora_list_failures_request import DORAListFailuresRequest
+from datadog_api_client.v2.model.dora_failure_fetch_response import DORAFailureFetchResponse
+
+
+class DORAMetricsApi:
+ """
+ Search, send, or delete events for DORA Metrics to measure and improve your software delivery performance. See the `DORA Metrics page `_ for more information.
+
+ **Note** : DORA Metrics are not available in the US1-FED site.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_dora_deployment_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORADeploymentResponse,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/dora/deployment",
+ "operation_id": "create_dora_deployment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DORADeploymentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_dora_failure_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORAFailureResponse,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/dora/failure",
+ "operation_id": "create_dora_failure",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DORAFailureRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_dora_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORAFailureResponse,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/dora/incident",
+ "operation_id": "create_dora_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DORAFailureRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dora_deployment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/deployment/{deployment_id}",
+ "operation_id": "delete_dora_deployment",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "deployment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "deployment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_dora_failure_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/failure/{failure_id}",
+ "operation_id": "delete_dora_failure",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "failure_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "failure_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_dora_deployment_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORADeploymentFetchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/deployments/{deployment_id}",
+ "operation_id": "get_dora_deployment",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "deployment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "deployment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_dora_failure_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORAFailureFetchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/failures/{failure_id}",
+ "operation_id": "get_dora_failure",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "failure_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "failure_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_dora_deployments_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORADeploymentsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/deployments",
+ "operation_id": "list_dora_deployments",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DORAListDeploymentsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_dora_failures_endpoint = _Endpoint(
+ settings={
+ "response_type": (DORAFailuresListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/failures",
+ "operation_id": "list_dora_failures",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DORAListFailuresRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._patch_dora_deployment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/deployments/{deployment_id}",
+ "operation_id": "patch_dora_deployment",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "deployment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "deployment_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DORADeploymentPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._patch_dora_deployment_by_version_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/dora/deployments",
+ "operation_id": "patch_dora_deployment_by_version",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DORADeploymentPatchByVersionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_dora_deployment(self, body: DORADeploymentRequest, ) -> DORADeploymentResponse:
+ """Send a deployment event.
+
+ Use this API endpoint to provide deployment data.
+
+ This is necessary for:
+
+ * Deployment Frequency
+ * Change Lead Time
+ * Change Failure Rate
+ * Failed Deployment Recovery Time
+
+ :type body: DORADeploymentRequest
+ :rtype: DORADeploymentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_dora_deployment_endpoint.call_with_http_info(**kwargs)
+
+ def create_dora_failure(self, body: DORAFailureRequest, ) -> DORAFailureResponse:
+ """Send an incident event.
+
+ Use this API endpoint to provide incident data for DORA Metrics.
+ Note that change failure rate and failed deployment recovery time are computed from change failures detected on deployments, not from incident events sent through this endpoint.
+ Tracking incidents gives a side-by-side view of how failed deployments translate into real-world incidents, including their severity and frequency.
+
+ :type body: DORAFailureRequest
+ :rtype: DORAFailureResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_dora_failure_endpoint.call_with_http_info(**kwargs)
+
+ def create_dora_incident(self, body: DORAFailureRequest, ) -> DORAFailureResponse:
+ """Send an incident event (legacy). **Deprecated**.
+
+ **Note** : This endpoint is deprecated. Please use ``/api/v2/dora/failure`` instead.
+
+ Use this API endpoint to provide incident data.
+ Tracking incidents gives a side-by-side view of how failed deployments translate into real-world incidents.
+
+ :type body: DORAFailureRequest
+ :rtype: DORAFailureResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_dora_incident is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_dora_incident_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dora_deployment(self, deployment_id: str, ) -> None:
+ """Delete a deployment event.
+
+ Use this API endpoint to delete a deployment event.
+
+ :param deployment_id: The ID of the deployment event to delete.
+ :type deployment_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["deployment_id"] = deployment_id
+
+ return self._delete_dora_deployment_endpoint.call_with_http_info(**kwargs)
+
+ def delete_dora_failure(self, failure_id: str, ) -> None:
+ """Delete an incident event.
+
+ Use this API endpoint to delete an incident event.
+
+ :param failure_id: The ID of the incident event to delete.
+ :type failure_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["failure_id"] = failure_id
+
+ return self._delete_dora_failure_endpoint.call_with_http_info(**kwargs)
+
+ def get_dora_deployment(self, deployment_id: str, ) -> DORADeploymentFetchResponse:
+ """Get a deployment event.
+
+ Use this API endpoint to get a deployment event.
+
+ :param deployment_id: The ID of the deployment event.
+ :type deployment_id: str
+ :rtype: DORADeploymentFetchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["deployment_id"] = deployment_id
+
+ return self._get_dora_deployment_endpoint.call_with_http_info(**kwargs)
+
+ def get_dora_failure(self, failure_id: str, ) -> DORAFailureFetchResponse:
+ """Get an incident event.
+
+ Use this API endpoint to get an incident event.
+
+ :param failure_id: The ID of the incident event.
+ :type failure_id: str
+ :rtype: DORAFailureFetchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["failure_id"] = failure_id
+
+ return self._get_dora_failure_endpoint.call_with_http_info(**kwargs)
+
+ def list_dora_deployments(self, body: DORAListDeploymentsRequest, ) -> DORADeploymentsListResponse:
+ """Get a list of deployment events.
+
+ Use this API endpoint to get a list of deployment events.
+
+ :type body: DORAListDeploymentsRequest
+ :rtype: DORADeploymentsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._list_dora_deployments_endpoint.call_with_http_info(**kwargs)
+
+ def list_dora_failures(self, body: DORAListFailuresRequest, ) -> DORAFailuresListResponse:
+ """Get a list of incident events.
+
+ Use this API endpoint to get a list of incident events.
+
+ :type body: DORAListFailuresRequest
+ :rtype: DORAFailuresListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._list_dora_failures_endpoint.call_with_http_info(**kwargs)
+
+ def patch_dora_deployment(self, deployment_id: str, body: DORADeploymentPatchRequest, ) -> None:
+ """Patch a deployment event.
+
+ Update a deployment's change failure status. Use this to mark a deployment as a change failure or back to stable. You can optionally include remediation details to enable failed deployment recovery time calculation.
+
+ :param deployment_id: The ID of the deployment event.
+ :type deployment_id: str
+ :type body: DORADeploymentPatchRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["deployment_id"] = deployment_id
+
+ kwargs["body"] = body
+
+ return self._patch_dora_deployment_endpoint.call_with_http_info(**kwargs)
+
+ def patch_dora_deployment_by_version(self, body: DORADeploymentPatchByVersionRequest, ) -> None:
+ """Patch a deployment event by version.
+
+ Update a deployment's change failure status, identifying the deployment by its service, environment, and version instead of its ID. Use this to mark a deployment as a change failure or back to stable. You can optionally include remediation details to enable failed deployment recovery time calculation. If multiple deployments match the given service, environment, and version, the most recently finished one is updated.
+
+ :type body: DORADeploymentPatchByVersionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._patch_dora_deployment_by_version_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/downtimes_api.py b/datadog_api_client/v2/api/downtimes_api.py
new file mode 100644
index 0000000000..ff63d2f6fb
--- /dev/null
+++ b/datadog_api_client/v2/api/downtimes_api.py
@@ -0,0 +1,419 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_downtimes_response import ListDowntimesResponse
+from datadog_api_client.v2.model.downtime_response_data import DowntimeResponseData
+from datadog_api_client.v2.model.downtime_response import DowntimeResponse
+from datadog_api_client.v2.model.downtime_create_request import DowntimeCreateRequest
+from datadog_api_client.v2.model.downtime_update_request import DowntimeUpdateRequest
+from datadog_api_client.v2.model.monitor_downtime_match_response import MonitorDowntimeMatchResponse
+from datadog_api_client.v2.model.monitor_downtime_match_response_data import MonitorDowntimeMatchResponseData
+
+
+class DowntimesApi:
+ """
+ **Note** : Downtime V2 is currently in private beta. To request access, contact `Datadog support `_.
+
+ `Downtiming `_ gives
+ you greater control over monitor notifications by allowing you to globally exclude
+ scopes from alerting. Downtime settings, which can be scheduled with start and
+ end times, prevent all alerting related to specified Datadog tags.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._cancel_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/downtime/{downtime_id}",
+ "operation_id": "cancel_downtime",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (DowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/downtime",
+ "operation_id": "create_downtime",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DowntimeCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (DowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/downtime/{downtime_id}",
+ "operation_id": "get_downtime",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_downtimes_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListDowntimesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/downtime",
+ "operation_id": "list_downtimes",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "current_only": {
+ "openapi_types": (bool,),
+ "attribute": "current_only",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_monitor_downtimes_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorDowntimeMatchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/{monitor_id}/downtime_matches",
+ "operation_id": "list_monitor_downtimes",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "monitor_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "monitor_id",
+ "location": "path",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (DowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/downtime/{downtime_id}",
+ "operation_id": "update_downtime",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DowntimeUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def cancel_downtime(self, downtime_id: str, ) -> None:
+ """Cancel a downtime.
+
+ Cancel a downtime.
+
+ **Note** : Downtimes canceled through the API are no longer active, but are retained for approximately two days before being permanently removed. The downtime may still appear in search results until it is permanently removed.
+
+ :param downtime_id: ID of the downtime to cancel.
+ :type downtime_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ return self._cancel_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def create_downtime(self, body: DowntimeCreateRequest, ) -> DowntimeResponse:
+ """Schedule a downtime.
+
+ Schedule a downtime.
+
+ :param body: Schedule a downtime request body.
+ :type body: DowntimeCreateRequest
+ :rtype: DowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def get_downtime(self, downtime_id: str, *, include: Union[str, UnsetType]=unset, ) -> DowntimeResponse:
+ """Get a downtime.
+
+ Get downtime detail by ``downtime_id``.
+
+ :param downtime_id: ID of the downtime to fetch.
+ :type downtime_id: str
+ :param include: Comma-separated list of resource paths for related resources to include in the response. Supported resource
+ paths are ``created_by`` and ``monitor``.
+ :type include: str, optional
+ :rtype: DowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def list_downtimes(self, *, current_only: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> ListDowntimesResponse:
+ """Get all downtimes.
+
+ Get all scheduled downtimes.
+
+ :param current_only: Only return downtimes that are active when the request is made.
+ :type current_only: bool, optional
+ :param include: Comma-separated list of resource paths for related resources to include in the response. Supported resource
+ paths are ``created_by`` and ``monitor``.
+ :type include: str, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of downtimes in the response.
+ :type page_limit: int, optional
+ :rtype: ListDowntimesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if current_only is not unset:
+ kwargs["current_only"] = current_only
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_downtimes_endpoint.call_with_http_info(**kwargs)
+
+ def list_downtimes_with_pagination(self, *, current_only: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[DowntimeResponseData]:
+ """Get all downtimes.
+
+ Provide a paginated version of :meth:`list_downtimes`, returning all items.
+
+ :param current_only: Only return downtimes that are active when the request is made.
+ :type current_only: bool, optional
+ :param include: Comma-separated list of resource paths for related resources to include in the response. Supported resource
+ paths are ``created_by`` and ``monitor``.
+ :type include: str, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of downtimes in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[DowntimeResponseData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if current_only is not unset:
+ kwargs["current_only"] = current_only
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 30)
+ endpoint = self._list_downtimes_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_monitor_downtimes(self, monitor_id: int, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> MonitorDowntimeMatchResponse:
+ """Get active downtimes for a monitor.
+
+ Get all active downtimes for the specified monitor.
+
+ :param monitor_id: The id of the monitor.
+ :type monitor_id: int
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of downtimes in the response.
+ :type page_limit: int, optional
+ :rtype: MonitorDowntimeMatchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_monitor_downtimes_endpoint.call_with_http_info(**kwargs)
+
+ def list_monitor_downtimes_with_pagination(self, monitor_id: int, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[MonitorDowntimeMatchResponseData]:
+ """Get active downtimes for a monitor.
+
+ Provide a paginated version of :meth:`list_monitor_downtimes`, returning all items.
+
+ :param monitor_id: The id of the monitor.
+ :type monitor_id: int
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of downtimes in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[MonitorDowntimeMatchResponseData]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["monitor_id"] = monitor_id
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 30)
+ endpoint = self._list_monitor_downtimes_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_downtime(self, downtime_id: str, body: DowntimeUpdateRequest, ) -> DowntimeResponse:
+ """Update a downtime.
+
+ Update a downtime by ``downtime_id``.
+
+ :param downtime_id: ID of the downtime to update.
+ :type downtime_id: str
+ :param body: Update a downtime request body.
+ :type body: DowntimeUpdateRequest
+ :rtype: DowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ kwargs["body"] = body
+
+ return self._update_downtime_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/entity_integration_configs_api.py b/datadog_api_client/v2/api/entity_integration_configs_api.py
new file mode 100644
index 0000000000..c88ed61fe9
--- /dev/null
+++ b/datadog_api_client/v2/api/entity_integration_configs_api.py
@@ -0,0 +1,158 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.entity_integration_config_response import EntityIntegrationConfigResponse
+from datadog_api_client.v2.model.entity_integration_config_request import EntityIntegrationConfigRequest
+
+
+class EntityIntegrationConfigsApi:
+ """
+ Manage per-integration configurations for the Internal Developer Portal (IDP). These configurations control which external resources (for example, GitHub repositories, Jira projects, or PagerDuty services) are synced as entities into the Software Catalog.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_entity_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/idp/entity_integrations/{integration_id}",
+ "operation_id": "delete_entity_integration_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "integration_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_entity_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (EntityIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/idp/entity_integrations/{integration_id}",
+ "operation_id": "get_entity_integration_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "integration_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_entity_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (EntityIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/idp/entity_integrations/{integration_id}",
+ "operation_id": "update_entity_integration_config",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "integration_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (EntityIntegrationConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_entity_integration_config(self, integration_id: str, ) -> None:
+ """Delete an entity integration configuration.
+
+ Delete the configuration stored for a given integration in the caller's organization.
+
+ :param integration_id: The identifier of the integration whose configuration is being managed. Supported values are ``github`` , ``jira`` , and ``pagerduty``.
+ :type integration_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_id"] = integration_id
+
+ return self._delete_entity_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_entity_integration_config(self, integration_id: str, ) -> EntityIntegrationConfigResponse:
+ """Get an entity integration configuration.
+
+ Retrieve the configuration currently stored for a given integration in the caller's organization.
+
+ :param integration_id: The identifier of the integration whose configuration is being managed. Supported values are ``github`` , ``jira`` , and ``pagerduty``.
+ :type integration_id: str
+ :rtype: EntityIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_id"] = integration_id
+
+ return self._get_entity_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_entity_integration_config(self, integration_id: str, body: EntityIntegrationConfigRequest, ) -> EntityIntegrationConfigResponse:
+ """Create or update entity integration configuration.
+
+ Create or replace the configuration for a given integration in the caller's organization. The shape of ``data.attributes.config`` depends on the integration:
+
+ * For ``github`` : ``config`` must contain an ``enabled_repos`` array of objects with ``hostname`` , ``github_org_name`` , and ``repo_name``.
+ * For ``jira`` : ``config`` must contain an ``enabled_projects`` array of objects with ``hostname`` , ``account_id`` , and ``project_key``.
+ * For ``pagerduty`` : ``config`` must contain an ``accounts`` array of objects with a required ``enabled`` boolean and an optional ``subdomain`` string.
+
+ :param integration_id: The identifier of the integration whose configuration is being managed. Supported values are ``github`` , ``jira`` , and ``pagerduty``.
+ :type integration_id: str
+ :type body: EntityIntegrationConfigRequest
+ :rtype: EntityIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_id"] = integration_id
+
+ kwargs["body"] = body
+
+ return self._update_entity_integration_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/entity_risk_scores_api.py b/datadog_api_client/v2/api/entity_risk_scores_api.py
new file mode 100644
index 0000000000..e7bed7061e
--- /dev/null
+++ b/datadog_api_client/v2/api/entity_risk_scores_api.py
@@ -0,0 +1,181 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.security_entity_risk_scores_response import SecurityEntityRiskScoresResponse
+from datadog_api_client.v2.model.security_entity_risk_score_response import SecurityEntityRiskScoreResponse
+
+
+class EntityRiskScoresApi:
+ """
+ Retrieves security risk scores for entities in your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_entity_risk_score_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityEntityRiskScoreResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security-entities/risk-scores/{entity_id}",
+ "operation_id": "get_entity_risk_score",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "entity_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_entity_risk_scores_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityEntityRiskScoresResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security-entities/risk-scores",
+ "operation_id": "list_entity_risk_scores",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "_from": {
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (int,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_query_id": {
+ "openapi_types": (str,),
+ "attribute": "page[queryId]",
+ "location": "query",
+ },
+ "filter_sort": {
+ "openapi_types": (str,),
+ "attribute": "filter[sort]",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "entity_type": {
+ "openapi_types": ([str],),
+ "attribute": "entityType",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_entity_risk_score(self, entity_id: str, ) -> SecurityEntityRiskScoreResponse:
+ """Get Entity Risk Score.
+
+ Get the risk score for a specific entity by its ID. Returns security risk assessment including risk score, severity, detected signals, misconfigurations, and identity risks.
+
+ :param entity_id: The URL-encoded unique identifier for the entity.
+ :type entity_id: str
+ :rtype: SecurityEntityRiskScoreResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity_id"] = entity_id
+
+ return self._get_entity_risk_score_endpoint.call_with_http_info(**kwargs)
+
+ def list_entity_risk_scores(self, *, _from: Union[int, UnsetType]=unset, to: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, page_query_id: Union[str, UnsetType]=unset, filter_sort: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, entity_type: Union[List[str], UnsetType]=unset, ) -> SecurityEntityRiskScoresResponse:
+ """List Entity Risk Scores.
+
+ Get a list of entity risk scores for your organization. Entity risk scores provide security risk assessment for entities like cloud resources, identities, or services based on detected signals, misconfigurations, and identity risks.
+
+ :param _from: Start time for the query in Unix timestamp (milliseconds). Defaults to 2 weeks ago.
+ :type _from: int, optional
+ :param to: End time for the query in Unix timestamp (milliseconds). Defaults to now.
+ :type to: int, optional
+ :param page_size: Size of the page to return. Maximum is 1000.
+ :type page_size: int, optional
+ :param page_number: Page number to return (1-indexed).
+ :type page_number: int, optional
+ :param page_query_id: Query ID for pagination consistency.
+ :type page_query_id: str, optional
+ :param filter_sort: Sort order for results. Format: ``field:direction`` where direction is ``asc`` or ``desc``.
+ Supported fields: ``riskScore`` , ``lastDetected`` , ``firstDetected`` , ``entityName`` , ``signalsDetected``.
+ :type filter_sort: str, optional
+ :param filter_query: Supports filtering by entity attributes, risk scores, severity, and more.
+ Example: ``severity:critical AND entityType:aws_iam_user``
+ :type filter_query: str, optional
+ :param entity_type: Filter by entity type(s). Can specify multiple values.
+ :type entity_type: [str], optional
+ :rtype: SecurityEntityRiskScoresResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_query_id is not unset:
+ kwargs["page_query_id"] = page_query_id
+
+ if filter_sort is not unset:
+ kwargs["filter_sort"] = filter_sort
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if entity_type is not unset:
+ kwargs["entity_type"] = entity_type
+
+ return self._list_entity_risk_scores_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/error_tracking_api.py b/datadog_api_client/v2/api/error_tracking_api.py
new file mode 100644
index 0000000000..7320b5d3d6
--- /dev/null
+++ b/datadog_api_client/v2/api/error_tracking_api.py
@@ -0,0 +1,266 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.issues_search_response import IssuesSearchResponse
+from datadog_api_client.v2.model.search_issues_include_query_parameter_item import SearchIssuesIncludeQueryParameterItem
+from datadog_api_client.v2.model.issues_search_request import IssuesSearchRequest
+from datadog_api_client.v2.model.issue_response import IssueResponse
+from datadog_api_client.v2.model.get_issue_include_query_parameter_item import GetIssueIncludeQueryParameterItem
+from datadog_api_client.v2.model.issue_update_assignee_request import IssueUpdateAssigneeRequest
+from datadog_api_client.v2.model.issue_update_state_request import IssueUpdateStateRequest
+
+
+class ErrorTrackingApi:
+ """
+ View and manage issues within Error Tracking. See the `Error Tracking page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_issue_assignee_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/error-tracking/issues/{issue_id}/assignee",
+ "operation_id": "delete_issue_assignee",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "issue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "issue_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_issue_endpoint = _Endpoint(
+ settings={
+ "response_type": (IssueResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/error-tracking/issues/{issue_id}",
+ "operation_id": "get_issue",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "issue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "issue_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": ([GetIssueIncludeQueryParameterItem],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_issues_endpoint = _Endpoint(
+ settings={
+ "response_type": (IssuesSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/error-tracking/issues/search",
+ "operation_id": "search_issues",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": ([SearchIssuesIncludeQueryParameterItem],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IssuesSearchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_issue_assignee_endpoint = _Endpoint(
+ settings={
+ "response_type": (IssueResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/error-tracking/issues/{issue_id}/assignee",
+ "operation_id": "update_issue_assignee",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "issue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "issue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IssueUpdateAssigneeRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_issue_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (IssueResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/error-tracking/issues/{issue_id}/state",
+ "operation_id": "update_issue_state",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "issue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "issue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IssueUpdateStateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_issue_assignee(self, issue_id: str, ) -> None:
+ """Remove the assignee of an issue.
+
+ Remove the assignee of an issue by ``issue_id``.
+
+ :param issue_id: The identifier of the issue.
+ :type issue_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_id"] = issue_id
+
+ return self._delete_issue_assignee_endpoint.call_with_http_info(**kwargs)
+
+ def get_issue(self, issue_id: str, *, include: Union[List[GetIssueIncludeQueryParameterItem], UnsetType]=unset, ) -> IssueResponse:
+ """Get the details of an error tracking issue.
+
+ Retrieve the full details for a specific error tracking issue, including attributes and relationships.
+
+ :param issue_id: The identifier of the issue.
+ :type issue_id: str
+ :param include: Comma-separated list of relationship objects that should be included in the response. Possible values are ``assignee`` , ``case`` , and ``team_owners``.
+ :type include: [GetIssueIncludeQueryParameterItem], optional
+ :rtype: IssueResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_id"] = issue_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_issue_endpoint.call_with_http_info(**kwargs)
+
+ def search_issues(self, body: IssuesSearchRequest, *, include: Union[List[SearchIssuesIncludeQueryParameterItem], UnsetType]=unset, ) -> IssuesSearchResponse:
+ """Search error tracking issues.
+
+ Search issues endpoint allows you to programmatically search for issues within your organization. This endpoint returns a list of issues that match a given search query, following the event search syntax. The search results are limited to a maximum of 100 issues per request.
+
+ :param body: Search issues request payload.
+ :type body: IssuesSearchRequest
+ :param include: Comma-separated list of relationship objects that should be included in the response. Possible values are ``issue`` , ``issue.assignee`` , ``issue.case`` , and ``issue.team_owners``.
+ :type include: [SearchIssuesIncludeQueryParameterItem], optional
+ :rtype: IssuesSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._search_issues_endpoint.call_with_http_info(**kwargs)
+
+ def update_issue_assignee(self, issue_id: str, body: IssueUpdateAssigneeRequest, ) -> IssueResponse:
+ """Update the assignee of an issue.
+
+ Update the assignee of an issue by ``issue_id``.
+
+ :param issue_id: The identifier of the issue.
+ :type issue_id: str
+ :param body: Update issue assignee request payload.
+ :type body: IssueUpdateAssigneeRequest
+ :rtype: IssueResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_id"] = issue_id
+
+ kwargs["body"] = body
+
+ return self._update_issue_assignee_endpoint.call_with_http_info(**kwargs)
+
+ def update_issue_state(self, issue_id: str, body: IssueUpdateStateRequest, ) -> IssueResponse:
+ """Update the state of an issue.
+
+ Update the state of an issue by ``issue_id``. Use this endpoint to move an issue between states such as ``OPEN`` , ``RESOLVED`` , or ``IGNORED``.
+
+ :param issue_id: The identifier of the issue.
+ :type issue_id: str
+ :param body: Update issue state request payload.
+ :type body: IssueUpdateStateRequest
+ :rtype: IssueResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_id"] = issue_id
+
+ kwargs["body"] = body
+
+ return self._update_issue_state_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/events_api.py b/datadog_api_client/v2/api/events_api.py
new file mode 100644
index 0000000000..70fc15b1dd
--- /dev/null
+++ b/datadog_api_client/v2/api/events_api.py
@@ -0,0 +1,387 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.events_list_response import EventsListResponse
+from datadog_api_client.v2.model.events_sort import EventsSort
+from datadog_api_client.v2.model.event_response import EventResponse
+from datadog_api_client.v2.model.event_create_response_payload import EventCreateResponsePayload
+from datadog_api_client.v2.model.event_create_request_payload import EventCreateRequestPayload
+from datadog_api_client.v2.model.events_list_request import EventsListRequest
+from datadog_api_client.v2.model.v2_event_response import V2EventResponse
+
+
+class EventsApi:
+ """
+ The Event Management API allows you to programmatically post events to the Events Explorer and fetch events from the Events Explorer. See the `Event Management page `_ for more information.
+
+ **Update to Datadog monitor events aggregation_key starting March 1, 2025:** The Datadog monitor events ``aggregation_key`` is unique to each Monitor ID. Starting March 1st, this key will also include Monitor Group, making it unique per *Monitor ID and Monitor Group*. If you're using monitor events ``aggregation_key`` in dashboard queries or the Event API, you must migrate to use ``@monitor.id``. Reach out to `support `_ if you have any question.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_event_endpoint = _Endpoint(
+ settings={
+ "response_type": (EventCreateResponsePayload,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/events",
+ "operation_id": "create_event",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The regional site for customers.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "us3.datadoghq.com",
+ "us5.datadoghq.com",
+ "ap1.datadoghq.com",
+ "ap2.datadoghq.com",
+ "uk1.datadoghq.com",
+ "datadoghq.eu",
+ "ddog-gov.com",
+ "us2.ddog-gov.com",
+ ],
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "event-management-intake",
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "Full site DNS name.",
+ "default_value": "event-management-intake.datadoghq.com",
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "Any Datadog deployment.",
+ "default_value": "datadoghq.com",
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "event-management-intake",
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (EventCreateRequestPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_event_endpoint = _Endpoint(
+ settings={
+ "response_type": (V2EventResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/events/{event_id}",
+ "operation_id": "get_event",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "event_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "event_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (EventsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/events",
+ "operation_id": "list_events",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (str,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (str,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (EventsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (EventsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/events/search",
+ "operation_id": "search_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (EventsListRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_event(self, body: EventCreateRequestPayload, ) -> EventCreateResponsePayload:
+ """Post an event.
+
+ This endpoint allows you to publish events.
+
+ **Note:** To utilize this endpoint with our client libraries, please ensure you are using the latest version released on or after July 1, 2025. Earlier versions do not support this functionality.
+
+ **Important:** Upgrade to the latest client library version to use the updated endpoint at ``https://event-management-intake.{site}/api/v2/events``. Older client library versions of the Post an event (v2) API send requests to a deprecated endpoint ( ``https://api.{site}/api/v2/events`` ).
+
+ ✅ **Only events with the change or alert category** are in General Availability. For change events, see `Change Tracking `_ for more details.
+
+ ❌ For use cases involving other event categories, use the V1 endpoint or reach out to `support `_.
+
+ :param body: Event creation request payload.
+ :type body: EventCreateRequestPayload
+ :rtype: EventCreateResponsePayload
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_event_endpoint.call_with_http_info(**kwargs)
+
+ def get_event(self, event_id: str, ) -> V2EventResponse:
+ """Get an event.
+
+ Get the details of an event by ``event_id``.
+
+ :param event_id: The UID of the event.
+ :type event_id: str
+ :rtype: V2EventResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["event_id"] = event_id
+
+ return self._get_event_endpoint.call_with_http_info(**kwargs)
+
+ def list_events(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[str, UnsetType]=unset, filter_to: Union[str, UnsetType]=unset, sort: Union[EventsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> EventsListResponse:
+ """Get a list of events.
+
+ List endpoint returns events that match an events search query.
+ `Results are paginated similarly to logs `_.
+
+ Use this endpoint to see your latest events.
+
+ :param filter_query: Search query following events syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events, in milliseconds.
+ :type filter_from: str, optional
+ :param filter_to: Maximum timestamp for requested events, in milliseconds.
+ :type filter_to: str, optional
+ :param sort: Order of events in results.
+ :type sort: EventsSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+ :rtype: EventsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_events_endpoint.call_with_http_info(**kwargs)
+
+ def list_events_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[str, UnsetType]=unset, filter_to: Union[str, UnsetType]=unset, sort: Union[EventsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[EventResponse]:
+ """Get a list of events.
+
+ Provide a paginated version of :meth:`list_events`, returning all items.
+
+ :param filter_query: Search query following events syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events, in milliseconds.
+ :type filter_from: str, optional
+ :param filter_to: Maximum timestamp for requested events, in milliseconds.
+ :type filter_to: str, optional
+ :param sort: Order of events in results.
+ :type sort: EventsSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[EventResponse]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_events_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_events(self, *, body: Union[EventsListRequest, UnsetType]=unset, ) -> EventsListResponse:
+ """Search events.
+
+ List endpoint returns events that match an events search query.
+ `Results are paginated similarly to logs `_.
+
+ Use this endpoint to build complex events filtering and search.
+
+ :type body: EventsListRequest, optional
+ :rtype: EventsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_events_endpoint.call_with_http_info(**kwargs)
+
+ def search_events_with_pagination(self, *, body: Union[EventsListRequest, UnsetType]=unset, ) -> collections.abc.Iterable[EventResponse]:
+ """Search events.
+
+ Provide a paginated version of :meth:`search_events`, returning all items.
+
+ :type body: EventsListRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[EventResponse]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._search_events_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/fastly_integration_api.py b/datadog_api_client/v2/api/fastly_integration_api.py
new file mode 100644
index 0000000000..926810f812
--- /dev/null
+++ b/datadog_api_client/v2/api/fastly_integration_api.py
@@ -0,0 +1,455 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.fastly_accounts_response import FastlyAccountsResponse
+from datadog_api_client.v2.model.fastly_account_response import FastlyAccountResponse
+from datadog_api_client.v2.model.fastly_account_create_request import FastlyAccountCreateRequest
+from datadog_api_client.v2.model.fastly_account_update_request import FastlyAccountUpdateRequest
+from datadog_api_client.v2.model.fastly_services_response import FastlyServicesResponse
+from datadog_api_client.v2.model.fastly_service_response import FastlyServiceResponse
+from datadog_api_client.v2.model.fastly_service_request import FastlyServiceRequest
+
+
+class FastlyIntegrationApi:
+ """
+ Manage your Datadog Fastly integration accounts and services directly through the Datadog API. See the `Fastly integration page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_fastly_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts",
+ "operation_id": "create_fastly_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (FastlyAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_fastly_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyServiceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}/services",
+ "operation_id": "create_fastly_service",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (FastlyServiceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_fastly_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}",
+ "operation_id": "delete_fastly_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_fastly_service_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}",
+ "operation_id": "delete_fastly_service",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "service_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_fastly_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}",
+ "operation_id": "get_fastly_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_fastly_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyServiceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}",
+ "operation_id": "get_fastly_service",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "service_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fastly_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts",
+ "operation_id": "list_fastly_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fastly_services_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyServicesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}/services",
+ "operation_id": "list_fastly_services",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_fastly_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}",
+ "operation_id": "update_fastly_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (FastlyAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_fastly_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (FastlyServiceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}",
+ "operation_id": "update_fastly_service",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "service_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (FastlyServiceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_fastly_account(self, body: FastlyAccountCreateRequest, ) -> FastlyAccountResponse:
+ """Add Fastly account.
+
+ Create a Fastly account.
+
+ :type body: FastlyAccountCreateRequest
+ :rtype: FastlyAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_fastly_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_fastly_service(self, account_id: str, body: FastlyServiceRequest, ) -> FastlyServiceResponse:
+ """Add Fastly service.
+
+ Create a Fastly service for an account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :type body: FastlyServiceRequest
+ :rtype: FastlyServiceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._create_fastly_service_endpoint.call_with_http_info(**kwargs)
+
+ def delete_fastly_account(self, account_id: str, ) -> None:
+ """Delete Fastly account.
+
+ Delete a Fastly account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_fastly_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_fastly_service(self, account_id: str, service_id: str, ) -> None:
+ """Delete Fastly service.
+
+ Delete a Fastly service for an account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :param service_id: Fastly Service ID.
+ :type service_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["service_id"] = service_id
+
+ return self._delete_fastly_service_endpoint.call_with_http_info(**kwargs)
+
+ def get_fastly_account(self, account_id: str, ) -> FastlyAccountResponse:
+ """Get Fastly account.
+
+ Get a Fastly account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :rtype: FastlyAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._get_fastly_account_endpoint.call_with_http_info(**kwargs)
+
+ def get_fastly_service(self, account_id: str, service_id: str, ) -> FastlyServiceResponse:
+ """Get Fastly service.
+
+ Get a Fastly service for an account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :param service_id: Fastly Service ID.
+ :type service_id: str
+ :rtype: FastlyServiceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["service_id"] = service_id
+
+ return self._get_fastly_service_endpoint.call_with_http_info(**kwargs)
+
+ def list_fastly_accounts(self, ) -> FastlyAccountsResponse:
+ """List Fastly accounts.
+
+ List Fastly accounts.
+
+ :rtype: FastlyAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_fastly_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def list_fastly_services(self, account_id: str, ) -> FastlyServicesResponse:
+ """List Fastly services.
+
+ List Fastly services for an account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :rtype: FastlyServicesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._list_fastly_services_endpoint.call_with_http_info(**kwargs)
+
+ def update_fastly_account(self, account_id: str, body: FastlyAccountUpdateRequest, ) -> FastlyAccountResponse:
+ """Update Fastly account.
+
+ Update a Fastly account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :type body: FastlyAccountUpdateRequest
+ :rtype: FastlyAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_fastly_account_endpoint.call_with_http_info(**kwargs)
+
+ def update_fastly_service(self, account_id: str, service_id: str, body: FastlyServiceRequest, ) -> FastlyServiceResponse:
+ """Update Fastly service.
+
+ Update a Fastly service for an account.
+
+ :param account_id: Fastly Account id.
+ :type account_id: str
+ :param service_id: Fastly Service ID.
+ :type service_id: str
+ :type body: FastlyServiceRequest
+ :rtype: FastlyServiceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["service_id"] = service_id
+
+ kwargs["body"] = body
+
+ return self._update_fastly_service_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/feature_flags_api.py b/datadog_api_client/v2/api/feature_flags_api.py
new file mode 100644
index 0000000000..6958d9ca44
--- /dev/null
+++ b/datadog_api_client/v2/api/feature_flags_api.py
@@ -0,0 +1,1076 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_feature_flags_response import ListFeatureFlagsResponse
+from datadog_api_client.v2.model.feature_flag_response import FeatureFlagResponse
+from datadog_api_client.v2.model.create_feature_flag_request import CreateFeatureFlagRequest
+from datadog_api_client.v2.model.list_environments_response import ListEnvironmentsResponse
+from datadog_api_client.v2.model.environment_response import EnvironmentResponse
+from datadog_api_client.v2.model.create_environment_request import CreateEnvironmentRequest
+from datadog_api_client.v2.model.update_environment_request import UpdateEnvironmentRequest
+from datadog_api_client.v2.model.allocation_exposure_schedule_response import AllocationExposureScheduleResponse
+from datadog_api_client.v2.model.update_feature_flag_request import UpdateFeatureFlagRequest
+from datadog_api_client.v2.model.allocation_response import AllocationResponse
+from datadog_api_client.v2.model.create_allocations_request import CreateAllocationsRequest
+from datadog_api_client.v2.model.list_allocations_response import ListAllocationsResponse
+from datadog_api_client.v2.model.overwrite_allocations_request import OverwriteAllocationsRequest
+from datadog_api_client.v2.model.variant import Variant
+from datadog_api_client.v2.model.create_variant import CreateVariant
+from datadog_api_client.v2.model.update_variant_request import UpdateVariantRequest
+
+
+class FeatureFlagsApi:
+ """
+ Manage feature flags and environments.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._archive_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (FeatureFlagResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/archive",
+ "operation_id": "archive_feature_flag",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_allocations_for_feature_flag_in_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": (AllocationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/environments/{environment_id}/allocations",
+ "operation_id": "create_allocations_for_feature_flag_in_environment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateAllocationsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (FeatureFlagResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags",
+ "operation_id": "create_feature_flag",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateFeatureFlagRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_feature_flags_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": (EnvironmentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/environments",
+ "operation_id": "create_feature_flags_environment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateEnvironmentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_variant_for_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (Variant,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/variants",
+ "operation_id": "create_variant_for_feature_flag",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateVariant,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_feature_flags_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/environments/{environment_id}",
+ "operation_id": "delete_feature_flags_environment",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_variant_from_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/variants/{variant_id}",
+ "operation_id": "delete_variant_from_feature_flag",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "variant_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "variant_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._disable_feature_flag_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/environments/{environment_id}/disable",
+ "operation_id": "disable_feature_flag_environment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._enable_feature_flag_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/environments/{environment_id}/enable",
+ "operation_id": "enable_feature_flag_environment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (FeatureFlagResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}",
+ "operation_id": "get_feature_flag",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_feature_flags_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": (EnvironmentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/environments/{environment_id}",
+ "operation_id": "get_feature_flags_environment",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_feature_flags_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListFeatureFlagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags",
+ "operation_id": "list_feature_flags",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "key": {
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "query",
+ },
+ "is_archived": {
+ "openapi_types": (bool,),
+ "attribute": "is_archived",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_feature_flags_environments_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListEnvironmentsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/environments",
+ "operation_id": "list_feature_flags_environments",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "name": {
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "query",
+ },
+ "key": {
+ "openapi_types": (str,),
+ "attribute": "key",
+ "location": "query",
+ },
+ "dd_env": {
+ "openapi_types": (str,),
+ "attribute": "dd_env",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._pause_exposure_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AllocationExposureScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/exposure-schedules/{exposure_schedule_id}/pause",
+ "operation_id": "pause_exposure_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "exposure_schedule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "exposure_schedule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._resume_exposure_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AllocationExposureScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/exposure-schedules/{exposure_schedule_id}/resume",
+ "operation_id": "resume_exposure_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "exposure_schedule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "exposure_schedule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._start_exposure_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AllocationExposureScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/exposure-schedules/{exposure_schedule_id}/start",
+ "operation_id": "start_exposure_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "exposure_schedule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "exposure_schedule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._stop_exposure_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AllocationExposureScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/exposure-schedules/{exposure_schedule_id}/stop",
+ "operation_id": "stop_exposure_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "exposure_schedule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "exposure_schedule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._unarchive_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (FeatureFlagResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/unarchive",
+ "operation_id": "unarchive_feature_flag",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_allocations_for_feature_flag_in_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListAllocationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/environments/{environment_id}/allocations",
+ "operation_id": "update_allocations_for_feature_flag_in_environment",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OverwriteAllocationsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (FeatureFlagResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}",
+ "operation_id": "update_feature_flag",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateFeatureFlagRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_feature_flags_environment_endpoint = _Endpoint(
+ settings={
+ "response_type": (EnvironmentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/environments/{environment_id}",
+ "operation_id": "update_feature_flags_environment",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "environment_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "environment_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateEnvironmentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_variant_for_feature_flag_endpoint = _Endpoint(
+ settings={
+ "response_type": (Variant,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/feature-flags/{feature_flag_id}/variants/{variant_id}",
+ "operation_id": "update_variant_for_feature_flag",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "feature_flag_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "feature_flag_id",
+ "location": "path",
+ },
+ "variant_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "variant_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateVariantRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def archive_feature_flag(self, feature_flag_id: UUID, ) -> FeatureFlagResponse:
+ """Archive a feature flag.
+
+ Archives a feature flag. Archived flags are
+ hidden from the main list but remain accessible and can be unarchived.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :rtype: FeatureFlagResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ return self._archive_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def create_allocations_for_feature_flag_in_environment(self, feature_flag_id: UUID, environment_id: UUID, body: CreateAllocationsRequest, ) -> AllocationResponse:
+ """Create targeting rules for a flag env.
+
+ Creates a new targeting rule (allocation) for a specific feature flag in a specific environment.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :type body: CreateAllocationsRequest
+ :rtype: AllocationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["environment_id"] = environment_id
+
+ kwargs["body"] = body
+
+ return self._create_allocations_for_feature_flag_in_environment_endpoint.call_with_http_info(**kwargs)
+
+ def create_feature_flag(self, body: CreateFeatureFlagRequest, ) -> FeatureFlagResponse:
+ """Create a feature flag.
+
+ Creates a new feature flag with variants.
+
+ :type body: CreateFeatureFlagRequest
+ :rtype: FeatureFlagResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def create_feature_flags_environment(self, body: CreateEnvironmentRequest, ) -> EnvironmentResponse:
+ """Create an environment.
+
+ Creates a new environment for organizing feature flags.
+
+ :type body: CreateEnvironmentRequest
+ :rtype: EnvironmentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_feature_flags_environment_endpoint.call_with_http_info(**kwargs)
+
+ def create_variant_for_feature_flag(self, feature_flag_id: UUID, body: CreateVariant, ) -> Variant:
+ """Add a variant to a feature flag.
+
+ Adds a single new variant to an existing feature flag. This endpoint is
+ additive-only: it never modifies existing variants. A request whose ``key``
+ already exists on the flag is rejected with ``409 Conflict`` ; a ``value``
+ whose type does not match the flag's ``value_type`` is rejected with ``400``.
+ The server generates the variant UUID and returns it in the response body;
+ callers (for example, the flag-migration tool) need this UUID to reference
+ the new variant in subsequent allocation syncs.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :type body: CreateVariant
+ :rtype: Variant
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["body"] = body
+
+ return self._create_variant_for_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def delete_feature_flags_environment(self, environment_id: UUID, ) -> None:
+ """Delete an environment.
+
+ Deletes an environment. This operation cannot be undone.
+
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["environment_id"] = environment_id
+
+ return self._delete_feature_flags_environment_endpoint.call_with_http_info(**kwargs)
+
+ def delete_variant_from_feature_flag(self, feature_flag_id: UUID, variant_id: UUID, ) -> None:
+ """Delete a variant.
+
+ Deletes a variant from a feature flag.
+
+ When backend approvals are enabled and the flag requires approval, this endpoint creates and returns a ``FlagSuggestion`` with ``201 Created`` instead of deleting the variant immediately. If a pending suggestion already exists for this flag's variant property, the endpoint returns ``409 Conflict``.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :param variant_id: The ID of the variant.
+ :type variant_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["variant_id"] = variant_id
+
+ return self._delete_variant_from_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def disable_feature_flag_environment(self, feature_flag_id: UUID, environment_id: UUID, ) -> None:
+ """Disable a feature flag in an environment.
+
+ Disable a feature flag in a specific environment.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["environment_id"] = environment_id
+
+ return self._disable_feature_flag_environment_endpoint.call_with_http_info(**kwargs)
+
+ def enable_feature_flag_environment(self, feature_flag_id: UUID, environment_id: UUID, ) -> None:
+ """Enable a feature flag in an environment.
+
+ Enable a feature flag in a specific environment.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["environment_id"] = environment_id
+
+ return self._enable_feature_flag_environment_endpoint.call_with_http_info(**kwargs)
+
+ def get_feature_flag(self, feature_flag_id: UUID, ) -> FeatureFlagResponse:
+ """Get a feature flag.
+
+ Returns the details of a specific feature flag
+ including variants and environment status.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :rtype: FeatureFlagResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ return self._get_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def get_feature_flags_environment(self, environment_id: UUID, ) -> EnvironmentResponse:
+ """Get an environment.
+
+ Returns the details of a specific environment.
+
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :rtype: EnvironmentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["environment_id"] = environment_id
+
+ return self._get_feature_flags_environment_endpoint.call_with_http_info(**kwargs)
+
+ def list_feature_flags(self, *, key: Union[str, UnsetType]=unset, is_archived: Union[bool, UnsetType]=unset, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, ) -> ListFeatureFlagsResponse:
+ """List feature flags.
+
+ Returns a list of feature flags for the organization.
+ Supports filtering by key and archived status.
+
+ :param key: Filter feature flags by key (partial matching).
+ :type key: str, optional
+ :param is_archived: Filter by archived status.
+ :type is_archived: bool, optional
+ :param limit: Maximum number of results to return.
+ :type limit: int, optional
+ :param offset: Number of results to skip.
+ :type offset: int, optional
+ :rtype: ListFeatureFlagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if key is not unset:
+ kwargs["key"] = key
+
+ if is_archived is not unset:
+ kwargs["is_archived"] = is_archived
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ return self._list_feature_flags_endpoint.call_with_http_info(**kwargs)
+
+ def list_feature_flags_environments(self, *, name: Union[str, UnsetType]=unset, key: Union[str, UnsetType]=unset, dd_env: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, ) -> ListEnvironmentsResponse:
+ """List environments.
+
+ Returns a list of environments for the organization.
+ Supports filtering by name, key, and DD_ENV.
+
+ :param name: Filter environments by name (partial matching).
+ :type name: str, optional
+ :param key: Filter environments by key (partial matching).
+ :type key: str, optional
+ :param dd_env: Filter environments by queries that contain the provided DD_ENV value.
+ :type dd_env: str, optional
+ :param limit: Maximum number of results to return.
+ :type limit: int, optional
+ :param offset: Number of results to skip.
+ :type offset: int, optional
+ :rtype: ListEnvironmentsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if name is not unset:
+ kwargs["name"] = name
+
+ if key is not unset:
+ kwargs["key"] = key
+
+ if dd_env is not unset:
+ kwargs["dd_env"] = dd_env
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ return self._list_feature_flags_environments_endpoint.call_with_http_info(**kwargs)
+
+ def pause_exposure_schedule(self, exposure_schedule_id: UUID, ) -> AllocationExposureScheduleResponse:
+ """Pause a progressive rollout.
+
+ Pauses a progressive rollout while preserving rollout state.
+
+ :param exposure_schedule_id: The ID of the exposure schedule.
+ :type exposure_schedule_id: UUID
+ :rtype: AllocationExposureScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exposure_schedule_id"] = exposure_schedule_id
+
+ return self._pause_exposure_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def resume_exposure_schedule(self, exposure_schedule_id: UUID, ) -> AllocationExposureScheduleResponse:
+ """Resume a progressive rollout.
+
+ Resumes progression for a previously paused progressive rollout.
+
+ :param exposure_schedule_id: The ID of the exposure schedule.
+ :type exposure_schedule_id: UUID
+ :rtype: AllocationExposureScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exposure_schedule_id"] = exposure_schedule_id
+
+ return self._resume_exposure_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def start_exposure_schedule(self, exposure_schedule_id: UUID, ) -> AllocationExposureScheduleResponse:
+ """Start a progressive rollout.
+
+ Starts a progressive rollout and begins progression.
+
+ :param exposure_schedule_id: The ID of the exposure schedule.
+ :type exposure_schedule_id: UUID
+ :rtype: AllocationExposureScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exposure_schedule_id"] = exposure_schedule_id
+
+ return self._start_exposure_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def stop_exposure_schedule(self, exposure_schedule_id: UUID, ) -> AllocationExposureScheduleResponse:
+ """Stop a progressive rollout.
+
+ Stops a progressive rollout and marks it as aborted.
+
+ :param exposure_schedule_id: The ID of the exposure schedule.
+ :type exposure_schedule_id: UUID
+ :rtype: AllocationExposureScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["exposure_schedule_id"] = exposure_schedule_id
+
+ return self._stop_exposure_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def unarchive_feature_flag(self, feature_flag_id: UUID, ) -> FeatureFlagResponse:
+ """Unarchive a feature flag.
+
+ Unarchives a previously archived feature flag,
+ making it visible in the main list again.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :rtype: FeatureFlagResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ return self._unarchive_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def update_allocations_for_feature_flag_in_environment(self, feature_flag_id: UUID, environment_id: UUID, body: OverwriteAllocationsRequest, ) -> ListAllocationsResponse:
+ """Update targeting rules for a flag.
+
+ Updates targeting rules (allocations) for a specific feature flag in a specific environment.
+ This operation replaces the existing allocation set with the request payload.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :type body: OverwriteAllocationsRequest
+ :rtype: ListAllocationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["environment_id"] = environment_id
+
+ kwargs["body"] = body
+
+ return self._update_allocations_for_feature_flag_in_environment_endpoint.call_with_http_info(**kwargs)
+
+ def update_feature_flag(self, feature_flag_id: UUID, body: UpdateFeatureFlagRequest, ) -> FeatureFlagResponse:
+ """Update a feature flag.
+
+ Updates an existing feature flag's metadata such as
+ name and description. Does not modify targeting rules or allocations.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :type body: UpdateFeatureFlagRequest
+ :rtype: FeatureFlagResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["body"] = body
+
+ return self._update_feature_flag_endpoint.call_with_http_info(**kwargs)
+
+ def update_feature_flags_environment(self, environment_id: UUID, body: UpdateEnvironmentRequest, ) -> EnvironmentResponse:
+ """Update an environment.
+
+ Updates an existing environment's metadata such as
+ name and description.
+
+ :param environment_id: The ID of the environment.
+ :type environment_id: UUID
+ :type body: UpdateEnvironmentRequest
+ :rtype: EnvironmentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["environment_id"] = environment_id
+
+ kwargs["body"] = body
+
+ return self._update_feature_flags_environment_endpoint.call_with_http_info(**kwargs)
+
+ def update_variant_for_feature_flag(self, feature_flag_id: UUID, variant_id: UUID, body: UpdateVariantRequest, ) -> Variant:
+ """Update a variant.
+
+ Updates the name and value of an existing variant on a feature flag.
+
+ When backend approvals are enabled and the flag requires approval, this endpoint creates and returns a ``FlagSuggestion`` with ``201 Created`` instead of applying the change immediately. Use the returned suggestion ``id`` to approve or reject the change. If a pending suggestion already exists for this flag's variant property, the endpoint returns ``409 Conflict``.
+
+ :param feature_flag_id: The ID of the feature flag.
+ :type feature_flag_id: UUID
+ :param variant_id: The ID of the variant.
+ :type variant_id: UUID
+ :type body: UpdateVariantRequest
+ :rtype: Variant
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["feature_flag_id"] = feature_flag_id
+
+ kwargs["variant_id"] = variant_id
+
+ kwargs["body"] = body
+
+ return self._update_variant_for_feature_flag_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/fleet_automation_api.py b/datadog_api_client/v2/api/fleet_automation_api.py
new file mode 100644
index 0000000000..9bfe7ffe9f
--- /dev/null
+++ b/datadog_api_client/v2/api/fleet_automation_api.py
@@ -0,0 +1,971 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.fleet_tracers_response import FleetTracersResponse
+from datadog_api_client.v2.model.fleet_schedule_response import FleetScheduleResponse
+from datadog_api_client.v2.model.fleet_schedule_create_request import FleetScheduleCreateRequest
+from datadog_api_client.v2.model.fleet_schedule_patch_request import FleetSchedulePatchRequest
+from datadog_api_client.v2.model.fleet_deployment_response import FleetDeploymentResponse
+from datadog_api_client.v2.model.fleet_agent_versions_v2_response import FleetAgentVersionsV2Response
+from datadog_api_client.v2.model.fleet_agents_v2_response import FleetAgentsV2Response
+from datadog_api_client.v2.model.fleet_agent_detail_v2_response import FleetAgentDetailV2Response
+from datadog_api_client.v2.model.fleet_deployments_v2_response import FleetDeploymentsV2Response
+from datadog_api_client.v2.model.fleet_deployment_configure_v2_dry_run_response import FleetDeploymentConfigureV2DryRunResponse
+from datadog_api_client.v2.model.fleet_deployment_configure_v2_create_request import FleetDeploymentConfigureV2CreateRequest
+from datadog_api_client.v2.model.fleet_deployment_v2_create_response import FleetDeploymentV2CreateResponse
+from datadog_api_client.v2.model.fleet_deployment_package_upgrade_v2_create_request import FleetDeploymentPackageUpgradeV2CreateRequest
+from datadog_api_client.v2.model.fleet_deployment_v2_detail_response import FleetDeploymentV2DetailResponse
+from datadog_api_client.v2.model.fleet_deployment_v2_cancel_response import FleetDeploymentV2CancelResponse
+from datadog_api_client.v2.model.fleet_schedules_v2_response import FleetSchedulesV2Response
+from datadog_api_client.v2.model.fleet_schedule_v2_response import FleetScheduleV2Response
+
+
+class FleetAutomationApi:
+ """
+ Manage automated deployments across your fleet of hosts.
+
+ Fleet Automation provides two types of deployments:
+
+ Configuration Deployments ( ``/configure`` ):
+
+ * Apply configuration file changes to target hosts
+ * Support merge-patch operations to update specific configuration fields
+ * Support delete operations to remove configuration files
+ * Useful for updating Datadog Agent settings, integration configs, and more
+
+ Package Upgrade Deployments ( ``/upgrade`` ):
+
+ * Upgrade the Datadog Agent to specific versions
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._cancel_fleet_deployment_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetDeploymentV2CancelResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/deployments/{deployment_id}/cancel",
+ "operation_id": "cancel_fleet_deployment_v2",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "deployment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "deployment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_fleet_deployment_configure_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetDeploymentConfigureV2DryRunResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/deployments/configure",
+ "operation_id": "create_fleet_deployment_configure_v2",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (FleetDeploymentConfigureV2CreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_fleet_deployment_upgrade_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetDeploymentV2CreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/deployments/upgrade",
+ "operation_id": "create_fleet_deployment_upgrade_v2",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (FleetDeploymentPackageUpgradeV2CreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_fleet_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/fleet/schedules",
+ "operation_id": "create_fleet_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (FleetScheduleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_fleet_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/fleet/schedules/{id}",
+ "operation_id": "delete_fleet_schedule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_fleet_agent_detail_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetAgentDetailV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/agents/{agent_key}",
+ "operation_id": "get_fleet_agent_detail_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "agent_key": {
+ "required": True,
+ "validation": {
+ },
+ "openapi_types": (str,),
+ "attribute": "agent_key",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_fleet_deployment_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetDeploymentV2DetailResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/deployments/{deployment_id}",
+ "operation_id": "get_fleet_deployment_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "deployment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "deployment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_fleet_schedule_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetScheduleV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/schedules/{id}",
+ "operation_id": "get_fleet_schedule_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fleet_agents_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetAgentsV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/agents",
+ "operation_id": "list_fleet_agents_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_number",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": (str,),
+ "attribute": "tags",
+ "location": "query",
+ },
+ "sort_attribute": {
+ "openapi_types": (str,),
+ "attribute": "sort_attribute",
+ "location": "query",
+ },
+ "sort_descending": {
+ "openapi_types": (bool,),
+ "attribute": "sort_descending",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fleet_agent_tracers_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetTracersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/fleet/agents/{agent_key}/tracers",
+ "operation_id": "list_fleet_agent_tracers",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "agent_key": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "agent_key",
+ "location": "path",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_number",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "sort_attribute": {
+ "openapi_types": (str,),
+ "attribute": "sort_attribute",
+ "location": "query",
+ },
+ "sort_descending": {
+ "openapi_types": (bool,),
+ "attribute": "sort_descending",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fleet_agent_versions_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetAgentVersionsV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/agent_versions",
+ "operation_id": "list_fleet_agent_versions_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fleet_deployments_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetDeploymentsV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/deployments",
+ "operation_id": "list_fleet_deployments_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_number",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "ascending": {
+ "openapi_types": (bool,),
+ "attribute": "ascending",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fleet_schedules_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetSchedulesV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/fleet/schedules",
+ "operation_id": "list_fleet_schedules_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_fleet_tracers_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetTracersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/fleet/tracers",
+ "operation_id": "list_fleet_tracers",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_number",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "sort_attribute": {
+ "openapi_types": (str,),
+ "attribute": "sort_attribute",
+ "location": "query",
+ },
+ "sort_descending": {
+ "openapi_types": (bool,),
+ "attribute": "sort_descending",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._trigger_fleet_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetDeploymentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/fleet/schedules/{id}/trigger",
+ "operation_id": "trigger_fleet_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_fleet_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (FleetScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/fleet/schedules/{id}",
+ "operation_id": "update_fleet_schedule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (FleetSchedulePatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def cancel_fleet_deployment_v2(self, deployment_id: str, ) -> FleetDeploymentV2CancelResponse:
+ """Cancel a deployment.
+
+ Cancel an active deployment and stop all pending operations.
+ When you cancel a deployment:
+
+ * All pending operations on hosts that haven't started yet are stopped.
+ * Operations currently in progress on hosts may complete or be interrupted, depending on their current status.
+ * Configuration changes or package upgrades already applied to hosts are not rolled back.
+
+ After cancellation, you can view the final state of the deployment using the GET endpoint to see which hosts
+ were successfully updated before the cancellation.
+
+ Only deployments with a ``pending`` or ``running`` status can be canceled. Returns a 400 if the deployment is not in a cancelable status. Returns a 404 if no deployment matches the specified ID or if you do not have access to it.
+
+ :param deployment_id: The unique identifier of the deployment to cancel.
+ :type deployment_id: str
+ :rtype: FleetDeploymentV2CancelResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["deployment_id"] = deployment_id
+
+ return self._cancel_fleet_deployment_v2_endpoint.call_with_http_info(**kwargs)
+
+ def create_fleet_deployment_configure_v2(self, body: FleetDeploymentConfigureV2CreateRequest, ) -> FleetDeploymentConfigureV2DryRunResponse:
+ """Create a configuration deployment.
+
+ Create a new deployment to apply configuration changes
+ to a fleet of hosts matching the specified filter query.
+
+ This endpoint supports two types of configuration operations:
+
+ * ``merge-patch`` : Merges the provided patch data with the existing configuration file,
+ creating the file if it doesn't exist.
+ * ``delete`` : Removes the specified configuration file from the target hosts.
+
+ You can optionally use ``target_packages`` to apply the configuration change only to specific package versions.
+
+ The deployment is created and started automatically. You can specify multiple configuration
+ operations to execute in order on each target host. Use the filter query to target
+ specific hosts using the Datadog query syntax.
+
+ Set ``dry_run`` to ``true`` to validate the configuration and resolve target hosts and packages without deploying anything. A dry run returns a 200 with the validation result instead of creating and starting a deployment.
+
+ Returns a 400 if ``filter_query`` or ``config_operations`` is missing, a target package is missing a name or version or cannot be resolved, the configuration fails validation, or the filter query does not match any host eligible for the deployment.
+
+ :param body: Request payload containing the deployment details.
+ :type body: FleetDeploymentConfigureV2CreateRequest
+ :rtype: FleetDeploymentConfigureV2DryRunResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_fleet_deployment_configure_v2_endpoint.call_with_http_info(**kwargs)
+
+ def create_fleet_deployment_upgrade_v2(self, body: FleetDeploymentPackageUpgradeV2CreateRequest, ) -> FleetDeploymentV2CreateResponse:
+ """Upgrade hosts.
+
+ Create and immediately start a new package upgrade
+ on hosts matching the specified filter query.
+
+ This endpoint allows you to upgrade the Datadog Agent to a specific version
+ on hosts matching the specified filter query.
+
+ The deployment is created and started automatically. The system:
+
+ #. Identifies all hosts matching the filter query.
+ #. Validates that the specified version is available.
+ #. Begins rolling out the package upgrade to the target hosts.
+
+ Returns a 400 if ``filter_query`` or ``target_packages`` is missing, a target package is missing a name or version, or the filter query does not match any host eligible for the upgrade. Returns a 409 if a conflicting upgrade is already running on one or more target hosts.
+
+ :param body: Request payload containing the package upgrade details.
+ :type body: FleetDeploymentPackageUpgradeV2CreateRequest
+ :rtype: FleetDeploymentV2CreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_fleet_deployment_upgrade_v2_endpoint.call_with_http_info(**kwargs)
+
+ def create_fleet_schedule(self, body: FleetScheduleCreateRequest, ) -> FleetScheduleResponse:
+ """Create a schedule.
+
+ Create a new schedule for automated package upgrades.
+
+ Schedules define when and how often to automatically deploy package upgrades to a fleet
+ of hosts. Each schedule includes:
+
+ * A filter query to select target hosts
+ * A recurrence rule defining maintenance windows
+ * A version strategy (e.g., always latest, or N versions behind latest)
+
+ When the schedule triggers during a maintenance window, it automatically creates a
+ deployment that upgrades the Datadog Agent to the specified version on all matching hosts.
+
+ :param body: Request payload containing the schedule details.
+ :type body: FleetScheduleCreateRequest
+ :rtype: FleetScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_fleet_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_fleet_schedule(self, id: str, ) -> None:
+ """Delete a schedule.
+
+ Delete a schedule permanently.
+
+ When you delete a schedule:
+
+ * The schedule is permanently removed and will no longer create deployments
+ * Any deployments already created by this schedule are not affected
+ * This action cannot be undone
+
+ If you want to temporarily stop a schedule from creating deployments, consider
+ updating its status to "inactive" instead of deleting it.
+
+ :param id: The unique identifier of the schedule to delete.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_fleet_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def get_fleet_agent_detail_v2(self, agent_key: str, *, include: Union[str, UnsetType]=unset, ) -> FleetAgentDetailV2Response:
+ """Get detailed information about an agent.
+
+ Retrieve detailed information about a specific Datadog Agent.
+
+ By default, only ``agent_infos`` is returned. Use the ``include`` query parameter to
+ request additional data: ``integrations`` and/or ``configuration_files``.
+
+ :param agent_key: The unique identifier (Agent key) for the Datadog Agent. Must be a 32-character lowercase hexadecimal string.
+ :type agent_key: str
+ :param include: Comma-separated list of additional fields to include in the response. Valid values are ``integrations`` and ``configuration_files``. Omitting this parameter returns only ``agent_infos``. Unrecognized values are silently ignored rather than causing an error.
+ :type include: str, optional
+ :rtype: FleetAgentDetailV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_key"] = agent_key
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_fleet_agent_detail_v2_endpoint.call_with_http_info(**kwargs)
+
+ def get_fleet_deployment_v2(self, deployment_id: str, ) -> FleetDeploymentV2DetailResponse:
+ """Get a deployment by ID.
+
+ Retrieve detailed information about a specific deployment, including its current status,
+ configuration operations, and per-host execution status.
+
+ Returns a 404 if no deployment matches the given ID or if you do not have access to it.
+
+ :param deployment_id: The unique identifier of the deployment to retrieve.
+ :type deployment_id: str
+ :rtype: FleetDeploymentV2DetailResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["deployment_id"] = deployment_id
+
+ return self._get_fleet_deployment_v2_endpoint.call_with_http_info(**kwargs)
+
+ def get_fleet_schedule_v2(self, id: str, ) -> FleetScheduleV2Response:
+ """Get a schedule by ID.
+
+ Retrieve detailed information about a specific schedule by its unique identifier.
+
+ :param id: The unique identifier of the schedule to retrieve.
+ :type id: str
+ :rtype: FleetScheduleV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_fleet_schedule_v2_endpoint.call_with_http_info(**kwargs)
+
+ def list_fleet_agents_v2(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, filter: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, sort_attribute: Union[str, UnsetType]=unset, sort_descending: Union[bool, UnsetType]=unset, ) -> FleetAgentsV2Response:
+ """List all Datadog Agents.
+
+ Retrieve a paginated list of Datadog Agents.
+
+ Returns agents with support for pagination, sorting, and filtering.
+ Use ``page_number`` and ``page_size`` to navigate pages, ``filter`` to narrow by field values,
+ and ``tags`` to filter by agent tags.
+
+ :param page_number: Page number for pagination, starting at 0.
+ :type page_number: int, optional
+ :param page_size: Number of agents to return per page. Maximum value is 100. Defaults to 10.
+ :type page_size: int, optional
+ :param filter: Filter string to narrow down agent results.
+ :type filter: str, optional
+ :param tags: Comma-separated list of tag keys to select which tags are included in each agent's ``tags`` attribute. Does not filter which agents are returned.
+ :type tags: str, optional
+ :param sort_attribute: Agent attribute to sort results by. Must be a supported attribute name; unsupported values return a 400 error.
+ :type sort_attribute: str, optional
+ :param sort_descending: Set to ``true`` to sort results in descending order. Defaults to ascending.
+ :type sort_descending: bool, optional
+ :rtype: FleetAgentsV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if sort_attribute is not unset:
+ kwargs["sort_attribute"] = sort_attribute
+
+ if sort_descending is not unset:
+ kwargs["sort_descending"] = sort_descending
+
+ return self._list_fleet_agents_v2_endpoint.call_with_http_info(**kwargs)
+
+ def list_fleet_agent_tracers(self, agent_key: str, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort_attribute: Union[str, UnsetType]=unset, sort_descending: Union[bool, UnsetType]=unset, ) -> FleetTracersResponse:
+ """List tracers for a specific agent.
+
+ Retrieve a paginated list of tracers for a specific agent.
+
+ This endpoint returns tracers associated with a given agent key, identified by the
+ agent's hostname. Use this to discover telemetry-derived service names for a particular host.
+
+ :param agent_key: The unique identifier (agent key) for the Datadog Agent.
+ :type agent_key: str
+ :param page_number: Page number for pagination (starts at 0).
+ :type page_number: int, optional
+ :param page_size: Number of results per page (must be greater than 0 and less than or equal to 100).
+ :type page_size: int, optional
+ :param sort_attribute: Attribute to sort by.
+ :type sort_attribute: str, optional
+ :param sort_descending: Sort order (true for descending, false for ascending).
+ :type sort_descending: bool, optional
+ :rtype: FleetTracersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["agent_key"] = agent_key
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort_attribute is not unset:
+ kwargs["sort_attribute"] = sort_attribute
+
+ if sort_descending is not unset:
+ kwargs["sort_descending"] = sort_descending
+
+ return self._list_fleet_agent_tracers_endpoint.call_with_http_info(**kwargs)
+
+ def list_fleet_agent_versions_v2(self, ) -> FleetAgentVersionsV2Response:
+ """List available Datadog Agent versions.
+
+ Retrieve the list of Datadog Agent versions available for deployment.
+
+ Returns ``200`` with an empty ``data`` array if the Agent package exists in the catalog
+ but has no available versions, and ``404`` only if the Agent package itself is absent
+ from the catalog.
+
+ :rtype: FleetAgentVersionsV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_fleet_agent_versions_v2_endpoint.call_with_http_info(**kwargs)
+
+ def list_fleet_deployments_v2(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ascending: Union[bool, UnsetType]=unset, filter: Union[str, UnsetType]=unset, ) -> FleetDeploymentsV2Response:
+ """List all deployments.
+
+ Retrieve a paginated list of all deployments for fleet automation.
+
+ :param page_size: Number of deployments to return per page. Maximum value is 100.
+ :type page_size: int, optional
+ :param page_number: Page number for pagination, starting at 0.
+ :type page_number: int, optional
+ :param sort: Field to sort results by (for example, ``start_date`` ). Must be a supported field
+ name; unsupported values return a 400 error.
+ :type sort: str, optional
+ :param ascending: Set to ``true`` to sort in ascending order. This setting has no effect unless ``sort`` is also set.
+ Defaults to descending order.
+ :type ascending: bool, optional
+ :param filter: Query used to filter deployments. Uses the Datadog query syntax. Filtering on an
+ unsupported field returns a 400 error. For example:
+
+ * ``status:failed`` or ``status:done_with_errors`` : deployments that need investigation.
+ * ``status:running`` : deployments currently in flight.
+ * ``update_type:update_package`` or ``update_type:update_config_operations`` : deployments of a given type.
+ :type filter: str, optional
+ :rtype: FleetDeploymentsV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if ascending is not unset:
+ kwargs["ascending"] = ascending
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ return self._list_fleet_deployments_v2_endpoint.call_with_http_info(**kwargs)
+
+ def list_fleet_schedules_v2(self, ) -> FleetSchedulesV2Response:
+ """List all schedules.
+
+ Retrieve all upgrade schedules for the organization.
+
+ Schedules automate package upgrades by defining maintenance windows and recurrence rules.
+ Each schedule automatically creates deployments based on its configuration.
+
+ :rtype: FleetSchedulesV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_fleet_schedules_v2_endpoint.call_with_http_info(**kwargs)
+
+ def list_fleet_tracers(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort_attribute: Union[str, UnsetType]=unset, sort_descending: Union[bool, UnsetType]=unset, filter: Union[str, UnsetType]=unset, ) -> FleetTracersResponse:
+ """List all fleet tracers.
+
+ Retrieve a paginated list of all fleet tracers.
+
+ This endpoint returns telemetry-derived service names from the SDK telemetry pipeline.
+ These names may differ from span-derived names in APM and are useful for querying
+ service library configurations.
+ Use the ``page_number`` and ``page_size`` query parameters to paginate through results.
+
+ :param page_number: Page number for pagination (starts at 0).
+ :type page_number: int, optional
+ :param page_size: Number of results per page (must be greater than 0 and less than or equal to 100).
+ :type page_size: int, optional
+ :param sort_attribute: Attribute to sort by.
+ :type sort_attribute: str, optional
+ :param sort_descending: Sort order (true for descending, false for ascending).
+ :type sort_descending: bool, optional
+ :param filter: Filter string for narrowing down tracer results.
+ :type filter: str, optional
+ :rtype: FleetTracersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort_attribute is not unset:
+ kwargs["sort_attribute"] = sort_attribute
+
+ if sort_descending is not unset:
+ kwargs["sort_descending"] = sort_descending
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ return self._list_fleet_tracers_endpoint.call_with_http_info(**kwargs)
+
+ def trigger_fleet_schedule(self, id: str, ) -> FleetDeploymentResponse:
+ """Trigger a schedule deployment.
+
+ Manually trigger a schedule to immediately create and start a deployment.
+
+ This endpoint allows you to manually initiate a deployment using the schedule's
+ configuration, without waiting for the next scheduled maintenance window. This is
+ useful for:
+
+ * Testing a schedule before it runs automatically
+ * Performing an emergency update outside the regular maintenance window
+ * Creating an ad-hoc deployment with the same settings as a schedule
+
+ The deployment is created immediately with:
+
+ * The same filter query as the schedule
+ * The package version determined by the schedule's version strategy
+ * All matching hosts as targets
+
+ The manually triggered deployment is independent of the schedule and does not
+ affect the schedule's normal recurrence pattern.
+
+ :param id: The unique identifier of the schedule to trigger.
+ :type id: str
+ :rtype: FleetDeploymentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._trigger_fleet_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def update_fleet_schedule(self, id: str, body: FleetSchedulePatchRequest, ) -> FleetScheduleResponse:
+ """Update a schedule.
+
+ Partially update a schedule by providing only the fields you want to change.
+
+ This endpoint allows you to modify specific attributes of a schedule without
+ affecting other fields. Common use cases include:
+
+ * Changing the schedule status between active and inactive
+ * Updating the maintenance window times
+ * Modifying the filter query to target different hosts
+ * Adjusting the version strategy
+
+ Only include the fields you want to update in the request body. All fields
+ are optional in a PATCH request.
+
+ :param id: The unique identifier of the schedule to update.
+ :type id: str
+ :param body: Request payload containing the fields to update.
+ :type body: FleetSchedulePatchRequest
+ :rtype: FleetScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_fleet_schedule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/forms_api.py b/datadog_api_client/v2/api/forms_api.py
new file mode 100644
index 0000000000..942b6fb5ee
--- /dev/null
+++ b/datadog_api_client/v2/api/forms_api.py
@@ -0,0 +1,458 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.forms_response import FormsResponse
+from datadog_api_client.v2.model.form_response import FormResponse
+from datadog_api_client.v2.model.create_form_request import CreateFormRequest
+from datadog_api_client.v2.model.delete_form_response import DeleteFormResponse
+from datadog_api_client.v2.model.update_form_request import UpdateFormRequest
+from datadog_api_client.v2.model.clone_form_request import CloneFormRequest
+from datadog_api_client.v2.model.form_publication_response import FormPublicationResponse
+from datadog_api_client.v2.model.publish_form_request import PublishFormRequest
+from datadog_api_client.v2.model.form_version_response import FormVersionResponse
+from datadog_api_client.v2.model.upsert_form_version_request import UpsertFormVersionRequest
+from datadog_api_client.v2.model.upsert_and_publish_form_version_request import UpsertAndPublishFormVersionRequest
+
+
+class FormsApi:
+ """
+ The Datadog Forms API lets you create and manage forms within the App Builder platform.
+ You can configure form settings, manage versions, and publish forms.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._clone_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}/clone",
+ "operation_id": "clone_form",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CloneFormRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_and_publish_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/create_and_publish",
+ "operation_id": "create_and_publish_form",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateFormRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms",
+ "operation_id": "create_form",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateFormRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteFormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}",
+ "operation_id": "delete_form",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}",
+ "operation_id": "get_form",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ "version": {
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_forms_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms",
+ "operation_id": "list_forms",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._publish_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormPublicationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}/publish",
+ "operation_id": "publish_form",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PublishFormRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_form_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}",
+ "operation_id": "update_form",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateFormRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_and_publish_form_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}/versions/upsert_and_publish",
+ "operation_id": "upsert_and_publish_form_version",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpsertAndPublishFormVersionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_form_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (FormVersionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/forms/{form_id}/versions",
+ "operation_id": "upsert_form_version",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "form_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "form_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpsertFormVersionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def clone_form(self, form_id: UUID, body: CloneFormRequest, ) -> FormResponse:
+ """Clone a form.
+
+ Clone an existing form. The clone is created in draft mode using the source form's latest version.
+
+ :param form_id: The ID of the form to clone.
+ :type form_id: UUID
+ :type body: CloneFormRequest
+ :rtype: FormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ kwargs["body"] = body
+
+ return self._clone_form_endpoint.call_with_http_info(**kwargs)
+
+ def create_and_publish_form(self, body: CreateFormRequest, ) -> FormResponse:
+ """Create and publish a form.
+
+ Creates a new form and immediately publishes its initial version. This also creates a new datastore for form responses and links it to the form.
+
+ :type body: CreateFormRequest
+ :rtype: FormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_and_publish_form_endpoint.call_with_http_info(**kwargs)
+
+ def create_form(self, body: CreateFormRequest, ) -> FormResponse:
+ """Create a form.
+
+ Create a new form. The form is created in draft mode and must be published before it can be used. This also creates a new datastore for form responses and links it to the form.
+
+ :type body: CreateFormRequest
+ :rtype: FormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_form_endpoint.call_with_http_info(**kwargs)
+
+ def delete_form(self, form_id: UUID, ) -> DeleteFormResponse:
+ """Delete a form.
+
+ Delete a form by its ID. This will also try to delete the associated datastore.
+
+ :param form_id: The ID of the form.
+ :type form_id: UUID
+ :rtype: DeleteFormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ return self._delete_form_endpoint.call_with_http_info(**kwargs)
+
+ def get_form(self, form_id: UUID, *, version: Union[str, UnsetType]=unset, ) -> FormResponse:
+ """Get a form.
+
+ Get a form definition by its ID.
+
+ :param form_id: The ID of the form.
+ :type form_id: UUID
+ :param version: The version of the form to retrieve. Use 'latest' for the most recent draft, 'published' for the last published version, or a specific version number.
+ :type version: str, optional
+ :rtype: FormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ if version is not unset:
+ kwargs["version"] = version
+
+ return self._get_form_endpoint.call_with_http_info(**kwargs)
+
+ def list_forms(self, ) -> FormsResponse:
+ """List forms.
+
+ Get all forms for the authenticated user's organization.
+
+ :rtype: FormsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_forms_endpoint.call_with_http_info(**kwargs)
+
+ def publish_form(self, form_id: UUID, body: PublishFormRequest, ) -> FormPublicationResponse:
+ """Publish a form version.
+
+ Publish a specific version of a form, making it available for submissions.
+
+ :param form_id: The ID of the form.
+ :type form_id: UUID
+ :type body: PublishFormRequest
+ :rtype: FormPublicationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ kwargs["body"] = body
+
+ return self._publish_form_endpoint.call_with_http_info(**kwargs)
+
+ def update_form(self, form_id: UUID, body: UpdateFormRequest, ) -> FormResponse:
+ """Update a form.
+
+ Update a form's properties such as its name, description, or datastore configuration.
+
+ :param form_id: The ID of the form.
+ :type form_id: UUID
+ :type body: UpdateFormRequest
+ :rtype: FormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ kwargs["body"] = body
+
+ return self._update_form_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_and_publish_form_version(self, form_id: UUID, body: UpsertAndPublishFormVersionRequest, ) -> FormResponse:
+ """Upsert and publish a form version.
+
+ Upsert the latest form version and publish it in a single atomic transaction.
+
+ :param form_id: The ID of the form.
+ :type form_id: UUID
+ :type body: UpsertAndPublishFormVersionRequest
+ :rtype: FormResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ kwargs["body"] = body
+
+ return self._upsert_and_publish_form_version_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_form_version(self, form_id: UUID, body: UpsertFormVersionRequest, ) -> FormVersionResponse:
+ """Create or update a form version.
+
+ Create or update the latest draft version of a form. The ``upsert_params`` field controls
+ optimistic concurrency behavior.
+
+ :param form_id: The ID of the form.
+ :type form_id: UUID
+ :type body: UpsertFormVersionRequest
+ :rtype: FormVersionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["form_id"] = form_id
+
+ kwargs["body"] = body
+
+ return self._upsert_form_version_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/gcp_integration_api.py b/datadog_api_client/v2/api/gcp_integration_api.py
new file mode 100644
index 0000000000..c582409a00
--- /dev/null
+++ b/datadog_api_client/v2/api/gcp_integration_api.py
@@ -0,0 +1,248 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.gcpsts_service_accounts_response import GCPSTSServiceAccountsResponse
+from datadog_api_client.v2.model.gcpsts_service_account_response import GCPSTSServiceAccountResponse
+from datadog_api_client.v2.model.gcpsts_service_account_create_request import GCPSTSServiceAccountCreateRequest
+from datadog_api_client.v2.model.gcpsts_service_account_update_request import GCPSTSServiceAccountUpdateRequest
+from datadog_api_client.v2.model.gcpsts_delegate_account_response import GCPSTSDelegateAccountResponse
+
+
+class GCPIntegrationApi:
+ """
+ Configure your Datadog-Google Cloud Platform (GCP) integration directly
+ through the Datadog API. Read more about the `Datadog-Google Cloud Platform integration `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_gcpsts_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPSTSServiceAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/gcp/accounts",
+ "operation_id": "create_gcpsts_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GCPSTSServiceAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_gcpsts_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/gcp/accounts/{account_id}",
+ "operation_id": "delete_gcpsts_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_gcpsts_delegate_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPSTSDelegateAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/gcp/sts_delegate",
+ "operation_id": "get_gcpsts_delegate",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_gcpsts_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPSTSServiceAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/gcp/accounts",
+ "operation_id": "list_gcpsts_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._make_gcpsts_delegate_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPSTSDelegateAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/gcp/sts_delegate",
+ "operation_id": "make_gcpsts_delegate",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (dict,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_gcpsts_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (GCPSTSServiceAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/gcp/accounts/{account_id}",
+ "operation_id": "update_gcpsts_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GCPSTSServiceAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_gcpsts_account(self, body: GCPSTSServiceAccountCreateRequest, ) -> GCPSTSServiceAccountResponse:
+ """Create a new entry for your service account.
+
+ Create a new entry within Datadog for your STS enabled service account.
+
+ :type body: GCPSTSServiceAccountCreateRequest
+ :rtype: GCPSTSServiceAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_gcpsts_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_gcpsts_account(self, account_id: str, ) -> None:
+ """Delete an STS enabled GCP Account.
+
+ Delete an STS enabled GCP account from within Datadog.
+
+ :param account_id: Your GCP STS enabled service account's unique ID.
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_gcpsts_account_endpoint.call_with_http_info(**kwargs)
+
+ def get_gcpsts_delegate(self, ) -> GCPSTSDelegateAccountResponse:
+ """List delegate account.
+
+ List your Datadog-GCP STS delegate account configured in your Datadog account.
+
+ :rtype: GCPSTSDelegateAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_gcpsts_delegate_endpoint.call_with_http_info(**kwargs)
+
+ def list_gcpsts_accounts(self, ) -> GCPSTSServiceAccountsResponse:
+ """List all GCP STS-enabled service accounts.
+
+ List all GCP STS-enabled service accounts configured in your Datadog account.
+
+ :rtype: GCPSTSServiceAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_gcpsts_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def make_gcpsts_delegate(self, *, body: Union[dict, UnsetType]=unset, ) -> GCPSTSDelegateAccountResponse:
+ """Create a Datadog GCP principal.
+
+ Create a Datadog GCP principal.
+
+ :param body: Create a delegate service account within Datadog.
+ :type body: dict, optional
+ :rtype: GCPSTSDelegateAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._make_gcpsts_delegate_endpoint.call_with_http_info(**kwargs)
+
+ def update_gcpsts_account(self, account_id: str, body: GCPSTSServiceAccountUpdateRequest, ) -> GCPSTSServiceAccountResponse:
+ """Update STS Service Account.
+
+ Update an STS enabled service account.
+
+ :param account_id: Your GCP STS enabled service account's unique ID.
+ :type account_id: str
+ :type body: GCPSTSServiceAccountUpdateRequest
+ :rtype: GCPSTSServiceAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_gcpsts_account_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/google_chat_integration_api.py b/datadog_api_client/v2/api/google_chat_integration_api.py
new file mode 100644
index 0000000000..07f158f95c
--- /dev/null
+++ b/datadog_api_client/v2/api/google_chat_integration_api.py
@@ -0,0 +1,737 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.google_chat_organizations_response import GoogleChatOrganizationsResponse
+from datadog_api_client.v2.model.google_chat_app_named_space_response import GoogleChatAppNamedSpaceResponse
+from datadog_api_client.v2.model.google_chat_organization_response import GoogleChatOrganizationResponse
+from datadog_api_client.v2.model.google_chat_delegated_user_response import GoogleChatDelegatedUserResponse
+from datadog_api_client.v2.model.google_chat_organization_handles_response import GoogleChatOrganizationHandlesResponse
+from datadog_api_client.v2.model.google_chat_organization_handle_response import GoogleChatOrganizationHandleResponse
+from datadog_api_client.v2.model.google_chat_create_organization_handle_request import GoogleChatCreateOrganizationHandleRequest
+from datadog_api_client.v2.model.google_chat_update_organization_handle_request import GoogleChatUpdateOrganizationHandleRequest
+from datadog_api_client.v2.model.google_chat_target_audiences_response import GoogleChatTargetAudiencesResponse
+from datadog_api_client.v2.model.google_chat_target_audience_response import GoogleChatTargetAudienceResponse
+from datadog_api_client.v2.model.google_chat_target_audience_create_request import GoogleChatTargetAudienceCreateRequest
+from datadog_api_client.v2.model.google_chat_target_audience_update_request import GoogleChatTargetAudienceUpdateRequest
+
+
+class GoogleChatIntegrationApi:
+ """
+ Configure your `Datadog Google Chat integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_google_chat_target_audience_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatTargetAudienceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences",
+ "operation_id": "create_google_chat_target_audience",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GoogleChatTargetAudienceCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_organization_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatOrganizationHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/organization-handles",
+ "operation_id": "create_organization_handle",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GoogleChatCreateOrganizationHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_google_chat_delegated_user_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/delegated-user",
+ "operation_id": "delete_google_chat_delegated_user",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_google_chat_organization_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}",
+ "operation_id": "delete_google_chat_organization",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_google_chat_target_audience_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}",
+ "operation_id": "delete_google_chat_target_audience",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "target_audience_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "target_audience_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_organization_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/organization-handles/{handle_id}",
+ "operation_id": "delete_organization_handle",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_google_chat_delegated_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatDelegatedUserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/delegated-user",
+ "operation_id": "get_google_chat_delegated_user",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_google_chat_organization_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatOrganizationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}",
+ "operation_id": "get_google_chat_organization",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_google_chat_target_audience_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatTargetAudienceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}",
+ "operation_id": "get_google_chat_target_audience",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "target_audience_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "target_audience_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_organization_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatOrganizationHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/organization-handles/{handle_id}",
+ "operation_id": "get_organization_handle",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_space_by_display_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatAppNamedSpaceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/app/named-spaces/{domain_name}/{space_display_name}",
+ "operation_id": "get_space_by_display_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "domain_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "domain_name",
+ "location": "path",
+ },
+ "space_display_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "space_display_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_google_chat_organizations_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatOrganizationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations",
+ "operation_id": "list_google_chat_organizations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_google_chat_target_audiences_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatTargetAudiencesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences",
+ "operation_id": "list_google_chat_target_audiences",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_organization_handles_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatOrganizationHandlesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/organization-handles",
+ "operation_id": "list_organization_handles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_google_chat_target_audience_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatTargetAudienceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/target-audiences/{target_audience_id}",
+ "operation_id": "update_google_chat_target_audience",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "target_audience_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "target_audience_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GoogleChatTargetAudienceUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_organization_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (GoogleChatOrganizationHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/google-chat/organizations/{organization_binding_id}/organization-handles/{handle_id}",
+ "operation_id": "update_organization_handle",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "organization_binding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "organization_binding_id",
+ "location": "path",
+ },
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GoogleChatUpdateOrganizationHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_google_chat_target_audience(self, organization_binding_id: str, body: GoogleChatTargetAudienceCreateRequest, ) -> GoogleChatTargetAudienceResponse:
+ """Create a target audience.
+
+ Create a target audience for a Google Chat organization binding in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param body: Target audience payload.
+ :type body: GoogleChatTargetAudienceCreateRequest
+ :rtype: GoogleChatTargetAudienceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["body"] = body
+
+ return self._create_google_chat_target_audience_endpoint.call_with_http_info(**kwargs)
+
+ def create_organization_handle(self, organization_binding_id: str, body: GoogleChatCreateOrganizationHandleRequest, ) -> GoogleChatOrganizationHandleResponse:
+ """Create organization handle.
+
+ Create an organization handle in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param body: Organization handle payload.
+ :type body: GoogleChatCreateOrganizationHandleRequest
+ :rtype: GoogleChatOrganizationHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["body"] = body
+
+ return self._create_organization_handle_endpoint.call_with_http_info(**kwargs)
+
+ def delete_google_chat_delegated_user(self, organization_binding_id: str, ) -> None:
+ """Delete the delegated user.
+
+ Delete the delegated user for a Google Chat organization binding from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ return self._delete_google_chat_delegated_user_endpoint.call_with_http_info(**kwargs)
+
+ def delete_google_chat_organization(self, organization_binding_id: str, ) -> None:
+ """Delete a Google Chat organization binding.
+
+ Delete a Google Chat organization binding from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ return self._delete_google_chat_organization_endpoint.call_with_http_info(**kwargs)
+
+ def delete_google_chat_target_audience(self, organization_binding_id: str, target_audience_id: str, ) -> None:
+ """Delete a target audience.
+
+ Delete a target audience from a Google Chat organization binding in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param target_audience_id: Your target audience ID.
+ :type target_audience_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["target_audience_id"] = target_audience_id
+
+ return self._delete_google_chat_target_audience_endpoint.call_with_http_info(**kwargs)
+
+ def delete_organization_handle(self, organization_binding_id: str, handle_id: str, ) -> None:
+ """Delete organization handle.
+
+ Delete an organization handle from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param handle_id: Your organization handle ID.
+ :type handle_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["handle_id"] = handle_id
+
+ return self._delete_organization_handle_endpoint.call_with_http_info(**kwargs)
+
+ def get_google_chat_delegated_user(self, organization_binding_id: str, ) -> GoogleChatDelegatedUserResponse:
+ """Get the delegated user.
+
+ Get the delegated user for a Google Chat organization binding in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :rtype: GoogleChatDelegatedUserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ return self._get_google_chat_delegated_user_endpoint.call_with_http_info(**kwargs)
+
+ def get_google_chat_organization(self, organization_binding_id: str, ) -> GoogleChatOrganizationResponse:
+ """Get a Google Chat organization binding.
+
+ Get a Google Chat organization binding from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :rtype: GoogleChatOrganizationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ return self._get_google_chat_organization_endpoint.call_with_http_info(**kwargs)
+
+ def get_google_chat_target_audience(self, organization_binding_id: str, target_audience_id: str, ) -> GoogleChatTargetAudienceResponse:
+ """Get a target audience.
+
+ Get a target audience for a Google Chat organization binding in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param target_audience_id: Your target audience ID.
+ :type target_audience_id: str
+ :rtype: GoogleChatTargetAudienceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["target_audience_id"] = target_audience_id
+
+ return self._get_google_chat_target_audience_endpoint.call_with_http_info(**kwargs)
+
+ def get_organization_handle(self, organization_binding_id: str, handle_id: str, ) -> GoogleChatOrganizationHandleResponse:
+ """Get organization handle.
+
+ Get an organization handle from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param handle_id: Your organization handle ID.
+ :type handle_id: str
+ :rtype: GoogleChatOrganizationHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["handle_id"] = handle_id
+
+ return self._get_organization_handle_endpoint.call_with_http_info(**kwargs)
+
+ def get_space_by_display_name(self, domain_name: str, space_display_name: str, ) -> GoogleChatAppNamedSpaceResponse:
+ """Get space information by display name.
+
+ Get the resource name and organization binding ID of a space in the Datadog Google Chat integration.
+
+ :param domain_name: The Google Chat domain name.
+ :type domain_name: str
+ :param space_display_name: The Google Chat space display name.
+ :type space_display_name: str
+ :rtype: GoogleChatAppNamedSpaceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["domain_name"] = domain_name
+
+ kwargs["space_display_name"] = space_display_name
+
+ return self._get_space_by_display_name_endpoint.call_with_http_info(**kwargs)
+
+ def list_google_chat_organizations(self, ) -> GoogleChatOrganizationsResponse:
+ """Get all Google Chat organization bindings.
+
+ Get a list of all Google Chat organization bindings in the Datadog Google Chat integration.
+
+ :rtype: GoogleChatOrganizationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_google_chat_organizations_endpoint.call_with_http_info(**kwargs)
+
+ def list_google_chat_target_audiences(self, organization_binding_id: str, ) -> GoogleChatTargetAudiencesResponse:
+ """Get all target audiences.
+
+ Get a list of all target audiences for a Google Chat organization binding in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :rtype: GoogleChatTargetAudiencesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ return self._list_google_chat_target_audiences_endpoint.call_with_http_info(**kwargs)
+
+ def list_organization_handles(self, organization_binding_id: str, ) -> GoogleChatOrganizationHandlesResponse:
+ """Get all organization handles.
+
+ Get a list of all organization handles from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :rtype: GoogleChatOrganizationHandlesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ return self._list_organization_handles_endpoint.call_with_http_info(**kwargs)
+
+ def update_google_chat_target_audience(self, organization_binding_id: str, target_audience_id: str, body: GoogleChatTargetAudienceUpdateRequest, ) -> GoogleChatTargetAudienceResponse:
+ """Update a target audience.
+
+ Update a target audience for a Google Chat organization binding in the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param target_audience_id: Your target audience ID.
+ :type target_audience_id: str
+ :param body: Target audience payload.
+ :type body: GoogleChatTargetAudienceUpdateRequest
+ :rtype: GoogleChatTargetAudienceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["target_audience_id"] = target_audience_id
+
+ kwargs["body"] = body
+
+ return self._update_google_chat_target_audience_endpoint.call_with_http_info(**kwargs)
+
+ def update_organization_handle(self, organization_binding_id: str, handle_id: str, body: GoogleChatUpdateOrganizationHandleRequest, ) -> GoogleChatOrganizationHandleResponse:
+ """Update organization handle.
+
+ Update an organization handle from the Datadog Google Chat integration.
+
+ :param organization_binding_id: Your organization binding ID.
+ :type organization_binding_id: str
+ :param handle_id: Your organization handle ID.
+ :type handle_id: str
+ :param body: Organization handle payload.
+ :type body: GoogleChatUpdateOrganizationHandleRequest
+ :rtype: GoogleChatOrganizationHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["organization_binding_id"] = organization_binding_id
+
+ kwargs["handle_id"] = handle_id
+
+ kwargs["body"] = body
+
+ return self._update_organization_handle_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/governance_console_api.py b/datadog_api_client/v2/api/governance_console_api.py
new file mode 100644
index 0000000000..baa000c0e9
--- /dev/null
+++ b/datadog_api_client/v2/api/governance_console_api.py
@@ -0,0 +1,610 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.governance_config_response import GovernanceConfigResponse
+from datadog_api_client.v2.model.governance_controls_response import GovernanceControlsResponse
+from datadog_api_client.v2.model.governance_control_response import GovernanceControlResponse
+from datadog_api_client.v2.model.governance_control_update_request import GovernanceControlUpdateRequest
+from datadog_api_client.v2.model.governance_control_detections_response import GovernanceControlDetectionsResponse
+from datadog_api_client.v2.model.control_notification_settings_response import ControlNotificationSettingsResponse
+from datadog_api_client.v2.model.control_notification_settings_update_request import ControlNotificationSettingsUpdateRequest
+from datadog_api_client.v2.model.governance_mitigation_request import GovernanceMitigationRequest
+from datadog_api_client.v2.model.governance_control_detection_response import GovernanceControlDetectionResponse
+from datadog_api_client.v2.model.governance_control_detection_update_request import GovernanceControlDetectionUpdateRequest
+from datadog_api_client.v2.model.governance_insights_response import GovernanceInsightsResponse
+from datadog_api_client.v2.model.governance_notification_settings_response import GovernanceNotificationSettingsResponse
+from datadog_api_client.v2.model.governance_notification_settings_update_request import GovernanceNotificationSettingsUpdateRequest
+
+
+class GovernanceConsoleApi:
+ """
+ The Governance Console finds issues that build up across a Datadog organization over time,
+ such as API keys nobody uses, users who no longer need access, or custom metrics that are
+ never queried, and tracks them through to a fix.
+
+ These endpoints allow you to:
+
+ * Read insights: measures of how your organization uses Datadog, each with the query behind it.
+ * Configure controls: the rules deciding how one kind of issue is found and what is done about it.
+ * Act on detections: the issues a control found. Assign, defer, accept as an exception, or fix.
+ * Manage settings: organization-wide configuration and notification destinations.
+
+ See the `Governance Console page `_
+ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_governance_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/config",
+ "operation_id": "get_governance_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_governance_control_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceControlResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/control/{detection_type}",
+ "operation_id": "get_governance_control",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "detection_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_type",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_governance_control_notification_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (ControlNotificationSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/control/{detection_type}/notification_settings",
+ "operation_id": "get_governance_control_notification_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "detection_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_type",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_governance_detection_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceControlDetectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/detections/{detection_id}",
+ "operation_id": "get_governance_detection",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "detection_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_governance_notification_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceNotificationSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/notification_settings",
+ "operation_id": "get_governance_notification_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_governance_control_detections_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceControlDetectionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/control/{detection_type}/detections",
+ "operation_id": "list_governance_control_detections",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "detection_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_type",
+ "location": "path",
+ },
+ "filter_state": {
+ "openapi_types": (str,),
+ "attribute": "filter[state]",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_governance_controls_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceControlsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/control",
+ "operation_id": "list_governance_controls",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_governance_insights_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceInsightsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/insights",
+ "operation_id": "list_governance_insights",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_product": {
+ "openapi_types": ([str],),
+ "attribute": "filter[product]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._mitigate_governance_detections_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/detections/mitigate",
+ "operation_id": "mitigate_governance_detections",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GovernanceMitigationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_governance_control_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceControlResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/control/{detection_type}",
+ "operation_id": "update_governance_control",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "detection_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_type",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GovernanceControlUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_governance_control_notification_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (ControlNotificationSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/control/{detection_type}/notification_settings",
+ "operation_id": "update_governance_control_notification_settings",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "detection_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_type",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ControlNotificationSettingsUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_governance_detection_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceControlDetectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/detections/{detection_id}",
+ "operation_id": "update_governance_detection",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "detection_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "detection_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GovernanceControlDetectionUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_governance_notification_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (GovernanceNotificationSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/governance/notification_settings",
+ "operation_id": "update_governance_notification_settings",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GovernanceNotificationSettingsUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_governance_config(self, ) -> GovernanceConfigResponse:
+ """Get the Governance Console configuration.
+
+ Retrieve the Governance Console configuration for the organization, including whether the
+ Console is enabled, whether assignment notifications are enabled, and whether usage
+ attribution is configured.
+
+ :rtype: GovernanceConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_governance_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_governance_control(self, detection_type: str, ) -> GovernanceControlResponse:
+ """Get a control.
+
+ Retrieve a single governance control by its detection type, including the organization's current
+ detection, notification, and mitigation configuration and detection counts.
+
+ :param detection_type: The detection type that identifies the control, for example ``unused_api_keys``.
+ :type detection_type: str
+ :rtype: GovernanceControlResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_type"] = detection_type
+
+ return self._get_governance_control_endpoint.call_with_http_info(**kwargs)
+
+ def get_governance_control_notification_settings(self, detection_type: str, ) -> ControlNotificationSettingsResponse:
+ """Get control notification settings.
+
+ Retrieve the notification settings for the governance control with the given detection type,
+ including, for each supported event type, whether notifications are enabled and which
+ destinations receive them.
+
+ :param detection_type: The detection type that identifies the control; for example, ``unused_api_keys``.
+ :type detection_type: str
+ :rtype: ControlNotificationSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_type"] = detection_type
+
+ return self._get_governance_control_notification_settings_endpoint.call_with_http_info(**kwargs)
+
+ def get_governance_detection(self, detection_id: str, ) -> GovernanceControlDetectionResponse:
+ """Get a detection.
+
+ Retrieve a single governance detection by its unique identifier.
+
+ :param detection_id: The unique identifier of the detection.
+ :type detection_id: str
+ :rtype: GovernanceControlDetectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_id"] = detection_id
+
+ return self._get_governance_detection_endpoint.call_with_http_info(**kwargs)
+
+ def get_governance_notification_settings(self, ) -> GovernanceNotificationSettingsResponse:
+ """Get notification settings.
+
+ Retrieve the organization-wide governance notification settings, including whether users are
+ notified when detections are assigned to them.
+
+ :rtype: GovernanceNotificationSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_governance_notification_settings_endpoint.call_with_http_info(**kwargs)
+
+ def list_governance_control_detections(self, detection_type: str, *, filter_state: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> GovernanceControlDetectionsResponse:
+ """List control detections.
+
+ Retrieve the detections produced by the governance control with the given detection type.
+ Results can be filtered by state and free-text query, sorted, and paginated.
+
+ :param detection_type: The detection type that identifies the control; for example, ``unused_api_keys``.
+ :type detection_type: str
+ :param filter_state: Restrict the results to detections in the given state.
+ :type filter_state: str, optional
+ :param filter_query: Restrict the results to detections matching the given free-text query.
+ :type filter_query: str, optional
+ :param sort: A comma-separated list of attributes to sort detections by. Prefix an attribute with
+ ``-`` for descending order.
+
+ The attributes available for sorting are ``id`` , ``created_at`` , ``assigned_to`` ,
+ ``detection_type`` , ``display_name`` , ``exception_at`` , ``mitigate_after`` , ``mitigated_at`` ,
+ ``priority`` , ``resource_id`` , and ``state``. Defaults to ``created_at,-id``.
+ :type sort: str, optional
+ :param page_number: The zero-based index of the page to return; the first page is 0.
+ :type page_number: int, optional
+ :param page_size: The number of detections to return per page.
+ :type page_size: int, optional
+ :rtype: GovernanceControlDetectionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_type"] = detection_type
+
+ if filter_state is not unset:
+ kwargs["filter_state"] = filter_state
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._list_governance_control_detections_endpoint.call_with_http_info(**kwargs)
+
+ def list_governance_controls(self, ) -> GovernanceControlsResponse:
+ """List controls.
+
+ Retrieve the list of governance controls configured for the organization. Each control pairs a
+ detection definition with the organization's current detection, notification, and mitigation
+ configuration, along with counts of active and mitigated detections.
+
+ :rtype: GovernanceControlsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_governance_controls_endpoint.call_with_http_info(**kwargs)
+
+ def list_governance_insights(self, *, filter_product: Union[List[str], UnsetType]=unset, ) -> GovernanceInsightsResponse:
+ """List insights.
+
+ Retrieve the list of governance insights available to the organization. Each insight
+ reports the query used to compute it, so that the value can be computed client-side.
+ Insights can be filtered by product.
+
+ :param filter_product: Restrict the results to insights belonging to the given products. May be repeated to
+ filter by multiple products. Matching is case-insensitive.
+ :type filter_product: [str], optional
+ :rtype: GovernanceInsightsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_product is not unset:
+ kwargs["filter_product"] = filter_product
+
+ return self._list_governance_insights_endpoint.call_with_http_info(**kwargs)
+
+ def mitigate_governance_detections(self, body: GovernanceMitigationRequest, ) -> None:
+ """Mitigate detections.
+
+ Apply a mitigation to a set of governance detections of a given detection type. When the
+ mitigation type is omitted, the control's configured mitigation is used. The request is
+ accepted for asynchronous processing.
+
+ :type body: GovernanceMitigationRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._mitigate_governance_detections_endpoint.call_with_http_info(**kwargs)
+
+ def update_governance_control(self, detection_type: str, body: GovernanceControlUpdateRequest, ) -> GovernanceControlResponse:
+ """Update a control.
+
+ Update the detection, notification, and mitigation configuration of a governance control. Only
+ the attributes present in the request are modified. Changing the mitigation type or its
+ parameters may require additional permissions.
+
+ :param detection_type: The detection type that identifies the control, for example ``unused_api_keys``.
+ :type detection_type: str
+ :type body: GovernanceControlUpdateRequest
+ :rtype: GovernanceControlResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_type"] = detection_type
+
+ kwargs["body"] = body
+
+ return self._update_governance_control_endpoint.call_with_http_info(**kwargs)
+
+ def update_governance_control_notification_settings(self, detection_type: str, body: ControlNotificationSettingsUpdateRequest, ) -> ControlNotificationSettingsResponse:
+ """Update control notification settings.
+
+ Replace the notification settings for the governance control with the given detection type,
+ setting, for each supported event type, whether notifications are enabled and which
+ destinations receive them.
+
+ :param detection_type: The detection type that identifies the control; for example, ``unused_api_keys``.
+ :type detection_type: str
+ :type body: ControlNotificationSettingsUpdateRequest
+ :rtype: ControlNotificationSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_type"] = detection_type
+
+ kwargs["body"] = body
+
+ return self._update_governance_control_notification_settings_endpoint.call_with_http_info(**kwargs)
+
+ def update_governance_detection(self, detection_id: str, body: GovernanceControlDetectionUpdateRequest, ) -> GovernanceControlDetectionResponse:
+ """Update a detection.
+
+ Update a governance detection by its unique identifier. Only the attributes present in the
+ request are modified, allowing a detection to be acknowledged as an exception, reopened,
+ reassigned, or deferred for mitigation.
+
+ :param detection_id: The unique identifier of the detection.
+ :type detection_id: str
+ :type body: GovernanceControlDetectionUpdateRequest
+ :rtype: GovernanceControlDetectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["detection_id"] = detection_id
+
+ kwargs["body"] = body
+
+ return self._update_governance_detection_endpoint.call_with_http_info(**kwargs)
+
+ def update_governance_notification_settings(self, body: GovernanceNotificationSettingsUpdateRequest, ) -> GovernanceNotificationSettingsResponse:
+ """Update notification settings.
+
+ Update the organization-wide governance notification settings. Only the attributes present in
+ the request are modified.
+
+ :type body: GovernanceNotificationSettingsUpdateRequest
+ :rtype: GovernanceNotificationSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_governance_notification_settings_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/high_availability_multi_region_api.py b/datadog_api_client/v2/api/high_availability_multi_region_api.py
new file mode 100644
index 0000000000..7382f0082f
--- /dev/null
+++ b/datadog_api_client/v2/api/high_availability_multi_region_api.py
@@ -0,0 +1,103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.hamr_org_connection_response import HamrOrgConnectionResponse
+from datadog_api_client.v2.model.hamr_org_connection_request import HamrOrgConnectionRequest
+
+
+class HighAvailabilityMultiRegionApi:
+ """
+ Configure High Availability Multi-Region (HAMR) connections between Datadog organizations.
+ HAMR provides disaster recovery capabilities by maintaining synchronized data between primary
+ and secondary organizations across different datacenters.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_hamr_org_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": (HamrOrgConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/hamr",
+ "operation_id": "create_hamr_org_connection",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (HamrOrgConnectionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_hamr_org_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": (HamrOrgConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/hamr",
+ "operation_id": "get_hamr_org_connection",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_hamr_org_connection(self, body: HamrOrgConnectionRequest, ) -> HamrOrgConnectionResponse:
+ """Create or update HAMR organization connection.
+
+ Create or update the High Availability Multi-Region (HAMR) organization connection.
+ This endpoint allows you to configure the HAMR connection between the authenticated organization
+ and a target organization, including setting the connection status (ONBOARDING, PASSIVE, FAILOVER, ACTIVE, RECOVERY)
+
+ :type body: HamrOrgConnectionRequest
+ :rtype: HamrOrgConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_hamr_org_connection_endpoint.call_with_http_info(**kwargs)
+
+ def get_hamr_org_connection(self, ) -> HamrOrgConnectionResponse:
+ """Get HAMR organization connection.
+
+ Retrieve the High Availability Multi-Region (HAMR) organization connection details for the authenticated organization.
+ This endpoint returns information about the HAMR connection configuration, including the target organization,
+ datacenter, status, and whether this is the primary or secondary organization in the HAMR relationship.
+
+ :rtype: HamrOrgConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_hamr_org_connection_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/identity_providers_api.py b/datadog_api_client/v2/api/identity_providers_api.py
new file mode 100644
index 0000000000..aaab48d157
--- /dev/null
+++ b/datadog_api_client/v2/api/identity_providers_api.py
@@ -0,0 +1,270 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.identity_providers_response import IdentityProvidersResponse
+from datadog_api_client.v2.model.identity_provider_response import IdentityProviderResponse
+from datadog_api_client.v2.model.identity_provider_update_request import IdentityProviderUpdateRequest
+from datadog_api_client.v2.model.users_response import UsersResponse
+from datadog_api_client.v2.model.query_sort_order import QuerySortOrder
+from datadog_api_client.v2.model.user import User
+
+
+class IdentityProvidersApi:
+ """
+ Manage identity providers and user authentication method overrides.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_identity_providers_endpoint = _Endpoint(
+ settings={
+ "response_type": (IdentityProvidersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/identity_providers",
+ "operation_id": "list_identity_providers",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_identity_provider_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/identity_providers/{idp_id}/users",
+ "operation_id": "list_identity_provider_users",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "idp_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "idp_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "sort_dir": {
+ "openapi_types": (QuerySortOrder,),
+ "attribute": "sort_dir",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (str,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_identity_provider_endpoint = _Endpoint(
+ settings={
+ "response_type": (IdentityProviderResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/identity_providers/{idp_id}",
+ "operation_id": "update_identity_provider",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "idp_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "idp_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IdentityProviderUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def list_identity_providers(self, ) -> IdentityProvidersResponse:
+ """List identity providers.
+
+ Get all identity providers available for the current organization.
+
+ :rtype: IdentityProvidersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_identity_providers_endpoint.call_with_http_info(**kwargs)
+
+ def list_identity_provider_users(self, idp_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, sort_dir: Union[QuerySortOrder, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_status: Union[str, UnsetType]=unset, ) -> UsersResponse:
+ """List users with an identity provider override.
+
+ Get all users in the organization whose login method has been overridden
+ to use the specified identity provider.
+
+ :param idp_id: The ID of the identity provider.
+ :type idp_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: User attribute to order results by. Options include ``email`` and ``name``.
+ :type sort: str, optional
+ :param sort_dir: Direction of sort. Options: ``asc`` , ``desc``.
+ :type sort_dir: QuerySortOrder, optional
+ :param filter: Filter users by the given string. Defaults to no filtering.
+ :type filter: str, optional
+ :param filter_status: Filter on status attribute.
+ Comma-separated list, with possible values ``Active`` , ``Pending`` , and ``Disabled``.
+ Defaults to no filtering.
+ :type filter_status: str, optional
+ :rtype: UsersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["idp_id"] = idp_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ return self._list_identity_provider_users_endpoint.call_with_http_info(**kwargs)
+
+ def list_identity_provider_users_with_pagination(self, idp_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, sort_dir: Union[QuerySortOrder, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_status: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[User]:
+ """List users with an identity provider override.
+
+ Provide a paginated version of :meth:`list_identity_provider_users`, returning all items.
+
+ :param idp_id: The ID of the identity provider.
+ :type idp_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: User attribute to order results by. Options include ``email`` and ``name``.
+ :type sort: str, optional
+ :param sort_dir: Direction of sort. Options: ``asc`` , ``desc``.
+ :type sort_dir: QuerySortOrder, optional
+ :param filter: Filter users by the given string. Defaults to no filtering.
+ :type filter: str, optional
+ :param filter_status: Filter on status attribute.
+ Comma-separated list, with possible values ``Active`` , ``Pending`` , and ``Disabled``.
+ Defaults to no filtering.
+ :type filter_status: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[User]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["idp_id"] = idp_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if sort_dir is not unset:
+ kwargs["sort_dir"] = sort_dir
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_identity_provider_users_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_identity_provider(self, idp_id: str, body: IdentityProviderUpdateRequest, ) -> IdentityProviderResponse:
+ """Update an identity provider.
+
+ Enable or disable an identity provider for the current organization.
+
+ :param idp_id: The ID of the identity provider.
+ :type idp_id: str
+ :type body: IdentityProviderUpdateRequest
+ :rtype: IdentityProviderResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["idp_id"] = idp_id
+
+ kwargs["body"] = body
+
+ return self._update_identity_provider_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/incidents_api.py b/datadog_api_client/v2/api/incidents_api.py
new file mode 100644
index 0000000000..306e8eb148
--- /dev/null
+++ b/datadog_api_client/v2/api/incidents_api.py
@@ -0,0 +1,4444 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.incidents_response import IncidentsResponse
+from datadog_api_client.v2.model.incident_related_object import IncidentRelatedObject
+from datadog_api_client.v2.model.incident_response_data import IncidentResponseData
+from datadog_api_client.v2.model.incident_response import IncidentResponse
+from datadog_api_client.v2.model.incident_create_request import IncidentCreateRequest
+from datadog_api_client.v2.model.incident_handles_response import IncidentHandlesResponse
+from datadog_api_client.v2.model.incident_handle_response import IncidentHandleResponse
+from datadog_api_client.v2.model.incident_handle_request import IncidentHandleRequest
+from datadog_api_client.v2.model.global_incident_settings_response import GlobalIncidentSettingsResponse
+from datadog_api_client.v2.model.global_incident_settings_request import GlobalIncidentSettingsRequest
+from datadog_api_client.v2.model.incident_google_chat_configuration_response import IncidentGoogleChatConfigurationResponse
+from datadog_api_client.v2.model.incident_google_chat_configuration_request import IncidentGoogleChatConfigurationRequest
+from datadog_api_client.v2.model.incident_google_chat_configuration_patch_request import IncidentGoogleChatConfigurationPatchRequest
+from datadog_api_client.v2.model.incident_google_meet_configuration_response import IncidentGoogleMeetConfigurationResponse
+from datadog_api_client.v2.model.incident_google_meet_configuration_request import IncidentGoogleMeetConfigurationRequest
+from datadog_api_client.v2.model.incident_google_meet_configuration_patch_request import IncidentGoogleMeetConfigurationPatchRequest
+from datadog_api_client.v2.model.incident_impact_fields_response import IncidentImpactFieldsResponse
+from datadog_api_client.v2.model.incident_impact_field_response import IncidentImpactFieldResponse
+from datadog_api_client.v2.model.incident_impact_field_request import IncidentImpactFieldRequest
+from datadog_api_client.v2.model.incident_notification_rule_array import IncidentNotificationRuleArray
+from datadog_api_client.v2.model.incident_notification_rule import IncidentNotificationRule
+from datadog_api_client.v2.model.create_incident_notification_rule_request import CreateIncidentNotificationRuleRequest
+from datadog_api_client.v2.model.put_incident_notification_rule_request import PutIncidentNotificationRuleRequest
+from datadog_api_client.v2.model.incident_notification_template_array import IncidentNotificationTemplateArray
+from datadog_api_client.v2.model.incident_notification_template import IncidentNotificationTemplate
+from datadog_api_client.v2.model.create_incident_notification_template_request import CreateIncidentNotificationTemplateRequest
+from datadog_api_client.v2.model.patch_incident_notification_template_request import PatchIncidentNotificationTemplateRequest
+from datadog_api_client.v2.model.postmortem_templates_response import PostmortemTemplatesResponse
+from datadog_api_client.v2.model.postmortem_template_response import PostmortemTemplateResponse
+from datadog_api_client.v2.model.postmortem_template_request import PostmortemTemplateRequest
+from datadog_api_client.v2.model.incident_rules_response import IncidentRulesResponse
+from datadog_api_client.v2.model.incident_rule_response import IncidentRuleResponse
+from datadog_api_client.v2.model.incident_rule_request import IncidentRuleRequest
+from datadog_api_client.v2.model.incident_rule_patch_request import IncidentRulePatchRequest
+from datadog_api_client.v2.model.incident_type_list_response import IncidentTypeListResponse
+from datadog_api_client.v2.model.incident_type_response import IncidentTypeResponse
+from datadog_api_client.v2.model.incident_type_create_request import IncidentTypeCreateRequest
+from datadog_api_client.v2.model.incident_org_settings_list_response import IncidentOrgSettingsListResponse
+from datadog_api_client.v2.model.incident_type_patch_request import IncidentTypePatchRequest
+from datadog_api_client.v2.model.incident_org_settings_response import IncidentOrgSettingsResponse
+from datadog_api_client.v2.model.incident_user_defined_field_list_response import IncidentUserDefinedFieldListResponse
+from datadog_api_client.v2.model.incident_user_defined_field_response import IncidentUserDefinedFieldResponse
+from datadog_api_client.v2.model.incident_user_defined_field_create_request import IncidentUserDefinedFieldCreateRequest
+from datadog_api_client.v2.model.incident_user_defined_field_update_request import IncidentUserDefinedFieldUpdateRequest
+from datadog_api_client.v2.model.incident_user_defined_roles_response import IncidentUserDefinedRolesResponse
+from datadog_api_client.v2.model.incident_user_defined_role_response import IncidentUserDefinedRoleResponse
+from datadog_api_client.v2.model.incident_user_defined_role_request import IncidentUserDefinedRoleRequest
+from datadog_api_client.v2.model.incident_user_defined_role_patch_request import IncidentUserDefinedRolePatchRequest
+from datadog_api_client.v2.model.incident_import_response import IncidentImportResponse
+from datadog_api_client.v2.model.incident_import_related_object import IncidentImportRelatedObject
+from datadog_api_client.v2.model.incident_import_request import IncidentImportRequest
+from datadog_api_client.v2.model.incident_search_response import IncidentSearchResponse
+from datadog_api_client.v2.model.incident_search_sort_order import IncidentSearchSortOrder
+from datadog_api_client.v2.model.incident_search_response_incidents_data import IncidentSearchResponseIncidentsData
+from datadog_api_client.v2.model.incident_update_request import IncidentUpdateRequest
+from datadog_api_client.v2.model.incident_ai_postmortem_response import IncidentAIPostmortemResponse
+from datadog_api_client.v2.model.attachment_array import AttachmentArray
+from datadog_api_client.v2.model.attachment import Attachment
+from datadog_api_client.v2.model.create_attachment_request import CreateAttachmentRequest
+from datadog_api_client.v2.model.postmortem_attachment_request import PostmortemAttachmentRequest
+from datadog_api_client.v2.model.patch_attachment_request import PatchAttachmentRequest
+from datadog_api_client.v2.model.incident_page_uuid_response import IncidentPageUUIDResponse
+from datadog_api_client.v2.model.incident_create_page_from_incident_request import IncidentCreatePageFromIncidentRequest
+from datadog_api_client.v2.model.incident_configuration_response import IncidentConfigurationResponse
+from datadog_api_client.v2.model.incident_configuration_patch_request import IncidentConfigurationPatchRequest
+from datadog_api_client.v2.model.incident_configuration_request import IncidentConfigurationRequest
+from datadog_api_client.v2.model.incident_impacts_response import IncidentImpactsResponse
+from datadog_api_client.v2.model.incident_impact_related_object import IncidentImpactRelatedObject
+from datadog_api_client.v2.model.incident_impact_response import IncidentImpactResponse
+from datadog_api_client.v2.model.incident_impact_create_request import IncidentImpactCreateRequest
+from datadog_api_client.v2.model.incident_impact_patch_request import IncidentImpactPatchRequest
+from datadog_api_client.v2.model.incident_create_on_call_page_request import IncidentCreateOnCallPageRequest
+from datadog_api_client.v2.model.incident_integration_metadata_response import IncidentIntegrationMetadataResponse
+from datadog_api_client.v2.model.incident_on_call_page_link_request import IncidentOnCallPageLinkRequest
+from datadog_api_client.v2.model.incident_integration_metadata_list_response import IncidentIntegrationMetadataListResponse
+from datadog_api_client.v2.model.incident_integration_metadata_create_request import IncidentIntegrationMetadataCreateRequest
+from datadog_api_client.v2.model.incident_integration_metadata_patch_request import IncidentIntegrationMetadataPatchRequest
+from datadog_api_client.v2.model.incident_todo_list_response import IncidentTodoListResponse
+from datadog_api_client.v2.model.incident_todo_response import IncidentTodoResponse
+from datadog_api_client.v2.model.incident_todo_create_request import IncidentTodoCreateRequest
+from datadog_api_client.v2.model.incident_todo_patch_request import IncidentTodoPatchRequest
+from datadog_api_client.v2.model.incident_responders_response import IncidentRespondersResponse
+from datadog_api_client.v2.model.incident_responder_response import IncidentResponderResponse
+from datadog_api_client.v2.model.incident_responder_request import IncidentResponderRequest
+from datadog_api_client.v2.model.incident_service_now_record_request import IncidentServiceNowRecordRequest
+from datadog_api_client.v2.model.incident_timestamp_overrides_response import IncidentTimestampOverridesResponse
+from datadog_api_client.v2.model.incident_timestamp_override_response import IncidentTimestampOverrideResponse
+from datadog_api_client.v2.model.incident_timestamp_override_request import IncidentTimestampOverrideRequest
+from datadog_api_client.v2.model.incident_timestamp_override_patch_request import IncidentTimestampOverridePatchRequest
+
+
+class IncidentsApi:
+ """
+ Manage incident response, as well as associated attachments, metadata, and todos. See the `Incident Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_global_incident_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/global/incident-handles",
+ "operation_id": "create_global_incident_handle",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents",
+ "operation_id": "create_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_attachment_endpoint = _Endpoint(
+ settings={
+ "response_type": (Attachment,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/attachments",
+ "operation_id": "create_incident_attachment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateAttachmentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/configurations",
+ "operation_id": "create_incident_configuration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentConfigurationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_google_chat_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentGoogleChatConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/google-chat-configurations",
+ "operation_id": "create_incident_google_chat_configuration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentGoogleChatConfigurationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_google_meet_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentGoogleMeetConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/google-meet-configurations",
+ "operation_id": "create_incident_google_meet_configuration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentGoogleMeetConfigurationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_impact_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImpactResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/impacts",
+ "operation_id": "create_incident_impact",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": ([IncidentImpactRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentImpactCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_impact_field_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImpactFieldResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/impact-fields",
+ "operation_id": "create_incident_impact_field",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentImpactFieldRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentIntegrationMetadataResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/integrations",
+ "operation_id": "create_incident_integration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentIntegrationMetadataCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationRule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-rules",
+ "operation_id": "create_incident_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateIncidentNotificationRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_notification_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-templates",
+ "operation_id": "create_incident_notification_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateIncidentNotificationTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_postmortem_attachment_endpoint = _Endpoint(
+ settings={
+ "response_type": (Attachment,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/attachments/postmortems",
+ "operation_id": "create_incident_postmortem_attachment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PostmortemAttachmentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_postmortem_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (PostmortemTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/postmortem-templates",
+ "operation_id": "create_incident_postmortem_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (PostmortemTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_responder_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentResponderResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/responders",
+ "operation_id": "create_incident_responder",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentResponderRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/rules",
+ "operation_id": "create_incident_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_service_now_record_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentIntegrationMetadataResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/servicenow-records",
+ "operation_id": "create_incident_service_now_record",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentServiceNowRecordRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_todo_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTodoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/todos",
+ "operation_id": "create_incident_todo",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentTodoCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTypeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types",
+ "operation_id": "create_incident_type",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentTypeCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_user_defined_field_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedFieldResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-fields",
+ "operation_id": "create_incident_user_defined_field",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentUserDefinedFieldCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_incident_user_defined_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedRoleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-roles",
+ "operation_id": "create_incident_user_defined_role",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentUserDefinedRoleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_on_call_page_from_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentPageUUIDResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/page",
+ "operation_id": "create_on_call_page_from_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentCreateOnCallPageRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_page_from_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentPageUUIDResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/cases/page",
+ "operation_id": "create_page_from_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentCreatePageFromIncidentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_timestamp_override_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTimestampOverrideResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/timestamp-overrides",
+ "operation_id": "create_timestamp_override",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentTimestampOverrideRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_global_incident_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/global/incident-handles",
+ "operation_id": "delete_global_incident_handle",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}",
+ "operation_id": "delete_incident",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_attachment_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/attachments/{attachment_id}",
+ "operation_id": "delete_incident_attachment",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "attachment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "attachment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_impact_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/impacts/{impact_id}",
+ "operation_id": "delete_incident_impact",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "impact_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "impact_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_impact_field_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/impact-fields/{field_id}",
+ "operation_id": "delete_incident_impact_field",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "field_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "field_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}",
+ "operation_id": "delete_incident_integration",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "integration_metadata_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_metadata_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-rules/{id}",
+ "operation_id": "delete_incident_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_notification_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-templates/{id}",
+ "operation_id": "delete_incident_notification_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_postmortem_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/postmortem-templates/{template_id}",
+ "operation_id": "delete_incident_postmortem_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_responder_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/responders/{responder_id}",
+ "operation_id": "delete_incident_responder",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "responder_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "responder_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/rules/{rule_id}",
+ "operation_id": "delete_incident_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_todo_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}",
+ "operation_id": "delete_incident_todo",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "todo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "todo_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_type_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types/{incident_type_id}",
+ "operation_id": "delete_incident_type",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_type_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_user_defined_field_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-fields/{field_id}",
+ "operation_id": "delete_incident_user_defined_field",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "field_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "field_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_user_defined_role_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-roles/{role_id}",
+ "operation_id": "delete_incident_user_defined_role",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_timestamp_override_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/timestamp-overrides/{id}",
+ "operation_id": "delete_timestamp_override",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_global_incident_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (GlobalIncidentSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/global/settings",
+ "operation_id": "get_global_incident_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}",
+ "operation_id": "get_incident",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": ([IncidentRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_ai_postmortem_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentAIPostmortemResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/ai/postmortem",
+ "operation_id": "get_incident_ai_postmortem",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentIntegrationMetadataResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}",
+ "operation_id": "get_incident_integration",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "integration_metadata_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_metadata_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationRule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-rules/{id}",
+ "operation_id": "get_incident_notification_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_notification_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-templates/{id}",
+ "operation_id": "get_incident_notification_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_postmortem_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (PostmortemTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/postmortem-templates/{template_id}",
+ "operation_id": "get_incident_postmortem_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_responder_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentResponderResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/responders/{responder_id}",
+ "operation_id": "get_incident_responder",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "responder_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "responder_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/rules/{rule_id}",
+ "operation_id": "get_incident_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_todo_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTodoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}",
+ "operation_id": "get_incident_todo",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "todo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "todo_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTypeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types/{incident_type_id}",
+ "operation_id": "get_incident_type",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_type_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_user_defined_field_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedFieldResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-fields/{field_id}",
+ "operation_id": "get_incident_user_defined_field",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "field_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "field_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_user_defined_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedRoleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-roles/{role_id}",
+ "operation_id": "get_incident_user_defined_role",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_settings_by_incident_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentOrgSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types/{incident_type_id}/org-settings",
+ "operation_id": "get_org_settings_by_incident_type",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_type_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "incident_type_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._import_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImportResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/import",
+ "operation_id": "import_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": ([IncidentImportRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentImportRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._link_page_to_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentIntegrationMetadataResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/pages/link",
+ "operation_id": "link_page_to_incident",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentOnCallPageLinkRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_global_incident_handles_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentHandlesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/global/incident-handles",
+ "operation_id": "list_global_incident_handles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_attachments_endpoint = _Endpoint(
+ settings={
+ "response_type": (AttachmentArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/attachments",
+ "operation_id": "list_incident_attachments",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "filter_attachment_type": {
+ "openapi_types": (str,),
+ "attribute": "filter[attachment_type]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_impact_fields_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImpactFieldsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/impact-fields",
+ "operation_id": "list_incident_impact_fields",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_impacts_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImpactsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/impacts",
+ "operation_id": "list_incident_impacts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": ([IncidentImpactRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_integrations_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentIntegrationMetadataListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/integrations",
+ "operation_id": "list_incident_integrations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationRuleArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-rules",
+ "operation_id": "list_incident_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_notification_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationTemplateArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-templates",
+ "operation_id": "list_incident_notification_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_incident_type": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[incident-type]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_postmortem_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (PostmortemTemplatesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/postmortem-templates",
+ "operation_id": "list_incident_postmortem_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_incident_type": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[incident-type]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_responders_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentRespondersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/responders",
+ "operation_id": "list_incident_responders",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/rules",
+ "operation_id": "list_incident_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_task_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[task_id]",
+ "location": "query",
+ },
+ "filter_trigger": {
+ "openapi_types": (str,),
+ "attribute": "filter[trigger]",
+ "location": "query",
+ },
+ "incident_type_uuid": {
+ "openapi_types": (UUID,),
+ "attribute": "incidentTypeUUID",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incidents_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents",
+ "operation_id": "list_incidents",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": ([IncidentRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_todos_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTodoListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/todos",
+ "operation_id": "list_incident_todos",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_types_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTypeListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types",
+ "operation_id": "list_incident_types",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include_deleted": {
+ "openapi_types": (bool,),
+ "attribute": "include_deleted",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_user_defined_fields_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedFieldListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-fields",
+ "operation_id": "list_incident_user_defined_fields",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "include_deleted": {
+ "openapi_types": (bool,),
+ "attribute": "include-deleted",
+ "location": "query",
+ },
+ "filter_incident_type": {
+ "openapi_types": (str,),
+ "attribute": "filter[incident-type]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_incident_user_defined_roles_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedRolesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-roles",
+ "operation_id": "list_incident_user_defined_roles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_incident_type": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[incident-type]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentOrgSettingsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types/org-settings",
+ "operation_id": "list_org_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "include_deleted": {
+ "openapi_types": (bool,),
+ "attribute": "include-deleted",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_timestamp_overrides_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTimestampOverridesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/timestamp-overrides",
+ "operation_id": "list_timestamp_overrides",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._patch_incident_impact_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImpactResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/impacts/{impact_id}",
+ "operation_id": "patch_incident_impact",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "impact_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "impact_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": ([IncidentImpactRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentImpactPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_incidents_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/search",
+ "operation_id": "search_incidents",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (IncidentRelatedObject,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "query": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (IncidentSearchSortOrder,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_global_incident_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/global/incident-handles",
+ "operation_id": "update_global_incident_handle",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_global_incident_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (GlobalIncidentSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/global/settings",
+ "operation_id": "update_global_incident_settings",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GlobalIncidentSettingsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}",
+ "operation_id": "update_incident",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": ([IncidentRelatedObject],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_attachment_endpoint = _Endpoint(
+ settings={
+ "response_type": (Attachment,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/attachments/{attachment_id}",
+ "operation_id": "update_incident_attachment",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "attachment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "attachment_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchAttachmentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/configurations",
+ "operation_id": "update_incident_configuration",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentConfigurationPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_google_chat_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentGoogleChatConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/google-chat-configurations/{id}",
+ "operation_id": "update_incident_google_chat_configuration",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentGoogleChatConfigurationPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_google_meet_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentGoogleMeetConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/google-meet-configurations/{id}",
+ "operation_id": "update_incident_google_meet_configuration",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentGoogleMeetConfigurationPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_impact_field_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentImpactFieldResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/impact-fields/{field_id}",
+ "operation_id": "update_incident_impact_field",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "field_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "field_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentImpactFieldRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentIntegrationMetadataResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}",
+ "operation_id": "update_incident_integration",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "integration_metadata_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_metadata_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentIntegrationMetadataPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationRule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-rules/{id}",
+ "operation_id": "update_incident_notification_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PutIncidentNotificationRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_notification_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentNotificationTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/notification-templates/{id}",
+ "operation_id": "update_incident_notification_template",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchIncidentNotificationTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_postmortem_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (PostmortemTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/incidents/config/postmortem-templates/{template_id}",
+ "operation_id": "update_incident_postmortem_template",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PostmortemTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/rules/{rule_id}",
+ "operation_id": "update_incident_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentRulePatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_todo_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTodoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}",
+ "operation_id": "update_incident_todo",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "todo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "todo_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentTodoPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_type_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTypeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/types/{incident_type_id}",
+ "operation_id": "update_incident_type",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_type_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_type_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentTypePatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_user_defined_field_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedFieldResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-fields/{field_id}",
+ "operation_id": "update_incident_user_defined_field",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "field_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "field_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentUserDefinedFieldUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_user_defined_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentUserDefinedRoleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/config/user-defined-roles/{role_id}",
+ "operation_id": "update_incident_user_defined_role",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentUserDefinedRolePatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_timestamp_override_endpoint = _Endpoint(
+ settings={
+ "response_type": (IncidentTimestampOverrideResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/incidents/{incident_id}/timestamp-overrides/{id}",
+ "operation_id": "update_timestamp_override",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_id",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (IncidentTimestampOverridePatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_global_incident_handle(self, body: IncidentHandleRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentHandleResponse:
+ """Create global incident handle.
+
+ Create a new global incident handle.
+
+ :type body: IncidentHandleRequest
+ :param include: Comma-separated list of related resources to include in the response
+ :type include: str, optional
+ :rtype: IncidentHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_global_incident_handle_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident(self, body: IncidentCreateRequest, ) -> IncidentResponse:
+ """Create an incident.
+
+ Create an incident.
+
+ :param body: Incident payload.
+ :type body: IncidentCreateRequest
+ :rtype: IncidentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_attachment(self, incident_id: str, body: CreateAttachmentRequest, *, include: Union[str, UnsetType]=unset, ) -> Attachment:
+ """Create incident attachment.
+
+ Create an incident attachment.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :type body: CreateAttachmentRequest
+ :param include: Resource to include in the response. Supported value: ``last_modified_by_user``.
+ :type include: str, optional
+ :rtype: Attachment
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_incident_attachment_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_configuration(self, incident_id: str, body: IncidentConfigurationRequest, ) -> IncidentConfigurationResponse:
+ """Create an incident configuration.
+
+ Create a configuration for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident configuration payload.
+ :type body: IncidentConfigurationRequest
+ :rtype: IncidentConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_incident_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_google_chat_configuration(self, body: IncidentGoogleChatConfigurationRequest, ) -> IncidentGoogleChatConfigurationResponse:
+ """Create an incident Google Chat configuration.
+
+ Create a Google Chat configuration for incidents.
+
+ :param body: Google Chat configuration payload.
+ :type body: IncidentGoogleChatConfigurationRequest
+ :rtype: IncidentGoogleChatConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_google_chat_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_google_meet_configuration(self, body: IncidentGoogleMeetConfigurationRequest, ) -> IncidentGoogleMeetConfigurationResponse:
+ """Create an incident Google Meet configuration.
+
+ Create a Google Meet configuration for incidents.
+
+ :param body: Google Meet configuration payload.
+ :type body: IncidentGoogleMeetConfigurationRequest
+ :rtype: IncidentGoogleMeetConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_google_meet_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_impact(self, incident_id: str, body: IncidentImpactCreateRequest, *, include: Union[List[IncidentImpactRelatedObject], UnsetType]=unset, ) -> IncidentImpactResponse:
+ """Create an incident impact.
+
+ Create an impact for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident impact payload.
+ :type body: IncidentImpactCreateRequest
+ :param include: Specifies which related resources should be included in the response.
+ :type include: [IncidentImpactRelatedObject], optional
+ :rtype: IncidentImpactResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_incident_impact_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_impact_field(self, body: IncidentImpactFieldRequest, ) -> IncidentImpactFieldResponse:
+ """Create an incident impact field.
+
+ Create an impact field for incidents.
+
+ :param body: Impact field payload.
+ :type body: IncidentImpactFieldRequest
+ :rtype: IncidentImpactFieldResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_impact_field_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_integration(self, incident_id: str, body: IncidentIntegrationMetadataCreateRequest, ) -> IncidentIntegrationMetadataResponse:
+ """Create an incident integration metadata.
+
+ Create an incident integration metadata.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident integration metadata payload.
+ :type body: IncidentIntegrationMetadataCreateRequest
+ :rtype: IncidentIntegrationMetadataResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_incident_integration_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_notification_rule(self, body: CreateIncidentNotificationRuleRequest, ) -> IncidentNotificationRule:
+ """Create an incident notification rule.
+
+ Creates a new notification rule.
+
+ :type body: CreateIncidentNotificationRuleRequest
+ :rtype: IncidentNotificationRule
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_notification_template(self, body: CreateIncidentNotificationTemplateRequest, ) -> IncidentNotificationTemplate:
+ """Create incident notification template.
+
+ Creates a new notification template.
+
+ :type body: CreateIncidentNotificationTemplateRequest
+ :rtype: IncidentNotificationTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_notification_template_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_postmortem_attachment(self, incident_id: str, body: PostmortemAttachmentRequest, ) -> Attachment:
+ """Create postmortem attachment.
+
+ Create a postmortem attachment for an incident.
+
+ The endpoint accepts markdown for notebooks created in Confluence or Google Docs.
+ Postmortems created from notebooks need to be formatted using frontend notebook cells,
+ in addition to markdown format.
+
+ :param incident_id: The ID of the incident
+ :type incident_id: str
+ :type body: PostmortemAttachmentRequest
+ :rtype: Attachment
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_incident_postmortem_attachment_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_postmortem_template(self, body: PostmortemTemplateRequest, ) -> PostmortemTemplateResponse:
+ """Create postmortem template.
+
+ Create a new postmortem template for incidents.
+
+ :type body: PostmortemTemplateRequest
+ :rtype: PostmortemTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_postmortem_template_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_responder(self, incident_id: str, body: IncidentResponderRequest, ) -> IncidentResponderResponse:
+ """Create an incident responder.
+
+ Add a responder to an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident responder payload.
+ :type body: IncidentResponderRequest
+ :rtype: IncidentResponderResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_incident_responder_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_rule(self, body: IncidentRuleRequest, ) -> IncidentRuleResponse:
+ """Create an incident rule.
+
+ Create an incident rule.
+
+ :param body: Incident rule payload.
+ :type body: IncidentRuleRequest
+ :rtype: IncidentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_service_now_record(self, incident_id: str, body: IncidentServiceNowRecordRequest, ) -> IncidentIntegrationMetadataResponse:
+ """Create an incident ServiceNow record.
+
+ Create a ServiceNow record for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: ServiceNow record payload.
+ :type body: IncidentServiceNowRecordRequest
+ :rtype: IncidentIntegrationMetadataResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_incident_service_now_record_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_todo(self, incident_id: str, body: IncidentTodoCreateRequest, ) -> IncidentTodoResponse:
+ """Create an incident todo.
+
+ Create an incident todo.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident todo payload.
+ :type body: IncidentTodoCreateRequest
+ :rtype: IncidentTodoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_incident_todo_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_type(self, body: IncidentTypeCreateRequest, ) -> IncidentTypeResponse:
+ """Create an incident type.
+
+ Create an incident type.
+
+ :param body: Incident type payload.
+ :type body: IncidentTypeCreateRequest
+ :rtype: IncidentTypeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_type_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_user_defined_field(self, body: IncidentUserDefinedFieldCreateRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedFieldResponse:
+ """Create an incident user-defined field.
+
+ Create an incident user-defined field.
+
+ :param body: Incident user-defined field payload.
+ :type body: IncidentUserDefinedFieldCreateRequest
+ :param include: Comma-separated list of related resources to include. Supported values are "last_modified_by_user", "created_by_user", and "incident_type".
+ :type include: str, optional
+ :rtype: IncidentUserDefinedFieldResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_incident_user_defined_field_endpoint.call_with_http_info(**kwargs)
+
+ def create_incident_user_defined_role(self, body: IncidentUserDefinedRoleRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedRoleResponse:
+ """Create an incident user-defined role.
+
+ Create a new user-defined role for incidents.
+
+ :type body: IncidentUserDefinedRoleRequest
+ :param include: Comma-separated list of related resources to include in the response.
+ :type include: str, optional
+ :rtype: IncidentUserDefinedRoleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_incident_user_defined_role_endpoint.call_with_http_info(**kwargs)
+
+ def create_on_call_page_from_incident(self, incident_id: str, body: IncidentCreateOnCallPageRequest, ) -> IncidentPageUUIDResponse:
+ """Create an on-call page from an incident.
+
+ Create an on-call page directly from an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: On-call page creation payload.
+ :type body: IncidentCreateOnCallPageRequest
+ :rtype: IncidentPageUUIDResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_on_call_page_from_incident_endpoint.call_with_http_info(**kwargs)
+
+ def create_page_from_incident(self, incident_id: str, body: IncidentCreatePageFromIncidentRequest, ) -> IncidentPageUUIDResponse:
+ """Create a page from an incident.
+
+ Create a page from an incident using the Cases service.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Page creation payload.
+ :type body: IncidentCreatePageFromIncidentRequest
+ :rtype: IncidentPageUUIDResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_page_from_incident_endpoint.call_with_http_info(**kwargs)
+
+ def create_timestamp_override(self, incident_id: str, body: IncidentTimestampOverrideRequest, ) -> IncidentTimestampOverrideResponse:
+ """Create an incident timestamp override.
+
+ Create a timestamp override for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Timestamp override payload.
+ :type body: IncidentTimestampOverrideRequest
+ :rtype: IncidentTimestampOverrideResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._create_timestamp_override_endpoint.call_with_http_info(**kwargs)
+
+ def delete_global_incident_handle(self, ) -> None:
+ """Delete global incident handle.
+
+ Delete a global incident handle.
+
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._delete_global_incident_handle_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident(self, incident_id: str, ) -> None:
+ """Delete an existing incident.
+
+ Deletes an existing incident from the users organization.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ return self._delete_incident_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_attachment(self, incident_id: str, attachment_id: str, ) -> None:
+ """Delete incident attachment.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param attachment_id: The ID of the attachment.
+ :type attachment_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["attachment_id"] = attachment_id
+
+ return self._delete_incident_attachment_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_impact(self, incident_id: str, impact_id: str, ) -> None:
+ """Delete an incident impact.
+
+ Delete an incident impact.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param impact_id: The UUID of the incident impact.
+ :type impact_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["impact_id"] = impact_id
+
+ return self._delete_incident_impact_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_impact_field(self, field_id: UUID, ) -> None:
+ """Delete an incident impact field.
+
+ Delete an impact field for incidents.
+
+ :param field_id: The UUID of the impact field.
+ :type field_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["field_id"] = field_id
+
+ return self._delete_incident_impact_field_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_integration(self, incident_id: str, integration_metadata_id: str, ) -> None:
+ """Delete an incident integration metadata.
+
+ Delete an incident integration metadata.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param integration_metadata_id: The UUID of the incident integration metadata.
+ :type integration_metadata_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["integration_metadata_id"] = integration_metadata_id
+
+ return self._delete_incident_integration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_notification_rule(self, id: UUID, *, include: Union[str, UnsetType]=unset, ) -> None:
+ """Delete an incident notification rule.
+
+ Deletes a notification rule by its ID.
+
+ :param id: The ID of the notification rule.
+ :type id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type`` , ``notification_template``
+ :type include: str, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._delete_incident_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_notification_template(self, id: UUID, *, include: Union[str, UnsetType]=unset, ) -> None:
+ """Delete a notification template.
+
+ Deletes a notification template by its ID.
+
+ :param id: The ID of the notification template.
+ :type id: UUID
+ :param include: Comma-separated list of relationships to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type``
+ :type include: str, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._delete_incident_notification_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_postmortem_template(self, template_id: str, ) -> None:
+ """Delete postmortem template.
+
+ Delete a postmortem template.
+
+ :param template_id: The ID of the postmortem template.
+ :type template_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ return self._delete_incident_postmortem_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_responder(self, incident_id: str, responder_id: UUID, ) -> None:
+ """Delete an incident responder.
+
+ Remove a responder from an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param responder_id: The UUID of the incident responder.
+ :type responder_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["responder_id"] = responder_id
+
+ return self._delete_incident_responder_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_rule(self, rule_id: UUID, ) -> None:
+ """Delete an incident rule.
+
+ Delete an incident rule.
+
+ :param rule_id: The UUID of the incident rule.
+ :type rule_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_incident_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_todo(self, incident_id: str, todo_id: str, ) -> None:
+ """Delete an incident todo.
+
+ Delete an incident todo.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param todo_id: The UUID of the incident todo.
+ :type todo_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["todo_id"] = todo_id
+
+ return self._delete_incident_todo_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_type(self, incident_type_id: str, ) -> None:
+ """Delete an incident type.
+
+ Delete an incident type.
+
+ :param incident_type_id: The UUID of the incident type.
+ :type incident_type_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_type_id"] = incident_type_id
+
+ return self._delete_incident_type_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_user_defined_field(self, field_id: str, ) -> None:
+ """Delete an incident user-defined field.
+
+ Delete an incident user-defined field.
+
+ :param field_id: The ID of the incident user-defined field.
+ :type field_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["field_id"] = field_id
+
+ return self._delete_incident_user_defined_field_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_user_defined_role(self, role_id: UUID, ) -> None:
+ """Delete an incident user-defined role.
+
+ Delete an existing user-defined role for incidents.
+
+ :param role_id: The UUID of the incident user-defined role.
+ :type role_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ return self._delete_incident_user_defined_role_endpoint.call_with_http_info(**kwargs)
+
+ def delete_timestamp_override(self, incident_id: str, id: UUID, ) -> None:
+ """Delete an incident timestamp override.
+
+ Delete a timestamp override for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param id: The UUID of the timestamp override.
+ :type id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["id"] = id
+
+ return self._delete_timestamp_override_endpoint.call_with_http_info(**kwargs)
+
+ def get_global_incident_settings(self, ) -> GlobalIncidentSettingsResponse:
+ """Get global incident settings.
+
+ Retrieve global incident settings for the organization.
+
+ :rtype: GlobalIncidentSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_global_incident_settings_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident(self, incident_id: str, *, include: Union[List[IncidentRelatedObject], UnsetType]=unset, ) -> IncidentResponse:
+ """Get the details of an incident.
+
+ Get the details of an incident by ``incident_id``.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param include: Specifies which types of related objects should be included in the response.
+ :type include: [IncidentRelatedObject], optional
+ :rtype: IncidentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_incident_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_ai_postmortem(self, incident_id: str, ) -> IncidentAIPostmortemResponse:
+ """Get an AI-generated incident postmortem.
+
+ Generate an AI postmortem for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :rtype: IncidentAIPostmortemResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ return self._get_incident_ai_postmortem_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_integration(self, incident_id: str, integration_metadata_id: str, ) -> IncidentIntegrationMetadataResponse:
+ """Get incident integration metadata details.
+
+ Get incident integration metadata details.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param integration_metadata_id: The UUID of the incident integration metadata.
+ :type integration_metadata_id: str
+ :rtype: IncidentIntegrationMetadataResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["integration_metadata_id"] = integration_metadata_id
+
+ return self._get_incident_integration_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_notification_rule(self, id: UUID, *, include: Union[str, UnsetType]=unset, ) -> IncidentNotificationRule:
+ """Get an incident notification rule.
+
+ Retrieves a specific notification rule by its ID.
+
+ :param id: The ID of the notification rule.
+ :type id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type`` , ``notification_template``
+ :type include: str, optional
+ :rtype: IncidentNotificationRule
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_incident_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_notification_template(self, id: UUID, *, include: Union[str, UnsetType]=unset, ) -> IncidentNotificationTemplate:
+ """Get incident notification template.
+
+ Retrieves a specific notification template by its ID.
+
+ :param id: The ID of the notification template.
+ :type id: UUID
+ :param include: Comma-separated list of relationships to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type``
+ :type include: str, optional
+ :rtype: IncidentNotificationTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_incident_notification_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_postmortem_template(self, template_id: str, ) -> PostmortemTemplateResponse:
+ """Get postmortem template.
+
+ Retrieve details of a specific postmortem template.
+
+ :param template_id: The ID of the postmortem template.
+ :type template_id: str
+ :rtype: PostmortemTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ return self._get_incident_postmortem_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_responder(self, incident_id: str, responder_id: UUID, ) -> IncidentResponderResponse:
+ """Get an incident responder.
+
+ Get a single responder for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param responder_id: The UUID of the incident responder.
+ :type responder_id: UUID
+ :rtype: IncidentResponderResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["responder_id"] = responder_id
+
+ return self._get_incident_responder_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_rule(self, rule_id: UUID, ) -> IncidentRuleResponse:
+ """Get an incident rule.
+
+ Get a single incident rule by ID.
+
+ :param rule_id: The UUID of the incident rule.
+ :type rule_id: UUID
+ :rtype: IncidentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_incident_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_todo(self, incident_id: str, todo_id: str, ) -> IncidentTodoResponse:
+ """Get incident todo details.
+
+ Get incident todo details.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param todo_id: The UUID of the incident todo.
+ :type todo_id: str
+ :rtype: IncidentTodoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["todo_id"] = todo_id
+
+ return self._get_incident_todo_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_type(self, incident_type_id: str, ) -> IncidentTypeResponse:
+ """Get incident type details.
+
+ Get incident type details.
+
+ :param incident_type_id: The UUID of the incident type.
+ :type incident_type_id: str
+ :rtype: IncidentTypeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_type_id"] = incident_type_id
+
+ return self._get_incident_type_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_user_defined_field(self, field_id: str, *, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedFieldResponse:
+ """Get an incident user-defined field.
+
+ Get details of an incident user-defined field.
+
+ :param field_id: The ID of the incident user-defined field.
+ :type field_id: str
+ :param include: Comma-separated list of related resources to include. Supported values are "last_modified_by_user", "created_by_user", and "incident_type".
+ :type include: str, optional
+ :rtype: IncidentUserDefinedFieldResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["field_id"] = field_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_incident_user_defined_field_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_user_defined_role(self, role_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedRoleResponse:
+ """Get an incident user-defined role.
+
+ Retrieve a single user-defined role for incidents.
+
+ :param role_id: The UUID of the incident user-defined role.
+ :type role_id: UUID
+ :param include: Comma-separated list of related resources to include in the response.
+ :type include: str, optional
+ :rtype: IncidentUserDefinedRoleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_incident_user_defined_role_endpoint.call_with_http_info(**kwargs)
+
+ def get_org_settings_by_incident_type(self, incident_type_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> IncidentOrgSettingsResponse:
+ """Get org settings by incident type.
+
+ Get the org settings for a specific incident type.
+
+ :param incident_type_id: The UUID of the incident type.
+ :type incident_type_id: UUID
+ :param include: Comma-separated list of related resources to include in the response.
+ :type include: str, optional
+ :rtype: IncidentOrgSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_type_id"] = incident_type_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_org_settings_by_incident_type_endpoint.call_with_http_info(**kwargs)
+
+ def import_incident(self, body: IncidentImportRequest, *, include: Union[List[IncidentImportRelatedObject], UnsetType]=unset, ) -> IncidentImportResponse:
+ """Import an incident.
+
+ Import an incident from an external system. This endpoint allows you to create incidents with
+ historical data such as custom timestamps for detection, declaration, and resolution.
+ Imported incidents do not execute integrations or notification rules.
+
+ :param body: Incident import payload.
+ :type body: IncidentImportRequest
+ :param include: Specifies which related object types to include in the response when importing an incident.
+ :type include: [IncidentImportRelatedObject], optional
+ :rtype: IncidentImportResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._import_incident_endpoint.call_with_http_info(**kwargs)
+
+ def link_page_to_incident(self, incident_id: str, body: IncidentOnCallPageLinkRequest, ) -> IncidentIntegrationMetadataResponse:
+ """Link a page to an incident.
+
+ Link an existing on-call page to an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: On-call page link payload.
+ :type body: IncidentOnCallPageLinkRequest
+ :rtype: IncidentIntegrationMetadataResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._link_page_to_incident_endpoint.call_with_http_info(**kwargs)
+
+ def list_global_incident_handles(self, *, include: Union[str, UnsetType]=unset, ) -> IncidentHandlesResponse:
+ """List global incident handles.
+
+ Retrieve a list of global incident handles.
+
+ :param include: Comma-separated list of related resources to include in the response
+ :type include: str, optional
+ :rtype: IncidentHandlesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_global_incident_handles_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_attachments(self, incident_id: str, *, filter_attachment_type: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> AttachmentArray:
+ """List incident attachments.
+
+ List incident attachments.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param filter_attachment_type: Filter attachments by type. Supported values are ``1`` ( ``postmortem`` ) and ``2`` ( ``link`` ).
+ :type filter_attachment_type: str, optional
+ :param include: Resource to include in the response. Supported value: ``last_modified_by_user``.
+ :type include: str, optional
+ :rtype: AttachmentArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ if filter_attachment_type is not unset:
+ kwargs["filter_attachment_type"] = filter_attachment_type
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_incident_attachments_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_impact_fields(self, ) -> IncidentImpactFieldsResponse:
+ """List incident impact fields.
+
+ List all impact fields for incidents.
+
+ :rtype: IncidentImpactFieldsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_incident_impact_fields_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_impacts(self, incident_id: str, *, include: Union[List[IncidentImpactRelatedObject], UnsetType]=unset, ) -> IncidentImpactsResponse:
+ """List an incident's impacts.
+
+ Get all impacts for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param include: Specifies which related resources should be included in the response.
+ :type include: [IncidentImpactRelatedObject], optional
+ :rtype: IncidentImpactsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_incident_impacts_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_integrations(self, incident_id: str, ) -> IncidentIntegrationMetadataListResponse:
+ """Get a list of an incident's integration metadata.
+
+ Get all integration metadata for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :rtype: IncidentIntegrationMetadataListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ return self._list_incident_integrations_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_notification_rules(self, *, include: Union[str, UnsetType]=unset, ) -> IncidentNotificationRuleArray:
+ """List incident notification rules.
+
+ Lists all notification rules for the organization. Optionally filter by incident type.
+
+ :param include: Comma-separated list of resources to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type`` , ``notification_template``
+ :type include: str, optional
+ :rtype: IncidentNotificationRuleArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_incident_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_notification_templates(self, *, filter_incident_type: Union[UUID, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> IncidentNotificationTemplateArray:
+ """List incident notification templates.
+
+ Lists all notification templates. Optionally filter by incident type.
+
+ :param filter_incident_type: Optional incident type ID filter.
+ :type filter_incident_type: UUID, optional
+ :param include: Comma-separated list of relationships to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type``
+ :type include: str, optional
+ :rtype: IncidentNotificationTemplateArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_incident_type is not unset:
+ kwargs["filter_incident_type"] = filter_incident_type
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_incident_notification_templates_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_postmortem_templates(self, *, filter_incident_type: Union[UUID, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> PostmortemTemplatesResponse:
+ """List postmortem templates.
+
+ Retrieve a list of all postmortem templates for incidents.
+
+ :param filter_incident_type: Filter postmortem templates by the associated incident type ID.
+ :type filter_incident_type: UUID, optional
+ :param sort: The attribute to sort results by. Prefix with ``-`` for descending order.
+ :type sort: str, optional
+ :rtype: PostmortemTemplatesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_incident_type is not unset:
+ kwargs["filter_incident_type"] = filter_incident_type
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_incident_postmortem_templates_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_responders(self, incident_id: str, ) -> IncidentRespondersResponse:
+ """List incident responders.
+
+ List all responders for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :rtype: IncidentRespondersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ return self._list_incident_responders_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_rules(self, *, filter_task_id: Union[str, UnsetType]=unset, filter_trigger: Union[str, UnsetType]=unset, incident_type_uuid: Union[UUID, UnsetType]=unset, ) -> IncidentRulesResponse:
+ """List incident rules.
+
+ List all incident rules.
+
+ :param filter_task_id: Filter rules by task ID.
+ :type filter_task_id: str, optional
+ :param filter_trigger: Filter rules by trigger.
+ :type filter_trigger: str, optional
+ :param incident_type_uuid: Filter rules by incident type UUID.
+ :type incident_type_uuid: UUID, optional
+ :rtype: IncidentRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_task_id is not unset:
+ kwargs["filter_task_id"] = filter_task_id
+
+ if filter_trigger is not unset:
+ kwargs["filter_trigger"] = filter_trigger
+
+ if incident_type_uuid is not unset:
+ kwargs["incident_type_uuid"] = incident_type_uuid
+
+ return self._list_incident_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_incidents(self, *, include: Union[List[IncidentRelatedObject], UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> IncidentsResponse:
+ """Get a list of incidents.
+
+ Get all incidents for the user's organization.
+
+ :param include: Specifies which types of related objects should be included in the response.
+ :type include: [IncidentRelatedObject], optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :rtype: IncidentsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ return self._list_incidents_endpoint.call_with_http_info(**kwargs)
+
+ def list_incidents_with_pagination(self, *, include: Union[List[IncidentRelatedObject], UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[IncidentResponseData]:
+ """Get a list of incidents.
+
+ Provide a paginated version of :meth:`list_incidents`, returning all items.
+
+ :param include: Specifies which types of related objects should be included in the response.
+ :type include: [IncidentRelatedObject], optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[IncidentResponseData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_incidents_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_incident_todos(self, incident_id: str, ) -> IncidentTodoListResponse:
+ """Get a list of an incident's todos.
+
+ Get all todos for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :rtype: IncidentTodoListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ return self._list_incident_todos_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_types(self, *, include_deleted: Union[bool, UnsetType]=unset, ) -> IncidentTypeListResponse:
+ """Get a list of incident types.
+
+ Get all incident types.
+
+ :param include_deleted: Include deleted incident types in the response.
+ :type include_deleted: bool, optional
+ :rtype: IncidentTypeListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include_deleted is not unset:
+ kwargs["include_deleted"] = include_deleted
+
+ return self._list_incident_types_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_user_defined_fields(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, include_deleted: Union[bool, UnsetType]=unset, filter_incident_type: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedFieldListResponse:
+ """Get a list of incident user-defined fields.
+
+ Get a list of all incident user-defined fields.
+
+ :param page_size: The number of results to return per page. Must be between 0 and 1000.
+ :type page_size: int, optional
+ :param page_number: The page number to retrieve, starting at 0.
+ :type page_number: int, optional
+ :param include_deleted: When true, include soft-deleted fields in the response.
+ :type include_deleted: bool, optional
+ :param filter_incident_type: Filter results to fields associated with the given incident type UUID.
+ :type filter_incident_type: str, optional
+ :param include: Comma-separated list of related resources to include. Supported values are "last_modified_by_user", "created_by_user", and "incident_type".
+ :type include: str, optional
+ :rtype: IncidentUserDefinedFieldListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if include_deleted is not unset:
+ kwargs["include_deleted"] = include_deleted
+
+ if filter_incident_type is not unset:
+ kwargs["filter_incident_type"] = filter_incident_type
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_incident_user_defined_fields_endpoint.call_with_http_info(**kwargs)
+
+ def list_incident_user_defined_roles(self, *, filter_incident_type: Union[UUID, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedRolesResponse:
+ """List incident user-defined roles.
+
+ List all user-defined roles for incidents.
+
+ :param filter_incident_type: Filter roles by incident type UUID.
+ :type filter_incident_type: UUID, optional
+ :param include: Comma-separated list of related resources to include in the response.
+ :type include: str, optional
+ :rtype: IncidentUserDefinedRolesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_incident_type is not unset:
+ kwargs["filter_incident_type"] = filter_incident_type
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_incident_user_defined_roles_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_settings(self, *, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, include_deleted: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> IncidentOrgSettingsListResponse:
+ """List incident type org settings.
+
+ List org settings for all incident types.
+
+ :param page_size: Maximum number of results to return.
+ :type page_size: int, optional
+ :param page_offset: The offset for pagination.
+ :type page_offset: int, optional
+ :param include_deleted: Whether to include deleted records.
+ :type include_deleted: bool, optional
+ :param include: Comma-separated list of related resources to include in the response.
+ :type include: str, optional
+ :rtype: IncidentOrgSettingsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if include_deleted is not unset:
+ kwargs["include_deleted"] = include_deleted
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_org_settings_endpoint.call_with_http_info(**kwargs)
+
+ def list_timestamp_overrides(self, incident_id: str, ) -> IncidentTimestampOverridesResponse:
+ """List incident timestamp overrides.
+
+ List all timestamp overrides for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :rtype: IncidentTimestampOverridesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ return self._list_timestamp_overrides_endpoint.call_with_http_info(**kwargs)
+
+ def patch_incident_impact(self, incident_id: str, impact_id: str, body: IncidentImpactPatchRequest, *, include: Union[List[IncidentImpactRelatedObject], UnsetType]=unset, ) -> IncidentImpactResponse:
+ """Update an incident impact.
+
+ Update an incident impact.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param impact_id: The UUID of the incident impact.
+ :type impact_id: str
+ :param body: Incident impact patch payload.
+ :type body: IncidentImpactPatchRequest
+ :param include: Specifies which related resources should be included in the response.
+ :type include: [IncidentImpactRelatedObject], optional
+ :rtype: IncidentImpactResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["impact_id"] = impact_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._patch_incident_impact_endpoint.call_with_http_info(**kwargs)
+
+ def search_incidents(self, query: str, *, include: Union[IncidentRelatedObject, UnsetType]=unset, sort: Union[IncidentSearchSortOrder, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> IncidentSearchResponse:
+ """Search for incidents.
+
+ Search for incidents matching a certain query.
+
+ :param query: Specifies which incidents should be returned. The query can contain any number of incident facets
+ joined by ``ANDs`` , along with multiple values for each of those facets joined by ``OR`` s. For
+ example: ``state:active AND severity:(SEV-2 OR SEV-1)``.
+ :type query: str
+ :param include: Specifies which types of related objects should be included in the response.
+ :type include: IncidentRelatedObject, optional
+ :param sort: Specifies the order of returned incidents.
+ :type sort: IncidentSearchSortOrder, optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :rtype: IncidentSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["query"] = query
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ return self._search_incidents_endpoint.call_with_http_info(**kwargs)
+
+ def search_incidents_with_pagination(self, query: str, *, include: Union[IncidentRelatedObject, UnsetType]=unset, sort: Union[IncidentSearchSortOrder, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[IncidentSearchResponseIncidentsData]:
+ """Search for incidents.
+
+ Provide a paginated version of :meth:`search_incidents`, returning all items.
+
+ :param query: Specifies which incidents should be returned. The query can contain any number of incident facets
+ joined by ``ANDs`` , along with multiple values for each of those facets joined by ``OR`` s. For
+ example: ``state:active AND severity:(SEV-2 OR SEV-1)``.
+ :type query: str
+ :param include: Specifies which types of related objects should be included in the response.
+ :type include: IncidentRelatedObject, optional
+ :param sort: Specifies the order of returned incidents.
+ :type sort: IncidentSearchSortOrder, optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[IncidentSearchResponseIncidentsData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["query"] = query
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._search_incidents_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data.attributes.incidents",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_global_incident_handle(self, body: IncidentHandleRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentHandleResponse:
+ """Update global incident handle.
+
+ Update an existing global incident handle.
+
+ :type body: IncidentHandleRequest
+ :param include: Comma-separated list of related resources to include in the response
+ :type include: str, optional
+ :rtype: IncidentHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_global_incident_handle_endpoint.call_with_http_info(**kwargs)
+
+ def update_global_incident_settings(self, body: GlobalIncidentSettingsRequest, ) -> GlobalIncidentSettingsResponse:
+ """Update global incident settings.
+
+ Update global incident settings for the organization.
+
+ :type body: GlobalIncidentSettingsRequest
+ :rtype: GlobalIncidentSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_global_incident_settings_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident(self, incident_id: str, body: IncidentUpdateRequest, *, include: Union[List[IncidentRelatedObject], UnsetType]=unset, ) -> IncidentResponse:
+ """Update an existing incident.
+
+ Updates an incident. Provide only the attributes that should be updated as this request is a partial update.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident Payload.
+ :type body: IncidentUpdateRequest
+ :param include: Specifies which types of related objects should be included in the response.
+ :type include: [IncidentRelatedObject], optional
+ :rtype: IncidentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_incident_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_attachment(self, incident_id: str, attachment_id: str, body: PatchAttachmentRequest, *, include: Union[str, UnsetType]=unset, ) -> Attachment:
+ """Update incident attachment.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param attachment_id: The ID of the attachment.
+ :type attachment_id: str
+ :type body: PatchAttachmentRequest
+ :param include: Resource to include in the response. Supported value: ``last_modified_by_user``.
+ :type include: str, optional
+ :rtype: Attachment
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["attachment_id"] = attachment_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_incident_attachment_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_configuration(self, incident_id: str, body: IncidentConfigurationPatchRequest, ) -> IncidentConfigurationResponse:
+ """Update an incident configuration.
+
+ Update a configuration for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param body: Incident configuration patch payload.
+ :type body: IncidentConfigurationPatchRequest
+ :rtype: IncidentConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_google_chat_configuration(self, id: UUID, body: IncidentGoogleChatConfigurationPatchRequest, ) -> IncidentGoogleChatConfigurationResponse:
+ """Update an incident Google Chat configuration.
+
+ Update a Google Chat configuration for incidents.
+
+ :param id: The UUID of the Google Chat configuration.
+ :type id: UUID
+ :param body: Google Chat configuration patch payload.
+ :type body: IncidentGoogleChatConfigurationPatchRequest
+ :rtype: IncidentGoogleChatConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_incident_google_chat_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_google_meet_configuration(self, id: UUID, body: IncidentGoogleMeetConfigurationPatchRequest, ) -> IncidentGoogleMeetConfigurationResponse:
+ """Update an incident Google Meet configuration.
+
+ Update a Google Meet configuration for incidents.
+
+ :param id: The UUID of the Google Meet configuration.
+ :type id: UUID
+ :param body: Google Meet configuration patch payload.
+ :type body: IncidentGoogleMeetConfigurationPatchRequest
+ :rtype: IncidentGoogleMeetConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_incident_google_meet_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_impact_field(self, field_id: UUID, body: IncidentImpactFieldRequest, ) -> IncidentImpactFieldResponse:
+ """Update an incident impact field.
+
+ Update an impact field for incidents.
+
+ :param field_id: The UUID of the impact field.
+ :type field_id: UUID
+ :param body: Impact field update payload.
+ :type body: IncidentImpactFieldRequest
+ :rtype: IncidentImpactFieldResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["field_id"] = field_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_impact_field_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_integration(self, incident_id: str, integration_metadata_id: str, body: IncidentIntegrationMetadataPatchRequest, ) -> IncidentIntegrationMetadataResponse:
+ """Update an existing incident integration metadata.
+
+ Update an existing incident integration metadata.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param integration_metadata_id: The UUID of the incident integration metadata.
+ :type integration_metadata_id: str
+ :param body: Incident integration metadata payload.
+ :type body: IncidentIntegrationMetadataPatchRequest
+ :rtype: IncidentIntegrationMetadataResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["integration_metadata_id"] = integration_metadata_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_integration_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_notification_rule(self, id: UUID, body: PutIncidentNotificationRuleRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentNotificationRule:
+ """Update an incident notification rule.
+
+ Updates an existing notification rule with a complete replacement.
+
+ :param id: The ID of the notification rule.
+ :type id: UUID
+ :type body: PutIncidentNotificationRuleRequest
+ :param include: Comma-separated list of resources to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type`` , ``notification_template``
+ :type include: str, optional
+ :rtype: IncidentNotificationRule
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_incident_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_notification_template(self, id: UUID, body: PatchIncidentNotificationTemplateRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentNotificationTemplate:
+ """Update incident notification template.
+
+ Updates an existing notification template's attributes.
+
+ :param id: The ID of the notification template.
+ :type id: UUID
+ :type body: PatchIncidentNotificationTemplateRequest
+ :param include: Comma-separated list of relationships to include. Supported values: ``created_by_user`` , ``last_modified_by_user`` , ``incident_type``
+ :type include: str, optional
+ :rtype: IncidentNotificationTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_incident_notification_template_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_postmortem_template(self, template_id: str, body: PostmortemTemplateRequest, ) -> PostmortemTemplateResponse:
+ """Update postmortem template.
+
+ Update an existing postmortem template.
+
+ :param template_id: The ID of the postmortem template.
+ :type template_id: str
+ :type body: PostmortemTemplateRequest
+ :rtype: PostmortemTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_postmortem_template_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_rule(self, rule_id: UUID, body: IncidentRulePatchRequest, ) -> IncidentRuleResponse:
+ """Update an incident rule.
+
+ Update an incident rule.
+
+ :param rule_id: The UUID of the incident rule.
+ :type rule_id: UUID
+ :param body: Incident rule patch payload.
+ :type body: IncidentRulePatchRequest
+ :rtype: IncidentRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_todo(self, incident_id: str, todo_id: str, body: IncidentTodoPatchRequest, ) -> IncidentTodoResponse:
+ """Update an incident todo.
+
+ Update an incident todo.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param todo_id: The UUID of the incident todo.
+ :type todo_id: str
+ :param body: Incident todo payload.
+ :type body: IncidentTodoPatchRequest
+ :rtype: IncidentTodoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["todo_id"] = todo_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_todo_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_type(self, incident_type_id: str, body: IncidentTypePatchRequest, ) -> IncidentTypeResponse:
+ """Update an incident type.
+
+ Update an incident type.
+
+ :param incident_type_id: The UUID of the incident type.
+ :type incident_type_id: str
+ :param body: Incident type payload.
+ :type body: IncidentTypePatchRequest
+ :rtype: IncidentTypeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_type_id"] = incident_type_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_type_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_user_defined_field(self, field_id: str, body: IncidentUserDefinedFieldUpdateRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedFieldResponse:
+ """Update an incident user-defined field.
+
+ Update an incident user-defined field.
+
+ :param field_id: The ID of the incident user-defined field.
+ :type field_id: str
+ :param body: Incident user-defined field update payload.
+ :type body: IncidentUserDefinedFieldUpdateRequest
+ :param include: Comma-separated list of related resources to include. Supported values are "last_modified_by_user", "created_by_user", and "incident_type".
+ :type include: str, optional
+ :rtype: IncidentUserDefinedFieldResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["field_id"] = field_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_incident_user_defined_field_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_user_defined_role(self, role_id: UUID, body: IncidentUserDefinedRolePatchRequest, *, include: Union[str, UnsetType]=unset, ) -> IncidentUserDefinedRoleResponse:
+ """Update an incident user-defined role.
+
+ Update an existing user-defined role for incidents.
+
+ :param role_id: The UUID of the incident user-defined role.
+ :type role_id: UUID
+ :type body: IncidentUserDefinedRolePatchRequest
+ :param include: Comma-separated list of related resources to include in the response.
+ :type include: str, optional
+ :rtype: IncidentUserDefinedRoleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_incident_user_defined_role_endpoint.call_with_http_info(**kwargs)
+
+ def update_timestamp_override(self, incident_id: str, id: UUID, body: IncidentTimestampOverridePatchRequest, ) -> IncidentTimestampOverrideResponse:
+ """Update an incident timestamp override.
+
+ Update a timestamp override for an incident.
+
+ :param incident_id: The UUID of the incident.
+ :type incident_id: str
+ :param id: The UUID of the timestamp override.
+ :type id: UUID
+ :param body: Timestamp override patch payload.
+ :type body: IncidentTimestampOverridePatchRequest
+ :rtype: IncidentTimestampOverrideResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_id"] = incident_id
+
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_timestamp_override_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/integrations_api.py b/datadog_api_client/v2/api/integrations_api.py
new file mode 100644
index 0000000000..fdbc3f0af9
--- /dev/null
+++ b/datadog_api_client/v2/api/integrations_api.py
@@ -0,0 +1,59 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_integrations_response import ListIntegrationsResponse
+
+
+class IntegrationsApi:
+ """
+ The Integrations API is used to list available integrations
+ and retrieve information about their installation status.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_integrations_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListIntegrationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations",
+ "operation_id": "list_integrations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_integrations(self, ) -> ListIntegrationsResponse:
+ """List Integrations.
+
+ :rtype: ListIntegrationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_integrations_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/ip_allowlist_api.py b/datadog_api_client/v2/api/ip_allowlist_api.py
new file mode 100644
index 0000000000..820a206045
--- /dev/null
+++ b/datadog_api_client/v2/api/ip_allowlist_api.py
@@ -0,0 +1,102 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.ip_allowlist_response import IPAllowlistResponse
+from datadog_api_client.v2.model.ip_allowlist_update_request import IPAllowlistUpdateRequest
+
+
+class IPAllowlistApi:
+ """
+ The IP allowlist API is used to manage the IP addresses that
+ can access the Datadog API and web UI. It does not block
+ access to intake APIs or public dashboards.
+
+ This is an enterprise-only feature. Request access by
+ contacting Datadog support, or see the `IP Allowlist page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_ip_allowlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (IPAllowlistResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ip_allowlist",
+ "operation_id": "get_ip_allowlist",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_ip_allowlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (IPAllowlistResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ip_allowlist",
+ "operation_id": "update_ip_allowlist",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IPAllowlistUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_ip_allowlist(self, ) -> IPAllowlistResponse:
+ """Get IP Allowlist.
+
+ Returns the IP allowlist and its enabled or disabled state.
+
+ :rtype: IPAllowlistResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_ip_allowlist_endpoint.call_with_http_info(**kwargs)
+
+ def update_ip_allowlist(self, body: IPAllowlistUpdateRequest, ) -> IPAllowlistResponse:
+ """Update IP Allowlist.
+
+ Edit the entries in the IP allowlist, and enable or disable it.
+
+ :type body: IPAllowlistUpdateRequest
+ :rtype: IPAllowlistResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_ip_allowlist_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/jira_integration_api.py b/datadog_api_client/v2/api/jira_integration_api.py
new file mode 100644
index 0000000000..ec3b9d9e86
--- /dev/null
+++ b/datadog_api_client/v2/api/jira_integration_api.py
@@ -0,0 +1,284 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.jira_accounts_response import JiraAccountsResponse
+from datadog_api_client.v2.model.jira_issue_templates_response import JiraIssueTemplatesResponse
+from datadog_api_client.v2.model.jira_issue_template_response import JiraIssueTemplateResponse
+from datadog_api_client.v2.model.jira_issue_template_create_request import JiraIssueTemplateCreateRequest
+from datadog_api_client.v2.model.jira_issue_template_update_request import JiraIssueTemplateUpdateRequest
+
+
+class JiraIntegrationApi:
+ """
+ Manage your Jira Integration. Atlassian Jira is a project management and issue tracking tool for teams to coordinate work and handle tasks efficiently.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_jira_issue_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (JiraIssueTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/issue-templates",
+ "operation_id": "create_jira_issue_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (JiraIssueTemplateCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_jira_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/accounts/{account_id}",
+ "operation_id": "delete_jira_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_jira_issue_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/issue-templates/{issue_template_id}",
+ "operation_id": "delete_jira_issue_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "issue_template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "issue_template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_jira_issue_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (JiraIssueTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/issue-templates/{issue_template_id}",
+ "operation_id": "get_jira_issue_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "issue_template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "issue_template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_jira_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (JiraAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/accounts",
+ "operation_id": "list_jira_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_jira_issue_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (JiraIssueTemplatesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/issue-templates",
+ "operation_id": "list_jira_issue_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_jira_issue_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (JiraIssueTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/jira/issue-templates/{issue_template_id}",
+ "operation_id": "update_jira_issue_template",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "issue_template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "issue_template_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (JiraIssueTemplateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_jira_issue_template(self, body: JiraIssueTemplateCreateRequest, ) -> JiraIssueTemplateResponse:
+ """Create Jira issue template.
+
+ Create a new Jira issue template.
+
+ :type body: JiraIssueTemplateCreateRequest
+ :rtype: JiraIssueTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_jira_issue_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_jira_account(self, account_id: UUID, ) -> None:
+ """Delete Jira account.
+
+ Delete a Jira account by ID.
+
+ :param account_id: The ID of the Jira account to delete
+ :type account_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_jira_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_jira_issue_template(self, issue_template_id: UUID, ) -> None:
+ """Delete Jira issue template.
+
+ Delete a Jira issue template by ID.
+
+ :param issue_template_id: The ID of the Jira issue template to delete
+ :type issue_template_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_template_id"] = issue_template_id
+
+ return self._delete_jira_issue_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_jira_issue_template(self, issue_template_id: UUID, ) -> JiraIssueTemplateResponse:
+ """Get Jira issue template.
+
+ Get a Jira issue template by ID.
+
+ :param issue_template_id: The ID of the Jira issue template to retrieve
+ :type issue_template_id: UUID
+ :rtype: JiraIssueTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_template_id"] = issue_template_id
+
+ return self._get_jira_issue_template_endpoint.call_with_http_info(**kwargs)
+
+ def list_jira_accounts(self, ) -> JiraAccountsResponse:
+ """List Jira accounts.
+
+ Get all Jira accounts for the organization.
+
+ :rtype: JiraAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_jira_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def list_jira_issue_templates(self, ) -> JiraIssueTemplatesResponse:
+ """List Jira issue templates.
+
+ Get all Jira issue templates for the organization.
+
+ :rtype: JiraIssueTemplatesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_jira_issue_templates_endpoint.call_with_http_info(**kwargs)
+
+ def update_jira_issue_template(self, issue_template_id: UUID, body: JiraIssueTemplateUpdateRequest, ) -> JiraIssueTemplateResponse:
+ """Update Jira issue template.
+
+ Update a Jira issue template by ID.
+
+ :param issue_template_id: The ID of the Jira issue template to update
+ :type issue_template_id: UUID
+ :type body: JiraIssueTemplateUpdateRequest
+ :rtype: JiraIssueTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["issue_template_id"] = issue_template_id
+
+ kwargs["body"] = body
+
+ return self._update_jira_issue_template_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/key_management_api.py b/datadog_api_client/v2/api/key_management_api.py
new file mode 100644
index 0000000000..5bd837033d
--- /dev/null
+++ b/datadog_api_client/v2/api/key_management_api.py
@@ -0,0 +1,1150 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.api_keys_response import APIKeysResponse
+from datadog_api_client.v2.model.api_keys_sort import APIKeysSort
+from datadog_api_client.v2.model.api_key_response import APIKeyResponse
+from datadog_api_client.v2.model.api_key_create_request import APIKeyCreateRequest
+from datadog_api_client.v2.model.api_key_update_request import APIKeyUpdateRequest
+from datadog_api_client.v2.model.list_application_keys_response import ListApplicationKeysResponse
+from datadog_api_client.v2.model.application_keys_sort import ApplicationKeysSort
+from datadog_api_client.v2.model.application_key_response import ApplicationKeyResponse
+from datadog_api_client.v2.model.application_key_update_request import ApplicationKeyUpdateRequest
+from datadog_api_client.v2.model.application_key_create_request import ApplicationKeyCreateRequest
+from datadog_api_client.v2.model.list_personal_access_tokens_response import ListPersonalAccessTokensResponse
+from datadog_api_client.v2.model.personal_access_tokens_sort import PersonalAccessTokensSort
+from datadog_api_client.v2.model.personal_access_token_create_response import PersonalAccessTokenCreateResponse
+from datadog_api_client.v2.model.personal_access_token_create_request import PersonalAccessTokenCreateRequest
+from datadog_api_client.v2.model.personal_access_token_response import PersonalAccessTokenResponse
+from datadog_api_client.v2.model.personal_access_token_update_request import PersonalAccessTokenUpdateRequest
+from datadog_api_client.v2.model.validate_v2_response import ValidateV2Response
+from datadog_api_client.v2.model.validate_api_key_response import ValidateAPIKeyResponse
+
+
+class KeyManagementApi:
+ """
+ Manage your Datadog API and application keys. You need an API key and an
+ application key for a user with the required permissions to interact with these endpoints.
+
+ Consult the following pages to view and manage your keys:
+
+ * `API Keys `_
+ * `Application Keys `_
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (APIKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/api_keys",
+ "operation_id": "create_api_key",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (APIKeyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_current_user_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/current_user/application_keys",
+ "operation_id": "create_current_user_application_key",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKeyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_personal_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": (PersonalAccessTokenCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/personal_access_tokens",
+ "operation_id": "create_personal_access_token",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (PersonalAccessTokenCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/api_keys/{api_key_id}",
+ "operation_id": "delete_api_key",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "api_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "api_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/application_keys/{app_key_id}",
+ "operation_id": "delete_application_key",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_current_user_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/current_user/application_keys/{app_key_id}",
+ "operation_id": "delete_current_user_application_key",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (APIKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/api_keys/{api_key_id}",
+ "operation_id": "get_api_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "api_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "api_key_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/application_keys/{app_key_id}",
+ "operation_id": "get_application_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_current_user_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/current_user/application_keys/{app_key_id}",
+ "operation_id": "get_current_user_application_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_personal_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": (PersonalAccessTokenResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/personal_access_tokens/{token_id}",
+ "operation_id": "get_personal_access_token",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "token_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_api_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (APIKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/api_keys",
+ "operation_id": "list_api_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (APIKeysSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_created_at_start": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][start]",
+ "location": "query",
+ },
+ "filter_created_at_end": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][end]",
+ "location": "query",
+ },
+ "filter_modified_at_start": {
+ "openapi_types": (str,),
+ "attribute": "filter[modified_at][start]",
+ "location": "query",
+ },
+ "filter_modified_at_end": {
+ "openapi_types": (str,),
+ "attribute": "filter[modified_at][end]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "filter_remote_config_read_enabled": {
+ "openapi_types": (bool,),
+ "attribute": "filter[remote_config_read_enabled]",
+ "location": "query",
+ },
+ "filter_category": {
+ "openapi_types": (str,),
+ "attribute": "filter[category]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_application_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListApplicationKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/application_keys",
+ "operation_id": "list_application_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (ApplicationKeysSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_created_at_start": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][start]",
+ "location": "query",
+ },
+ "filter_created_at_end": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][end]",
+ "location": "query",
+ },
+ "filter_owned_by": {
+ "openapi_types": (str,),
+ "attribute": "filter[owned_by]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_current_user_application_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListApplicationKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/current_user/application_keys",
+ "operation_id": "list_current_user_application_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (ApplicationKeysSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_created_at_start": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][start]",
+ "location": "query",
+ },
+ "filter_created_at_end": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][end]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_personal_access_tokens_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListPersonalAccessTokensResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/personal_access_tokens",
+ "operation_id": "list_personal_access_tokens",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (PersonalAccessTokensSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_owned_by": {
+ "openapi_types": ([str],),
+ "attribute": "filter[owned_by]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._revoke_personal_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/personal_access_tokens/{token_id}",
+ "operation_id": "revoke_personal_access_token",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "token_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (APIKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/api_keys/{api_key_id}",
+ "operation_id": "update_api_key",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "api_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "api_key_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (APIKeyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/application_keys/{app_key_id}",
+ "operation_id": "update_application_key",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKeyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_current_user_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/current_user/application_keys/{app_key_id}",
+ "operation_id": "update_current_user_application_key",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKeyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_personal_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": (PersonalAccessTokenResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/personal_access_tokens/{token_id}",
+ "operation_id": "update_personal_access_token",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "token_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PersonalAccessTokenUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_endpoint = _Endpoint(
+ settings={
+ "response_type": (ValidateV2Response,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/validate",
+ "operation_id": "validate",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._validate_api_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ValidateAPIKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/validate_keys",
+ "operation_id": "validate_api_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_api_key(self, body: APIKeyCreateRequest, ) -> APIKeyResponse:
+ """Create an API key.
+
+ Create an API key.
+
+ :type body: APIKeyCreateRequest
+ :rtype: APIKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def create_current_user_application_key(self, body: ApplicationKeyCreateRequest, ) -> ApplicationKeyResponse:
+ """Create an application key for current user.
+
+ Create an application key for current user
+
+ :type body: ApplicationKeyCreateRequest
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_current_user_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def create_personal_access_token(self, body: PersonalAccessTokenCreateRequest, ) -> PersonalAccessTokenCreateResponse:
+ """Create a personal access token.
+
+ Create a personal access token for the current user.
+
+ :type body: PersonalAccessTokenCreateRequest
+ :rtype: PersonalAccessTokenCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_personal_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def delete_api_key(self, api_key_id: str, ) -> None:
+ """Delete an API key.
+
+ Delete an API key.
+
+ :param api_key_id: The ID of the API key.
+ :type api_key_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["api_key_id"] = api_key_id
+
+ return self._delete_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def delete_application_key(self, app_key_id: str, ) -> None:
+ """Delete an application key.
+
+ Delete an application key
+
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ return self._delete_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def delete_current_user_application_key(self, app_key_id: str, ) -> None:
+ """Delete an application key owned by current user.
+
+ Delete an application key owned by current user
+
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ return self._delete_current_user_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_key(self, api_key_id: str, *, include: Union[str, UnsetType]=unset, ) -> APIKeyResponse:
+ """Get API key.
+
+ Get an API key.
+
+ :param api_key_id: The ID of the API key.
+ :type api_key_id: str
+ :param include: Comma separated list of resource paths for related resources to include in the response. Supported resource paths are ``created_by`` and ``modified_by``.
+ :type include: str, optional
+ :rtype: APIKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["api_key_id"] = api_key_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_application_key(self, app_key_id: str, *, include: Union[str, UnsetType]=unset, ) -> ApplicationKeyResponse:
+ """Get an application key.
+
+ Get an application key for your org.
+
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :param include: Resource path for related resources to include in the response. Only ``owned_by`` is supported.
+ :type include: str, optional
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_current_user_application_key(self, app_key_id: str, ) -> ApplicationKeyResponse:
+ """Get one application key owned by current user.
+
+ Get an application key owned by current user.
+ The ``key`` field is not returned for organizations in `One-Time Read mode `_.
+
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ return self._get_current_user_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_personal_access_token(self, token_id: str, ) -> PersonalAccessTokenResponse:
+ """Get a personal access token.
+
+ Get a specific personal access token by its ID.
+
+ :param token_id: The ID of the access token.
+ :type token_id: str
+ :rtype: PersonalAccessTokenResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token_id"] = token_id
+
+ return self._get_personal_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def list_api_keys(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[APIKeysSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_created_at_start: Union[str, UnsetType]=unset, filter_created_at_end: Union[str, UnsetType]=unset, filter_modified_at_start: Union[str, UnsetType]=unset, filter_modified_at_end: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, filter_remote_config_read_enabled: Union[bool, UnsetType]=unset, filter_category: Union[str, UnsetType]=unset, ) -> APIKeysResponse:
+ """Get all API keys.
+
+ List all API keys available for your account.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: API key attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ :type sort: APIKeysSort, optional
+ :param filter: Filter API keys by the specified string.
+ :type filter: str, optional
+ :param filter_created_at_start: Only include API keys created on or after the specified date.
+ :type filter_created_at_start: str, optional
+ :param filter_created_at_end: Only include API keys created on or before the specified date.
+ :type filter_created_at_end: str, optional
+ :param filter_modified_at_start: Only include API keys modified on or after the specified date.
+ :type filter_modified_at_start: str, optional
+ :param filter_modified_at_end: Only include API keys modified on or before the specified date.
+ :type filter_modified_at_end: str, optional
+ :param include: Comma separated list of resource paths for related resources to include in the response. Supported resource paths are ``created_by`` and ``modified_by``.
+ :type include: str, optional
+ :param filter_remote_config_read_enabled: Filter API keys by remote config read enabled status.
+ :type filter_remote_config_read_enabled: bool, optional
+ :param filter_category: Filter API keys by category.
+ :type filter_category: str, optional
+ :rtype: APIKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_created_at_start is not unset:
+ kwargs["filter_created_at_start"] = filter_created_at_start
+
+ if filter_created_at_end is not unset:
+ kwargs["filter_created_at_end"] = filter_created_at_end
+
+ if filter_modified_at_start is not unset:
+ kwargs["filter_modified_at_start"] = filter_modified_at_start
+
+ if filter_modified_at_end is not unset:
+ kwargs["filter_modified_at_end"] = filter_modified_at_end
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_remote_config_read_enabled is not unset:
+ kwargs["filter_remote_config_read_enabled"] = filter_remote_config_read_enabled
+
+ if filter_category is not unset:
+ kwargs["filter_category"] = filter_category
+
+ return self._list_api_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_application_keys(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[ApplicationKeysSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_created_at_start: Union[str, UnsetType]=unset, filter_created_at_end: Union[str, UnsetType]=unset, filter_owned_by: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> ListApplicationKeysResponse:
+ """Get all application keys.
+
+ List all application keys available for your org
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Application key attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ :type sort: ApplicationKeysSort, optional
+ :param filter: Filter application keys by the specified string.
+ :type filter: str, optional
+ :param filter_created_at_start: Only include application keys created on or after the specified date.
+ :type filter_created_at_start: str, optional
+ :param filter_created_at_end: Only include application keys created on or before the specified date.
+ :type filter_created_at_end: str, optional
+ :param filter_owned_by: Filter application keys by owner ID.
+ :type filter_owned_by: str, optional
+ :param include: Resource path for related resources to include in the response. Only ``owned_by`` is supported.
+ :type include: str, optional
+ :rtype: ListApplicationKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_created_at_start is not unset:
+ kwargs["filter_created_at_start"] = filter_created_at_start
+
+ if filter_created_at_end is not unset:
+ kwargs["filter_created_at_end"] = filter_created_at_end
+
+ if filter_owned_by is not unset:
+ kwargs["filter_owned_by"] = filter_owned_by
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_application_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_current_user_application_keys(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[ApplicationKeysSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_created_at_start: Union[str, UnsetType]=unset, filter_created_at_end: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> ListApplicationKeysResponse:
+ """Get all application keys owned by current user.
+
+ List all application keys available for current user
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Application key attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ :type sort: ApplicationKeysSort, optional
+ :param filter: Filter application keys by the specified string.
+ :type filter: str, optional
+ :param filter_created_at_start: Only include application keys created on or after the specified date.
+ :type filter_created_at_start: str, optional
+ :param filter_created_at_end: Only include application keys created on or before the specified date.
+ :type filter_created_at_end: str, optional
+ :param include: Resource path for related resources to include in the response. Only ``owned_by`` is supported.
+ :type include: str, optional
+ :rtype: ListApplicationKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_created_at_start is not unset:
+ kwargs["filter_created_at_start"] = filter_created_at_start
+
+ if filter_created_at_end is not unset:
+ kwargs["filter_created_at_end"] = filter_created_at_end
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_current_user_application_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_personal_access_tokens(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[PersonalAccessTokensSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_owned_by: Union[List[str], UnsetType]=unset, ) -> ListPersonalAccessTokensResponse:
+ """Get all access tokens.
+
+ List all access tokens for the organization.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Access token attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ :type sort: PersonalAccessTokensSort, optional
+ :param filter: Filter access tokens by the specified string.
+ :type filter: str, optional
+ :param filter_owned_by: Filter access tokens by the owner's ID. Supports multiple values.
+ :type filter_owned_by: [str], optional
+ :rtype: ListPersonalAccessTokensResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_owned_by is not unset:
+ kwargs["filter_owned_by"] = filter_owned_by
+
+ return self._list_personal_access_tokens_endpoint.call_with_http_info(**kwargs)
+
+ def revoke_personal_access_token(self, token_id: str, ) -> None:
+ """Revoke a personal access token.
+
+ Revoke a specific personal access token.
+
+ :param token_id: The ID of the access token.
+ :type token_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token_id"] = token_id
+
+ return self._revoke_personal_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def update_api_key(self, api_key_id: str, body: APIKeyUpdateRequest, ) -> APIKeyResponse:
+ """Edit an API key.
+
+ Update an API key.
+
+ :param api_key_id: The ID of the API key.
+ :type api_key_id: str
+ :type body: APIKeyUpdateRequest
+ :rtype: APIKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["api_key_id"] = api_key_id
+
+ kwargs["body"] = body
+
+ return self._update_api_key_endpoint.call_with_http_info(**kwargs)
+
+ def update_application_key(self, app_key_id: str, body: ApplicationKeyUpdateRequest, ) -> ApplicationKeyResponse:
+ """Edit an application key.
+
+ Edit an application key
+
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :type body: ApplicationKeyUpdateRequest
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ kwargs["body"] = body
+
+ return self._update_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def update_current_user_application_key(self, app_key_id: str, body: ApplicationKeyUpdateRequest, ) -> ApplicationKeyResponse:
+ """Edit an application key owned by current user.
+
+ Edit an application key owned by current user.
+ The ``key`` field is not returned for organizations in `One-Time Read mode `_.
+
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :type body: ApplicationKeyUpdateRequest
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_key_id"] = app_key_id
+
+ kwargs["body"] = body
+
+ return self._update_current_user_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def update_personal_access_token(self, token_id: str, body: PersonalAccessTokenUpdateRequest, ) -> PersonalAccessTokenResponse:
+ """Update a personal access token.
+
+ Update a specific personal access token.
+
+ :param token_id: The ID of the access token.
+ :type token_id: str
+ :type body: PersonalAccessTokenUpdateRequest
+ :rtype: PersonalAccessTokenResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["token_id"] = token_id
+
+ kwargs["body"] = body
+
+ return self._update_personal_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def validate(self, ) -> ValidateV2Response:
+ """Validate API key.
+
+ Check if the API key is valid. Returns the organization UUID, API key ID, and associated scopes.
+
+ :rtype: ValidateV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._validate_endpoint.call_with_http_info(**kwargs)
+
+ def validate_api_key(self, ) -> ValidateAPIKeyResponse:
+ """Validate API and application keys.
+
+ Check that the API key and application key used for the request are both valid.
+ Returns ``{"status": "ok"}`` on success, ``401`` or ``403`` otherwise. Useful as a
+ lightweight authentication probe before issuing other API calls that require
+ full credentials.
+
+ :rtype: ValidateAPIKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._validate_api_key_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/llm_observability_api.py b/datadog_api_client/v2/api/llm_observability_api.py
new file mode 100644
index 0000000000..b0a7edd81f
--- /dev/null
+++ b/datadog_api_client/v2/api/llm_observability_api.py
@@ -0,0 +1,3768 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.llm_obs_custom_eval_config_list_response import LLMObsCustomEvalConfigListResponse
+from datadog_api_client.v2.model.llm_obs_custom_eval_config_response import LLMObsCustomEvalConfigResponse
+from datadog_api_client.v2.model.llm_obs_custom_eval_config_update_request import LLMObsCustomEvalConfigUpdateRequest
+from datadog_api_client.v2.model.llm_obs_data_deletion_response import LLMObsDataDeletionResponse
+from datadog_api_client.v2.model.llm_obs_data_deletion_request import LLMObsDataDeletionRequest
+from datadog_api_client.v2.model.llm_obs_annotated_interactions_by_trace_response import LLMObsAnnotatedInteractionsByTraceResponse
+from datadog_api_client.v2.model.llm_obs_annotation_queues_response import LLMObsAnnotationQueuesResponse
+from datadog_api_client.v2.model.llm_obs_annotation_queue_response import LLMObsAnnotationQueueResponse
+from datadog_api_client.v2.model.llm_obs_annotation_queue_request import LLMObsAnnotationQueueRequest
+from datadog_api_client.v2.model.llm_obs_annotation_queue_update_request import LLMObsAnnotationQueueUpdateRequest
+from datadog_api_client.v2.model.llm_obs_annotated_interactions_response import LLMObsAnnotatedInteractionsResponse
+from datadog_api_client.v2.model.llm_obs_annotations_response import LLMObsAnnotationsResponse
+from datadog_api_client.v2.model.llm_obs_annotations_request import LLMObsAnnotationsRequest
+from datadog_api_client.v2.model.llm_obs_delete_annotations_response import LLMObsDeleteAnnotationsResponse
+from datadog_api_client.v2.model.llm_obs_delete_annotations_request import LLMObsDeleteAnnotationsRequest
+from datadog_api_client.v2.model.llm_obs_annotation_queue_interactions_response import LLMObsAnnotationQueueInteractionsResponse
+from datadog_api_client.v2.model.llm_obs_annotation_queue_interactions_request import LLMObsAnnotationQueueInteractionsRequest
+from datadog_api_client.v2.model.llm_obs_delete_annotation_queue_interactions_request import LLMObsDeleteAnnotationQueueInteractionsRequest
+from datadog_api_client.v2.model.llm_obs_annotation_queue_label_schema_response import LLMObsAnnotationQueueLabelSchemaResponse
+from datadog_api_client.v2.model.llm_obs_annotation_queue_label_schema_update_request import LLMObsAnnotationQueueLabelSchemaUpdateRequest
+from datadog_api_client.v2.model.llm_obs_experimentation_analytics_response import LLMObsExperimentationAnalyticsResponse
+from datadog_api_client.v2.model.llm_obs_experimentation_analytics_request import LLMObsExperimentationAnalyticsRequest
+from datadog_api_client.v2.model.llm_obs_experimentation_search_response import LLMObsExperimentationSearchResponse
+from datadog_api_client.v2.model.llm_obs_experimentation_search_request import LLMObsExperimentationSearchRequest
+from datadog_api_client.v2.model.llm_obs_experimentation_simple_search_response import LLMObsExperimentationSimpleSearchResponse
+from datadog_api_client.v2.model.llm_obs_experimentation_simple_search_request import LLMObsExperimentationSimpleSearchRequest
+from datadog_api_client.v2.model.llm_obs_experiments_response import LLMObsExperimentsResponse
+from datadog_api_client.v2.model.llm_obs_experiment_response import LLMObsExperimentResponse
+from datadog_api_client.v2.model.llm_obs_experiment_request import LLMObsExperimentRequest
+from datadog_api_client.v2.model.llm_obs_delete_experiments_request import LLMObsDeleteExperimentsRequest
+from datadog_api_client.v2.model.llm_obs_experiment_update_request import LLMObsExperimentUpdateRequest
+from datadog_api_client.v2.model.llm_obs_experiment_spans_response import LLMObsExperimentSpansResponse
+from datadog_api_client.v2.model.llm_obs_experiment_events_request import LLMObsExperimentEventsRequest
+from datadog_api_client.v2.model.llm_obs_integration_account import LLMObsIntegrationAccount
+from datadog_api_client.v2.model.llm_obs_integration_name import LLMObsIntegrationName
+from datadog_api_client.v2.model.llm_obs_integration_inference_response import LLMObsIntegrationInferenceResponse
+from datadog_api_client.v2.model.llm_obs_integration_inference_request import LLMObsIntegrationInferenceRequest
+from datadog_api_client.v2.model.llm_obs_integration_model import LLMObsIntegrationModel
+from datadog_api_client.v2.model.llm_obs_projects_response import LLMObsProjectsResponse
+from datadog_api_client.v2.model.llm_obs_project_response import LLMObsProjectResponse
+from datadog_api_client.v2.model.llm_obs_project_request import LLMObsProjectRequest
+from datadog_api_client.v2.model.llm_obs_delete_projects_request import LLMObsDeleteProjectsRequest
+from datadog_api_client.v2.model.llm_obs_project_update_request import LLMObsProjectUpdateRequest
+from datadog_api_client.v2.model.llm_obs_prompts_response import LLMObsPromptsResponse
+from datadog_api_client.v2.model.llm_obs_prompt_response import LLMObsPromptResponse
+from datadog_api_client.v2.model.llm_obs_create_prompt_request import LLMObsCreatePromptRequest
+from datadog_api_client.v2.model.llm_obs_deleted_prompt_response import LLMObsDeletedPromptResponse
+from datadog_api_client.v2.model.llm_obs_prompt_sdk_response import LLMObsPromptSDKResponse
+from datadog_api_client.v2.model.llm_obs_update_prompt_request import LLMObsUpdatePromptRequest
+from datadog_api_client.v2.model.llm_obs_prompt_versions_response import LLMObsPromptVersionsResponse
+from datadog_api_client.v2.model.llm_obs_prompt_version_response import LLMObsPromptVersionResponse
+from datadog_api_client.v2.model.llm_obs_create_prompt_version_request import LLMObsCreatePromptVersionRequest
+from datadog_api_client.v2.model.llm_obs_update_prompt_version_request import LLMObsUpdatePromptVersionRequest
+from datadog_api_client.v2.model.llm_obs_spans_response import LLMObsSpansResponse
+from datadog_api_client.v2.model.llm_obs_search_spans_request import LLMObsSearchSpansRequest
+from datadog_api_client.v2.model.llm_obs_patterns_clustered_points_response import LLMObsPatternsClusteredPointsResponse
+from datadog_api_client.v2.model.llm_obs_patterns_configs_response import LLMObsPatternsConfigsResponse
+from datadog_api_client.v2.model.llm_obs_patterns_config_response import LLMObsPatternsConfigResponse
+from datadog_api_client.v2.model.llm_obs_patterns_config_upsert_request import LLMObsPatternsConfigUpsertRequest
+from datadog_api_client.v2.model.llm_obs_patterns_runs_response import LLMObsPatternsRunsResponse
+from datadog_api_client.v2.model.llm_obs_patterns_trigger_response import LLMObsPatternsTriggerResponse
+from datadog_api_client.v2.model.llm_obs_patterns_trigger_request import LLMObsPatternsTriggerRequest
+from datadog_api_client.v2.model.llm_obs_patterns_run_status_response import LLMObsPatternsRunStatusResponse
+from datadog_api_client.v2.model.llm_obs_patterns_topics_response import LLMObsPatternsTopicsResponse
+from datadog_api_client.v2.model.llm_obs_patterns_topics_with_clustered_points_response import LLMObsPatternsTopicsWithClusteredPointsResponse
+from datadog_api_client.v2.model.llm_obs_datasets_response import LLMObsDatasetsResponse
+from datadog_api_client.v2.model.llm_obs_dataset_response import LLMObsDatasetResponse
+from datadog_api_client.v2.model.llm_obs_dataset_request import LLMObsDatasetRequest
+from datadog_api_client.v2.model.llm_obs_delete_datasets_request import LLMObsDeleteDatasetsRequest
+from datadog_api_client.v2.model.llm_obs_dataset_update_request import LLMObsDatasetUpdateRequest
+from datadog_api_client.v2.model.llm_obs_dataset_records_mutation_response import LLMObsDatasetRecordsMutationResponse
+from datadog_api_client.v2.model.llm_obs_dataset_batch_update_request import LLMObsDatasetBatchUpdateRequest
+from datadog_api_client.v2.model.llm_obs_dataset_clone_request import LLMObsDatasetCloneRequest
+from datadog_api_client.v2.model.llm_obs_dataset_draft_state_response import LLMObsDatasetDraftStateResponse
+from datadog_api_client.v2.model.llm_obs_dataset_export_format import LLMObsDatasetExportFormat
+from datadog_api_client.v2.model.llm_obs_dataset_records_list_response import LLMObsDatasetRecordsListResponse
+from datadog_api_client.v2.model.llm_obs_dataset_records_update_request import LLMObsDatasetRecordsUpdateRequest
+from datadog_api_client.v2.model.llm_obs_dataset_records_request import LLMObsDatasetRecordsRequest
+from datadog_api_client.v2.model.llm_obs_delete_dataset_records_request import LLMObsDeleteDatasetRecordsRequest
+from datadog_api_client.v2.model.llm_obs_dataset_restore_version_request import LLMObsDatasetRestoreVersionRequest
+from datadog_api_client.v2.model.llm_obs_dataset_versions_response import LLMObsDatasetVersionsResponse
+from datadog_api_client.v2.model.llm_obs_experiment_events_v2_response import LLMObsExperimentEventsV2Response
+from datadog_api_client.v2.model.llm_obs_dataset_records_upload_file import LLMObsDatasetRecordsUploadFile
+
+
+class LLMObservabilityApi:
+ """
+ Manage LLM Observability spans, data, projects, datasets, dataset records, experiments, prompts, and annotations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._aggregate_llm_obs_experimentation_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentationAnalyticsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experimentation/analytics",
+ "operation_id": "aggregate_llm_obs_experimentation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsExperimentationAnalyticsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._batch_update_llm_obs_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetRecordsMutationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/batch_update",
+ "operation_id": "batch_update_llm_obs_dataset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetBatchUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._clone_llm_obs_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/clone",
+ "operation_id": "clone_llm_obs_dataset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetCloneRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_annotation_queue_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationQueueResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues",
+ "operation_id": "create_llm_obs_annotation_queue",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsAnnotationQueueRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_annotation_queue_interactions_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationQueueInteractionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/interactions",
+ "operation_id": "create_llm_obs_annotation_queue_interactions",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsAnnotationQueueInteractionsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets",
+ "operation_id": "create_llm_obs_dataset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_dataset_records_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetRecordsMutationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/records",
+ "operation_id": "create_llm_obs_dataset_records",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetRecordsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_experiment_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experiments",
+ "operation_id": "create_llm_obs_experiment",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsExperimentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_experiment_events_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experiments/{experiment_id}/events",
+ "operation_id": "create_llm_obs_experiment_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "experiment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "experiment_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsExperimentEventsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_integration_inference_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsIntegrationInferenceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/integrations/{integration}/{account_id}/inference",
+ "operation_id": "create_llm_obs_integration_inference",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "integration": {
+ "required": True,
+ "openapi_types": (LLMObsIntegrationName,),
+ "attribute": "integration",
+ "location": "path",
+ },
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsIntegrationInferenceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsProjectResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/projects",
+ "operation_id": "create_llm_obs_project",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsProjectRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_prompt_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts",
+ "operation_id": "create_llm_obs_prompt",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsCreatePromptRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_llm_obs_prompt_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptVersionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}/versions",
+ "operation_id": "create_llm_obs_prompt_version",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsCreatePromptVersionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_annotation_queue_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}",
+ "operation_id": "delete_llm_obs_annotation_queue",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_annotation_queue_interactions_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/interactions/delete",
+ "operation_id": "delete_llm_obs_annotation_queue_interactions",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDeleteAnnotationQueueInteractionsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_annotations_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDeleteAnnotationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotations/delete",
+ "operation_id": "delete_llm_obs_annotations",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDeleteAnnotationsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_custom_eval_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/llm-obs/config/evaluators/custom/{eval_name}",
+ "operation_id": "delete_llm_obs_custom_eval_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "eval_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "eval_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_data_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDataDeletionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/deletion/data/llmobs",
+ "operation_id": "delete_llm_obs_data",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDataDeletionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_dataset_records_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/records/delete",
+ "operation_id": "delete_llm_obs_dataset_records",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDeleteDatasetRecordsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_datasets_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/delete",
+ "operation_id": "delete_llm_obs_datasets",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDeleteDatasetsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_experiments_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experiments/delete",
+ "operation_id": "delete_llm_obs_experiments",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDeleteExperimentsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_patterns_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs/{config_id}",
+ "operation_id": "delete_llm_obs_patterns_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_projects_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/projects/delete",
+ "operation_id": "delete_llm_obs_projects",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDeleteProjectsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_llm_obs_prompt_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDeletedPromptResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}",
+ "operation_id": "delete_llm_obs_prompt",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._export_llm_obs_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (str,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/export",
+ "operation_id": "export_llm_obs_dataset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "format": {
+ "openapi_types": (LLMObsDatasetExportFormat,),
+ "attribute": "format",
+ "location": "query",
+ },
+ "version": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["text/csv", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_annotated_interactions_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotatedInteractionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotated-interactions",
+ "operation_id": "get_llm_obs_annotated_interactions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_annotated_interactions_by_trace_i_ds_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotatedInteractionsByTraceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotated-interactions",
+ "operation_id": "get_llm_obs_annotated_interactions_by_trace_i_ds",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "content_ids": {
+ "required": True,
+ "openapi_types": ([str],),
+ "attribute": "contentIds",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "offset": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_annotation_queue_label_schema_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationQueueLabelSchemaResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/label-schema",
+ "operation_id": "get_llm_obs_annotation_queue_label_schema",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_custom_eval_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsCustomEvalConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/llm-obs/config/evaluators/custom/{eval_name}",
+ "operation_id": "get_llm_obs_custom_eval_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "eval_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "eval_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_dataset_draft_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetDraftStateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/draft_state",
+ "operation_id": "get_llm_obs_dataset_draft_state",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_patterns_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs/latest",
+ "operation_id": "get_llm_obs_patterns_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_patterns_run_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsRunStatusResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-runs/status",
+ "operation_id": "get_llm_obs_patterns_run_status",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_prompt_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptSDKResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}",
+ "operation_id": "get_llm_obs_prompt",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ "label": {
+ "openapi_types": (str,),
+ "attribute": "label",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_llm_obs_prompt_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptVersionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}/versions/{version}",
+ "operation_id": "get_llm_obs_prompt_version",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "version",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_annotation_queues_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationQueuesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues",
+ "operation_id": "list_llm_obs_annotation_queues",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "openapi_types": (str,),
+ "attribute": "projectId",
+ "location": "query",
+ },
+ "queue_ids": {
+ "openapi_types": ([str],),
+ "attribute": "queueIds",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_custom_eval_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsCustomEvalConfigListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/llm-obs/config/evaluators/custom",
+ "operation_id": "list_llm_obs_custom_eval_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_dataset_records_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetRecordsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/records",
+ "operation_id": "list_llm_obs_dataset_records",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "filter_version": {
+ "openapi_types": (int,),
+ "attribute": "filter[version]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_datasets_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets",
+ "operation_id": "list_llm_obs_datasets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_dataset_versions_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetVersionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/versions",
+ "operation_id": "list_llm_obs_dataset_versions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_experiment_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentEventsV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v3/experiments/{experiment_id}/events",
+ "operation_id": "list_llm_obs_experiment_events",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "experiment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "experiment_id",
+ "location": "path",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_experiment_events_v1_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentSpansResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experiments/{experiment_id}/events",
+ "operation_id": "list_llm_obs_experiment_events_v1",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "experiment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "experiment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_experiment_events_v2_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentEventsV2Response,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v2/experiments/{experiment_id}/events",
+ "operation_id": "list_llm_obs_experiment_events_v2",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "experiment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "experiment_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_experiments_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experiments",
+ "operation_id": "list_llm_obs_experiments",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_project_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[project_id]",
+ "location": "query",
+ },
+ "filter_dataset_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[dataset_id]",
+ "location": "query",
+ },
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "filter_experiment": {
+ "openapi_types": (str,),
+ "attribute": "filter[experiment]",
+ "location": "query",
+ },
+ "filter_metadata": {
+ "openapi_types": (str,),
+ "attribute": "filter[metadata]",
+ "location": "query",
+ },
+ "filter_parent_experiment_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[parent_experiment_id]",
+ "location": "query",
+ },
+ "filter_is_deleted": {
+ "openapi_types": (bool,),
+ "attribute": "filter[is_deleted]",
+ "location": "query",
+ },
+ "include_user_data": {
+ "openapi_types": (bool,),
+ "attribute": "include[user_data]",
+ "location": "query",
+ },
+ "include_dataset_names": {
+ "openapi_types": (bool,),
+ "attribute": "include[dataset_names]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 5000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_integration_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": ([LLMObsIntegrationAccount],),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/integrations/{integration}/accounts",
+ "operation_id": "list_llm_obs_integration_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "integration": {
+ "required": True,
+ "openapi_types": (LLMObsIntegrationName,),
+ "attribute": "integration",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_integration_models_endpoint = _Endpoint(
+ settings={
+ "response_type": ([LLMObsIntegrationModel],),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/integrations/{integration}/{account_id}/models",
+ "operation_id": "list_llm_obs_integration_models",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "integration": {
+ "required": True,
+ "openapi_types": (LLMObsIntegrationName,),
+ "attribute": "integration",
+ "location": "path",
+ },
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_patterns_clustered_points_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsClusteredPointsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-clustered-points",
+ "operation_id": "list_llm_obs_patterns_clustered_points",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "topic_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "topic_id",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page_size",
+ "location": "query",
+ },
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page_token",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_patterns_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs",
+ "operation_id": "list_llm_obs_patterns_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_patterns_runs_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsRunsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-runs",
+ "operation_id": "list_llm_obs_patterns_runs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_patterns_topics_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsTopicsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-topics",
+ "operation_id": "list_llm_obs_patterns_topics",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "query",
+ },
+ "run_id": {
+ "openapi_types": (str,),
+ "attribute": "run_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_patterns_topics_with_clustered_points_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsTopicsWithClusteredPointsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-topics/with-cluster-points",
+ "operation_id": "list_llm_obs_patterns_topics_with_clustered_points",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "query",
+ },
+ "run_id": {
+ "openapi_types": (str,),
+ "attribute": "run_id",
+ "location": "query",
+ },
+ "include_metrics": {
+ "openapi_types": (bool,),
+ "attribute": "include_metrics",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_projects_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsProjectsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/projects",
+ "operation_id": "list_llm_obs_projects",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_prompts_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts",
+ "operation_id": "list_llm_obs_prompts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_prompt_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[prompt_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_prompt_versions_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptVersionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}/versions",
+ "operation_id": "list_llm_obs_prompt_versions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_llm_obs_spans_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsSpansResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/spans/events",
+ "operation_id": "list_llm_obs_spans",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_from": {
+ "openapi_types": (str,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (str,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_span_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[span_id]",
+ "location": "query",
+ },
+ "filter_trace_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[trace_id]",
+ "location": "query",
+ },
+ "filter_span_kind": {
+ "openapi_types": (str,),
+ "attribute": "filter[span_kind]",
+ "location": "query",
+ },
+ "filter_span_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[span_name]",
+ "location": "query",
+ },
+ "filter_ml_app": {
+ "openapi_types": (str,),
+ "attribute": "filter[ml_app]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "include_attachments": {
+ "openapi_types": (bool,),
+ "attribute": "include_attachments",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._lock_llm_obs_dataset_draft_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetDraftStateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/draft_state/lock",
+ "operation_id": "lock_llm_obs_dataset_draft_state",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._restore_llm_obs_dataset_version_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/restore",
+ "operation_id": "restore_llm_obs_dataset_version",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetRestoreVersionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_llm_obs_experimentation_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentationSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experimentation/search",
+ "operation_id": "search_llm_obs_experimentation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsExperimentationSearchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_llm_obs_spans_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsSpansResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/spans/events/search",
+ "operation_id": "search_llm_obs_spans",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsSearchSpansRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._simple_search_llm_obs_experimentation_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentationSimpleSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experimentation/simple-search",
+ "operation_id": "simple_search_llm_obs_experimentation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsExperimentationSimpleSearchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._trigger_llm_obs_patterns_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsTriggerResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-runs",
+ "operation_id": "trigger_llm_obs_patterns",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsPatternsTriggerRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._unlock_llm_obs_dataset_draft_state_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/draft_state/unlock",
+ "operation_id": "unlock_llm_obs_dataset_draft_state",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_annotation_queue_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationQueueResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}",
+ "operation_id": "update_llm_obs_annotation_queue",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsAnnotationQueueUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_annotation_queue_label_schema_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationQueueLabelSchemaResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/label-schema",
+ "operation_id": "update_llm_obs_annotation_queue_label_schema",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsAnnotationQueueLabelSchemaUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_custom_eval_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/unstable/llm-obs/config/evaluators/custom/{eval_name}",
+ "operation_id": "update_llm_obs_custom_eval_config",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "eval_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "eval_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsCustomEvalConfigUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}",
+ "operation_id": "update_llm_obs_dataset",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_dataset_records_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsDatasetRecordsMutationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/{project_id}/datasets/{dataset_id}/records",
+ "operation_id": "update_llm_obs_dataset_records",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsDatasetRecordsUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_experiment_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsExperimentResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/experiments/{experiment_id}",
+ "operation_id": "update_llm_obs_experiment",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "experiment_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "experiment_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsExperimentUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsProjectResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/projects/{project_id}",
+ "operation_id": "update_llm_obs_project",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsProjectUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_prompt_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}",
+ "operation_id": "update_llm_obs_prompt",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsUpdatePromptRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_llm_obs_prompt_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPromptVersionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/prompts/{prompt_id}/versions/{version}",
+ "operation_id": "update_llm_obs_prompt_version",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "prompt_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "prompt_id",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "version",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsUpdatePromptVersionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upload_llm_obs_dataset_records_file_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v2/{project_id}/datasets/{dataset_id}/records/upload",
+ "operation_id": "upload_llm_obs_dataset_records_file",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "deduplicate": {
+ "openapi_types": (bool,),
+ "attribute": "deduplicate",
+ "location": "query",
+ },
+ "overwrite": {
+ "openapi_types": (bool,),
+ "attribute": "overwrite",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": ([str],),
+ "attribute": "tags",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "include_user_data": {
+ "openapi_types": (bool,),
+ "attribute": "include[user_data]",
+ "location": "query",
+ },
+ "file": {
+ "openapi_types": (file_type,),
+ "attribute": "file",
+ "location": "form",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["multipart/form-data"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_llm_obs_annotations_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsAnnotationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/annotation-queues/{queue_id}/annotations",
+ "operation_id": "upsert_llm_obs_annotations",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "queue_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "queue_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsAnnotationsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_llm_obs_patterns_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (LLMObsPatternsConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/llm-obs/v1/topic-discovery-configs",
+ "operation_id": "upsert_llm_obs_patterns_config",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LLMObsPatternsConfigUpsertRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def aggregate_llm_obs_experimentation(self, body: LLMObsExperimentationAnalyticsRequest, ) -> LLMObsExperimentationAnalyticsResponse:
+ """Aggregate LLM Observability experimentation.
+
+ Execute an analytics aggregation over LLM Observability experimentation data.
+ Use this endpoint to compute metrics (for example average eval scores) grouped by fields such as ``span_id`` or ``experiment_id``.
+
+ At least one ``compute`` definition and one ``index`` must be provided.
+
+ :param body: Analytics payload.
+ :type body: LLMObsExperimentationAnalyticsRequest
+ :rtype: LLMObsExperimentationAnalyticsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_llm_obs_experimentation_endpoint.call_with_http_info(**kwargs)
+
+ def batch_update_llm_obs_dataset(self, project_id: str, dataset_id: str, body: LLMObsDatasetBatchUpdateRequest, ) -> LLMObsDatasetRecordsMutationResponse:
+ """Batch update LLM Observability dataset records.
+
+ Insert, update, and delete records in a single dataset operation. By default, a new dataset version is created when the batch is applied.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param body: Batch update payload.
+ :type body: LLMObsDatasetBatchUpdateRequest
+ :rtype: LLMObsDatasetRecordsMutationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._batch_update_llm_obs_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def clone_llm_obs_dataset(self, project_id: str, dataset_id: str, body: LLMObsDatasetCloneRequest, ) -> LLMObsDatasetResponse:
+ """Clone an LLM Observability dataset.
+
+ Clone a dataset, copying its current records into a new dataset within the same project.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the source LLM Observability dataset to clone.
+ :type dataset_id: str
+ :param body: Clone dataset payload.
+ :type body: LLMObsDatasetCloneRequest
+ :rtype: LLMObsDatasetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._clone_llm_obs_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_annotation_queue(self, body: LLMObsAnnotationQueueRequest, ) -> LLMObsAnnotationQueueResponse:
+ """Create an LLM Observability annotation queue.
+
+ Create an annotation queue. The ``name`` and ``project_id`` fields are required.
+ An optional ``annotation_schema`` can be provided to define the labels for the queue.
+ Fields such as ``created_by`` , ``owned_by`` , ``created_at`` , ``modified_by`` ,
+ and ``modified_at`` are inferred by the backend.
+
+ :param body: Create annotation queue payload.
+ :type body: LLMObsAnnotationQueueRequest
+ :rtype: LLMObsAnnotationQueueResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_llm_obs_annotation_queue_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_annotation_queue_interactions(self, queue_id: str, body: LLMObsAnnotationQueueInteractionsRequest, ) -> LLMObsAnnotationQueueInteractionsResponse:
+ """Add annotation queue interactions.
+
+ Add one or more interactions to an annotation queue. At least one
+ interaction must be provided. Each interaction has a ``type`` :
+
+ * ``trace`` , ``experiment_trace`` , ``session`` : ``content_id`` references the
+ upstream entity; the server fetches the actual content.
+ * ``display_block`` : omit ``content_id`` and provide the rendered content
+ in ``display_block``. The server generates ``content_id`` as a
+ deterministic hash of the block list.
+
+ Items of different types can be mixed in a single request.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :param body: Add interactions payload.
+ :type body: LLMObsAnnotationQueueInteractionsRequest
+ :rtype: LLMObsAnnotationQueueInteractionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ kwargs["body"] = body
+
+ return self._create_llm_obs_annotation_queue_interactions_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_dataset(self, project_id: str, body: LLMObsDatasetRequest, ) -> LLMObsDatasetResponse:
+ """Create an LLM Observability dataset.
+
+ Create a new LLM Observability dataset within the specified project.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param body: Create dataset payload.
+ :type body: LLMObsDatasetRequest
+ :rtype: LLMObsDatasetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._create_llm_obs_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_dataset_records(self, project_id: str, dataset_id: str, body: LLMObsDatasetRecordsRequest, ) -> LLMObsDatasetRecordsMutationResponse:
+ """Append records to an LLM Observability dataset.
+
+ Append one or more records to an LLM Observability dataset.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param body: Append records payload.
+ :type body: LLMObsDatasetRecordsRequest
+ :rtype: LLMObsDatasetRecordsMutationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._create_llm_obs_dataset_records_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_experiment(self, body: LLMObsExperimentRequest, ) -> LLMObsExperimentResponse:
+ """Create an LLM Observability experiment.
+
+ Create a new LLM Observability experiment.
+
+ :param body: Create experiment payload.
+ :type body: LLMObsExperimentRequest
+ :rtype: LLMObsExperimentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_llm_obs_experiment_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_experiment_events(self, experiment_id: str, body: LLMObsExperimentEventsRequest, ) -> None:
+ """Push events for an LLM Observability experiment.
+
+ Push spans and metrics for an LLM Observability experiment.
+
+ :param experiment_id: The ID of the LLM Observability experiment.
+ :type experiment_id: str
+ :param body: Experiment events payload.
+ :type body: LLMObsExperimentEventsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["experiment_id"] = experiment_id
+
+ kwargs["body"] = body
+
+ return self._create_llm_obs_experiment_events_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_integration_inference(self, integration: LLMObsIntegrationName, account_id: str, body: LLMObsIntegrationInferenceRequest, ) -> LLMObsIntegrationInferenceResponse:
+ """Run an LLM inference.
+
+ Run an LLM inference request through the specified integration and account, returning the model response and token usage.
+
+ :param integration: The name of the LLM integration.
+ :type integration: LLMObsIntegrationName
+ :param account_id: The ID of the integration account.
+ :type account_id: str
+ :param body: Inference request parameters.
+ :type body: LLMObsIntegrationInferenceRequest
+ :rtype: LLMObsIntegrationInferenceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration"] = integration
+
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._create_llm_obs_integration_inference_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_project(self, body: LLMObsProjectRequest, ) -> LLMObsProjectResponse:
+ """Create an LLM Observability project.
+
+ Create a new LLM Observability project. Returns the existing project if a name conflict occurs.
+
+ :param body: Create project payload.
+ :type body: LLMObsProjectRequest
+ :rtype: LLMObsProjectResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_llm_obs_project_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_prompt(self, body: LLMObsCreatePromptRequest, ) -> LLMObsPromptResponse:
+ """Create an LLM Observability prompt.
+
+ Create a new prompt (and its first version) in the LLM Observability prompt registry.
+
+ :param body: Create prompt payload.
+ :type body: LLMObsCreatePromptRequest
+ :rtype: LLMObsPromptResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_llm_obs_prompt_endpoint.call_with_http_info(**kwargs)
+
+ def create_llm_obs_prompt_version(self, prompt_id: str, body: LLMObsCreatePromptVersionRequest, ) -> LLMObsPromptVersionResponse:
+ """Create a new LLM Observability prompt version.
+
+ Create a new version of an existing LLM Observability prompt.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :param body: Create prompt version payload.
+ :type body: LLMObsCreatePromptVersionRequest
+ :rtype: LLMObsPromptVersionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ kwargs["body"] = body
+
+ return self._create_llm_obs_prompt_version_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_annotation_queue(self, queue_id: str, ) -> None:
+ """Delete an LLM Observability annotation queue.
+
+ Delete an annotation queue by its ID.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ return self._delete_llm_obs_annotation_queue_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_annotation_queue_interactions(self, queue_id: str, body: LLMObsDeleteAnnotationQueueInteractionsRequest, ) -> None:
+ """Delete annotation queue interactions.
+
+ Delete one or more interactions from an annotation queue.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :param body: Delete interactions payload.
+ :type body: LLMObsDeleteAnnotationQueueInteractionsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_annotation_queue_interactions_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_annotations(self, queue_id: str, body: LLMObsDeleteAnnotationsRequest, ) -> LLMObsDeleteAnnotationsResponse:
+ """Delete annotations.
+
+ Delete one or more annotations from an annotation queue.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :param body: Delete annotations payload.
+ :type body: LLMObsDeleteAnnotationsRequest
+ :rtype: LLMObsDeleteAnnotationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_annotations_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_custom_eval_config(self, eval_name: str, ) -> None:
+ """Delete a custom evaluator configuration.
+
+ Delete a custom LLM Observability evaluator configuration by its name.
+
+ :param eval_name: The name of the custom LLM Observability evaluator configuration.
+ :type eval_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["eval_name"] = eval_name
+
+ return self._delete_llm_obs_custom_eval_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_data(self, body: LLMObsDataDeletionRequest, ) -> LLMObsDataDeletionResponse:
+ """Delete LLM Observability data.
+
+ Submit a request to delete LLM Observability span data matching a trace ID filter within a specified time range.
+
+ :param body: Data deletion request payload.
+ :type body: LLMObsDataDeletionRequest
+ :rtype: LLMObsDataDeletionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_data_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_dataset_records(self, project_id: str, dataset_id: str, body: LLMObsDeleteDatasetRecordsRequest, ) -> None:
+ """Delete LLM Observability dataset records.
+
+ Delete one or more records from an LLM Observability dataset.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param body: Delete records payload.
+ :type body: LLMObsDeleteDatasetRecordsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_dataset_records_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_datasets(self, project_id: str, body: LLMObsDeleteDatasetsRequest, ) -> None:
+ """Delete LLM Observability datasets.
+
+ Delete one or more LLM Observability datasets within the specified project.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param body: Delete datasets payload.
+ :type body: LLMObsDeleteDatasetsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_datasets_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_experiments(self, body: LLMObsDeleteExperimentsRequest, ) -> None:
+ """Delete LLM Observability experiments.
+
+ Delete one or more LLM Observability experiments.
+
+ :param body: Delete experiments payload.
+ :type body: LLMObsDeleteExperimentsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_experiments_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_patterns_config(self, config_id: str, ) -> None:
+ """Delete a patterns configuration.
+
+ Delete a patterns configuration by its ID.
+
+ :param config_id: The ID of the patterns configuration.
+ :type config_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ return self._delete_llm_obs_patterns_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_projects(self, body: LLMObsDeleteProjectsRequest, ) -> None:
+ """Delete LLM Observability projects.
+
+ Delete one or more LLM Observability projects.
+
+ :param body: Delete projects payload.
+ :type body: LLMObsDeleteProjectsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_llm_obs_projects_endpoint.call_with_http_info(**kwargs)
+
+ def delete_llm_obs_prompt(self, prompt_id: str, ) -> LLMObsDeletedPromptResponse:
+ """Delete an LLM Observability prompt.
+
+ Soft-delete an LLM Observability prompt. The prompt's version rows are retained, but they are no longer accessible through the public prompt registry endpoints.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :rtype: LLMObsDeletedPromptResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ return self._delete_llm_obs_prompt_endpoint.call_with_http_info(**kwargs)
+
+ def export_llm_obs_dataset(self, project_id: str, dataset_id: str, *, format: Union[LLMObsDatasetExportFormat, UnsetType]=unset, version: Union[int, UnsetType]=unset, ) -> str:
+ """Export an LLM Observability dataset.
+
+ Download the contents of a dataset as a CSV file. The download is streamed and includes one row per dataset record.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param format: Export format for the dataset contents. Only ``csv`` is currently supported.
+ :type format: LLMObsDatasetExportFormat, optional
+ :param version: Version of the dataset to export. If omitted, the current version is used. Must be between 0 and the current version of the dataset, inclusive.
+ :type version: int, optional
+ :rtype: str
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ if format is not unset:
+ kwargs["format"] = format
+
+ if version is not unset:
+ kwargs["version"] = version
+
+ return self._export_llm_obs_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_annotated_interactions(self, queue_id: str, ) -> LLMObsAnnotatedInteractionsResponse:
+ """Get annotated queue interactions.
+
+ Retrieve all interactions (traces and sessions) and their annotations for a given annotation queue.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :rtype: LLMObsAnnotatedInteractionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ return self._get_llm_obs_annotated_interactions_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_annotated_interactions_by_trace_i_ds(self, content_ids: List[str], *, offset: Union[int, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> LLMObsAnnotatedInteractionsByTraceResponse:
+ """Get annotated interactions by content IDs.
+
+ Returns annotated interactions across all annotation queues for the given content IDs.
+ Results include queue metadata (ID and name) for each interaction.
+
+ :param content_ids: One or more content IDs to retrieve annotated interactions for. At least one is required.
+ :type content_ids: [str]
+ :param offset: Pagination offset. Must be >= 0. Defaults to 0.
+ :type offset: int, optional
+ :param limit: Maximum number of results to return. Must be > 0. Defaults to 100.
+ :type limit: int, optional
+ :rtype: LLMObsAnnotatedInteractionsByTraceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["content_ids"] = content_ids
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._get_llm_obs_annotated_interactions_by_trace_i_ds_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_annotation_queue_label_schema(self, queue_id: str, ) -> LLMObsAnnotationQueueLabelSchemaResponse:
+ """Get annotation queue label schema.
+
+ Retrieve the label schema for a given annotation queue.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :rtype: LLMObsAnnotationQueueLabelSchemaResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ return self._get_llm_obs_annotation_queue_label_schema_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_custom_eval_config(self, eval_name: str, ) -> LLMObsCustomEvalConfigResponse:
+ """Get a custom evaluator configuration.
+
+ Retrieve a custom LLM Observability evaluator configuration by its name.
+
+ :param eval_name: The name of the custom LLM Observability evaluator configuration.
+ :type eval_name: str
+ :rtype: LLMObsCustomEvalConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["eval_name"] = eval_name
+
+ return self._get_llm_obs_custom_eval_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_dataset_draft_state(self, project_id: str, dataset_id: str, ) -> LLMObsDatasetDraftStateResponse:
+ """Get LLM Observability dataset draft state.
+
+ Retrieve the draft state of a dataset, including whether it is currently locked for editing and which user holds the lock.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :rtype: LLMObsDatasetDraftStateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ return self._get_llm_obs_dataset_draft_state_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_patterns_config(self, ) -> LLMObsPatternsConfigResponse:
+ """Get a patterns configuration.
+
+ Retrieve the patterns configuration for the organization.
+
+ :rtype: LLMObsPatternsConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_llm_obs_patterns_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_patterns_run_status(self, config_id: str, ) -> LLMObsPatternsRunStatusResponse:
+ """Get patterns run status.
+
+ Retrieve the status and step-by-step progress of the current or most recent
+ patterns run for a configuration.
+
+ :param config_id: The ID of the patterns configuration.
+ :type config_id: str
+ :rtype: LLMObsPatternsRunStatusResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ return self._get_llm_obs_patterns_run_status_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_prompt(self, prompt_id: str, *, label: Union[str, UnsetType]=unset, ) -> LLMObsPromptSDKResponse:
+ """Get an LLM Observability prompt.
+
+ Get the latest version of an LLM Observability prompt by prompt ID.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :param label: **Deprecated.** Optional label of the prompt version to return. Do not use this parameter for new integrations. If omitted, the latest version is returned. If the prompt has no labels, the latest version is returned even when a label is requested. If the prompt has labels but none match the requested label, a 404 response is returned.
+ :type label: str, optional
+ :rtype: LLMObsPromptSDKResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ if label is not unset:
+ kwargs["label"] = label
+
+ return self._get_llm_obs_prompt_endpoint.call_with_http_info(**kwargs)
+
+ def get_llm_obs_prompt_version(self, prompt_id: str, version: int, ) -> LLMObsPromptVersionResponse:
+ """Get a specific LLM Observability prompt version.
+
+ Get the full template of a single, specific version of an LLM Observability prompt.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :param version: The version number of the LLM Observability prompt.
+ :type version: int
+ :rtype: LLMObsPromptVersionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ kwargs["version"] = version
+
+ return self._get_llm_obs_prompt_version_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_annotation_queues(self, *, project_id: Union[str, UnsetType]=unset, queue_ids: Union[List[str], UnsetType]=unset, ) -> LLMObsAnnotationQueuesResponse:
+ """List LLM Observability annotation queues.
+
+ List annotation queues. Optionally filter by project ID or queue IDs. These parameters are mutually exclusive.
+ If neither is provided, all queues in the organization are returned.
+
+ :param project_id: Filter annotation queues by project ID. Cannot be used together with ``queueIds``.
+ :type project_id: str, optional
+ :param queue_ids: Filter annotation queues by queue IDs (comma-separated). Cannot be used together with ``projectId``.
+ :type queue_ids: [str], optional
+ :rtype: LLMObsAnnotationQueuesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if project_id is not unset:
+ kwargs["project_id"] = project_id
+
+ if queue_ids is not unset:
+ kwargs["queue_ids"] = queue_ids
+
+ return self._list_llm_obs_annotation_queues_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_custom_eval_configs(self, ) -> LLMObsCustomEvalConfigListResponse:
+ """List custom evaluator configurations.
+
+ List all custom LLM Observability evaluator configurations for the organization.
+
+ :rtype: LLMObsCustomEvalConfigListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_llm_obs_custom_eval_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_dataset_records(self, project_id: str, dataset_id: str, *, filter_version: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> LLMObsDatasetRecordsListResponse:
+ """List LLM Observability dataset records.
+
+ List all records in an LLM Observability dataset, sorted by creation date, newest first.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param filter_version: Retrieve records from a specific dataset version. Defaults to the current version.
+ :type filter_version: int, optional
+ :param page_cursor: Use the Pagination cursor to retrieve the next page of results.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of results to return per page.
+ :type page_limit: int, optional
+ :rtype: LLMObsDatasetRecordsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ if filter_version is not unset:
+ kwargs["filter_version"] = filter_version
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_llm_obs_dataset_records_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_datasets(self, project_id: str, *, filter_name: Union[str, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> LLMObsDatasetsResponse:
+ """List LLM Observability datasets.
+
+ List all LLM Observability datasets for a project, sorted by creation date, newest first.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param filter_name: Filter datasets by name.
+ :type filter_name: str, optional
+ :param filter_id: Filter datasets by dataset ID.
+ :type filter_id: str, optional
+ :param page_cursor: Use the Pagination cursor to retrieve the next page of results.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of results to return per page.
+ :type page_limit: int, optional
+ :rtype: LLMObsDatasetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_llm_obs_datasets_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_dataset_versions(self, project_id: str, dataset_id: str, ) -> LLMObsDatasetVersionsResponse:
+ """List LLM Observability dataset versions.
+
+ List the active versions of a dataset. A version is created each time a dataset is referenced by an experiment run.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :rtype: LLMObsDatasetVersionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ return self._list_llm_obs_dataset_versions_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_experiment_events(self, experiment_id: str, *, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> LLMObsExperimentEventsV2Response:
+ """List events for an LLM Observability experiment.
+
+ Retrieve spans and experiment-level summary metrics for a given experiment with cursor-based pagination.
+
+ :param experiment_id: The ID of the LLM Observability experiment.
+ :type experiment_id: str
+ :param page_limit: Maximum number of spans to return per page. Defaults to 5000.
+ :type page_limit: int, optional
+ :param page_cursor: Opaque cursor from a previous response to fetch the next page of results.
+ :type page_cursor: str, optional
+ :rtype: LLMObsExperimentEventsV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["experiment_id"] = experiment_id
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._list_llm_obs_experiment_events_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_experiment_events_v1(self, experiment_id: str, ) -> LLMObsExperimentSpansResponse:
+ """List LLM Observability experiment spans (v1). **Deprecated**.
+
+ Retrieve spans with their evaluation metrics for a given experiment. Returns spans only, with no summary metrics and no pagination. Deprecated in favor of ``ListLLMObsExperimentEventsV3``.
+
+ :param experiment_id: The ID of the LLM Observability experiment.
+ :type experiment_id: str
+ :rtype: LLMObsExperimentSpansResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["experiment_id"] = experiment_id
+
+ warnings.warn("list_llm_obs_experiment_events_v1 is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_llm_obs_experiment_events_v1_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_experiment_events_v2(self, experiment_id: str, ) -> LLMObsExperimentEventsV2Response:
+ """List LLM Observability experiment events (v2). **Deprecated**.
+
+ Retrieve spans and experiment-level summary metrics for a given experiment. Returns the full events payload without pagination. Deprecated: use ``ListLLMObsExperimentEventsV3`` instead.
+
+ :param experiment_id: The ID of the LLM Observability experiment.
+ :type experiment_id: str
+ :rtype: LLMObsExperimentEventsV2Response
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["experiment_id"] = experiment_id
+
+ warnings.warn("list_llm_obs_experiment_events_v2 is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_llm_obs_experiment_events_v2_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_experiments(self, *, filter_project_id: Union[str, UnsetType]=unset, filter_dataset_id: Union[str, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, filter_experiment: Union[str, UnsetType]=unset, filter_metadata: Union[str, UnsetType]=unset, filter_parent_experiment_id: Union[str, UnsetType]=unset, filter_is_deleted: Union[bool, UnsetType]=unset, include_user_data: Union[bool, UnsetType]=unset, include_dataset_names: Union[bool, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> LLMObsExperimentsResponse:
+ """List LLM Observability experiments.
+
+ List all LLM Observability experiments sorted by creation date, newest first.
+
+ :param filter_project_id: Filter experiments by project ID. Required if ``filter[dataset_id]`` is not provided.
+ :type filter_project_id: str, optional
+ :param filter_dataset_id: Filter experiments by dataset ID.
+ :type filter_dataset_id: str, optional
+ :param filter_id: Filter experiments by experiment ID. Can be specified multiple times.
+ :type filter_id: str, optional
+ :param filter_name: Filter experiments by their exact run name.
+ :type filter_name: str, optional
+ :param filter_experiment: Filter by logical experiment name. This is the ``name`` field set when creating an experiment through ``POST /experiments``. Returns all experiment runs that share the same name, enabling cross-commit and cross-branch comparisons.
+ :type filter_experiment: str, optional
+ :param filter_metadata: Filter by JSONB metadata containment. Provide a JSON object string where
+ experiments whose metadata contains all specified key-value pairs are returned.
+ For example: ``{"commit":"abc123","branch":"main"}``.
+ :type filter_metadata: str, optional
+ :param filter_parent_experiment_id: Filter experiments by the ID of their parent (baseline) experiment. Returns all experiments that were run against the given baseline. Can be specified multiple times.
+ :type filter_parent_experiment_id: str, optional
+ :param filter_is_deleted: When ``true`` , return only soft-deleted experiments. Defaults to ``false``.
+ :type filter_is_deleted: bool, optional
+ :param include_user_data: When ``true`` , enrich each experiment with its author's user data in the ``author`` field.
+ :type include_user_data: bool, optional
+ :param include_dataset_names: When ``true`` , enrich each experiment with its dataset name in the ``dataset_name`` field.
+ :type include_dataset_names: bool, optional
+ :param page_cursor: Use the pagination cursor returned in ``meta.after`` to retrieve the next page of results.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of results to return per page. Values above 5000 are clamped
+ to 5000. Defaults to 5000.
+ :type page_limit: int, optional
+ :rtype: LLMObsExperimentsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_project_id is not unset:
+ kwargs["filter_project_id"] = filter_project_id
+
+ if filter_dataset_id is not unset:
+ kwargs["filter_dataset_id"] = filter_dataset_id
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_experiment is not unset:
+ kwargs["filter_experiment"] = filter_experiment
+
+ if filter_metadata is not unset:
+ kwargs["filter_metadata"] = filter_metadata
+
+ if filter_parent_experiment_id is not unset:
+ kwargs["filter_parent_experiment_id"] = filter_parent_experiment_id
+
+ if filter_is_deleted is not unset:
+ kwargs["filter_is_deleted"] = filter_is_deleted
+
+ if include_user_data is not unset:
+ kwargs["include_user_data"] = include_user_data
+
+ if include_dataset_names is not unset:
+ kwargs["include_dataset_names"] = include_dataset_names
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_llm_obs_experiments_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_integration_accounts(self, integration: LLMObsIntegrationName, ) -> List[LLMObsIntegrationAccount]:
+ """List LLM integration accounts.
+
+ Retrieve the list of configured accounts for the specified LLM provider integration.
+
+ :param integration: The name of the LLM integration.
+ :type integration: LLMObsIntegrationName
+ :rtype: [LLMObsIntegrationAccount]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration"] = integration
+
+ return self._list_llm_obs_integration_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_integration_models(self, integration: LLMObsIntegrationName, account_id: str, ) -> List[LLMObsIntegrationModel]:
+ """List LLM integration models.
+
+ Retrieve the list of models available for the specified LLM provider integration and account.
+
+ :param integration: The name of the LLM integration.
+ :type integration: LLMObsIntegrationName
+ :param account_id: The ID of the integration account.
+ :type account_id: str
+ :rtype: [LLMObsIntegrationModel]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration"] = integration
+
+ kwargs["account_id"] = account_id
+
+ return self._list_llm_obs_integration_models_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_patterns_clustered_points(self, topic_id: str, *, page_size: Union[int, UnsetType]=unset, page_token: Union[str, UnsetType]=unset, ) -> LLMObsPatternsClusteredPointsResponse:
+ """List patterns clustered points.
+
+ List the data points grouped into a topic. For a parent topic, points from all
+ of its leaf topics are returned.
+
+ :param topic_id: The ID of the topic to retrieve clustered points for.
+ :type topic_id: str
+ :param page_size: Maximum number of clustered points to return per page.
+ :type page_size: int, optional
+ :param page_token: Pagination token to retrieve the next page of clustered points.
+ :type page_token: str, optional
+ :rtype: LLMObsPatternsClusteredPointsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["topic_id"] = topic_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ return self._list_llm_obs_patterns_clustered_points_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_patterns_configs(self, ) -> LLMObsPatternsConfigsResponse:
+ """List patterns configurations.
+
+ List all patterns configurations for the organization.
+
+ :rtype: LLMObsPatternsConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_llm_obs_patterns_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_patterns_runs(self, config_id: str, ) -> LLMObsPatternsRunsResponse:
+ """List patterns runs.
+
+ List the completed patterns runs for a configuration.
+
+ :param config_id: The ID of the patterns configuration.
+ :type config_id: str
+ :rtype: LLMObsPatternsRunsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ return self._list_llm_obs_patterns_runs_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_patterns_topics(self, config_id: str, *, run_id: Union[str, UnsetType]=unset, ) -> LLMObsPatternsTopicsResponse:
+ """List patterns topics.
+
+ List the topics discovered by a patterns run. When no run is specified,
+ the most recent completed run is used.
+
+ :param config_id: The ID of the patterns configuration.
+ :type config_id: str
+ :param run_id: The ID of a specific patterns run. Defaults to the most recent completed run.
+ :type run_id: str, optional
+ :rtype: LLMObsPatternsTopicsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ if run_id is not unset:
+ kwargs["run_id"] = run_id
+
+ return self._list_llm_obs_patterns_topics_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_patterns_topics_with_clustered_points(self, config_id: str, *, run_id: Union[str, UnsetType]=unset, include_metrics: Union[bool, UnsetType]=unset, ) -> LLMObsPatternsTopicsWithClusteredPointsResponse:
+ """List patterns topics with clustered points.
+
+ List the topics discovered by a patterns run, with the clustered points attached
+ inline to each leaf topic. When no run is specified, the most recent completed
+ run is used.
+
+ :param config_id: The ID of the patterns configuration.
+ :type config_id: str
+ :param run_id: The ID of a specific patterns run. Defaults to the most recent completed run.
+ :type run_id: str, optional
+ :param include_metrics: When true, enrich each clustered point with span metrics such as status,
+ duration, token counts, estimated cost, and evaluations.
+ :type include_metrics: bool, optional
+ :rtype: LLMObsPatternsTopicsWithClusteredPointsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ if run_id is not unset:
+ kwargs["run_id"] = run_id
+
+ if include_metrics is not unset:
+ kwargs["include_metrics"] = include_metrics
+
+ return self._list_llm_obs_patterns_topics_with_clustered_points_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_projects(self, *, filter_id: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> LLMObsProjectsResponse:
+ """List LLM Observability projects.
+
+ List all LLM Observability projects sorted by creation date, newest first.
+
+ :param filter_id: Filter projects by project ID.
+ :type filter_id: str, optional
+ :param filter_name: Filter projects by name.
+ :type filter_name: str, optional
+ :param page_cursor: Use the Pagination cursor to retrieve the next page of results.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of results to return per page.
+ :type page_limit: int, optional
+ :rtype: LLMObsProjectsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_llm_obs_projects_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_prompts(self, *, filter_prompt_id: Union[str, UnsetType]=unset, ) -> LLMObsPromptsResponse:
+ """List LLM Observability prompts.
+
+ List all LLM Observability prompts in the prompt registry for the organization.
+
+ :param filter_prompt_id: Optional filter for prompts by prompt ID.
+ :type filter_prompt_id: str, optional
+ :rtype: LLMObsPromptsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_prompt_id is not unset:
+ kwargs["filter_prompt_id"] = filter_prompt_id
+
+ return self._list_llm_obs_prompts_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_prompt_versions(self, prompt_id: str, ) -> LLMObsPromptVersionsResponse:
+ """List versions of an LLM Observability prompt.
+
+ List all versions of an LLM Observability prompt, ordered newest to oldest. If the prompt does not exist, is not registered, or is archived, the response contains an empty list.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :rtype: LLMObsPromptVersionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ return self._list_llm_obs_prompt_versions_endpoint.call_with_http_info(**kwargs)
+
+ def list_llm_obs_spans(self, *, filter_from: Union[str, UnsetType]=unset, filter_to: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, filter_span_id: Union[str, UnsetType]=unset, filter_trace_id: Union[str, UnsetType]=unset, filter_span_kind: Union[str, UnsetType]=unset, filter_span_name: Union[str, UnsetType]=unset, filter_ml_app: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, include_attachments: Union[bool, UnsetType]=unset, ) -> LLMObsSpansResponse:
+ """List LLM Observability spans.
+
+ List LLM Observability spans matching the specified filters.
+
+ :param filter_from: Start of the time range. Accepts ISO 8601 or relative format (e.g., ``now-15m`` ). Defaults to ``now-15m``.
+ :type filter_from: str, optional
+ :param filter_to: End of the time range. Accepts ISO 8601 or relative format. Defaults to ``now``.
+ :type filter_to: str, optional
+ :param filter_query: Search query using LLM Observability query syntax. Supports attribute filters using the field:value syntax (e.g. session_id, trace_id, ml_app, meta.span.kind). When provided, structured field filters ( ``filter[span_id]`` , ``filter[trace_id]`` , etc.) are ignored.
+ :type filter_query: str, optional
+ :param filter_span_id: Filter by exact span ID.
+ :type filter_span_id: str, optional
+ :param filter_trace_id: Filter by exact trace ID.
+ :type filter_trace_id: str, optional
+ :param filter_span_kind: Filter by span kind (e.g., llm, agent, tool, task, workflow).
+ :type filter_span_kind: str, optional
+ :param filter_span_name: Filter by span name.
+ :type filter_span_name: str, optional
+ :param filter_ml_app: Filter by ML application name.
+ :type filter_ml_app: str, optional
+ :param page_limit: Maximum number of spans to return. Defaults to ``10``.
+ :type page_limit: int, optional
+ :param page_cursor: Cursor from the previous response to retrieve the next page.
+ :type page_cursor: str, optional
+ :param sort: Sort order for the results.
+ :type sort: str, optional
+ :param include_attachments: Whether to include attachment data in the response. Defaults to ``true``.
+ :type include_attachments: bool, optional
+ :rtype: LLMObsSpansResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_span_id is not unset:
+ kwargs["filter_span_id"] = filter_span_id
+
+ if filter_trace_id is not unset:
+ kwargs["filter_trace_id"] = filter_trace_id
+
+ if filter_span_kind is not unset:
+ kwargs["filter_span_kind"] = filter_span_kind
+
+ if filter_span_name is not unset:
+ kwargs["filter_span_name"] = filter_span_name
+
+ if filter_ml_app is not unset:
+ kwargs["filter_ml_app"] = filter_ml_app
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if include_attachments is not unset:
+ kwargs["include_attachments"] = include_attachments
+
+ return self._list_llm_obs_spans_endpoint.call_with_http_info(**kwargs)
+
+ def lock_llm_obs_dataset_draft_state(self, project_id: str, dataset_id: str, ) -> LLMObsDatasetDraftStateResponse:
+ """Lock LLM Observability dataset draft state.
+
+ Acquire the draft lock on a dataset for the calling user. The lock prevents other users from concurrently editing the dataset draft.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :rtype: LLMObsDatasetDraftStateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ return self._lock_llm_obs_dataset_draft_state_endpoint.call_with_http_info(**kwargs)
+
+ def restore_llm_obs_dataset_version(self, project_id: str, dataset_id: str, body: LLMObsDatasetRestoreVersionRequest, ) -> None:
+ """Restore an LLM Observability dataset version.
+
+ Restore a dataset to a previous version. The dataset's current version is bumped, and its records are replaced with the records from the specified prior version.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param body: Restore dataset version payload.
+ :type body: LLMObsDatasetRestoreVersionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._restore_llm_obs_dataset_version_endpoint.call_with_http_info(**kwargs)
+
+ def search_llm_obs_experimentation(self, body: LLMObsExperimentationSearchRequest, ) -> LLMObsExperimentationSearchResponse:
+ """Search LLM Observability experimentation entities.
+
+ Search across LLM Observability experimentation entities — projects, datasets, dataset records, experiments, and experiment runs — using cursor-based pagination.
+
+ The ``filter.scope`` field controls which entity types are returned. At least one valid scope must be provided.
+
+ Returns ``200 OK`` when all results fit in a single page. Returns ``206 Partial Content`` with a cursor in ``meta.after`` when additional pages are available.
+
+ :param body: Experimentation search payload.
+ :type body: LLMObsExperimentationSearchRequest
+ :rtype: LLMObsExperimentationSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._search_llm_obs_experimentation_endpoint.call_with_http_info(**kwargs)
+
+ def search_llm_obs_spans(self, body: LLMObsSearchSpansRequest, ) -> LLMObsSpansResponse:
+ """Search LLM Observability spans.
+
+ Search LLM Observability spans using structured filters in the request body.
+
+ :param body: Search spans payload.
+ :type body: LLMObsSearchSpansRequest
+ :rtype: LLMObsSpansResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._search_llm_obs_spans_endpoint.call_with_http_info(**kwargs)
+
+ def simple_search_llm_obs_experimentation(self, body: LLMObsExperimentationSimpleSearchRequest, ) -> LLMObsExperimentationSimpleSearchResponse:
+ """Simple search experimentation entities.
+
+ Search across LLM Observability experimentation entities using offset-based (page-number) pagination.
+ Use this endpoint when you need total page count or want to navigate to a specific page number.
+
+ The ``filter.scope`` field controls which entity types are returned. At least one valid scope must be provided.
+
+ :param body: Simple search payload.
+ :type body: LLMObsExperimentationSimpleSearchRequest
+ :rtype: LLMObsExperimentationSimpleSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._simple_search_llm_obs_experimentation_endpoint.call_with_http_info(**kwargs)
+
+ def trigger_llm_obs_patterns(self, body: LLMObsPatternsTriggerRequest, ) -> LLMObsPatternsTriggerResponse:
+ """Trigger a patterns run.
+
+ Start a patterns run for a given configuration. The run executes asynchronously.
+
+ :param body: Trigger patterns payload.
+ :type body: LLMObsPatternsTriggerRequest
+ :rtype: LLMObsPatternsTriggerResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._trigger_llm_obs_patterns_endpoint.call_with_http_info(**kwargs)
+
+ def unlock_llm_obs_dataset_draft_state(self, project_id: str, dataset_id: str, ) -> None:
+ """Unlock LLM Observability dataset draft state.
+
+ Release the draft lock on a dataset held by the calling user, allowing other users to edit the dataset draft.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ return self._unlock_llm_obs_dataset_draft_state_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_annotation_queue(self, queue_id: str, body: LLMObsAnnotationQueueUpdateRequest, ) -> LLMObsAnnotationQueueResponse:
+ """Update an LLM Observability annotation queue.
+
+ Partially update an annotation queue. The ``name`` , ``description`` , and ``annotation_schema`` fields can be updated.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :param body: Update annotation queue payload.
+ :type body: LLMObsAnnotationQueueUpdateRequest
+ :rtype: LLMObsAnnotationQueueResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_annotation_queue_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_annotation_queue_label_schema(self, queue_id: str, body: LLMObsAnnotationQueueLabelSchemaUpdateRequest, ) -> LLMObsAnnotationQueueLabelSchemaResponse:
+ """Update annotation queue label schema.
+
+ Create or replace the label schema for a given annotation queue.
+ The label schema defines the labels annotators can apply to interactions in the queue.
+ Label names must be unique within the queue and match the pattern ``^[a-zA-Z0-9_-]+$``.
+ Each label must have a valid type: score, categorical, boolean, or text.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :param body: Update label schema payload.
+ :type body: LLMObsAnnotationQueueLabelSchemaUpdateRequest
+ :rtype: LLMObsAnnotationQueueLabelSchemaResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_annotation_queue_label_schema_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_custom_eval_config(self, eval_name: str, body: LLMObsCustomEvalConfigUpdateRequest, ) -> None:
+ """Create or update a custom evaluator configuration.
+
+ Create or update a custom LLM Observability evaluator configuration by its name.
+
+ :param eval_name: The name of the custom LLM Observability evaluator configuration.
+ :type eval_name: str
+ :param body: Custom evaluator configuration payload.
+ :type body: LLMObsCustomEvalConfigUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["eval_name"] = eval_name
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_custom_eval_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_dataset(self, project_id: str, dataset_id: str, body: LLMObsDatasetUpdateRequest, ) -> LLMObsDatasetResponse:
+ """Update an LLM Observability dataset.
+
+ Partially update an existing LLM Observability dataset within the specified project.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param body: Update dataset payload.
+ :type body: LLMObsDatasetUpdateRequest
+ :rtype: LLMObsDatasetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_dataset_records(self, project_id: str, dataset_id: str, body: LLMObsDatasetRecordsUpdateRequest, ) -> LLMObsDatasetRecordsMutationResponse:
+ """Update LLM Observability dataset records.
+
+ Update one or more existing records in an LLM Observability dataset.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param body: Update records payload.
+ :type body: LLMObsDatasetRecordsUpdateRequest
+ :rtype: LLMObsDatasetRecordsMutationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_dataset_records_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_experiment(self, experiment_id: str, body: LLMObsExperimentUpdateRequest, ) -> LLMObsExperimentResponse:
+ """Update an LLM Observability experiment.
+
+ Partially update an existing LLM Observability experiment.
+
+ :param experiment_id: The ID of the LLM Observability experiment.
+ :type experiment_id: str
+ :param body: Update experiment payload.
+ :type body: LLMObsExperimentUpdateRequest
+ :rtype: LLMObsExperimentResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["experiment_id"] = experiment_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_experiment_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_project(self, project_id: str, body: LLMObsProjectUpdateRequest, ) -> LLMObsProjectResponse:
+ """Update an LLM Observability project.
+
+ Partially update an existing LLM Observability project.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param body: Update project payload.
+ :type body: LLMObsProjectUpdateRequest
+ :rtype: LLMObsProjectResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_project_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_prompt(self, prompt_id: str, body: LLMObsUpdatePromptRequest, ) -> LLMObsPromptResponse:
+ """Update an LLM Observability prompt.
+
+ Update the title, the description, or both, for an LLM Observability prompt.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :param body: Update prompt payload.
+ :type body: LLMObsUpdatePromptRequest
+ :rtype: LLMObsPromptResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_prompt_endpoint.call_with_http_info(**kwargs)
+
+ def update_llm_obs_prompt_version(self, prompt_id: str, version: int, body: LLMObsUpdatePromptVersionRequest, ) -> LLMObsPromptVersionResponse:
+ """Update a specific LLM Observability prompt version.
+
+ Update the description, the feature-flag environments, or both, for a specific version of an LLM Observability prompt.
+
+ :param prompt_id: The customer-provided identifier of the LLM Observability prompt.
+ :type prompt_id: str
+ :param version: The version number of the LLM Observability prompt.
+ :type version: int
+ :param body: Update prompt version payload.
+ :type body: LLMObsUpdatePromptVersionRequest
+ :rtype: LLMObsPromptVersionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["prompt_id"] = prompt_id
+
+ kwargs["version"] = version
+
+ kwargs["body"] = body
+
+ return self._update_llm_obs_prompt_version_endpoint.call_with_http_info(**kwargs)
+
+ def upload_llm_obs_dataset_records_file(self, project_id: str, dataset_id: str, *, deduplicate: Union[bool, UnsetType]=unset, overwrite: Union[bool, UnsetType]=unset, tags: Union[List[str], UnsetType]=unset, include_user_data: Union[bool, UnsetType]=unset, file: Union[file_type, UnsetType]=unset, ) -> None:
+ """Upload records to an LLM Observability dataset.
+
+ Upload records to a dataset from a file. The request is a ``multipart/form-data`` upload containing a single ``file`` part.
+ Currently only CSV is supported. The CSV must include an ``input`` column. Optional columns are ``id`` , ``expected_output`` , ``metadata`` , and ``tags``.
+
+ The response is a Server-Sent Events stream ( ``text/event-stream`` ) emitting progress updates while records are processed. The stream emits the following named events:
+
+ * ``progress`` : incremental record counts written so far.
+ * ``completed`` : terminal event with a JSON body containing ``records_created``.
+ * ``error`` : terminal event with a JSON body containing an error ``message``.
+
+ :param project_id: The ID of the LLM Observability project.
+ :type project_id: str
+ :param dataset_id: The ID of the LLM Observability dataset.
+ :type dataset_id: str
+ :param deduplicate: Whether to skip records whose ``input`` already exists in the dataset. Defaults to ``false``.
+ :type deduplicate: bool, optional
+ :param overwrite: Whether to overwrite existing records that share the same user-provided ``id``. Defaults to ``true``.
+ :type overwrite: bool, optional
+ :param tags: Tags to apply to every uploaded record, in addition to any tags defined on individual rows. Can be repeated, e.g. ``tags=env:prod&tags=team:ai``.
+ :type tags: [str], optional
+ :param include_user_data: Whether to enrich the response with user metadata.
+ :type include_user_data: bool, optional
+ :param file: The records file to upload. Currently only CSV is supported. The file must include an ``input`` column. Optional columns include ``id`` , ``expected_output`` , ``metadata`` , and ``tags``.
+ :type file: file_type, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["dataset_id"] = dataset_id
+
+ if deduplicate is not unset:
+ kwargs["deduplicate"] = deduplicate
+
+ if overwrite is not unset:
+ kwargs["overwrite"] = overwrite
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if include_user_data is not unset:
+ kwargs["include_user_data"] = include_user_data
+
+ if file is not unset:
+ kwargs["file"] = file
+
+ return self._upload_llm_obs_dataset_records_file_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_llm_obs_annotations(self, queue_id: str, body: LLMObsAnnotationsRequest, ) -> LLMObsAnnotationsResponse:
+ """Create or update annotations.
+
+ Create or update annotations on interactions in a queue. Each annotation is matched
+ by ``interaction_id`` and the requesting user's identity.
+ Results and errors in the response are linked to request items by ``interaction_id``.
+ Errors for individual items are returned in the ``errors`` field without blocking the rest of the batch.
+
+ :param queue_id: The ID of the LLM Observability annotation queue.
+ :type queue_id: str
+ :param body: Payload for creating or updating annotations.
+ :type body: LLMObsAnnotationsRequest
+ :rtype: LLMObsAnnotationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["queue_id"] = queue_id
+
+ kwargs["body"] = body
+
+ return self._upsert_llm_obs_annotations_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_llm_obs_patterns_config(self, body: LLMObsPatternsConfigUpsertRequest, ) -> LLMObsPatternsConfigResponse:
+ """Create or update a patterns configuration.
+
+ Create a new patterns configuration, or update an existing one when a configuration ID is provided.
+
+ :param body: Patterns configuration payload.
+ :type body: LLMObsPatternsConfigUpsertRequest
+ :rtype: LLMObsPatternsConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upsert_llm_obs_patterns_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/logs_api.py b/datadog_api_client/v2/api/logs_api.py
new file mode 100644
index 0000000000..44f8f6a356
--- /dev/null
+++ b/datadog_api_client/v2/api/logs_api.py
@@ -0,0 +1,466 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.content_encoding import ContentEncoding
+from datadog_api_client.v2.model.http_log import HTTPLog
+from datadog_api_client.v2.model.http_log_item import HTTPLogItem
+from datadog_api_client.v2.model.logs_aggregate_response import LogsAggregateResponse
+from datadog_api_client.v2.model.logs_aggregate_request import LogsAggregateRequest
+from datadog_api_client.v2.model.logs_list_response import LogsListResponse
+from datadog_api_client.v2.model.logs_storage_tier import LogsStorageTier
+from datadog_api_client.v2.model.logs_sort import LogsSort
+from datadog_api_client.v2.model.log import Log
+from datadog_api_client.v2.model.logs_list_request import LogsListRequest
+
+
+class LogsApi:
+ """
+ Search your logs and send them to your Datadog platform over HTTP. See the `Log Management page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._aggregate_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsAggregateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/analytics/aggregate",
+ "operation_id": "aggregate_logs",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsAggregateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_logs_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/events/search",
+ "operation_id": "list_logs",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (LogsListRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_logs_get_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/events",
+ "operation_id": "list_logs_get",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_indexes": {
+ "openapi_types": ([str],),
+ "attribute": "filter[indexes]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "filter_storage_tier": {
+ "openapi_types": (LogsStorageTier,),
+ "attribute": "filter[storage_tier]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (LogsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._submit_log_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/logs",
+ "operation_id": "submit_log",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The regional site for customers.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "us3.datadoghq.com",
+ "us5.datadoghq.com",
+ "ap1.datadoghq.com",
+ "ap2.datadoghq.com",
+ "uk1.datadoghq.com",
+ "datadoghq.eu",
+ "ddog-gov.com",
+ "us2.ddog-gov.com",
+ ],
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "http-intake.logs",
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "Full site DNS name.",
+ "default_value": "http-intake.logs.datadoghq.com",
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "Any Datadog deployment.",
+ "default_value": "datadoghq.com",
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "http-intake.logs",
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "content_encoding": {
+ "openapi_types": (ContentEncoding,),
+ "attribute": "Content-Encoding",
+ "location": "header",
+ },
+ "ddtags": {
+ "openapi_types": (str,),
+ "attribute": "ddtags",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (HTTPLog,),
+ "location": "body",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json", "application/logplex-1", "text/plain"]
+ },
+ api_client=api_client,
+ )
+
+ def aggregate_logs(self, body: LogsAggregateRequest, ) -> LogsAggregateResponse:
+ """Aggregate events.
+
+ The API endpoint to aggregate events into buckets and compute metrics and timeseries.
+
+ :type body: LogsAggregateRequest
+ :rtype: LogsAggregateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_logs_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs(self, *, body: Union[LogsListRequest, UnsetType]=unset, ) -> LogsListResponse:
+ """Search logs (POST).
+
+ List endpoint returns logs that match a log search query.
+ `Results are paginated `_.
+
+ Use this endpoint to search and filter your logs.
+
+ If you are considering archiving logs for your organization,
+ consider use of the Datadog archive capabilities instead of the log list API.
+ See `Datadog Logs Archive documentation `_.
+
+ :type body: LogsListRequest, optional
+ :rtype: LogsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._list_logs_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs_with_pagination(self, *, body: Union[LogsListRequest, UnsetType]=unset, ) -> collections.abc.Iterable[Log]:
+ """Search logs (POST).
+
+ Provide a paginated version of :meth:`list_logs`, returning all items.
+
+ :type body: LogsListRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Log]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._list_logs_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_logs_get(self, *, filter_query: Union[str, UnsetType]=unset, filter_indexes: Union[List[str], UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, filter_storage_tier: Union[LogsStorageTier, UnsetType]=unset, sort: Union[LogsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> LogsListResponse:
+ """Search logs (GET).
+
+ List endpoint returns logs that match a log search query.
+ `Results are paginated `_.
+
+ Use this endpoint to search and filter your logs.
+
+ If you are considering archiving logs for your organization,
+ consider use of the Datadog archive capabilities instead of the log list API.
+ See `Datadog Logs Archive documentation `_.
+
+ :param filter_query: Search query following logs syntax.
+ :type filter_query: str, optional
+ :param filter_indexes: For customers with multiple indexes, the indexes to search.
+ Defaults to '*' which means all indexes
+ :type filter_indexes: [str], optional
+ :param filter_from: Minimum timestamp for requested logs.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested logs.
+ :type filter_to: datetime, optional
+ :param filter_storage_tier: Specifies the storage type to be used
+ :type filter_storage_tier: LogsStorageTier, optional
+ :param sort: Order of logs in results.
+ :type sort: LogsSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of logs in the response.
+ :type page_limit: int, optional
+ :rtype: LogsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_indexes is not unset:
+ kwargs["filter_indexes"] = filter_indexes
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if filter_storage_tier is not unset:
+ kwargs["filter_storage_tier"] = filter_storage_tier
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_logs_get_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs_get_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_indexes: Union[List[str], UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, filter_storage_tier: Union[LogsStorageTier, UnsetType]=unset, sort: Union[LogsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[Log]:
+ """Search logs (GET).
+
+ Provide a paginated version of :meth:`list_logs_get`, returning all items.
+
+ :param filter_query: Search query following logs syntax.
+ :type filter_query: str, optional
+ :param filter_indexes: For customers with multiple indexes, the indexes to search.
+ Defaults to '*' which means all indexes
+ :type filter_indexes: [str], optional
+ :param filter_from: Minimum timestamp for requested logs.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested logs.
+ :type filter_to: datetime, optional
+ :param filter_storage_tier: Specifies the storage type to be used
+ :type filter_storage_tier: LogsStorageTier, optional
+ :param sort: Order of logs in results.
+ :type sort: LogsSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of logs in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Log]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_indexes is not unset:
+ kwargs["filter_indexes"] = filter_indexes
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if filter_storage_tier is not unset:
+ kwargs["filter_storage_tier"] = filter_storage_tier
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_logs_get_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def submit_log(self, body: HTTPLog, *, content_encoding: Union[ContentEncoding, UnsetType]=unset, ddtags: Union[str, UnsetType]=unset, ) -> dict:
+ """Send logs.
+
+ Send your logs to your Datadog platform over HTTP. Limits per HTTP request are:
+
+ * Maximum content size per payload (uncompressed): 5MB
+ * Maximum size for a single log: 1MB
+ * Maximum array size if sending multiple logs in an array: 1000 entries
+
+ Any log exceeding 1MB is accepted and truncated by Datadog:
+
+ * For a single log request, the API truncates the log at 1MB and returns a 2xx.
+ * For a multi-logs request, the API processes all logs, truncates only logs larger than 1MB, and returns a 2xx.
+
+ Datadog recommends sending your logs compressed.
+ Add the ``Content-Encoding: gzip`` header to the request when sending compressed logs.
+ Log events can be submitted with a timestamp that is up to 18 hours in the past.
+
+ The status codes answered by the HTTP API are:
+
+ * 202: Accepted: the request has been accepted for processing
+ * 400: Bad request (likely an issue in the payload formatting)
+ * 401: Unauthorized (likely a missing API Key)
+ * 403: Permission issue (likely using an invalid API Key)
+ * 408: Request Timeout, request should be retried after some time
+ * 413: Payload too large (batch is above 5MB uncompressed)
+ * 429: Too Many Requests, request should be retried after some time
+ * 500: Internal Server Error, the server encountered an unexpected condition that prevented it from fulfilling the request, request should be retried after some time
+ * 503: Service Unavailable, the server is not ready to handle the request probably because it is overloaded, request should be retried after some time
+
+ :param body: Log to send (JSON format).
+ :type body: HTTPLog
+ :param content_encoding: HTTP header used to compress the media-type.
+ :type content_encoding: ContentEncoding, optional
+ :param ddtags: Log tags can be passed as query parameters with ``text/plain`` content type.
+ :type ddtags: str, optional
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ if content_encoding is not unset:
+ kwargs["content_encoding"] = content_encoding
+
+ if ddtags is not unset:
+ kwargs["ddtags"] = ddtags
+
+ kwargs["body"] = body
+
+ return self._submit_log_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/logs_archives_api.py b/datadog_api_client/v2/api/logs_archives_api.py
new file mode 100644
index 0000000000..4261edadba
--- /dev/null
+++ b/datadog_api_client/v2/api/logs_archives_api.py
@@ -0,0 +1,427 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.logs_archive_order import LogsArchiveOrder
+from datadog_api_client.v2.model.logs_archives import LogsArchives
+from datadog_api_client.v2.model.logs_archive import LogsArchive
+from datadog_api_client.v2.model.logs_archive_create_request import LogsArchiveCreateRequest
+from datadog_api_client.v2.model.relationship_to_role import RelationshipToRole
+from datadog_api_client.v2.model.roles_response import RolesResponse
+
+
+class LogsArchivesApi:
+ """
+ Archives forward all the logs ingested to a cloud storage system.
+
+ See the `Archives Page `_
+ for a list of the archives currently configured in Datadog.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_read_role_to_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives/{archive_id}/readers",
+ "operation_id": "add_read_role_to_archive",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "archive_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "archive_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToRole,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_logs_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsArchive,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives",
+ "operation_id": "create_logs_archive",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsArchiveCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_logs_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives/{archive_id}",
+ "operation_id": "delete_logs_archive",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "archive_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "archive_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsArchive,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives/{archive_id}",
+ "operation_id": "get_logs_archive",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "archive_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "archive_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_archive_order_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsArchiveOrder,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archive-order",
+ "operation_id": "get_logs_archive_order",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_archive_read_roles_endpoint = _Endpoint(
+ settings={
+ "response_type": (RolesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives/{archive_id}/readers",
+ "operation_id": "list_archive_read_roles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "archive_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "archive_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_logs_archives_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsArchives,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives",
+ "operation_id": "list_logs_archives",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_role_from_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives/{archive_id}/readers",
+ "operation_id": "remove_role_from_archive",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "archive_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "archive_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToRole,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_archive_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsArchive,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archives/{archive_id}",
+ "operation_id": "update_logs_archive",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "archive_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "archive_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LogsArchiveCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_archive_order_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsArchiveOrder,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/archive-order",
+ "operation_id": "update_logs_archive_order",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsArchiveOrder,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def add_read_role_to_archive(self, archive_id: str, body: RelationshipToRole, ) -> None:
+ """Grant role to an archive.
+
+ Adds a read role to an archive. ( `Roles API `_ )
+
+ :param archive_id: The ID of the archive.
+ :type archive_id: str
+ :type body: RelationshipToRole
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["archive_id"] = archive_id
+
+ kwargs["body"] = body
+
+ return self._add_read_role_to_archive_endpoint.call_with_http_info(**kwargs)
+
+ def create_logs_archive(self, body: LogsArchiveCreateRequest, ) -> LogsArchive:
+ """Create an archive.
+
+ Create an archive in your organization.
+
+ :param body: The definition of the new archive.
+ :type body: LogsArchiveCreateRequest
+ :rtype: LogsArchive
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_logs_archive_endpoint.call_with_http_info(**kwargs)
+
+ def delete_logs_archive(self, archive_id: str, ) -> None:
+ """Delete an archive.
+
+ Delete a given archive from your organization.
+
+ :param archive_id: The ID of the archive.
+ :type archive_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["archive_id"] = archive_id
+
+ return self._delete_logs_archive_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_archive(self, archive_id: str, ) -> LogsArchive:
+ """Get an archive.
+
+ Get a specific archive from your organization.
+
+ :param archive_id: The ID of the archive.
+ :type archive_id: str
+ :rtype: LogsArchive
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["archive_id"] = archive_id
+
+ return self._get_logs_archive_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_archive_order(self, ) -> LogsArchiveOrder:
+ """Get archive order.
+
+ Get the current order of your archives.
+ This endpoint takes no JSON arguments.
+
+ :rtype: LogsArchiveOrder
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_logs_archive_order_endpoint.call_with_http_info(**kwargs)
+
+ def list_archive_read_roles(self, archive_id: str, ) -> RolesResponse:
+ """List read roles for an archive.
+
+ Returns all read roles a given archive is restricted to.
+
+ :param archive_id: The ID of the archive.
+ :type archive_id: str
+ :rtype: RolesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["archive_id"] = archive_id
+
+ return self._list_archive_read_roles_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs_archives(self, ) -> LogsArchives:
+ """Get all archives.
+
+ Get the list of configured logs archives with their definitions.
+
+ :rtype: LogsArchives
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_logs_archives_endpoint.call_with_http_info(**kwargs)
+
+ def remove_role_from_archive(self, archive_id: str, body: RelationshipToRole, ) -> None:
+ """Revoke role from an archive.
+
+ Removes a role from an archive. ( `Roles API `_ )
+
+ :param archive_id: The ID of the archive.
+ :type archive_id: str
+ :type body: RelationshipToRole
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["archive_id"] = archive_id
+
+ kwargs["body"] = body
+
+ return self._remove_role_from_archive_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_archive(self, archive_id: str, body: LogsArchiveCreateRequest, ) -> LogsArchive:
+ """Update an archive.
+
+ Update a given archive configuration.
+
+ **Note** : Using this method updates your archive configuration by **replacing**
+ your current configuration with the new one sent to your Datadog organization.
+
+ :param archive_id: The ID of the archive.
+ :type archive_id: str
+ :param body: New definition of the archive.
+ :type body: LogsArchiveCreateRequest
+ :rtype: LogsArchive
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["archive_id"] = archive_id
+
+ kwargs["body"] = body
+
+ return self._update_logs_archive_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_archive_order(self, body: LogsArchiveOrder, ) -> LogsArchiveOrder:
+ """Update archive order.
+
+ Update the order of your archives. Since logs are processed sequentially, reordering an archive may change
+ the structure and content of the data processed by other archives.
+
+ **Note** : Using the ``PUT`` method updates your archive's order by replacing the current order
+ with the new one.
+
+ :param body: An object containing the new ordered list of archive IDs.
+ :type body: LogsArchiveOrder
+ :rtype: LogsArchiveOrder
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_logs_archive_order_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/logs_custom_destinations_api.py b/datadog_api_client/v2/api/logs_custom_destinations_api.py
new file mode 100644
index 0000000000..f00bf344f8
--- /dev/null
+++ b/datadog_api_client/v2/api/logs_custom_destinations_api.py
@@ -0,0 +1,226 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.custom_destinations_response import CustomDestinationsResponse
+from datadog_api_client.v2.model.custom_destination_response import CustomDestinationResponse
+from datadog_api_client.v2.model.custom_destination_create_request import CustomDestinationCreateRequest
+from datadog_api_client.v2.model.custom_destination_update_request import CustomDestinationUpdateRequest
+
+
+class LogsCustomDestinationsApi:
+ """
+ Custom Destinations forward all the logs ingested to an external destination.
+
+ **Note** : Log forwarding is not available for the Government (US1-FED) site. Contact your account representative for more information.
+
+ See the `Custom Destinations Page `_
+ for a list of the custom destinations currently configured in web UI.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_logs_custom_destination_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomDestinationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/custom-destinations",
+ "operation_id": "create_logs_custom_destination",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CustomDestinationCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_logs_custom_destination_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/custom-destinations/{custom_destination_id}",
+ "operation_id": "delete_logs_custom_destination",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "custom_destination_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_destination_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_custom_destination_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomDestinationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/custom-destinations/{custom_destination_id}",
+ "operation_id": "get_logs_custom_destination",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "custom_destination_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_destination_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_logs_custom_destinations_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomDestinationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/custom-destinations",
+ "operation_id": "list_logs_custom_destinations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_custom_destination_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomDestinationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/custom-destinations/{custom_destination_id}",
+ "operation_id": "update_logs_custom_destination",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "custom_destination_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "custom_destination_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CustomDestinationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_logs_custom_destination(self, body: CustomDestinationCreateRequest, ) -> CustomDestinationResponse:
+ """Create a custom destination.
+
+ Create a custom destination in your organization.
+
+ :param body: The definition of the new custom destination.
+ :type body: CustomDestinationCreateRequest
+ :rtype: CustomDestinationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_logs_custom_destination_endpoint.call_with_http_info(**kwargs)
+
+ def delete_logs_custom_destination(self, custom_destination_id: str, ) -> None:
+ """Delete a custom destination.
+
+ Delete a specific custom destination in your organization.
+
+ :param custom_destination_id: The ID of the custom destination.
+ :type custom_destination_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_destination_id"] = custom_destination_id
+
+ return self._delete_logs_custom_destination_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_custom_destination(self, custom_destination_id: str, ) -> CustomDestinationResponse:
+ """Get a custom destination.
+
+ Get a specific custom destination in your organization.
+
+ :param custom_destination_id: The ID of the custom destination.
+ :type custom_destination_id: str
+ :rtype: CustomDestinationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_destination_id"] = custom_destination_id
+
+ return self._get_logs_custom_destination_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs_custom_destinations(self, ) -> CustomDestinationsResponse:
+ """Get all custom destinations.
+
+ Get the list of configured custom destinations in your organization with their definitions.
+
+ :rtype: CustomDestinationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_logs_custom_destinations_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_custom_destination(self, custom_destination_id: str, body: CustomDestinationUpdateRequest, ) -> CustomDestinationResponse:
+ """Update a custom destination.
+
+ Update the given fields of a specific custom destination in your organization.
+
+ :param custom_destination_id: The ID of the custom destination.
+ :type custom_destination_id: str
+ :param body: New definition of the custom destination's fields.
+ :type body: CustomDestinationUpdateRequest
+ :rtype: CustomDestinationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["custom_destination_id"] = custom_destination_id
+
+ kwargs["body"] = body
+
+ return self._update_logs_custom_destination_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/logs_metrics_api.py b/datadog_api_client/v2/api/logs_metrics_api.py
new file mode 100644
index 0000000000..7207592ab1
--- /dev/null
+++ b/datadog_api_client/v2/api/logs_metrics_api.py
@@ -0,0 +1,223 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.logs_metrics_response import LogsMetricsResponse
+from datadog_api_client.v2.model.logs_metric_response import LogsMetricResponse
+from datadog_api_client.v2.model.logs_metric_create_request import LogsMetricCreateRequest
+from datadog_api_client.v2.model.logs_metric_update_request import LogsMetricUpdateRequest
+
+
+class LogsMetricsApi:
+ """
+ Manage configuration of `log-based metrics `_ for your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_logs_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/metrics",
+ "operation_id": "create_logs_metric",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (LogsMetricCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_logs_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/metrics/{metric_id}",
+ "operation_id": "delete_logs_metric",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_logs_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/metrics/{metric_id}",
+ "operation_id": "get_logs_metric",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_logs_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsMetricsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/metrics",
+ "operation_id": "list_logs_metrics",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_logs_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (LogsMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/metrics/{metric_id}",
+ "operation_id": "update_logs_metric",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (LogsMetricUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_logs_metric(self, body: LogsMetricCreateRequest, ) -> LogsMetricResponse:
+ """Create a log-based metric.
+
+ Create a metric based on your ingested logs in your organization.
+ Returns the log-based metric object from the request body when the request is successful.
+
+ :param body: The definition of the new log-based metric.
+ :type body: LogsMetricCreateRequest
+ :rtype: LogsMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_logs_metric_endpoint.call_with_http_info(**kwargs)
+
+ def delete_logs_metric(self, metric_id: str, ) -> None:
+ """Delete a log-based metric.
+
+ Delete a specific log-based metric from your organization.
+
+ :param metric_id: The name of the log-based metric.
+ :type metric_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ return self._delete_logs_metric_endpoint.call_with_http_info(**kwargs)
+
+ def get_logs_metric(self, metric_id: str, ) -> LogsMetricResponse:
+ """Get a log-based metric.
+
+ Get a specific log-based metric from your organization.
+
+ :param metric_id: The name of the log-based metric.
+ :type metric_id: str
+ :rtype: LogsMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ return self._get_logs_metric_endpoint.call_with_http_info(**kwargs)
+
+ def list_logs_metrics(self, ) -> LogsMetricsResponse:
+ """Get all log-based metrics.
+
+ Get the list of configured log-based metrics with their definitions.
+
+ :rtype: LogsMetricsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_logs_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def update_logs_metric(self, metric_id: str, body: LogsMetricUpdateRequest, ) -> LogsMetricResponse:
+ """Update a log-based metric.
+
+ Update a specific log-based metric from your organization.
+ Returns the log-based metric object from the request body when the request is successful.
+
+ :param metric_id: The name of the log-based metric.
+ :type metric_id: str
+ :param body: New definition of the log-based metric.
+ :type body: LogsMetricUpdateRequest
+ :rtype: LogsMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ kwargs["body"] = body
+
+ return self._update_logs_metric_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/logs_restriction_queries_api.py b/datadog_api_client/v2/api/logs_restriction_queries_api.py
new file mode 100644
index 0000000000..c79a46f631
--- /dev/null
+++ b/datadog_api_client/v2/api/logs_restriction_queries_api.py
@@ -0,0 +1,528 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.restriction_query_list_response import RestrictionQueryListResponse
+from datadog_api_client.v2.model.restriction_query_without_relationships_response import RestrictionQueryWithoutRelationshipsResponse
+from datadog_api_client.v2.model.restriction_query_create_payload import RestrictionQueryCreatePayload
+from datadog_api_client.v2.model.restriction_query_with_relationships_response import RestrictionQueryWithRelationshipsResponse
+from datadog_api_client.v2.model.restriction_query_update_payload import RestrictionQueryUpdatePayload
+from datadog_api_client.v2.model.relationship_to_role import RelationshipToRole
+from datadog_api_client.v2.model.restriction_query_roles_response import RestrictionQueryRolesResponse
+
+
+class LogsRestrictionQueriesApi:
+ """
+ Note: This endpoint is in public beta. If you have any feedback, contact `Datadog support `_.
+
+ A Restriction Query is a logs query that restricts which logs the ``logs_read_data`` permission grants read access to.
+ For users whose roles have Restriction Queries, any log query they make only returns those log events that also match
+ one of their Restriction Queries. This is true whether the user queries log events from any log-related feature, including
+ the log explorer, Live Tail, re-hydration, or a dashboard widget.
+
+ Restriction Queries currently only support use of the following components of log events:
+
+ * Reserved attributes
+ * The log message
+ * Tags
+
+ To restrict read access on log data, add a team tag to log events to indicate which teams own them, and then scope Restriction Queries to the relevant values of the team tag. Tags can be applied to log events in many ways, and a log event can have multiple tags with the same key (like team) and different values. This means the same log event can be visible to roles whose restriction queries are scoped to different team values.
+
+ See `How to Set Up RBAC for Logs `_ for details on how to add restriction queries.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_role_to_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles",
+ "operation_id": "add_role_to_restriction_query",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToRole,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryWithoutRelationshipsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries",
+ "operation_id": "create_restriction_query",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RestrictionQueryCreatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}",
+ "operation_id": "delete_restriction_query",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryWithRelationshipsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}",
+ "operation_id": "get_restriction_query",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_role_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/role/{role_id}",
+ "operation_id": "get_role_restriction_query",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_restriction_queries_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries",
+ "operation_id": "list_restriction_queries",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_restriction_query_roles_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryRolesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles",
+ "operation_id": "list_restriction_query_roles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_user_restriction_queries_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/user/{user_id}",
+ "operation_id": "list_user_restriction_queries",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_role_from_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles",
+ "operation_id": "remove_role_from_restriction_query",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToRole,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._replace_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryWithoutRelationshipsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}",
+ "operation_id": "replace_restriction_query",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RestrictionQueryUpdatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_restriction_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionQueryWithoutRelationshipsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/logs/config/restriction_queries/{restriction_query_id}",
+ "operation_id": "update_restriction_query",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "restriction_query_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "restriction_query_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RestrictionQueryUpdatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def add_role_to_restriction_query(self, restriction_query_id: str, body: RelationshipToRole, ) -> None:
+ """Grant role to a restriction query.
+
+ Adds a role to a restriction query.
+
+ **Note** : This operation automatically grants the ``logs_read_data`` permission to the role if it doesn't already have it.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :type body: RelationshipToRole
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ kwargs["body"] = body
+
+ return self._add_role_to_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def create_restriction_query(self, body: RestrictionQueryCreatePayload, ) -> RestrictionQueryWithoutRelationshipsResponse:
+ """Create a restriction query.
+
+ Create a new restriction query for your organization.
+
+ :type body: RestrictionQueryCreatePayload
+ :rtype: RestrictionQueryWithoutRelationshipsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def delete_restriction_query(self, restriction_query_id: str, ) -> None:
+ """Delete a restriction query.
+
+ Deletes a restriction query.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ return self._delete_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def get_restriction_query(self, restriction_query_id: str, ) -> RestrictionQueryWithRelationshipsResponse:
+ """Get a restriction query.
+
+ Get a restriction query in the organization specified by the restriction query's ``restriction_query_id``.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :rtype: RestrictionQueryWithRelationshipsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ return self._get_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def get_role_restriction_query(self, role_id: str, ) -> RestrictionQueryListResponse:
+ """Get restriction query for a given role.
+
+ Get restriction query for a given role.
+
+ :param role_id: The ID of the role.
+ :type role_id: str
+ :rtype: RestrictionQueryListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ return self._get_role_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def list_restriction_queries(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> RestrictionQueryListResponse:
+ """List restriction queries.
+
+ Returns all restriction queries, including their names and IDs.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: RestrictionQueryListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_restriction_queries_endpoint.call_with_http_info(**kwargs)
+
+ def list_restriction_query_roles(self, restriction_query_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> RestrictionQueryRolesResponse:
+ """List roles for a restriction query.
+
+ Returns all roles that have a given restriction query.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: RestrictionQueryRolesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_restriction_query_roles_endpoint.call_with_http_info(**kwargs)
+
+ def list_user_restriction_queries(self, user_id: str, ) -> RestrictionQueryListResponse:
+ """Get all restriction queries for a given user.
+
+ Get all restriction queries for a given user.
+
+ :param user_id: The ID of the user.
+ :type user_id: str
+ :rtype: RestrictionQueryListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ return self._list_user_restriction_queries_endpoint.call_with_http_info(**kwargs)
+
+ def remove_role_from_restriction_query(self, restriction_query_id: str, body: RelationshipToRole, ) -> None:
+ """Revoke role from a restriction query.
+
+ Removes a role from a restriction query.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :type body: RelationshipToRole
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ kwargs["body"] = body
+
+ return self._remove_role_from_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def replace_restriction_query(self, restriction_query_id: str, body: RestrictionQueryUpdatePayload, ) -> RestrictionQueryWithoutRelationshipsResponse:
+ """Replace a restriction query.
+
+ Replace a restriction query.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :type body: RestrictionQueryUpdatePayload
+ :rtype: RestrictionQueryWithoutRelationshipsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ kwargs["body"] = body
+
+ return self._replace_restriction_query_endpoint.call_with_http_info(**kwargs)
+
+ def update_restriction_query(self, restriction_query_id: str, body: RestrictionQueryUpdatePayload, ) -> RestrictionQueryWithoutRelationshipsResponse:
+ """Update a restriction query.
+
+ Edit a restriction query.
+
+ :param restriction_query_id: The ID of the restriction query.
+ :type restriction_query_id: str
+ :type body: RestrictionQueryUpdatePayload
+ :rtype: RestrictionQueryWithoutRelationshipsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["restriction_query_id"] = restriction_query_id
+
+ kwargs["body"] = body
+
+ return self._update_restriction_query_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/metrics_api.py b/datadog_api_client/v2/api/metrics_api.py
new file mode 100644
index 0000000000..7f190edf98
--- /dev/null
+++ b/datadog_api_client/v2/api/metrics_api.py
@@ -0,0 +1,1665 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.metrics_and_metric_tag_configurations_response import MetricsAndMetricTagConfigurationsResponse
+from datadog_api_client.v2.model.metric_tag_configuration_metric_type_category import MetricTagConfigurationMetricTypeCategory
+from datadog_api_client.v2.model.metrics_and_metric_tag_configurations import MetricsAndMetricTagConfigurations
+from datadog_api_client.v2.model.metric_bulk_tag_config_response import MetricBulkTagConfigResponse
+from datadog_api_client.v2.model.metric_bulk_tag_config_delete_request import MetricBulkTagConfigDeleteRequest
+from datadog_api_client.v2.model.metric_bulk_tag_config_create_request import MetricBulkTagConfigCreateRequest
+from datadog_api_client.v2.model.historical_metrics_configuration_response import HistoricalMetricsConfigurationResponse
+from datadog_api_client.v2.model.historical_metrics_configuration_create_request import HistoricalMetricsConfigurationCreateRequest
+from datadog_api_client.v2.model.tag_indexing_rules_response import TagIndexingRulesResponse
+from datadog_api_client.v2.model.tag_indexing_rule_response import TagIndexingRuleResponse
+from datadog_api_client.v2.model.tag_indexing_rule_create_request import TagIndexingRuleCreateRequest
+from datadog_api_client.v2.model.tag_indexing_rule_order_request import TagIndexingRuleOrderRequest
+from datadog_api_client.v2.model.tag_indexing_rule_update_request import TagIndexingRuleUpdateRequest
+from datadog_api_client.v2.model.metric_suggested_tags_and_aggregations_response import MetricSuggestedTagsAndAggregationsResponse
+from datadog_api_client.v2.model.metric_all_tags_response import MetricAllTagsResponse
+from datadog_api_client.v2.model.metric_assets_response import MetricAssetsResponse
+from datadog_api_client.v2.model.metric_estimate_response import MetricEstimateResponse
+from datadog_api_client.v2.model.metric_tag_cardinalities_response import MetricTagCardinalitiesResponse
+from datadog_api_client.v2.model.tag_indexing_rule_exemption_response import TagIndexingRuleExemptionResponse
+from datadog_api_client.v2.model.tag_indexing_rule_exemption_create_request import TagIndexingRuleExemptionCreateRequest
+from datadog_api_client.v2.model.metric_tag_configuration_response import MetricTagConfigurationResponse
+from datadog_api_client.v2.model.metric_tag_configuration_update_request import MetricTagConfigurationUpdateRequest
+from datadog_api_client.v2.model.metric_tag_configuration_create_request import MetricTagConfigurationCreateRequest
+from datadog_api_client.v2.model.metric_volumes_response import MetricVolumesResponse
+from datadog_api_client.v2.model.scalar_formula_query_response import ScalarFormulaQueryResponse
+from datadog_api_client.v2.model.scalar_formula_query_request import ScalarFormulaQueryRequest
+from datadog_api_client.v2.model.timeseries_formula_query_response import TimeseriesFormulaQueryResponse
+from datadog_api_client.v2.model.timeseries_formula_query_request import TimeseriesFormulaQueryRequest
+from datadog_api_client.v2.model.intake_payload_accepted import IntakePayloadAccepted
+from datadog_api_client.v2.model.metric_content_encoding import MetricContentEncoding
+from datadog_api_client.v2.model.metric_payload import MetricPayload
+
+
+class MetricsApi:
+ """
+ The metrics endpoint allows you to:
+
+ * Post metrics data so it can be graphed on Datadog’s dashboards
+ * Query metrics from any time period (timeseries and scalar)
+ * Modify tag configurations for metrics
+ * View tags and volumes for metrics
+
+ **Note** : A graph can only contain a set number of points
+ and as the timeframe over which a metric is viewed increases,
+ aggregation between points occurs to stay below that set number.
+
+ The Post, Patch, and Delete ``manage_tags`` API methods can only be performed by
+ a user who has the ``Manage Tags for Metrics`` permission.
+
+ See the `Metrics page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_bulk_tags_metrics_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricBulkTagConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/config/bulk-tags",
+ "operation_id": "create_bulk_tags_metrics_configuration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MetricBulkTagConfigCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_historical_metrics_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (HistoricalMetricsConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/historical-metrics-configurations",
+ "operation_id": "create_historical_metrics_configuration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (HistoricalMetricsConfigurationCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_tag_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricTagConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tags",
+ "operation_id": "create_tag_configuration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MetricTagConfigurationCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_tag_indexing_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/tag-indexing-rules",
+ "operation_id": "create_tag_indexing_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TagIndexingRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_tag_indexing_rule_exemption_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRuleExemptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions",
+ "operation_id": "create_tag_indexing_rule_exemption",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TagIndexingRuleExemptionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_bulk_tags_metrics_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricBulkTagConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/config/bulk-tags",
+ "operation_id": "delete_bulk_tags_metrics_configuration",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MetricBulkTagConfigDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_historical_metrics_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/historical-metrics-configurations/{metric_name}",
+ "operation_id": "delete_historical_metrics_configuration",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tag_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tags",
+ "operation_id": "delete_tag_configuration",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tag_indexing_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/tag-indexing-rules/{id}",
+ "operation_id": "delete_tag_indexing_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tag_indexing_rule_exemption_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions",
+ "operation_id": "delete_tag_indexing_rule_exemption",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._estimate_metrics_output_series_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricEstimateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/estimate",
+ "operation_id": "estimate_metrics_output_series",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "filter_groups": {
+ "openapi_types": (str,),
+ "attribute": "filter[groups]",
+ "location": "query",
+ },
+ "filter_hours_ago": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ "inclusive_minimum": 49,
+ },
+ "openapi_types": (int,),
+ "attribute": "filter[hours_ago]",
+ "location": "query",
+ },
+ "filter_num_aggregations": {
+ "validation": {
+ "inclusive_maximum": 9,
+ },
+ "openapi_types": (int,),
+ "attribute": "filter[num_aggregations]",
+ "location": "query",
+ },
+ "filter_pct": {
+ "openapi_types": (bool,),
+ "attribute": "filter[pct]",
+ "location": "query",
+ },
+ "filter_timespan_h": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "filter[timespan_h]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_historical_metrics_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (HistoricalMetricsConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/historical-metrics-configurations/{metric_name}",
+ "operation_id": "get_historical_metrics_configuration",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_metric_tag_cardinality_details_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricTagCardinalitiesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tag-cardinalities",
+ "operation_id": "get_metric_tag_cardinality_details",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tag_indexing_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/tag-indexing-rules/{id}",
+ "operation_id": "get_tag_indexing_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tag_indexing_rule_exemption_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRuleExemptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rule-exemptions",
+ "operation_id": "get_tag_indexing_rule_exemption",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_active_metric_configurations_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricSuggestedTagsAndAggregationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/active-configurations",
+ "operation_id": "list_active_metric_configurations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "window_seconds": {
+ "openapi_types": (int,),
+ "attribute": "window[seconds]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_metric_assets_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricAssetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/assets",
+ "operation_id": "list_metric_assets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_configuration_by_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricTagConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tags",
+ "operation_id": "list_tag_configuration_by_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_configurations_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricsAndMetricTagConfigurationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics",
+ "operation_id": "list_tag_configurations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_configured": {
+ "openapi_types": (bool,),
+ "attribute": "filter[configured]",
+ "location": "query",
+ },
+ "filter_is_configurable": {
+ "openapi_types": (bool,),
+ "attribute": "filter[is_configurable]",
+ "location": "query",
+ },
+ "filter_tags_configured": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags_configured]",
+ "location": "query",
+ },
+ "filter_metric_type": {
+ "openapi_types": (MetricTagConfigurationMetricTypeCategory,),
+ "attribute": "filter[metric_type]",
+ "location": "query",
+ },
+ "filter_include_percentiles": {
+ "openapi_types": (bool,),
+ "attribute": "filter[include_percentiles]",
+ "location": "query",
+ },
+ "filter_queried": {
+ "openapi_types": (bool,),
+ "attribute": "filter[queried]",
+ "location": "query",
+ },
+ "filter_queried_window_seconds": {
+ "validation": {
+ "inclusive_maximum": 15552000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "filter[queried][window][seconds]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "filter_related_assets": {
+ "openapi_types": (bool,),
+ "attribute": "filter[related_assets]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "window_seconds": {
+ "validation": {
+ "inclusive_maximum": 2592000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "window[seconds]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 10000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_indexing_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/tag-indexing-rules",
+ "operation_id": "list_tag_indexing_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "search": {
+ "openapi_types": (str,),
+ "attribute": "search",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_indexing_rules_for_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tag-indexing-rules",
+ "operation_id": "list_tag_indexing_rules_for_metric",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tags_by_metric_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricAllTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/all-tags",
+ "operation_id": "list_tags_by_metric_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "window_seconds": {
+ "openapi_types": (int,),
+ "attribute": "window[seconds]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "filter_match": {
+ "openapi_types": (str,),
+ "attribute": "filter[match]",
+ "location": "query",
+ },
+ "filter_include_tag_values": {
+ "openapi_types": (bool,),
+ "attribute": "filter[include_tag_values]",
+ "location": "query",
+ },
+ "filter_allow_partial": {
+ "openapi_types": (bool,),
+ "attribute": "filter[allow_partial]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_volumes_by_metric_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricVolumesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/volumes",
+ "operation_id": "list_volumes_by_metric_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "window_seconds": {
+ "openapi_types": (int,),
+ "attribute": "window[seconds]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._query_scalar_data_endpoint = _Endpoint(
+ settings={
+ "response_type": (ScalarFormulaQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/query/scalar",
+ "operation_id": "query_scalar_data",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ScalarFormulaQueryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._query_timeseries_data_endpoint = _Endpoint(
+ settings={
+ "response_type": (TimeseriesFormulaQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/query/timeseries",
+ "operation_id": "query_timeseries_data",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TimeseriesFormulaQueryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_tag_indexing_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/tag-indexing-rules/order",
+ "operation_id": "reorder_tag_indexing_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TagIndexingRuleOrderRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._submit_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (IntakePayloadAccepted,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/series",
+ "operation_id": "submit_metrics",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "content_encoding": {
+ "openapi_types": (MetricContentEncoding,),
+ "attribute": "Content-Encoding",
+ "location": "header",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MetricPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_tag_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (MetricTagConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/metrics/{metric_name}/tags",
+ "operation_id": "update_tag_configuration",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "metric_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MetricTagConfigurationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_tag_indexing_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagIndexingRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/metrics/tag-indexing-rules/{id}",
+ "operation_id": "update_tag_indexing_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TagIndexingRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_bulk_tags_metrics_configuration(self, body: MetricBulkTagConfigCreateRequest, ) -> MetricBulkTagConfigResponse:
+ """Configure tags for multiple metrics. **Deprecated**.
+
+ **Note** : This endpoint is deprecated. Use `Tag Indexing Rules `_ ( ``POST /api/v2/metrics/tag-indexing-rules`` ) instead.
+
+ Create and define a list of queryable tag keys for a set of existing count, gauge, rate, and distribution metrics.
+ Metrics are selected by passing a metric name prefix. Use the Delete method of this API path to remove tag configurations.
+ Results can be sent to a set of account email addresses, just like the same operation in the Datadog web app.
+ If multiple calls include the same metric, the last configuration applied (not by submit order) is used, do not
+ expect deterministic ordering of concurrent calls. The ``exclude_tags_mode`` value will set all metrics that match the prefix to
+ the same exclusion state, metric tag configurations do not support mixed inclusion and exclusion for tags on the same metric.
+ Can only be used with application keys of users with the ``Manage Tags for Metrics`` permission.
+
+ :type body: MetricBulkTagConfigCreateRequest
+ :rtype: MetricBulkTagConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_bulk_tags_metrics_configuration is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_bulk_tags_metrics_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def create_historical_metrics_configuration(self, body: HistoricalMetricsConfigurationCreateRequest, ) -> HistoricalMetricsConfigurationResponse:
+ """Enable historical metrics ingestion.
+
+ Enable historical metrics ingestion (late data ingestion) for a metric. Idempotent:
+ enabling an already-enabled metric returns 200 instead of 201. Not supported for
+ distribution metrics, metrics with an existing tag configuration, or most standard
+ (non-custom) metrics.
+
+ :type body: HistoricalMetricsConfigurationCreateRequest
+ :rtype: HistoricalMetricsConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_historical_metrics_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def create_tag_configuration(self, metric_name: str, body: MetricTagConfigurationCreateRequest, ) -> MetricTagConfigurationResponse:
+ """Create a tag configuration.
+
+ Create and define a list of queryable tag keys for an existing count/gauge/rate/distribution metric.
+ Optionally, include percentile aggregations on any distribution metric. By setting ``exclude_tags_mode``
+ to true, the behavior is changed from an allow-list to a deny-list, and tags in the defined list are
+ not queryable. Can only be used with application keys of users with the ``Manage Tags for Metrics``
+ permission.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :type body: MetricTagConfigurationCreateRequest
+ :rtype: MetricTagConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ kwargs["body"] = body
+
+ return self._create_tag_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def create_tag_indexing_rule(self, body: TagIndexingRuleCreateRequest, ) -> TagIndexingRuleResponse:
+ """Create a tag indexing rule.
+
+ Create a tag indexing rule for the org. ``rule_order`` is assigned server-side as max+1
+ among existing rules; use the reorder endpoint to change the evaluation order.
+ Requires the ``Manage Tags for Metrics`` permission.
+
+ :type body: TagIndexingRuleCreateRequest
+ :rtype: TagIndexingRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_tag_indexing_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_tag_indexing_rule_exemption(self, metric_name: str, body: TagIndexingRuleExemptionCreateRequest, ) -> TagIndexingRuleExemptionResponse:
+ """Create a tag indexing rule exemption.
+
+ Exempt a metric from all tag indexing rules. The response includes the created
+ exemption resource. Requires the ``Manage Tags for Metrics`` permission.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :type body: TagIndexingRuleExemptionCreateRequest
+ :rtype: TagIndexingRuleExemptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ kwargs["body"] = body
+
+ return self._create_tag_indexing_rule_exemption_endpoint.call_with_http_info(**kwargs)
+
+ def delete_bulk_tags_metrics_configuration(self, body: MetricBulkTagConfigDeleteRequest, ) -> MetricBulkTagConfigResponse:
+ """Delete tags for multiple metrics. **Deprecated**.
+
+ **Note** : This endpoint is deprecated. Use `Tag Indexing Rules `_ ( ``POST /api/v2/metrics/tag-indexing-rules`` ) instead.
+
+ Delete all custom lists of queryable tag keys for a set of existing count, gauge, rate, and distribution metrics.
+ Metrics are selected by passing a metric name prefix.
+ Results can be sent to a set of account email addresses, just like the same operation in the Datadog web app.
+ Can only be used with application keys of users with the ``Manage Tags for Metrics`` permission.
+
+ :type body: MetricBulkTagConfigDeleteRequest
+ :rtype: MetricBulkTagConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("delete_bulk_tags_metrics_configuration is deprecated", DeprecationWarning, stacklevel=2)
+ return self._delete_bulk_tags_metrics_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_historical_metrics_configuration(self, metric_name: str, ) -> None:
+ """Delete a historical metrics configuration.
+
+ Disable historical metrics ingestion for a metric. Idempotent: always returns 204,
+ whether or not the configuration existed or the metric itself still exists, so that
+ Terraform destroy succeeds for a metric removed out-of-band.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._delete_historical_metrics_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tag_configuration(self, metric_name: str, ) -> None:
+ """Delete a tag configuration.
+
+ Deletes a metric's tag configuration. Can only be used with application
+ keys from users with the ``Manage Tags for Metrics`` permission.
+ Note: This operation is irreversible.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._delete_tag_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tag_indexing_rule(self, id: str, ) -> None:
+ """Delete a tag indexing rule.
+
+ Soft-delete a tag indexing rule. Idempotent: returns 204 whether the rule existed or was already deleted.
+ Remaining rules in the org are automatically re-sequenced to keep ``rule_order`` dense and 1-based.
+ Requires the ``Manage Tags for Metrics`` permission.
+
+ :param id: ID of the tag indexing rule.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_tag_indexing_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tag_indexing_rule_exemption(self, metric_name: str, ) -> None:
+ """Delete a tag indexing rule exemption.
+
+ Remove a metric's exemption from tag indexing rules. Idempotent: returns 204 whether or not
+ an exemption existed. Any associated legacy tag configuration record is also removed.
+ Requires the ``Manage Tags for Metrics`` permission.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._delete_tag_indexing_rule_exemption_endpoint.call_with_http_info(**kwargs)
+
+ def estimate_metrics_output_series(self, metric_name: str, *, filter_groups: Union[str, UnsetType]=unset, filter_hours_ago: Union[int, UnsetType]=unset, filter_num_aggregations: Union[int, UnsetType]=unset, filter_pct: Union[bool, UnsetType]=unset, filter_timespan_h: Union[int, UnsetType]=unset, ) -> MetricEstimateResponse:
+ """Tag Configuration Cardinality Estimator.
+
+ Returns the estimated cardinality for a metric with a given tag, percentile and number of aggregations configuration using Metrics without Limits™.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :param filter_groups: Comma-separated list of tag keys that the metric is configured to query with. For example: ``filter[groups]=app,host``.
+ :type filter_groups: str, optional
+ :param filter_hours_ago: The number of hours of look back (from now) to estimate cardinality with. If unspecified, it defaults to 0 hours.
+ :type filter_hours_ago: int, optional
+ :param filter_num_aggregations: Deprecated. Number of aggregations has no impact on volume.
+ :type filter_num_aggregations: int, optional
+ :param filter_pct: A boolean, for distribution metrics only, to estimate cardinality if the metric includes additional percentile aggregators.
+ :type filter_pct: bool, optional
+ :param filter_timespan_h: A window, in hours, from the look back to estimate cardinality with. The minimum and default is 1 hour.
+ :type filter_timespan_h: int, optional
+ :rtype: MetricEstimateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ if filter_groups is not unset:
+ kwargs["filter_groups"] = filter_groups
+
+ if filter_hours_ago is not unset:
+ kwargs["filter_hours_ago"] = filter_hours_ago
+
+ if filter_num_aggregations is not unset:
+ kwargs["filter_num_aggregations"] = filter_num_aggregations
+
+ if filter_pct is not unset:
+ kwargs["filter_pct"] = filter_pct
+
+ if filter_timespan_h is not unset:
+ kwargs["filter_timespan_h"] = filter_timespan_h
+
+ return self._estimate_metrics_output_series_endpoint.call_with_http_info(**kwargs)
+
+ def get_historical_metrics_configuration(self, metric_name: str, ) -> HistoricalMetricsConfigurationResponse:
+ """Get a historical metrics configuration.
+
+ Get the historical metrics ingestion configuration for a metric. Existence of the
+ resource means historical metrics ingestion is enabled; returns 404 when it is not
+ enabled for the metric.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: HistoricalMetricsConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._get_historical_metrics_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def get_metric_tag_cardinality_details(self, metric_name: str, ) -> MetricTagCardinalitiesResponse:
+ """Get tag key cardinality details.
+
+ Returns the cardinality details of tags for a specific metric.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: MetricTagCardinalitiesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._get_metric_tag_cardinality_details_endpoint.call_with_http_info(**kwargs)
+
+ def get_tag_indexing_rule(self, id: str, ) -> TagIndexingRuleResponse:
+ """Get a tag indexing rule.
+
+ Get a single tag indexing rule by its UUID.
+
+ :param id: ID of the tag indexing rule.
+ :type id: str
+ :rtype: TagIndexingRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_tag_indexing_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_tag_indexing_rule_exemption(self, metric_name: str, ) -> TagIndexingRuleExemptionResponse:
+ """Get a tag indexing rule exemption.
+
+ Returns why a metric is excluded from tag indexing rules.
+ Returns 200 with ``kind=exemption`` when an explicit exemption exists, 200 with
+ ``kind=legacy_tag_configuration`` when the metric has a legacy tag configuration acting as an
+ implicit exclusion, or 404 when neither applies.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: TagIndexingRuleExemptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._get_tag_indexing_rule_exemption_endpoint.call_with_http_info(**kwargs)
+
+ def list_active_metric_configurations(self, metric_name: str, *, window_seconds: Union[int, UnsetType]=unset, ) -> MetricSuggestedTagsAndAggregationsResponse:
+ """List active tags and aggregations.
+
+ List tags and aggregations that are actively queried on dashboards, notebooks, monitors, the Metrics Explorer, and using the API for a given metric name.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :param window_seconds: The number of seconds of look back (from now).
+ Default value is 604,800 (1 week), minimum value is 7200 (2 hours), maximum value is 2,630,000 (1 month).
+ :type window_seconds: int, optional
+ :rtype: MetricSuggestedTagsAndAggregationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ if window_seconds is not unset:
+ kwargs["window_seconds"] = window_seconds
+
+ return self._list_active_metric_configurations_endpoint.call_with_http_info(**kwargs)
+
+ def list_metric_assets(self, metric_name: str, ) -> MetricAssetsResponse:
+ """Related Assets to a Metric.
+
+ Returns dashboards, monitors, notebooks, and SLOs that a metric is stored in, if any. Updated every 24 hours.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: MetricAssetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._list_metric_assets_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_configuration_by_name(self, metric_name: str, ) -> MetricTagConfigurationResponse:
+ """List tag configuration by name.
+
+ Returns the tag configuration for the given metric name.
+
+ A metric may exist and submit data without having a tag configuration. If no tag configuration exists
+ for the metric, this endpoint returns ``404 Not Found``. This response does not indicate that the metric
+ itself is missing.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: MetricTagConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._list_tag_configuration_by_name_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_configurations(self, *, filter_configured: Union[bool, UnsetType]=unset, filter_is_configurable: Union[bool, UnsetType]=unset, filter_tags_configured: Union[str, UnsetType]=unset, filter_metric_type: Union[MetricTagConfigurationMetricTypeCategory, UnsetType]=unset, filter_include_percentiles: Union[bool, UnsetType]=unset, filter_queried: Union[bool, UnsetType]=unset, filter_queried_window_seconds: Union[int, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_related_assets: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, window_seconds: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> MetricsAndMetricTagConfigurationsResponse:
+ """Get a list of metrics.
+
+ Get a list of actively reporting metrics for your organization. Pagination is optional using the ``page[cursor]`` and ``page[size]`` query parameters.
+
+ Query parameters use bracket notation (for example, ``filter[tags]`` , ``filter[queried][window][seconds]`` ). Pass them as standard URL query strings, URL-encoding the brackets if your client does not handle them. For example: ``GET /api/v2/metrics?filter[tags]=env:prod&window[seconds]=86400&page[size]=500``.
+
+ :param filter_configured: Only return custom metrics that have been configured ( ``true`` ) or not configured ( ``false`` ) with Metrics Without Limits.
+ :type filter_configured: bool, optional
+ :param filter_is_configurable: Only return metrics that are eligible ( ``true`` ) or ineligible ( ``false`` ) for configuration with Metrics Without Limits.
+ :type filter_is_configurable: bool, optional
+ :param filter_tags_configured: Only return metrics that have the given tag key(s) in their Metrics Without Limits configuration (included or excluded).
+ :type filter_tags_configured: str, optional
+ :param filter_metric_type: Only return metrics of the given metric type.
+ :type filter_metric_type: MetricTagConfigurationMetricTypeCategory, optional
+ :param filter_include_percentiles: Only return distribution metrics that have percentile aggregations enabled (true) or disabled (false).
+ :type filter_include_percentiles: bool, optional
+ :param filter_queried: Only return metrics that have been queried (true) or not queried (false) in the look back window. Set the window with ``filter[queried][window][seconds]`` ; if omitted, a default window is used.
+ :type filter_queried: bool, optional
+ :param filter_queried_window_seconds: This parameter has no effect unless ``filter[queried]`` is also set. Only return metrics that have been queried or not queried in the specified window. The default value is 2,592,000 seconds (30 days), the maximum value is 15,552,000 seconds (180 days), and the minimum value is 1 second. For example: ``filter[queried]=true&filter[queried][window][seconds]=604800``.
+ :type filter_queried_window_seconds: int, optional
+ :param filter_tags: Only return metrics that were submitted with tags matching this expression. You can use AND, OR, IN, and wildcards. For example: ``filter[tags]=env IN (staging,test) AND service:web*``.
+ :type filter_tags: str, optional
+ :param filter_related_assets: Only return metrics that are used in at least one dashboard, monitor, notebook, or SLO.
+ :type filter_related_assets: bool, optional
+ :param include: Include related resources in the response. Set to ``metric_volumes`` to include indexed and ingested volume counts for each metric.
+ :type include: str, optional
+ :param sort: Sort results by metric volume. Prefix a key with ``-`` for descending order. Supported keys: ``metric_volumes.indexed_volume`` , ``metric_volumes.ingested_volume`` , ``metric_volumes.indexed_volume_delta`` , ``metric_volumes.ingested_volume_delta``. Requires a paginated request ( ``page[size]`` or ``page[cursor]`` ).
+ :type sort: str, optional
+ :param window_seconds: Only return metrics that have been actively reporting in the specified window. The default value is 3600 seconds (1 hour), the maximum value is 2,592,000 seconds (30 days), and the minimum value is 1 second.
+ :type window_seconds: int, optional
+ :param page_size: Maximum number of results per page. Send ``page[size]`` on the first request to opt in to pagination. On each subsequent request, send ``page[cursor]`` set to the value of ``meta.pagination.next_cursor`` from the previous response. The default value is 10000, the maximum value is 10000, and the minimum value is 1.
+ :type page_size: int, optional
+ :param page_cursor: Cursor for pagination. Use ``page[size]`` to opt-in to pagination and get the first page; for subsequent pages, use the value from ``meta.pagination.next_cursor`` in the response. Pagination is complete when ``next_cursor`` is null.
+ :type page_cursor: str, optional
+ :rtype: MetricsAndMetricTagConfigurationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_configured is not unset:
+ kwargs["filter_configured"] = filter_configured
+
+ if filter_is_configurable is not unset:
+ kwargs["filter_is_configurable"] = filter_is_configurable
+
+ if filter_tags_configured is not unset:
+ kwargs["filter_tags_configured"] = filter_tags_configured
+
+ if filter_metric_type is not unset:
+ kwargs["filter_metric_type"] = filter_metric_type
+
+ if filter_include_percentiles is not unset:
+ kwargs["filter_include_percentiles"] = filter_include_percentiles
+
+ if filter_queried is not unset:
+ kwargs["filter_queried"] = filter_queried
+
+ if filter_queried_window_seconds is not unset:
+ kwargs["filter_queried_window_seconds"] = filter_queried_window_seconds
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_related_assets is not unset:
+ kwargs["filter_related_assets"] = filter_related_assets
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if window_seconds is not unset:
+ kwargs["window_seconds"] = window_seconds
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._list_tag_configurations_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_configurations_with_pagination(self, *, filter_configured: Union[bool, UnsetType]=unset, filter_is_configurable: Union[bool, UnsetType]=unset, filter_tags_configured: Union[str, UnsetType]=unset, filter_metric_type: Union[MetricTagConfigurationMetricTypeCategory, UnsetType]=unset, filter_include_percentiles: Union[bool, UnsetType]=unset, filter_queried: Union[bool, UnsetType]=unset, filter_queried_window_seconds: Union[int, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_related_assets: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, window_seconds: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[MetricsAndMetricTagConfigurations]:
+ """Get a list of metrics.
+
+ Provide a paginated version of :meth:`list_tag_configurations`, returning all items.
+
+ :param filter_configured: Only return custom metrics that have been configured ( ``true`` ) or not configured ( ``false`` ) with Metrics Without Limits.
+ :type filter_configured: bool, optional
+ :param filter_is_configurable: Only return metrics that are eligible ( ``true`` ) or ineligible ( ``false`` ) for configuration with Metrics Without Limits.
+ :type filter_is_configurable: bool, optional
+ :param filter_tags_configured: Only return metrics that have the given tag key(s) in their Metrics Without Limits configuration (included or excluded).
+ :type filter_tags_configured: str, optional
+ :param filter_metric_type: Only return metrics of the given metric type.
+ :type filter_metric_type: MetricTagConfigurationMetricTypeCategory, optional
+ :param filter_include_percentiles: Only return distribution metrics that have percentile aggregations enabled (true) or disabled (false).
+ :type filter_include_percentiles: bool, optional
+ :param filter_queried: Only return metrics that have been queried (true) or not queried (false) in the look back window. Set the window with ``filter[queried][window][seconds]`` ; if omitted, a default window is used.
+ :type filter_queried: bool, optional
+ :param filter_queried_window_seconds: This parameter has no effect unless ``filter[queried]`` is also set. Only return metrics that have been queried or not queried in the specified window. The default value is 2,592,000 seconds (30 days), the maximum value is 15,552,000 seconds (180 days), and the minimum value is 1 second. For example: ``filter[queried]=true&filter[queried][window][seconds]=604800``.
+ :type filter_queried_window_seconds: int, optional
+ :param filter_tags: Only return metrics that were submitted with tags matching this expression. You can use AND, OR, IN, and wildcards. For example: ``filter[tags]=env IN (staging,test) AND service:web*``.
+ :type filter_tags: str, optional
+ :param filter_related_assets: Only return metrics that are used in at least one dashboard, monitor, notebook, or SLO.
+ :type filter_related_assets: bool, optional
+ :param include: Include related resources in the response. Set to ``metric_volumes`` to include indexed and ingested volume counts for each metric.
+ :type include: str, optional
+ :param sort: Sort results by metric volume. Prefix a key with ``-`` for descending order. Supported keys: ``metric_volumes.indexed_volume`` , ``metric_volumes.ingested_volume`` , ``metric_volumes.indexed_volume_delta`` , ``metric_volumes.ingested_volume_delta``. Requires a paginated request ( ``page[size]`` or ``page[cursor]`` ).
+ :type sort: str, optional
+ :param window_seconds: Only return metrics that have been actively reporting in the specified window. The default value is 3600 seconds (1 hour), the maximum value is 2,592,000 seconds (30 days), and the minimum value is 1 second.
+ :type window_seconds: int, optional
+ :param page_size: Maximum number of results per page. Send ``page[size]`` on the first request to opt in to pagination. On each subsequent request, send ``page[cursor]`` set to the value of ``meta.pagination.next_cursor`` from the previous response. The default value is 10000, the maximum value is 10000, and the minimum value is 1.
+ :type page_size: int, optional
+ :param page_cursor: Cursor for pagination. Use ``page[size]`` to opt-in to pagination and get the first page; for subsequent pages, use the value from ``meta.pagination.next_cursor`` in the response. Pagination is complete when ``next_cursor`` is null.
+ :type page_cursor: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[MetricsAndMetricTagConfigurations]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_configured is not unset:
+ kwargs["filter_configured"] = filter_configured
+
+ if filter_is_configurable is not unset:
+ kwargs["filter_is_configurable"] = filter_is_configurable
+
+ if filter_tags_configured is not unset:
+ kwargs["filter_tags_configured"] = filter_tags_configured
+
+ if filter_metric_type is not unset:
+ kwargs["filter_metric_type"] = filter_metric_type
+
+ if filter_include_percentiles is not unset:
+ kwargs["filter_include_percentiles"] = filter_include_percentiles
+
+ if filter_queried is not unset:
+ kwargs["filter_queried"] = filter_queried
+
+ if filter_queried_window_seconds is not unset:
+ kwargs["filter_queried_window_seconds"] = filter_queried_window_seconds
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_related_assets is not unset:
+ kwargs["filter_related_assets"] = filter_related_assets
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if window_seconds is not unset:
+ kwargs["window_seconds"] = window_seconds
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10000)
+ endpoint = self._list_tag_configurations_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.pagination.next_cursor",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_tag_indexing_rules(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, search: Union[str, UnsetType]=unset, ) -> TagIndexingRulesResponse:
+ """List tag indexing rules.
+
+ List tag indexing rules for an org, sorted by ``rule_order`` , with offset/limit pagination.
+
+ :param page_limit: Page size (1–1000, default 100).
+ :type page_limit: int, optional
+ :param page_offset: Page offset from the start of the list (default 0).
+ :type page_offset: int, optional
+ :param search: Substring filter on rule name.
+ :type search: str, optional
+ :rtype: TagIndexingRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if search is not unset:
+ kwargs["search"] = search
+
+ return self._list_tag_indexing_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_indexing_rules_for_metric(self, metric_name: str, ) -> TagIndexingRulesResponse:
+ """List tag indexing rules for a metric.
+
+ List the tag indexing rules that apply to a given metric, sorted by ``rule_order``.
+ Matching is performed server-side using each rule's ``metric_name_matches`` glob patterns.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :rtype: TagIndexingRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ return self._list_tag_indexing_rules_for_metric_endpoint.call_with_http_info(**kwargs)
+
+ def list_tags_by_metric_name(self, metric_name: str, *, window_seconds: Union[int, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_match: Union[str, UnsetType]=unset, filter_include_tag_values: Union[bool, UnsetType]=unset, filter_allow_partial: Union[bool, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> MetricAllTagsResponse:
+ """List tags by metric name.
+
+ View indexed and ingested tags for a given metric name.
+ Results are filtered by the ``window[seconds]`` parameter, which defaults to 14400 (4 hours).
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :param window_seconds: The number of seconds of look back (from now) to query for tag data.
+ Default value is 14400 (4 hours), minimum value is 14400 (4 hours).
+ :type window_seconds: int, optional
+ :param filter_tags: Filter results to tags from data points that have the specified tags.
+ For example, ``filter[tags]=env:staging,host:123`` returns tags only from data points with both ``env:staging`` and ``host:123``.
+ :type filter_tags: str, optional
+ :param filter_match: Filter returned tags to those matching a substring.
+ For example, ``filter[match]=env`` returns tags like ``env:prod`` , ``environment:staging`` , etc.
+ :type filter_match: str, optional
+ :param filter_include_tag_values: Whether to include tag values in the response.
+ Defaults to true.
+ :type filter_include_tag_values: bool, optional
+ :param filter_allow_partial: Whether to allow partial results.
+ Defaults to false.
+ :type filter_allow_partial: bool, optional
+ :param page_limit: Maximum number of results to return.
+ :type page_limit: int, optional
+ :rtype: MetricAllTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ if window_seconds is not unset:
+ kwargs["window_seconds"] = window_seconds
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_match is not unset:
+ kwargs["filter_match"] = filter_match
+
+ if filter_include_tag_values is not unset:
+ kwargs["filter_include_tag_values"] = filter_include_tag_values
+
+ if filter_allow_partial is not unset:
+ kwargs["filter_allow_partial"] = filter_allow_partial
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_tags_by_metric_name_endpoint.call_with_http_info(**kwargs)
+
+ def list_volumes_by_metric_name(self, metric_name: str, *, window_seconds: Union[int, UnsetType]=unset, ) -> MetricVolumesResponse:
+ """List distinct metric volumes by metric name.
+
+ View hourly average cardinality for the given metric name over the look back period.
+ For Metric Name Pricing customers, view total point volume for the given metric name
+ over the look back period.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :param window_seconds: The number of seconds of look back (from now).
+ Default value is 3,600 (1 hour), maximum value is 2,592,000 (1 month).
+ :type window_seconds: int, optional
+ :rtype: MetricVolumesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ if window_seconds is not unset:
+ kwargs["window_seconds"] = window_seconds
+
+ return self._list_volumes_by_metric_name_endpoint.call_with_http_info(**kwargs)
+
+ def query_scalar_data(self, body: ScalarFormulaQueryRequest, ) -> ScalarFormulaQueryResponse:
+ """Query scalar data across multiple products.
+
+ Query scalar values (as seen on Query Value, Table, and Toplist widgets).
+ Multiple data sources are supported with the ability to
+ process the data using formulas and functions.
+
+ :type body: ScalarFormulaQueryRequest
+ :rtype: ScalarFormulaQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_scalar_data_endpoint.call_with_http_info(**kwargs)
+
+ def query_timeseries_data(self, body: TimeseriesFormulaQueryRequest, ) -> TimeseriesFormulaQueryResponse:
+ """Query timeseries data across multiple products.
+
+ Query timeseries data across various data sources and
+ process the data by applying formulas and functions.
+
+ :type body: TimeseriesFormulaQueryRequest
+ :rtype: TimeseriesFormulaQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_timeseries_data_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_tag_indexing_rules(self, body: TagIndexingRuleOrderRequest, ) -> None:
+ """Reorder tag indexing rules.
+
+ Atomically re-sequence the tag indexing rules for an org to match the supplied list of rule UUIDs.
+ The server assigns ``rule_order`` 1, 2, … matching each rule UUID by position in the list.
+ The UUIDs of all active rules must be provided; omitting any active rule UUID returns a 400 error.
+ Requires the ``Manage Tags for Metrics`` permission.
+
+ :type body: TagIndexingRuleOrderRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_tag_indexing_rules_endpoint.call_with_http_info(**kwargs)
+
+ def submit_metrics(self, body: MetricPayload, *, content_encoding: Union[MetricContentEncoding, UnsetType]=unset, ) -> IntakePayloadAccepted:
+ """Submit metrics.
+
+ The metrics end-point allows you to post time-series data that can be graphed on Datadog’s dashboards.
+ The maximum payload size is 500 kilobytes (512000 bytes). Compressed payloads must have a decompressed size of less than 5 megabytes (5242880 bytes).
+
+ If you’re submitting metrics directly to the Datadog API without using DogStatsD, expect:
+
+ * 64 bits for the timestamp
+ * 64 bits for the value
+ * 20 bytes for the metric names
+ * 50 bytes for the timeseries
+ * The full payload is approximately 100 bytes.
+
+ Host name is one of the resources in the Resources field.
+
+ :type body: MetricPayload
+ :param content_encoding: HTTP header used to compress the media-type.
+ :type content_encoding: MetricContentEncoding, optional
+ :rtype: IntakePayloadAccepted
+ """
+ kwargs: Dict[str, Any] = {}
+ if content_encoding is not unset:
+ kwargs["content_encoding"] = content_encoding
+
+ kwargs["body"] = body
+
+ return self._submit_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def update_tag_configuration(self, metric_name: str, body: MetricTagConfigurationUpdateRequest, ) -> MetricTagConfigurationResponse:
+ """Update a tag configuration.
+
+ Update the tag configuration of a metric or percentile aggregations of a distribution metric or custom aggregations
+ of a count, rate, or gauge metric. By setting ``exclude_tags_mode`` to true the behavior is changed
+ from an allow-list to a deny-list, and tags in the defined list will not be queryable.
+ Can only be used with application keys from users with the ``Manage Tags for Metrics`` permission. This endpoint requires
+ a tag configuration to be created first.
+
+ :param metric_name: The name of the metric.
+ :type metric_name: str
+ :type body: MetricTagConfigurationUpdateRequest
+ :rtype: MetricTagConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_name"] = metric_name
+
+ kwargs["body"] = body
+
+ return self._update_tag_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def update_tag_indexing_rule(self, id: str, body: TagIndexingRuleUpdateRequest, ) -> TagIndexingRuleResponse:
+ """Update a tag indexing rule.
+
+ Partially update a tag indexing rule. Fields omitted from the request body are left unchanged.
+ Setting ``rule_order`` to a value already used by another rule returns 409; use the
+ reorder endpoint for atomic re-sequencing. Requires the ``Manage Tags for Metrics`` permission.
+
+ :param id: ID of the tag indexing rule.
+ :type id: str
+ :type body: TagIndexingRuleUpdateRequest
+ :rtype: TagIndexingRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_tag_indexing_rule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/microsoft_teams_integration_api.py b/datadog_api_client/v2/api/microsoft_teams_integration_api.py
new file mode 100644
index 0000000000..63190bd923
--- /dev/null
+++ b/datadog_api_client/v2/api/microsoft_teams_integration_api.py
@@ -0,0 +1,536 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.microsoft_teams_get_channel_by_name_response import MicrosoftTeamsGetChannelByNameResponse
+from datadog_api_client.v2.model.microsoft_teams_tenant_based_handles_response import MicrosoftTeamsTenantBasedHandlesResponse
+from datadog_api_client.v2.model.microsoft_teams_tenant_based_handle_response import MicrosoftTeamsTenantBasedHandleResponse
+from datadog_api_client.v2.model.microsoft_teams_create_tenant_based_handle_request import MicrosoftTeamsCreateTenantBasedHandleRequest
+from datadog_api_client.v2.model.microsoft_teams_update_tenant_based_handle_request import MicrosoftTeamsUpdateTenantBasedHandleRequest
+from datadog_api_client.v2.model.microsoft_teams_workflows_webhook_handles_response import MicrosoftTeamsWorkflowsWebhookHandlesResponse
+from datadog_api_client.v2.model.microsoft_teams_workflows_webhook_handle_response import MicrosoftTeamsWorkflowsWebhookHandleResponse
+from datadog_api_client.v2.model.microsoft_teams_create_workflows_webhook_handle_request import MicrosoftTeamsCreateWorkflowsWebhookHandleRequest
+from datadog_api_client.v2.model.microsoft_teams_update_workflows_webhook_handle_request import MicrosoftTeamsUpdateWorkflowsWebhookHandleRequest
+
+
+class MicrosoftTeamsIntegrationApi:
+ """
+ Configure your `Datadog Microsoft Teams integration `_
+ directly through the Datadog API. Note: These endpoints do not support legacy connector handles.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_tenant_based_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsTenantBasedHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/tenant-based-handles",
+ "operation_id": "create_tenant_based_handle",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MicrosoftTeamsCreateTenantBasedHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_workflows_webhook_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsWorkflowsWebhookHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/workflows-webhook-handles",
+ "operation_id": "create_workflows_webhook_handle",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MicrosoftTeamsCreateWorkflowsWebhookHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_ms_teams_user_binding_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/user-binding/{tenant_id}",
+ "operation_id": "delete_ms_teams_user_binding",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "tenant_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tenant_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tenant_based_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}",
+ "operation_id": "delete_tenant_based_handle",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_workflows_webhook_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}",
+ "operation_id": "delete_workflows_webhook_handle",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_channel_by_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsGetChannelByNameResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/channel/{tenant_name}/{team_name}/{channel_name}",
+ "operation_id": "get_channel_by_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "tenant_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tenant_name",
+ "location": "path",
+ },
+ "team_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_name",
+ "location": "path",
+ },
+ "channel_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "channel_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tenant_based_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsTenantBasedHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}",
+ "operation_id": "get_tenant_based_handle",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_workflows_webhook_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsWorkflowsWebhookHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}",
+ "operation_id": "get_workflows_webhook_handle",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tenant_based_handles_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsTenantBasedHandlesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/tenant-based-handles",
+ "operation_id": "list_tenant_based_handles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "tenant_id": {
+ "openapi_types": (str,),
+ "attribute": "tenant_id",
+ "location": "query",
+ },
+ "name": {
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_workflows_webhook_handles_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsWorkflowsWebhookHandlesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/workflows-webhook-handles",
+ "operation_id": "list_workflows_webhook_handles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "name": {
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_tenant_based_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsTenantBasedHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}",
+ "operation_id": "update_tenant_based_handle",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MicrosoftTeamsUpdateTenantBasedHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_workflows_webhook_handle_endpoint = _Endpoint(
+ settings={
+ "response_type": (MicrosoftTeamsWorkflowsWebhookHandleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}",
+ "operation_id": "update_workflows_webhook_handle",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "handle_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MicrosoftTeamsUpdateWorkflowsWebhookHandleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_tenant_based_handle(self, body: MicrosoftTeamsCreateTenantBasedHandleRequest, ) -> MicrosoftTeamsTenantBasedHandleResponse:
+ """Create tenant-based handle.
+
+ Create a tenant-based handle in the Datadog Microsoft Teams integration.
+
+ :param body: Tenant-based handle payload.
+ :type body: MicrosoftTeamsCreateTenantBasedHandleRequest
+ :rtype: MicrosoftTeamsTenantBasedHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_tenant_based_handle_endpoint.call_with_http_info(**kwargs)
+
+ def create_workflows_webhook_handle(self, body: MicrosoftTeamsCreateWorkflowsWebhookHandleRequest, ) -> MicrosoftTeamsWorkflowsWebhookHandleResponse:
+ """Create Workflows webhook handle.
+
+ Create a Workflows webhook handle in the Datadog Microsoft Teams integration.
+
+ :param body: Workflows Webhook handle payload.
+ :type body: MicrosoftTeamsCreateWorkflowsWebhookHandleRequest
+ :rtype: MicrosoftTeamsWorkflowsWebhookHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_workflows_webhook_handle_endpoint.call_with_http_info(**kwargs)
+
+ def delete_ms_teams_user_binding(self, tenant_id: str, ) -> None:
+ """Delete user binding.
+
+ Delete the user binding for a given tenant from the Datadog Microsoft Teams integration.
+
+ :param tenant_id: Your tenant id.
+ :type tenant_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tenant_id"] = tenant_id
+
+ return self._delete_ms_teams_user_binding_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tenant_based_handle(self, handle_id: str, ) -> None:
+ """Delete tenant-based handle.
+
+ Delete a tenant-based handle from the Datadog Microsoft Teams integration.
+
+ :param handle_id: Your tenant-based handle id.
+ :type handle_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle_id"] = handle_id
+
+ return self._delete_tenant_based_handle_endpoint.call_with_http_info(**kwargs)
+
+ def delete_workflows_webhook_handle(self, handle_id: str, ) -> None:
+ """Delete Workflows webhook handle.
+
+ Delete a Workflows webhook handle from the Datadog Microsoft Teams integration.
+
+ :param handle_id: Your Workflows webhook handle id.
+ :type handle_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle_id"] = handle_id
+
+ return self._delete_workflows_webhook_handle_endpoint.call_with_http_info(**kwargs)
+
+ def get_channel_by_name(self, tenant_name: str, team_name: str, channel_name: str, ) -> MicrosoftTeamsGetChannelByNameResponse:
+ """Get channel information by name.
+
+ Get the tenant, team, and channel ID of a channel in the Datadog Microsoft Teams integration.
+
+ :param tenant_name: Your tenant name.
+ :type tenant_name: str
+ :param team_name: Your team name.
+ :type team_name: str
+ :param channel_name: Your channel name.
+ :type channel_name: str
+ :rtype: MicrosoftTeamsGetChannelByNameResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tenant_name"] = tenant_name
+
+ kwargs["team_name"] = team_name
+
+ kwargs["channel_name"] = channel_name
+
+ return self._get_channel_by_name_endpoint.call_with_http_info(**kwargs)
+
+ def get_tenant_based_handle(self, handle_id: str, ) -> MicrosoftTeamsTenantBasedHandleResponse:
+ """Get tenant-based handle information.
+
+ Get the tenant, team, and channel information of a tenant-based handle from the Datadog Microsoft Teams integration.
+
+ :param handle_id: Your tenant-based handle id.
+ :type handle_id: str
+ :rtype: MicrosoftTeamsTenantBasedHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle_id"] = handle_id
+
+ return self._get_tenant_based_handle_endpoint.call_with_http_info(**kwargs)
+
+ def get_workflows_webhook_handle(self, handle_id: str, ) -> MicrosoftTeamsWorkflowsWebhookHandleResponse:
+ """Get Workflows webhook handle information.
+
+ Get the name of a Workflows webhook handle from the Datadog Microsoft Teams integration.
+
+ :param handle_id: Your Workflows webhook handle id.
+ :type handle_id: str
+ :rtype: MicrosoftTeamsWorkflowsWebhookHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle_id"] = handle_id
+
+ return self._get_workflows_webhook_handle_endpoint.call_with_http_info(**kwargs)
+
+ def list_tenant_based_handles(self, *, tenant_id: Union[str, UnsetType]=unset, name: Union[str, UnsetType]=unset, ) -> MicrosoftTeamsTenantBasedHandlesResponse:
+ """Get all tenant-based handles.
+
+ Get a list of all tenant-based handles from the Datadog Microsoft Teams integration.
+
+ :param tenant_id: Your tenant id.
+ :type tenant_id: str, optional
+ :param name: Your tenant-based handle name.
+ :type name: str, optional
+ :rtype: MicrosoftTeamsTenantBasedHandlesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if tenant_id is not unset:
+ kwargs["tenant_id"] = tenant_id
+
+ if name is not unset:
+ kwargs["name"] = name
+
+ return self._list_tenant_based_handles_endpoint.call_with_http_info(**kwargs)
+
+ def list_workflows_webhook_handles(self, *, name: Union[str, UnsetType]=unset, ) -> MicrosoftTeamsWorkflowsWebhookHandlesResponse:
+ """Get all Workflows webhook handles.
+
+ Get a list of all Workflows webhook handles from the Datadog Microsoft Teams integration.
+
+ :param name: Your Workflows webhook handle name.
+ :type name: str, optional
+ :rtype: MicrosoftTeamsWorkflowsWebhookHandlesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if name is not unset:
+ kwargs["name"] = name
+
+ return self._list_workflows_webhook_handles_endpoint.call_with_http_info(**kwargs)
+
+ def update_tenant_based_handle(self, handle_id: str, body: MicrosoftTeamsUpdateTenantBasedHandleRequest, ) -> MicrosoftTeamsTenantBasedHandleResponse:
+ """Update tenant-based handle.
+
+ Update a tenant-based handle from the Datadog Microsoft Teams integration.
+
+ :param handle_id: Your tenant-based handle id.
+ :type handle_id: str
+ :param body: Tenant-based handle payload.
+ :type body: MicrosoftTeamsUpdateTenantBasedHandleRequest
+ :rtype: MicrosoftTeamsTenantBasedHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle_id"] = handle_id
+
+ kwargs["body"] = body
+
+ return self._update_tenant_based_handle_endpoint.call_with_http_info(**kwargs)
+
+ def update_workflows_webhook_handle(self, handle_id: str, body: MicrosoftTeamsUpdateWorkflowsWebhookHandleRequest, ) -> MicrosoftTeamsWorkflowsWebhookHandleResponse:
+ """Update Workflows webhook handle.
+
+ Update a Workflows webhook handle from the Datadog Microsoft Teams integration.
+
+ :param handle_id: Your Workflows webhook handle id.
+ :type handle_id: str
+ :param body: Workflows Webhook handle payload.
+ :type body: MicrosoftTeamsUpdateWorkflowsWebhookHandleRequest
+ :rtype: MicrosoftTeamsWorkflowsWebhookHandleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle_id"] = handle_id
+
+ kwargs["body"] = body
+
+ return self._update_workflows_webhook_handle_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/model_lab_api_api.py b/datadog_api_client/v2/api/model_lab_api_api.py
new file mode 100644
index 0000000000..8355b591bf
--- /dev/null
+++ b/datadog_api_client/v2/api/model_lab_api_api.py
@@ -0,0 +1,861 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.model_lab_facet_keys_response import ModelLabFacetKeysResponse
+from datadog_api_client.v2.model.model_lab_facet_values_response import ModelLabFacetValuesResponse
+from datadog_api_client.v2.model.model_lab_facet_type import ModelLabFacetType
+from datadog_api_client.v2.model.model_lab_project_facet_type import ModelLabProjectFacetType
+from datadog_api_client.v2.model.model_lab_projects_response import ModelLabProjectsResponse
+from datadog_api_client.v2.model.model_lab_project_response import ModelLabProjectResponse
+from datadog_api_client.v2.model.model_lab_project_artifacts_response import ModelLabProjectArtifactsResponse
+from datadog_api_client.v2.model.model_lab_runs_response import ModelLabRunsResponse
+from datadog_api_client.v2.model.model_lab_run_status import ModelLabRunStatus
+from datadog_api_client.v2.model.model_lab_run_response import ModelLabRunResponse
+from datadog_api_client.v2.model.model_lab_run_artifacts_response import ModelLabRunArtifactsResponse
+
+
+class ModelLabAPIApi:
+ """
+ Manage Model Lab projects, runs, artifacts, and facets for ML experiment tracking.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_model_lab_run_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/runs/{run_id}",
+ "operation_id": "delete_model_lab_run",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "run_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "run_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_model_lab_artifact_content_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/artifacts/content",
+ "operation_id": "get_model_lab_artifact_content",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "project_id",
+ "location": "query",
+ },
+ "artifact_path": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "artifact_path",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/octet-stream", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_model_lab_project_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabProjectResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/projects/{project_id}",
+ "operation_id": "get_model_lab_project",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_model_lab_run_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabRunResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/runs/{run_id}",
+ "operation_id": "get_model_lab_run",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "run_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "run_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_project_artifacts_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabProjectArtifactsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/projects/{project_id}/artifacts",
+ "operation_id": "list_model_lab_project_artifacts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_project_facet_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabFacetKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/project-facet-keys",
+ "operation_id": "list_model_lab_project_facet_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_project_facet_values_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabFacetValuesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/project-facet-values",
+ "operation_id": "list_model_lab_project_facet_values",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "facet_type": {
+ "required": True,
+ "openapi_types": (ModelLabProjectFacetType,),
+ "attribute": "facet_type",
+ "location": "query",
+ },
+ "facet_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "facet_name",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_projects_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabProjectsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/projects",
+ "operation_id": "list_model_lab_projects",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_owner_id": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[owner_id]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_run_artifacts_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabRunArtifactsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/runs/{run_id}/artifacts",
+ "operation_id": "list_model_lab_run_artifacts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "run_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "run_id",
+ "location": "path",
+ },
+ "path": {
+ "openapi_types": (str,),
+ "attribute": "path",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_run_facet_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabFacetKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/facet-keys",
+ "operation_id": "list_model_lab_run_facet_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_project_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "filter[project_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_run_facet_values_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabFacetValuesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/facet-values",
+ "operation_id": "list_model_lab_run_facet_values",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_project_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "filter[project_id]",
+ "location": "query",
+ },
+ "facet_type": {
+ "required": True,
+ "openapi_types": (ModelLabFacetType,),
+ "attribute": "facet_type",
+ "location": "query",
+ },
+ "facet_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "facet_name",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_model_lab_runs_endpoint = _Endpoint(
+ settings={
+ "response_type": (ModelLabRunsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/runs",
+ "operation_id": "list_model_lab_runs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_owner_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[owner_id]",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (ModelLabRunStatus,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "filter_project_id": {
+ "openapi_types": (int,),
+ "attribute": "filter[project_id]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "filter_params": {
+ "openapi_types": (str,),
+ "attribute": "filter[params]",
+ "location": "query",
+ },
+ "filter_parent_run_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[parent_run_id]",
+ "location": "query",
+ },
+ "pinned_first": {
+ "openapi_types": (bool,),
+ "attribute": "pinned_first",
+ "location": "query",
+ },
+ "include_pinned": {
+ "openapi_types": (bool,),
+ "attribute": "include_pinned",
+ "location": "query",
+ },
+ "include_descendant_matches": {
+ "openapi_types": (bool,),
+ "attribute": "include_descendant_matches",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 100,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._pin_model_lab_run_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/runs/{run_id}/pin",
+ "operation_id": "pin_model_lab_run",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "run_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "run_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._star_model_lab_project_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/projects/{project_id}/star",
+ "operation_id": "star_model_lab_project",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._unpin_model_lab_run_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/runs/{run_id}/pin",
+ "operation_id": "unpin_model_lab_run",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "run_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "run_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._unstar_model_lab_project_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/model-lab-api/projects/{project_id}/star",
+ "operation_id": "unstar_model_lab_project",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "project_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "project_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ def delete_model_lab_run(self, run_id: int, ) -> None:
+ """Delete a Model Lab run.
+
+ Delete a Model Lab run by its ID.
+
+ :param run_id: The ID of the Model Lab run.
+ :type run_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["run_id"] = run_id
+
+ return self._delete_model_lab_run_endpoint.call_with_http_info(**kwargs)
+
+ def get_model_lab_artifact_content(self, project_id: str, artifact_path: str, ) -> file_type:
+ """Get Model Lab artifact content.
+
+ Download the raw content of a Model Lab artifact file.
+
+ :param project_id: ID of the project.
+ :type project_id: str
+ :param artifact_path: Path to the artifact relative to the project directory.
+ :type artifact_path: str
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ kwargs["artifact_path"] = artifact_path
+
+ return self._get_model_lab_artifact_content_endpoint.call_with_http_info(**kwargs)
+
+ def get_model_lab_project(self, project_id: int, ) -> ModelLabProjectResponse:
+ """Get a Model Lab project.
+
+ Get a single Model Lab project by its ID.
+
+ :param project_id: The ID of the Model Lab project.
+ :type project_id: int
+ :rtype: ModelLabProjectResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._get_model_lab_project_endpoint.call_with_http_info(**kwargs)
+
+ def get_model_lab_run(self, run_id: int, ) -> ModelLabRunResponse:
+ """Get a Model Lab run.
+
+ Get a single Model Lab run by its ID.
+
+ :param run_id: The ID of the Model Lab run.
+ :type run_id: int
+ :rtype: ModelLabRunResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["run_id"] = run_id
+
+ return self._get_model_lab_run_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_project_artifacts(self, project_id: int, ) -> ModelLabProjectArtifactsResponse:
+ """List Model Lab project artifacts.
+
+ List all artifact files for a specific Model Lab project.
+
+ :param project_id: The ID of the Model Lab project.
+ :type project_id: int
+ :rtype: ModelLabProjectArtifactsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._list_model_lab_project_artifacts_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_project_facet_keys(self, ) -> ModelLabFacetKeysResponse:
+ """List Model Lab project facet keys.
+
+ List all available facet keys for filtering Model Lab projects.
+
+ :rtype: ModelLabFacetKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_model_lab_project_facet_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_project_facet_values(self, facet_type: ModelLabProjectFacetType, facet_name: str, ) -> ModelLabFacetValuesResponse:
+ """List Model Lab project facet values.
+
+ List available facet values for a specific project facet key.
+
+ :param facet_type: Facet type. Valid values: tag.
+ :type facet_type: ModelLabProjectFacetType
+ :param facet_name: Facet name.
+ :type facet_name: str
+ :rtype: ModelLabFacetValuesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["facet_type"] = facet_type
+
+ kwargs["facet_name"] = facet_name
+
+ return self._list_model_lab_project_facet_values_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_projects(self, *, filter: Union[str, UnsetType]=unset, filter_owner_id: Union[UUID, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> ModelLabProjectsResponse:
+ """List Model Lab projects.
+
+ List all Model Lab projects for the current organization.
+
+ :param filter: Text search filter for project name or description.
+ :type filter: str, optional
+ :param filter_owner_id: Filter by owner UUID.
+ :type filter_owner_id: UUID, optional
+ :param filter_tags: Filter by tags. Format: key:value,key2:value2.
+ :type filter_tags: str, optional
+ :param sort: Sort field. Valid values: name, created_at, updated_at. Prefix with '-' for descending order (e.g., -updated_at).
+ :type sort: str, optional
+ :param page_size: Number of items per page. Maximum is 100.
+ :type page_size: int, optional
+ :param page_number: Page number (1-indexed).
+ :type page_number: int, optional
+ :rtype: ModelLabProjectsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_owner_id is not unset:
+ kwargs["filter_owner_id"] = filter_owner_id
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_model_lab_projects_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_run_artifacts(self, run_id: int, *, path: Union[str, UnsetType]=unset, ) -> ModelLabRunArtifactsResponse:
+ """List Model Lab run artifacts.
+
+ List artifact files for a specific Model Lab run.
+
+ :param run_id: The ID of the Model Lab run.
+ :type run_id: int
+ :param path: Optional subdirectory path within the run's artifacts.
+ :type path: str, optional
+ :rtype: ModelLabRunArtifactsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["run_id"] = run_id
+
+ if path is not unset:
+ kwargs["path"] = path
+
+ return self._list_model_lab_run_artifacts_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_run_facet_keys(self, filter_project_id: int, ) -> ModelLabFacetKeysResponse:
+ """List Model Lab run facet keys.
+
+ List all available facet keys for filtering Model Lab runs.
+
+ :param filter_project_id: Filter by project ID.
+ :type filter_project_id: int
+ :rtype: ModelLabFacetKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_project_id"] = filter_project_id
+
+ return self._list_model_lab_run_facet_keys_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_run_facet_values(self, filter_project_id: int, facet_type: ModelLabFacetType, facet_name: str, ) -> ModelLabFacetValuesResponse:
+ """List Model Lab run facet values.
+
+ List available facet values for a specific run facet key.
+
+ :param filter_project_id: Filter by project ID.
+ :type filter_project_id: int
+ :param facet_type: Facet type. Valid values: parameter, attribute, tag, metric.
+ :type facet_type: ModelLabFacetType
+ :param facet_name: Facet name.
+ :type facet_name: str
+ :rtype: ModelLabFacetValuesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_project_id"] = filter_project_id
+
+ kwargs["facet_type"] = facet_type
+
+ kwargs["facet_name"] = facet_name
+
+ return self._list_model_lab_run_facet_values_endpoint.call_with_http_info(**kwargs)
+
+ def list_model_lab_runs(self, *, filter_id: Union[str, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_owner_id: Union[str, UnsetType]=unset, filter_status: Union[ModelLabRunStatus, UnsetType]=unset, filter_project_id: Union[int, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_params: Union[str, UnsetType]=unset, filter_parent_run_id: Union[str, UnsetType]=unset, pinned_first: Union[bool, UnsetType]=unset, include_pinned: Union[bool, UnsetType]=unset, include_descendant_matches: Union[bool, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> ModelLabRunsResponse:
+ """List Model Lab runs.
+
+ List all Model Lab runs for the current organization.
+
+ :param filter_id: Filter by run ID(s). Comma-separated list for multiple IDs.
+ :type filter_id: str, optional
+ :param filter: Text search filter for run name or description.
+ :type filter: str, optional
+ :param filter_owner_id: Filter by owner UUID.
+ :type filter_owner_id: str, optional
+ :param filter_status: Filter by run status. Valid values: pending, running, completed, failed, killed, unresponsive, paused.
+ :type filter_status: ModelLabRunStatus, optional
+ :param filter_project_id: Filter by project ID.
+ :type filter_project_id: int, optional
+ :param filter_tags: Filter by tags. Format: key:value,key2:value2.
+ :type filter_tags: str, optional
+ :param filter_params: Filter by params. Format: key:value,key2:>0.5,key3:true.
+ :type filter_params: str, optional
+ :param filter_parent_run_id: Filter by parent run ID. Use 'null' to return only root runs (runs with no parent).
+ :type filter_parent_run_id: str, optional
+ :param pinned_first: Sort pinned runs before non-pinned runs. Pinned runs are ordered by pin time descending.
+ :type pinned_first: bool, optional
+ :param include_pinned: Include all runs pinned by the current user, regardless of other filters.
+ :type include_pinned: bool, optional
+ :param include_descendant_matches: When true, also return runs whose descendants match the active filters. The descendant_match field in each result indicates whether the run was included via a descendant match.
+ :type include_descendant_matches: bool, optional
+ :param sort: Sort field. Valid values: name, created_at, updated_at, duration. Prefix with '-' for descending order (e.g., -updated_at).
+ :type sort: str, optional
+ :param page_size: Number of items per page. Maximum is 100.
+ :type page_size: int, optional
+ :param page_number: Page number (1-indexed).
+ :type page_number: int, optional
+ :rtype: ModelLabRunsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_owner_id is not unset:
+ kwargs["filter_owner_id"] = filter_owner_id
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if filter_project_id is not unset:
+ kwargs["filter_project_id"] = filter_project_id
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_params is not unset:
+ kwargs["filter_params"] = filter_params
+
+ if filter_parent_run_id is not unset:
+ kwargs["filter_parent_run_id"] = filter_parent_run_id
+
+ if pinned_first is not unset:
+ kwargs["pinned_first"] = pinned_first
+
+ if include_pinned is not unset:
+ kwargs["include_pinned"] = include_pinned
+
+ if include_descendant_matches is not unset:
+ kwargs["include_descendant_matches"] = include_descendant_matches
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_model_lab_runs_endpoint.call_with_http_info(**kwargs)
+
+ def pin_model_lab_run(self, run_id: int, ) -> None:
+ """Pin a Model Lab run.
+
+ Pin a Model Lab run for the current user.
+
+ :param run_id: The ID of the Model Lab run.
+ :type run_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["run_id"] = run_id
+
+ return self._pin_model_lab_run_endpoint.call_with_http_info(**kwargs)
+
+ def star_model_lab_project(self, project_id: int, ) -> None:
+ """Star a Model Lab project.
+
+ Star a Model Lab project for the current user.
+
+ :param project_id: The ID of the Model Lab project.
+ :type project_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._star_model_lab_project_endpoint.call_with_http_info(**kwargs)
+
+ def unpin_model_lab_run(self, run_id: int, ) -> None:
+ """Unpin a Model Lab run.
+
+ Remove the pin from a Model Lab run for the current user.
+
+ :param run_id: The ID of the Model Lab run.
+ :type run_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["run_id"] = run_id
+
+ return self._unpin_model_lab_run_endpoint.call_with_http_info(**kwargs)
+
+ def unstar_model_lab_project(self, project_id: int, ) -> None:
+ """Remove star from a Model Lab project.
+
+ Remove the star from a Model Lab project for the current user.
+
+ :param project_id: The ID of the Model Lab project.
+ :type project_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["project_id"] = project_id
+
+ return self._unstar_model_lab_project_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/monitors_api.py b/datadog_api_client/v2/api/monitors_api.py
new file mode 100644
index 0000000000..111242d385
--- /dev/null
+++ b/datadog_api_client/v2/api/monitors_api.py
@@ -0,0 +1,768 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.monitor_notification_rule_list_response import MonitorNotificationRuleListResponse
+from datadog_api_client.v2.model.monitor_notification_rule_response import MonitorNotificationRuleResponse
+from datadog_api_client.v2.model.monitor_notification_rule_create_request import MonitorNotificationRuleCreateRequest
+from datadog_api_client.v2.model.monitor_notification_rule_update_request import MonitorNotificationRuleUpdateRequest
+from datadog_api_client.v2.model.monitor_config_policy_list_response import MonitorConfigPolicyListResponse
+from datadog_api_client.v2.model.monitor_config_policy_response import MonitorConfigPolicyResponse
+from datadog_api_client.v2.model.monitor_config_policy_create_request import MonitorConfigPolicyCreateRequest
+from datadog_api_client.v2.model.monitor_config_policy_edit_request import MonitorConfigPolicyEditRequest
+from datadog_api_client.v2.model.monitor_user_template_list_response import MonitorUserTemplateListResponse
+from datadog_api_client.v2.model.monitor_user_template_create_response import MonitorUserTemplateCreateResponse
+from datadog_api_client.v2.model.monitor_user_template_create_request import MonitorUserTemplateCreateRequest
+from datadog_api_client.v2.model.monitor_user_template_response import MonitorUserTemplateResponse
+from datadog_api_client.v2.model.monitor_user_template_update_request import MonitorUserTemplateUpdateRequest
+
+
+class MonitorsApi:
+ """
+ `Monitors `_ allow you to watch a metric or check that you care about and
+ notifies your team when a defined threshold has exceeded.
+
+ For more information, see `Creating Monitors `_ and
+ `Tag Policies `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_monitor_config_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorConfigPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/policy",
+ "operation_id": "create_monitor_config_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorConfigPolicyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_monitor_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/notification_rule",
+ "operation_id": "create_monitor_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorNotificationRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_monitor_user_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorUserTemplateCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/template",
+ "operation_id": "create_monitor_user_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorUserTemplateCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_monitor_config_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/policy/{policy_id}",
+ "operation_id": "delete_monitor_config_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_monitor_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/notification_rule/{rule_id}",
+ "operation_id": "delete_monitor_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_monitor_user_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/template/{template_id}",
+ "operation_id": "delete_monitor_user_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monitor_config_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorConfigPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/policy/{policy_id}",
+ "operation_id": "get_monitor_config_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monitor_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/notification_rule/{rule_id}",
+ "operation_id": "get_monitor_notification_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monitor_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorNotificationRuleListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/notification_rule",
+ "operation_id": "get_monitor_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page": {
+ "validation": {
+ "inclusive_maximum": 1000000,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page",
+ "location": "query",
+ },
+ "per_page": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "per_page",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filters": {
+ "openapi_types": (str,),
+ "attribute": "filters",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monitor_user_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorUserTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/template/{template_id}",
+ "operation_id": "get_monitor_user_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "with_all_versions": {
+ "openapi_types": (bool,),
+ "attribute": "with_all_versions",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_monitor_config_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorConfigPolicyListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/policy",
+ "operation_id": "list_monitor_config_policies",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_monitor_user_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorUserTemplateListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/monitor/template",
+ "operation_id": "list_monitor_user_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_monitor_config_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorConfigPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/policy/{policy_id}",
+ "operation_id": "update_monitor_config_policy",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorConfigPolicyEditRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_monitor_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/notification_rule/{rule_id}",
+ "operation_id": "update_monitor_notification_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorNotificationRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_monitor_user_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonitorUserTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/template/{template_id}",
+ "operation_id": "update_monitor_user_template",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorUserTemplateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_existing_monitor_user_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/template/{template_id}/validate",
+ "operation_id": "validate_existing_monitor_user_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorUserTemplateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_monitor_user_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/monitor/template/validate",
+ "operation_id": "validate_monitor_user_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MonitorUserTemplateCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_monitor_config_policy(self, body: MonitorConfigPolicyCreateRequest, ) -> MonitorConfigPolicyResponse:
+ """Create a monitor configuration policy.
+
+ Create a monitor configuration policy.
+
+ :param body: Create a monitor configuration policy request body.
+ :type body: MonitorConfigPolicyCreateRequest
+ :rtype: MonitorConfigPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_monitor_config_policy_endpoint.call_with_http_info(**kwargs)
+
+ def create_monitor_notification_rule(self, body: MonitorNotificationRuleCreateRequest, ) -> MonitorNotificationRuleResponse:
+ """Create a monitor notification rule.
+
+ Creates a monitor notification rule.
+
+ :param body: Request body to create a monitor notification rule.
+ :type body: MonitorNotificationRuleCreateRequest
+ :rtype: MonitorNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_monitor_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_monitor_user_template(self, body: MonitorUserTemplateCreateRequest, ) -> MonitorUserTemplateCreateResponse:
+ """Create a monitor user template.
+
+ Create a new monitor user template.
+
+ :type body: MonitorUserTemplateCreateRequest
+ :rtype: MonitorUserTemplateCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_monitor_user_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_monitor_config_policy(self, policy_id: str, ) -> None:
+ """Delete a monitor configuration policy.
+
+ Delete a monitor configuration policy.
+
+ :param policy_id: ID of the monitor configuration policy.
+ :type policy_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._delete_monitor_config_policy_endpoint.call_with_http_info(**kwargs)
+
+ def delete_monitor_notification_rule(self, rule_id: str, ) -> None:
+ """Delete a monitor notification rule.
+
+ Deletes a monitor notification rule by ``rule_id``.
+
+ :param rule_id: ID of the monitor notification rule to delete.
+ :type rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_monitor_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_monitor_user_template(self, template_id: str, ) -> None:
+ """Delete a monitor user template.
+
+ Delete an existing monitor user template by its ID.
+
+ :param template_id: ID of the monitor user template.
+ :type template_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ return self._delete_monitor_user_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_monitor_config_policy(self, policy_id: str, ) -> MonitorConfigPolicyResponse:
+ """Get a monitor configuration policy.
+
+ Get a monitor configuration policy by ``policy_id``.
+
+ :param policy_id: ID of the monitor configuration policy.
+ :type policy_id: str
+ :rtype: MonitorConfigPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._get_monitor_config_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_monitor_notification_rule(self, rule_id: str, *, include: Union[str, UnsetType]=unset, ) -> MonitorNotificationRuleResponse:
+ """Get a monitor notification rule.
+
+ Returns a monitor notification rule by ``rule_id``.
+
+ :param rule_id: ID of the monitor notification rule to fetch.
+ :type rule_id: str
+ :param include: Comma-separated list of resource paths for related resources to include in the response. Supported resource
+ path is ``created_by``.
+ :type include: str, optional
+ :rtype: MonitorNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_monitor_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_monitor_notification_rules(self, *, page: Union[int, UnsetType]=unset, per_page: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filters: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> MonitorNotificationRuleListResponse:
+ """Get all monitor notification rules.
+
+ Returns a list of all monitor notification rules.
+
+ :param page: The page to start paginating from. If ``page`` is not specified, the argument defaults to the first page.
+ :type page: int, optional
+ :param per_page: The number of rules to return per page. If ``per_page`` is not specified, the argument defaults to 100.
+ :type per_page: int, optional
+ :param sort: String for sort order, composed of field and sort order separated by a colon, for example ``name:asc``. Supported sort directions: ``asc`` , ``desc``. Supported fields: ``name`` , ``created_at``.
+ :type sort: str, optional
+ :param filters: JSON-encoded filter object. Supported keys:
+
+ * ``text`` : Free-text query matched against rule name, tags, and recipients.
+ * ``tags`` : Array of strings. Return rules that have any of these tags.
+ * ``recipients`` : Array of strings. Return rules that have any of these recipients.
+ :type filters: str, optional
+ :param include: Comma-separated list of resource paths for related resources to include in the response. Supported resource
+ path is ``created_by``.
+ :type include: str, optional
+ :rtype: MonitorNotificationRuleListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page is not unset:
+ kwargs["page"] = page
+
+ if per_page is not unset:
+ kwargs["per_page"] = per_page
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filters is not unset:
+ kwargs["filters"] = filters
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_monitor_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_monitor_user_template(self, template_id: str, *, with_all_versions: Union[bool, UnsetType]=unset, ) -> MonitorUserTemplateResponse:
+ """Get a monitor user template.
+
+ Retrieve a monitor user template by its ID.
+
+ :param template_id: ID of the monitor user template.
+ :type template_id: str
+ :param with_all_versions: Whether to include all versions of the template in the response in the versions field.
+ :type with_all_versions: bool, optional
+ :rtype: MonitorUserTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ if with_all_versions is not unset:
+ kwargs["with_all_versions"] = with_all_versions
+
+ return self._get_monitor_user_template_endpoint.call_with_http_info(**kwargs)
+
+ def list_monitor_config_policies(self, ) -> MonitorConfigPolicyListResponse:
+ """Get all monitor configuration policies.
+
+ Get all monitor configuration policies.
+
+ :rtype: MonitorConfigPolicyListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_monitor_config_policies_endpoint.call_with_http_info(**kwargs)
+
+ def list_monitor_user_templates(self, ) -> MonitorUserTemplateListResponse:
+ """Get all monitor user templates.
+
+ Retrieve all monitor user templates.
+
+ :rtype: MonitorUserTemplateListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_monitor_user_templates_endpoint.call_with_http_info(**kwargs)
+
+ def update_monitor_config_policy(self, policy_id: str, body: MonitorConfigPolicyEditRequest, ) -> MonitorConfigPolicyResponse:
+ """Edit a monitor configuration policy.
+
+ Edit a monitor configuration policy.
+
+ :param policy_id: ID of the monitor configuration policy.
+ :type policy_id: str
+ :param body: Description of the update.
+ :type body: MonitorConfigPolicyEditRequest
+ :rtype: MonitorConfigPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ kwargs["body"] = body
+
+ return self._update_monitor_config_policy_endpoint.call_with_http_info(**kwargs)
+
+ def update_monitor_notification_rule(self, rule_id: str, body: MonitorNotificationRuleUpdateRequest, ) -> MonitorNotificationRuleResponse:
+ """Update a monitor notification rule.
+
+ Updates a monitor notification rule by ``rule_id``.
+
+ :param rule_id: ID of the monitor notification rule to update.
+ :type rule_id: str
+ :param body: Request body to update the monitor notification rule.
+ :type body: MonitorNotificationRuleUpdateRequest
+ :rtype: MonitorNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_monitor_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_monitor_user_template(self, template_id: str, body: MonitorUserTemplateUpdateRequest, ) -> MonitorUserTemplateResponse:
+ """Update a monitor user template to a new version.
+
+ Creates a new version of an existing monitor user template.
+
+ :param template_id: ID of the monitor user template.
+ :type template_id: str
+ :type body: MonitorUserTemplateUpdateRequest
+ :rtype: MonitorUserTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ kwargs["body"] = body
+
+ return self._update_monitor_user_template_endpoint.call_with_http_info(**kwargs)
+
+ def validate_existing_monitor_user_template(self, template_id: str, body: MonitorUserTemplateUpdateRequest, ) -> None:
+ """Validate an existing monitor user template.
+
+ Validate the structure and content of an existing monitor user template being updated to a new version.
+
+ :param template_id: ID of the monitor user template.
+ :type template_id: str
+ :type body: MonitorUserTemplateUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ kwargs["body"] = body
+
+ return self._validate_existing_monitor_user_template_endpoint.call_with_http_info(**kwargs)
+
+ def validate_monitor_user_template(self, body: MonitorUserTemplateCreateRequest, ) -> None:
+ """Validate a monitor user template.
+
+ Validate the structure and content of a monitor user template.
+
+ :type body: MonitorUserTemplateCreateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_monitor_user_template_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/network_device_monitoring_api.py b/datadog_api_client/v2/api/network_device_monitoring_api.py
new file mode 100644
index 0000000000..19ec03fd21
--- /dev/null
+++ b/datadog_api_client/v2/api/network_device_monitoring_api.py
@@ -0,0 +1,398 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_devices_response import ListDevicesResponse
+from datadog_api_client.v2.model.devices_list_data import DevicesListData
+from datadog_api_client.v2.model.get_device_response import GetDeviceResponse
+from datadog_api_client.v2.model.get_interfaces_response import GetInterfacesResponse
+from datadog_api_client.v2.model.list_tags_response import ListTagsResponse
+from datadog_api_client.v2.model.list_interface_tags_response import ListInterfaceTagsResponse
+
+
+class NetworkDeviceMonitoringApi:
+ """
+ The Network Device Monitoring API allows you to fetch devices and interfaces and their attributes. See the `Network Device Monitoring page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_device_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetDeviceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/devices/{device_id}",
+ "operation_id": "get_device",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "device_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "device_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_interfaces_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetInterfacesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/interfaces",
+ "operation_id": "get_interfaces",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "device_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "device_id",
+ "location": "query",
+ },
+ "get_ip_addresses": {
+ "openapi_types": (bool,),
+ "attribute": "get_ip_addresses",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_devices_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListDevicesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/devices",
+ "operation_id": "list_devices",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_tag": {
+ "openapi_types": (str,),
+ "attribute": "filter[tag]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_device_user_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/tags/devices/{device_id}",
+ "operation_id": "list_device_user_tags",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "device_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "device_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_interface_user_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListInterfaceTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/tags/interfaces/{interface_id}",
+ "operation_id": "list_interface_user_tags",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "interface_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "interface_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_device_user_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/tags/devices/{device_id}",
+ "operation_id": "update_device_user_tags",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "device_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "device_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ListTagsResponse,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_interface_user_tags_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListInterfaceTagsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/ndm/tags/interfaces/{interface_id}",
+ "operation_id": "update_interface_user_tags",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "interface_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "interface_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ListInterfaceTagsResponse,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_device(self, device_id: str, ) -> GetDeviceResponse:
+ """Get the device details.
+
+ Get the device details.
+
+ :param device_id: The id of the device to fetch.
+ :type device_id: str
+ :rtype: GetDeviceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["device_id"] = device_id
+
+ return self._get_device_endpoint.call_with_http_info(**kwargs)
+
+ def get_interfaces(self, device_id: str, *, get_ip_addresses: Union[bool, UnsetType]=unset, ) -> GetInterfacesResponse:
+ """Get the list of interfaces of the device.
+
+ Get the list of interfaces of the device.
+
+ :param device_id: The ID of the device to get interfaces from.
+ :type device_id: str
+ :param get_ip_addresses: Whether to get the IP addresses of the interfaces.
+ :type get_ip_addresses: bool, optional
+ :rtype: GetInterfacesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["device_id"] = device_id
+
+ if get_ip_addresses is not unset:
+ kwargs["get_ip_addresses"] = get_ip_addresses
+
+ return self._get_interfaces_endpoint.call_with_http_info(**kwargs)
+
+ def list_devices(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter_tag: Union[str, UnsetType]=unset, ) -> ListDevicesResponse:
+ """Get the list of devices.
+
+ Get the list of devices.
+
+ :param page_size: Size for a given page. The maximum allowed value is 500. Defaults to 50.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return. Defaults to 0.
+ :type page_number: int, optional
+ :param sort: The field to sort the devices by. Defaults to ``name``.
+ :type sort: str, optional
+ :param filter_tag: Filter devices by tag.
+ :type filter_tag: str, optional
+ :rtype: ListDevicesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_tag is not unset:
+ kwargs["filter_tag"] = filter_tag
+
+ return self._list_devices_endpoint.call_with_http_info(**kwargs)
+
+ def list_devices_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter_tag: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[DevicesListData]:
+ """Get the list of devices.
+
+ Provide a paginated version of :meth:`list_devices`, returning all items.
+
+ :param page_size: Size for a given page. The maximum allowed value is 500. Defaults to 50.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return. Defaults to 0.
+ :type page_number: int, optional
+ :param sort: The field to sort the devices by. Defaults to ``name``.
+ :type sort: str, optional
+ :param filter_tag: Filter devices by tag.
+ :type filter_tag: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[DevicesListData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_tag is not unset:
+ kwargs["filter_tag"] = filter_tag
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 50)
+ endpoint = self._list_devices_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_device_user_tags(self, device_id: str, ) -> ListTagsResponse:
+ """Get the list of tags for a device.
+
+ Get the list of tags for a device.
+
+ :param device_id: The id of the device to fetch tags for.
+ :type device_id: str
+ :rtype: ListTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["device_id"] = device_id
+
+ return self._list_device_user_tags_endpoint.call_with_http_info(**kwargs)
+
+ def list_interface_user_tags(self, interface_id: str, ) -> ListInterfaceTagsResponse:
+ """List tags for an interface.
+
+ Returns the tags associated with the specified interface.
+
+ :param interface_id: The ID of the interface for which to retrieve tags.
+ :type interface_id: str
+ :rtype: ListInterfaceTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["interface_id"] = interface_id
+
+ return self._list_interface_user_tags_endpoint.call_with_http_info(**kwargs)
+
+ def update_device_user_tags(self, device_id: str, body: ListTagsResponse, ) -> ListTagsResponse:
+ """Update the tags for a device.
+
+ Update the tags for a device.
+
+ :param device_id: The id of the device to update tags for.
+ :type device_id: str
+ :type body: ListTagsResponse
+ :rtype: ListTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["device_id"] = device_id
+
+ kwargs["body"] = body
+
+ return self._update_device_user_tags_endpoint.call_with_http_info(**kwargs)
+
+ def update_interface_user_tags(self, interface_id: str, body: ListInterfaceTagsResponse, ) -> ListInterfaceTagsResponse:
+ """Update the tags for an interface.
+
+ Updates the tags associated with the specified interface.
+
+ :param interface_id: The ID of the interface for which to update tags.
+ :type interface_id: str
+ :type body: ListInterfaceTagsResponse
+ :rtype: ListInterfaceTagsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["interface_id"] = interface_id
+
+ kwargs["body"] = body
+
+ return self._update_interface_user_tags_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/network_health_insights_api.py b/datadog_api_client/v2/api/network_health_insights_api.py
new file mode 100644
index 0000000000..bf3ade2552
--- /dev/null
+++ b/datadog_api_client/v2/api/network_health_insights_api.py
@@ -0,0 +1,90 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.network_health_insights_response import NetworkHealthInsightsResponse
+
+
+class NetworkHealthInsightsApi:
+ """
+ Analyze network health by surfacing actionable insights for services experiencing connectivity issues.
+ Insights are derived from DNS failure data (timeouts, NXDOMAIN, SERVFAIL, general failures),
+ TLS certificate health (expired, expiring soon), and security group denials.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_network_health_insights_endpoint = _Endpoint(
+ settings={
+ "response_type": (NetworkHealthInsightsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/network-health-insights",
+ "operation_id": "list_network_health_insights",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "_from": {
+ "openapi_types": (str,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (str,),
+ "attribute": "to",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_network_health_insights(self, *, _from: Union[str, UnsetType]=unset, to: Union[str, UnsetType]=unset, ) -> NetworkHealthInsightsResponse:
+ """List network health insights.
+
+ Return network health insights for the organization within the given time window.
+ Insights are produced by analyzing DNS failures pre-classified by ``network-dns-logger`` ,
+ TLS certificate metrics, and denied security group connections. Each insight
+ identifies the client and server services involved, the type of issue, and the
+ magnitude of the failure observed during the query window.
+
+ :param _from: Unix timestamp (number of seconds since epoch) of the start of the query window.
+ If not provided, the start of the query window will be 15 minutes before the ``to`` timestamp.
+ If neither ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``.
+ :type _from: str, optional
+ :param to: Unix timestamp (number of seconds since epoch) of the end of the query window.
+ If not provided, the end of the query window will be the current time.
+ If neither ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``.
+ :type to: str, optional
+ :rtype: NetworkHealthInsightsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ return self._list_network_health_insights_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/o_auth2_client_public_api.py b/datadog_api_client/v2/api/o_auth2_client_public_api.py
new file mode 100644
index 0000000000..c343dc983b
--- /dev/null
+++ b/datadog_api_client/v2/api/o_auth2_client_public_api.py
@@ -0,0 +1,221 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.o_auth2_well_known_sites_response import OAuth2WellKnownSitesResponse
+from datadog_api_client.v2.model.o_auth_scopes_restriction_response import OAuthScopesRestrictionResponse
+from datadog_api_client.v2.model.upsert_o_auth_scopes_restriction_request import UpsertOAuthScopesRestrictionRequest
+from datadog_api_client.v2.model.o_auth_client_registration_response import OAuthClientRegistrationResponse
+from datadog_api_client.v2.model.o_auth_client_registration_request import OAuthClientRegistrationRequest
+
+
+class OAuth2ClientPublicApi:
+ """
+ Configure OAuth2 clients for Datadog.
+ Supports RFC 7591 Dynamic Client Registration and management of OAuth2 client scopes restrictions.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_scopes_restriction_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/oauth2/clients/{client_uuid}/scopes_restriction",
+ "operation_id": "delete_scopes_restriction",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "client_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "client_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_o_auth2_well_known_sites_endpoint = _Endpoint(
+ settings={
+ "response_type": (OAuth2WellKnownSitesResponse,),
+ "auth": [],
+ "endpoint_path": "/api/v2/oauth2/.well-known/sites",
+ "operation_id": "get_o_auth2_well_known_sites",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_scopes_restriction_endpoint = _Endpoint(
+ settings={
+ "response_type": (OAuthScopesRestrictionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/oauth2/clients/{client_uuid}/scopes_restriction",
+ "operation_id": "get_scopes_restriction",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "client_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "client_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._register_o_auth_client_endpoint = _Endpoint(
+ settings={
+ "response_type": (OAuthClientRegistrationResponse,),
+ "auth": [],
+ "endpoint_path": "/api/v2/oauth2/register",
+ "operation_id": "register_o_auth_client",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OAuthClientRegistrationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_scopes_restriction_endpoint = _Endpoint(
+ settings={
+ "response_type": (OAuthScopesRestrictionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/oauth2/clients/{client_uuid}/scopes_restriction",
+ "operation_id": "upsert_scopes_restriction",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "client_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "client_uuid",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpsertOAuthScopesRestrictionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_scopes_restriction(self, client_uuid: UUID, ) -> None:
+ """Delete an OAuth2 client scopes restriction.
+
+ Delete the scopes restriction configured for the OAuth2 client.
+
+ :param client_uuid: UUID of the OAuth2 client.
+ :type client_uuid: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["client_uuid"] = client_uuid
+
+ return self._delete_scopes_restriction_endpoint.call_with_http_info(**kwargs)
+
+ def get_o_auth2_well_known_sites(self, ) -> OAuth2WellKnownSitesResponse:
+ """Get OAuth2 well-known sites.
+
+ Retrieve the list of public OAuth2 sites available for the current environment. This endpoint is used for OAuth2 discovery and returns sites where users can authenticate.
+
+ :rtype: OAuth2WellKnownSitesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_o_auth2_well_known_sites_endpoint.call_with_http_info(**kwargs)
+
+ def get_scopes_restriction(self, client_uuid: UUID, ) -> OAuthScopesRestrictionResponse:
+ """Get an OAuth2 client scopes restriction.
+
+ Get the scopes restriction configured for the OAuth2 client.
+
+ :param client_uuid: UUID of the OAuth2 client.
+ :type client_uuid: UUID
+ :rtype: OAuthScopesRestrictionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["client_uuid"] = client_uuid
+
+ return self._get_scopes_restriction_endpoint.call_with_http_info(**kwargs)
+
+ def register_o_auth_client(self, body: OAuthClientRegistrationRequest, ) -> OAuthClientRegistrationResponse:
+ """Register an OAuth2 client.
+
+ Register an OAuth2 client using the Dynamic Client Registration protocol defined in RFC 7591.
+
+ :type body: OAuthClientRegistrationRequest
+ :rtype: OAuthClientRegistrationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._register_o_auth_client_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_scopes_restriction(self, client_uuid: UUID, body: UpsertOAuthScopesRestrictionRequest, ) -> OAuthScopesRestrictionResponse:
+ """Upsert an OAuth2 client scopes restriction.
+
+ Create or update the scopes restriction configured for the OAuth2 client.
+
+ :param client_uuid: UUID of the OAuth2 client.
+ :type client_uuid: UUID
+ :type body: UpsertOAuthScopesRestrictionRequest
+ :rtype: OAuthScopesRestrictionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["client_uuid"] = client_uuid
+
+ kwargs["body"] = body
+
+ return self._upsert_scopes_restriction_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/observability_pipelines_api.py b/datadog_api_client/v2/api/observability_pipelines_api.py
new file mode 100644
index 0000000000..85b1cd5bb3
--- /dev/null
+++ b/datadog_api_client/v2/api/observability_pipelines_api.py
@@ -0,0 +1,276 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_pipelines_response import ListPipelinesResponse
+from datadog_api_client.v2.model.observability_pipeline import ObservabilityPipeline
+from datadog_api_client.v2.model.observability_pipeline_spec import ObservabilityPipelineSpec
+from datadog_api_client.v2.model.validation_response import ValidationResponse
+
+
+class ObservabilityPipelinesApi:
+ """
+ Observability Pipelines allows you to collect and process logs within your own infrastructure, and then route them to downstream integrations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (ObservabilityPipeline,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/obs-pipelines/pipelines",
+ "operation_id": "create_pipeline",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ObservabilityPipelineSpec,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/obs-pipelines/pipelines/{pipeline_id}",
+ "operation_id": "delete_pipeline",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "pipeline_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "pipeline_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (ObservabilityPipeline,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/obs-pipelines/pipelines/{pipeline_id}",
+ "operation_id": "get_pipeline",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "pipeline_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "pipeline_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_pipelines_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListPipelinesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/obs-pipelines/pipelines",
+ "operation_id": "list_pipelines",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (ObservabilityPipeline,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/obs-pipelines/pipelines/{pipeline_id}",
+ "operation_id": "update_pipeline",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "pipeline_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "pipeline_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ObservabilityPipeline,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_pipeline_endpoint = _Endpoint(
+ settings={
+ "response_type": (ValidationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/obs-pipelines/pipelines/validate",
+ "operation_id": "validate_pipeline",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ObservabilityPipelineSpec,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_pipeline(self, body: ObservabilityPipelineSpec, ) -> ObservabilityPipeline:
+ """Create a new pipeline.
+
+ Create a new pipeline.
+
+ :type body: ObservabilityPipelineSpec
+ :rtype: ObservabilityPipeline
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def delete_pipeline(self, pipeline_id: str, ) -> None:
+ """Delete a pipeline.
+
+ Delete a pipeline.
+
+ :param pipeline_id: The ID of the pipeline to delete.
+ :type pipeline_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["pipeline_id"] = pipeline_id
+
+ return self._delete_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def get_pipeline(self, pipeline_id: str, ) -> ObservabilityPipeline:
+ """Get a specific pipeline.
+
+ Get a specific pipeline by its ID.
+
+ :param pipeline_id: The ID of the pipeline to retrieve.
+ :type pipeline_id: str
+ :rtype: ObservabilityPipeline
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["pipeline_id"] = pipeline_id
+
+ return self._get_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def list_pipelines(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> ListPipelinesResponse:
+ """List pipelines.
+
+ Retrieve a list of pipelines.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: ListPipelinesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_pipelines_endpoint.call_with_http_info(**kwargs)
+
+ def update_pipeline(self, pipeline_id: str, body: ObservabilityPipeline, ) -> ObservabilityPipeline:
+ """Update a pipeline.
+
+ Update a pipeline.
+
+ :param pipeline_id: The ID of the pipeline to update.
+ :type pipeline_id: str
+ :type body: ObservabilityPipeline
+ :rtype: ObservabilityPipeline
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["pipeline_id"] = pipeline_id
+
+ kwargs["body"] = body
+
+ return self._update_pipeline_endpoint.call_with_http_info(**kwargs)
+
+ def validate_pipeline(self, body: ObservabilityPipelineSpec, ) -> ValidationResponse:
+ """Validate an observability pipeline.
+
+ Validates a pipeline configuration without creating or updating any resources.
+ Returns a list of validation errors, if any.
+
+ :type body: ObservabilityPipelineSpec
+ :rtype: ValidationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_pipeline_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/oci_integration_api.py b/datadog_api_client/v2/api/oci_integration_api.py
new file mode 100644
index 0000000000..9ceb561060
--- /dev/null
+++ b/datadog_api_client/v2/api/oci_integration_api.py
@@ -0,0 +1,257 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.tenancy_products_list import TenancyProductsList
+from datadog_api_client.v2.model.tenancy_config_list import TenancyConfigList
+from datadog_api_client.v2.model.tenancy_config import TenancyConfig
+from datadog_api_client.v2.model.create_tenancy_config_request import CreateTenancyConfigRequest
+from datadog_api_client.v2.model.update_tenancy_config_request import UpdateTenancyConfigRequest
+
+
+class OCIIntegrationApi:
+ """
+ Auto-generated tag OCI Integration
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_tenancy_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (TenancyConfig,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/oci/tenancies",
+ "operation_id": "create_tenancy_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateTenancyConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tenancy_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/oci/tenancies/{tenancy_ocid}",
+ "operation_id": "delete_tenancy_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "tenancy_ocid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tenancy_ocid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tenancy_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (TenancyConfig,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/oci/tenancies/{tenancy_ocid}",
+ "operation_id": "get_tenancy_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "tenancy_ocid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tenancy_ocid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tenancy_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (TenancyConfigList,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/oci/tenancies",
+ "operation_id": "get_tenancy_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tenancy_products_endpoint = _Endpoint(
+ settings={
+ "response_type": (TenancyProductsList,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/oci/products",
+ "operation_id": "list_tenancy_products",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "product_keys": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "productKeys",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_tenancy_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (TenancyConfig,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/oci/tenancies/{tenancy_ocid}",
+ "operation_id": "update_tenancy_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "tenancy_ocid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "tenancy_ocid",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateTenancyConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_tenancy_config(self, body: CreateTenancyConfigRequest, ) -> TenancyConfig:
+ """Create tenancy config.
+
+ Create a new tenancy config to establish monitoring and data collection from your OCI environment. Requires OCI authentication credentials and tenancy details. Warning: Datadog recommends interacting with this endpoint only through the Datadog web UI to ensure all necessary OCI resources have been created and configured properly.
+
+ :type body: CreateTenancyConfigRequest
+ :rtype: TenancyConfig
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_tenancy_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tenancy_config(self, tenancy_ocid: str, ) -> None:
+ """Delete tenancy config.
+
+ Delete an existing tenancy config. This will stop all data collection from the specified OCI tenancy and remove the stored configuration. This operation cannot be undone.
+
+ :param tenancy_ocid: The OCID of the tenancy config to delete.
+ :type tenancy_ocid: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tenancy_ocid"] = tenancy_ocid
+
+ return self._delete_tenancy_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_tenancy_config(self, tenancy_ocid: str, ) -> TenancyConfig:
+ """Get tenancy config.
+
+ Get a single tenancy config object by its OCID. Returns detailed configuration including authentication credentials, enabled services, region settings, and collection preferences.
+
+ :param tenancy_ocid: The OCID of the tenancy config to retrieve.
+ :type tenancy_ocid: str
+ :rtype: TenancyConfig
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tenancy_ocid"] = tenancy_ocid
+
+ return self._get_tenancy_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_tenancy_configs(self, ) -> TenancyConfigList:
+ """Get tenancy configs.
+
+ Get a list of all configured OCI tenancy integrations. Returns basic information about each tenancy including authentication credentials, region settings, and collection preferences for metrics, logs, and resources.
+
+ :rtype: TenancyConfigList
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_tenancy_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_tenancy_products(self, product_keys: str, ) -> TenancyProductsList:
+ """List tenancy products.
+
+ Lists the products for a given tenancy. Returns the enabled/disabled status of Datadog products (such as Cloud Security Posture Management) for specific OCI tenancies.
+
+ :param product_keys: Comma-separated list of product keys to filter by.
+ :type product_keys: str
+ :rtype: TenancyProductsList
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["product_keys"] = product_keys
+
+ return self._list_tenancy_products_endpoint.call_with_http_info(**kwargs)
+
+ def update_tenancy_config(self, tenancy_ocid: str, body: UpdateTenancyConfigRequest, ) -> TenancyConfig:
+ """Update tenancy config.
+
+ Update an existing tenancy config. You can modify authentication credentials, enable/disable collection types, update service filters, and change region settings. Warning: We recommend using the Datadog web UI to avoid unintended update effects.
+
+ :param tenancy_ocid: The OCID of the tenancy config to update.
+ :type tenancy_ocid: str
+ :type body: UpdateTenancyConfigRequest
+ :rtype: TenancyConfig
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["tenancy_ocid"] = tenancy_ocid
+
+ kwargs["body"] = body
+
+ return self._update_tenancy_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/okta_integration_api.py b/datadog_api_client/v2/api/okta_integration_api.py
new file mode 100644
index 0000000000..b89db62fed
--- /dev/null
+++ b/datadog_api_client/v2/api/okta_integration_api.py
@@ -0,0 +1,219 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.okta_accounts_response import OktaAccountsResponse
+from datadog_api_client.v2.model.okta_account_response import OktaAccountResponse
+from datadog_api_client.v2.model.okta_account_request import OktaAccountRequest
+from datadog_api_client.v2.model.okta_account_update_request import OktaAccountUpdateRequest
+
+
+class OktaIntegrationApi:
+ """
+ Configure your `Datadog Okta integration `_ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_okta_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (OktaAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/okta/accounts",
+ "operation_id": "create_okta_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OktaAccountRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_okta_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/okta/accounts/{account_id}",
+ "operation_id": "delete_okta_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_okta_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (OktaAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/okta/accounts/{account_id}",
+ "operation_id": "get_okta_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_okta_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (OktaAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/okta/accounts",
+ "operation_id": "list_okta_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_okta_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (OktaAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integrations/okta/accounts/{account_id}",
+ "operation_id": "update_okta_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OktaAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_okta_account(self, body: OktaAccountRequest, ) -> OktaAccountResponse:
+ """Add Okta account.
+
+ Create an Okta account.
+
+ :type body: OktaAccountRequest
+ :rtype: OktaAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_okta_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_okta_account(self, account_id: str, ) -> None:
+ """Delete Okta account.
+
+ Delete an Okta account.
+
+ :param account_id: None
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_okta_account_endpoint.call_with_http_info(**kwargs)
+
+ def get_okta_account(self, account_id: str, ) -> OktaAccountResponse:
+ """Get Okta account.
+
+ Get an Okta account.
+
+ :param account_id: None
+ :type account_id: str
+ :rtype: OktaAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._get_okta_account_endpoint.call_with_http_info(**kwargs)
+
+ def list_okta_accounts(self, ) -> OktaAccountsResponse:
+ """List Okta accounts.
+
+ List Okta accounts.
+
+ :rtype: OktaAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_okta_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def update_okta_account(self, account_id: str, body: OktaAccountUpdateRequest, ) -> OktaAccountResponse:
+ """Update Okta account.
+
+ Update an Okta account.
+
+ :param account_id: None
+ :type account_id: str
+ :type body: OktaAccountUpdateRequest
+ :rtype: OktaAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_okta_account_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/on_call_api.py b/datadog_api_client/v2/api/on_call_api.py
new file mode 100644
index 0000000000..603214651d
--- /dev/null
+++ b/datadog_api_client/v2/api/on_call_api.py
@@ -0,0 +1,1138 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.escalation_policy import EscalationPolicy
+from datadog_api_client.v2.model.escalation_policy_create_request import EscalationPolicyCreateRequest
+from datadog_api_client.v2.model.escalation_policy_update_request import EscalationPolicyUpdateRequest
+from datadog_api_client.v2.model.schedule import Schedule
+from datadog_api_client.v2.model.schedule_create_request import ScheduleCreateRequest
+from datadog_api_client.v2.model.schedule_update_request import ScheduleUpdateRequest
+from datadog_api_client.v2.model.shift import Shift
+from datadog_api_client.v2.model.schedule_on_call_responders import ScheduleOnCallResponders
+from datadog_api_client.v2.model.team_on_call_responders import TeamOnCallResponders
+from datadog_api_client.v2.model.team_routing_rules import TeamRoutingRules
+from datadog_api_client.v2.model.team_routing_rules_request import TeamRoutingRulesRequest
+from datadog_api_client.v2.model.list_notification_channels_response import ListNotificationChannelsResponse
+from datadog_api_client.v2.model.notification_channel import NotificationChannel
+from datadog_api_client.v2.model.create_user_notification_channel_request import CreateUserNotificationChannelRequest
+from datadog_api_client.v2.model.list_on_call_notification_rules_response import ListOnCallNotificationRulesResponse
+from datadog_api_client.v2.model.on_call_notification_rule import OnCallNotificationRule
+from datadog_api_client.v2.model.create_on_call_notification_rule_request import CreateOnCallNotificationRuleRequest
+from datadog_api_client.v2.model.update_on_call_notification_rule_request import UpdateOnCallNotificationRuleRequest
+
+
+class OnCallApi:
+ """
+ Configure your `Datadog On-Call `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_on_call_escalation_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (EscalationPolicy,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/escalation-policies",
+ "operation_id": "create_on_call_escalation_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (EscalationPolicyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_on_call_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (Schedule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/schedules",
+ "operation_id": "create_on_call_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ScheduleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_user_notification_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationChannel,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-channels",
+ "operation_id": "create_user_notification_channel",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateUserNotificationChannelRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_user_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (OnCallNotificationRule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-rules",
+ "operation_id": "create_user_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateOnCallNotificationRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_on_call_escalation_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/escalation-policies/{policy_id}",
+ "operation_id": "delete_on_call_escalation_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_on_call_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/schedules/{schedule_id}",
+ "operation_id": "delete_on_call_schedule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "schedule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "schedule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_user_notification_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-channels/{channel_id}",
+ "operation_id": "delete_user_notification_channel",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "channel_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "channel_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_user_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-rules/{rule_id}",
+ "operation_id": "delete_user_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_on_call_escalation_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (EscalationPolicy,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/escalation-policies/{policy_id}",
+ "operation_id": "get_on_call_escalation_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_on_call_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (Schedule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/schedules/{schedule_id}",
+ "operation_id": "get_on_call_schedule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "schedule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "schedule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_on_call_team_routing_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamRoutingRules,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/teams/{team_id}/routing-rules",
+ "operation_id": "get_on_call_team_routing_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_schedule_on_call_responders_endpoint = _Endpoint(
+ settings={
+ "response_type": (ScheduleOnCallResponders,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/schedules/{schedule_id}/responders",
+ "operation_id": "get_schedule_on_call_responders",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "schedule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "schedule_id",
+ "location": "path",
+ },
+ "filter_position": {
+ "openapi_types": (str,),
+ "attribute": "filter[position]",
+ "location": "query",
+ },
+ "filter_at_ts": {
+ "openapi_types": (str,),
+ "attribute": "filter[at_ts]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_schedule_on_call_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (Shift,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/schedules/{schedule_id}/on-call",
+ "operation_id": "get_schedule_on_call_user",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "schedule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "schedule_id",
+ "location": "path",
+ },
+ "filter_at_ts": {
+ "openapi_types": (str,),
+ "attribute": "filter[at_ts]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_on_call_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamOnCallResponders,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/teams/{team_id}/on-call",
+ "operation_id": "get_team_on_call_users",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_user_notification_channel_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationChannel,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-channels/{channel_id}",
+ "operation_id": "get_user_notification_channel",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "channel_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "channel_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_user_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (OnCallNotificationRule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-rules/{rule_id}",
+ "operation_id": "get_user_notification_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_user_notification_channels_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListNotificationChannelsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-channels",
+ "operation_id": "list_user_notification_channels",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_user_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListOnCallNotificationRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-rules",
+ "operation_id": "list_user_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._set_on_call_team_routing_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamRoutingRules,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/teams/{team_id}/routing-rules",
+ "operation_id": "set_on_call_team_routing_rules",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamRoutingRulesRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_on_call_escalation_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (EscalationPolicy,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/escalation-policies/{policy_id}",
+ "operation_id": "update_on_call_escalation_policy",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (EscalationPolicyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_on_call_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (Schedule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/schedules/{schedule_id}",
+ "operation_id": "update_on_call_schedule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "schedule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "schedule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ScheduleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_user_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (OnCallNotificationRule,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/users/{user_id}/notification-rules/{rule_id}",
+ "operation_id": "update_user_notification_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateOnCallNotificationRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_on_call_escalation_policy(self, body: EscalationPolicyCreateRequest, *, include: Union[str, UnsetType]=unset, ) -> EscalationPolicy:
+ """Create On-Call escalation policy.
+
+ Create a new On-Call escalation policy
+
+ :type body: EscalationPolicyCreateRequest
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``teams`` , ``steps`` , ``steps.targets``.
+ :type include: str, optional
+ :rtype: EscalationPolicy
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_on_call_escalation_policy_endpoint.call_with_http_info(**kwargs)
+
+ def create_on_call_schedule(self, body: ScheduleCreateRequest, *, include: Union[str, UnsetType]=unset, ) -> Schedule:
+ """Create On-Call schedule.
+
+ Create a new On-Call schedule
+
+ :type body: ScheduleCreateRequest
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``teams`` , ``layers`` , ``layers.members`` , ``layers.members.user``.
+ :type include: str, optional
+ :rtype: Schedule
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_on_call_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def create_user_notification_channel(self, user_id: str, body: CreateUserNotificationChannelRequest, ) -> NotificationChannel:
+ """Create an On-Call notification channel for a user.
+
+ Create a new notification channel for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :type body: CreateUserNotificationChannelRequest
+ :rtype: NotificationChannel
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["body"] = body
+
+ return self._create_user_notification_channel_endpoint.call_with_http_info(**kwargs)
+
+ def create_user_notification_rule(self, user_id: str, body: CreateOnCallNotificationRuleRequest, ) -> OnCallNotificationRule:
+ """Create an On-Call notification rule for a user.
+
+ Create a new notification rule for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :type body: CreateOnCallNotificationRuleRequest
+ :rtype: OnCallNotificationRule
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["body"] = body
+
+ return self._create_user_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_on_call_escalation_policy(self, policy_id: str, ) -> None:
+ """Delete On-Call escalation policy.
+
+ Delete an On-Call escalation policy
+
+ :param policy_id: The ID of the escalation policy
+ :type policy_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ return self._delete_on_call_escalation_policy_endpoint.call_with_http_info(**kwargs)
+
+ def delete_on_call_schedule(self, schedule_id: str, ) -> None:
+ """Delete On-Call schedule.
+
+ Delete an On-Call schedule
+
+ :param schedule_id: The ID of the schedule
+ :type schedule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["schedule_id"] = schedule_id
+
+ return self._delete_on_call_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_user_notification_channel(self, user_id: str, channel_id: str, ) -> None:
+ """Delete an On-Call notification channel for a user.
+
+ Delete a notification channel for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :param channel_id: The channel ID
+ :type channel_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["channel_id"] = channel_id
+
+ return self._delete_user_notification_channel_endpoint.call_with_http_info(**kwargs)
+
+ def delete_user_notification_rule(self, user_id: str, rule_id: str, ) -> None:
+ """Delete an On-Call notification rule for a user.
+
+ Delete a notification rule for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :param rule_id: The rule ID
+ :type rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_user_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_on_call_escalation_policy(self, policy_id: str, *, include: Union[str, UnsetType]=unset, ) -> EscalationPolicy:
+ """Get On-Call escalation policy.
+
+ Get an On-Call escalation policy
+
+ :param policy_id: The ID of the escalation policy
+ :type policy_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``teams`` , ``steps`` , ``steps.targets``.
+ :type include: str, optional
+ :rtype: EscalationPolicy
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_on_call_escalation_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_on_call_schedule(self, schedule_id: str, *, include: Union[str, UnsetType]=unset, ) -> Schedule:
+ """Get On-Call schedule.
+
+ Get an On-Call schedule
+
+ :param schedule_id: The ID of the schedule
+ :type schedule_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``teams`` , ``layers`` , ``layers.members`` , ``layers.members.user``.
+ :type include: str, optional
+ :rtype: Schedule
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["schedule_id"] = schedule_id
+
+ return self._get_on_call_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def get_on_call_team_routing_rules(self, team_id: str, *, include: Union[str, UnsetType]=unset, ) -> TeamRoutingRules:
+ """Get On-Call team routing rules.
+
+ Get a team's On-Call routing rules
+
+ :param team_id: The team ID
+ :type team_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``rules`` , ``rules.policy``.
+ :type include: str, optional
+ :rtype: TeamRoutingRules
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_on_call_team_routing_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_schedule_on_call_responders(self, schedule_id: str, *, include: Union[str, UnsetType]=unset, filter_position: Union[str, UnsetType]=unset, filter_at_ts: Union[str, UnsetType]=unset, ) -> ScheduleOnCallResponders:
+ """Get on-call responders for a schedule.
+
+ Retrieves the on-call responders for the specified schedule, grouped by position (previous, current, next), at a given time. Supports schedules with multiple concurrent on-call responders at a position, by returning a list of shifts per position.
+
+ :param schedule_id: The ID of the schedule.
+ :type schedule_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``schedule`` , ``responders`` , ``responders.shifts`` , ``responders.shifts.user``.
+ :type include: str, optional
+ :param filter_position: Comma-separated list of positions to retrieve. Allowed values: ``previous`` , ``current`` , ``next``. Defaults to ``current`` if omitted.
+ :type filter_position: str, optional
+ :param filter_at_ts: Retrieves the on-call responders at the given timestamp in RFC3339 format (for example, ``2025-05-07T02:53:01Z`` or ``2025-05-07T02:53:01+00:00`` ). When using timezone offsets with ``+`` or ``-`` , ensure proper URL encoding ( ``+`` should be encoded as ``%2B`` ). Defaults to the current time if omitted.
+ :type filter_at_ts: str, optional
+ :rtype: ScheduleOnCallResponders
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["schedule_id"] = schedule_id
+
+ if filter_position is not unset:
+ kwargs["filter_position"] = filter_position
+
+ if filter_at_ts is not unset:
+ kwargs["filter_at_ts"] = filter_at_ts
+
+ return self._get_schedule_on_call_responders_endpoint.call_with_http_info(**kwargs)
+
+ def get_schedule_on_call_user(self, schedule_id: str, *, include: Union[str, UnsetType]=unset, filter_at_ts: Union[str, UnsetType]=unset, ) -> Shift:
+ """Get scheduled on-call user. **Deprecated**.
+
+ Retrieves the user who is on-call for the specified schedule at a given time. This endpoint does not support schedules with multiple concurrent on-call responders at a position. Deprecated. Use ``Get on-call responders for a schedule`` instead.
+
+ :param schedule_id: The ID of the schedule.
+ :type schedule_id: str
+ :param include: Specifies related resources to include in the response as a comma-separated list. Allowed value: ``user``.
+ :type include: str, optional
+ :param filter_at_ts: Retrieves the on-call user at the given timestamp in RFC3339 format (for example, ``2025-05-07T02:53:01Z`` or ``2025-05-07T02:53:01+00:00`` ). When using timezone offsets with ``+`` or ``-`` , ensure proper URL encoding ( ``+`` should be encoded as ``%2B`` ). Defaults to the current time if omitted.
+ :type filter_at_ts: str, optional
+ :rtype: Shift
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["schedule_id"] = schedule_id
+
+ if filter_at_ts is not unset:
+ kwargs["filter_at_ts"] = filter_at_ts
+
+ warnings.warn("get_schedule_on_call_user is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_schedule_on_call_user_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_on_call_users(self, team_id: str, *, include: Union[str, UnsetType]=unset, ) -> TeamOnCallResponders:
+ """Get team on-call users.
+
+ Get a team's on-call users at a given time
+
+ :param team_id: The team ID
+ :type team_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``responders`` , ``escalations`` , ``escalations.responders``.
+ :type include: str, optional
+ :rtype: TeamOnCallResponders
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["team_id"] = team_id
+
+ return self._get_team_on_call_users_endpoint.call_with_http_info(**kwargs)
+
+ def get_user_notification_channel(self, user_id: str, channel_id: str, ) -> NotificationChannel:
+ """Get an On-Call notification channel for a user.
+
+ Get a notification channel for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :param channel_id: The channel ID
+ :type channel_id: str
+ :rtype: NotificationChannel
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["channel_id"] = channel_id
+
+ return self._get_user_notification_channel_endpoint.call_with_http_info(**kwargs)
+
+ def get_user_notification_rule(self, user_id: str, rule_id: str, *, include: Union[str, UnsetType]=unset, ) -> OnCallNotificationRule:
+ """Get an On-Call notification rule for a user.
+
+ Get a notification rule for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :param rule_id: The rule ID
+ :type rule_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``channel``.
+ :type include: str, optional
+ :rtype: OnCallNotificationRule
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["rule_id"] = rule_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_user_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def list_user_notification_channels(self, user_id: str, ) -> ListNotificationChannelsResponse:
+ """List On-Call notification channels for a user.
+
+ List the notification channels for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :rtype: ListNotificationChannelsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ return self._list_user_notification_channels_endpoint.call_with_http_info(**kwargs)
+
+ def list_user_notification_rules(self, user_id: str, *, include: Union[str, UnsetType]=unset, ) -> ListOnCallNotificationRulesResponse:
+ """List On-Call notification rules for a user.
+
+ List the notification rules for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``channel``.
+ :type include: str, optional
+ :rtype: ListOnCallNotificationRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["user_id"] = user_id
+
+ return self._list_user_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def set_on_call_team_routing_rules(self, team_id: str, body: TeamRoutingRulesRequest, *, include: Union[str, UnsetType]=unset, ) -> TeamRoutingRules:
+ """Set On-Call team routing rules.
+
+ Set a team's On-Call routing rules
+
+ :param team_id: The team ID
+ :type team_id: str
+ :type body: TeamRoutingRulesRequest
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``rules`` , ``rules.policy``.
+ :type include: str, optional
+ :rtype: TeamRoutingRules
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._set_on_call_team_routing_rules_endpoint.call_with_http_info(**kwargs)
+
+ def update_on_call_escalation_policy(self, policy_id: str, body: EscalationPolicyUpdateRequest, *, include: Union[str, UnsetType]=unset, ) -> EscalationPolicy:
+ """Update On-Call escalation policy.
+
+ Update an On-Call escalation policy
+
+ :param policy_id: The ID of the escalation policy
+ :type policy_id: str
+ :type body: EscalationPolicyUpdateRequest
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``teams`` , ``steps`` , ``steps.targets``.
+ :type include: str, optional
+ :rtype: EscalationPolicy
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_on_call_escalation_policy_endpoint.call_with_http_info(**kwargs)
+
+ def update_on_call_schedule(self, schedule_id: str, body: ScheduleUpdateRequest, *, include: Union[str, UnsetType]=unset, ) -> Schedule:
+ """Update On-Call schedule.
+
+ Update a new On-Call schedule
+
+ :param schedule_id: The ID of the schedule
+ :type schedule_id: str
+ :type body: ScheduleUpdateRequest
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``teams`` , ``layers`` , ``layers.members`` , ``layers.members.user``.
+ :type include: str, optional
+ :rtype: Schedule
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["schedule_id"] = schedule_id
+
+ kwargs["body"] = body
+
+ return self._update_on_call_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def update_user_notification_rule(self, user_id: str, rule_id: str, body: UpdateOnCallNotificationRuleRequest, *, include: Union[str, UnsetType]=unset, ) -> OnCallNotificationRule:
+ """Update an On-Call notification rule for a user.
+
+ Update a notification rule for a user. The authenticated user must be the target user or have the ``on_call_admin`` permission
+
+ :param user_id: The user ID
+ :type user_id: str
+ :param rule_id: The rule ID
+ :type rule_id: str
+ :type body: UpdateOnCallNotificationRuleRequest
+ :param include: Comma-separated list of included relationships to be returned. Allowed values: ``channel``.
+ :type include: str, optional
+ :rtype: OnCallNotificationRule
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_id"] = user_id
+
+ kwargs["rule_id"] = rule_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_user_notification_rule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/on_call_paging_api.py b/datadog_api_client/v2/api/on_call_paging_api.py
new file mode 100644
index 0000000000..6136f33c3b
--- /dev/null
+++ b/datadog_api_client/v2/api/on_call_paging_api.py
@@ -0,0 +1,454 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.create_page_response import CreatePageResponse
+from datadog_api_client.v2.model.create_page_request import CreatePageRequest
+
+
+class OnCallPagingApi:
+ """
+ Trigger and manage `Datadog On-Call `_
+ pages directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._acknowledge_on_call_page_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/pages/{page_id}/acknowledge",
+ "operation_id": "acknowledge_on_call_page",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{site}",
+ "variables": {
+ "site": {
+ "description": "The globally available endpoint for On-Call.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "The full DNS name of the On-Call paging endpoint.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The Datadog site where the On-Call paging endpoint is deployed.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "datadoghq.eu",
+ ],
+ },
+ "subdomain": {
+ "description": "The On-Call paging subdomain.",
+ "default_value": "navy.oncall",
+ "enum_values": [
+ "lava.oncall",
+ "saffron.oncall",
+ "navy.oncall",
+ "coral.oncall",
+ "teal.oncall",
+ "beige.oncall",
+ "scarlet.oncall",
+ ],
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._create_on_call_page_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreatePageResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/pages",
+ "operation_id": "create_on_call_page",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{site}",
+ "variables": {
+ "site": {
+ "description": "The globally available endpoint for On-Call.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "The full DNS name of the On-Call paging endpoint.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The Datadog site where the On-Call paging endpoint is deployed.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "datadoghq.eu",
+ ],
+ },
+ "subdomain": {
+ "description": "The On-Call paging subdomain.",
+ "default_value": "navy.oncall",
+ "enum_values": [
+ "lava.oncall",
+ "saffron.oncall",
+ "navy.oncall",
+ "coral.oncall",
+ "teal.oncall",
+ "beige.oncall",
+ "scarlet.oncall",
+ ],
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreatePageRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._escalate_on_call_page_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/pages/{page_id}/escalate",
+ "operation_id": "escalate_on_call_page",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{site}",
+ "variables": {
+ "site": {
+ "description": "The globally available endpoint for On-Call.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "The full DNS name of the On-Call paging endpoint.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The Datadog site where the On-Call paging endpoint is deployed.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "datadoghq.eu",
+ ],
+ },
+ "subdomain": {
+ "description": "The On-Call paging subdomain.",
+ "default_value": "navy.oncall",
+ "enum_values": [
+ "lava.oncall",
+ "saffron.oncall",
+ "navy.oncall",
+ "coral.oncall",
+ "teal.oncall",
+ "beige.oncall",
+ "scarlet.oncall",
+ ],
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._resolve_on_call_page_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/on-call/pages/{page_id}/resolve",
+ "operation_id": "resolve_on_call_page",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{site}",
+ "variables": {
+ "site": {
+ "description": "The globally available endpoint for On-Call.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "The full DNS name of the On-Call paging endpoint.",
+ "default_value": "navy.oncall.datadoghq.com",
+ "enum_values": [
+ "lava.oncall.datadoghq.com",
+ "saffron.oncall.datadoghq.com",
+ "navy.oncall.datadoghq.com",
+ "coral.oncall.datadoghq.com",
+ "teal.oncall.datadoghq.com",
+ "beige.oncall.datadoghq.eu",
+ "scarlet.oncall.datadoghq.com",
+ ],
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "The Datadog site where the On-Call paging endpoint is deployed.",
+ "default_value": "datadoghq.com",
+ "enum_values": [
+ "datadoghq.com",
+ "datadoghq.eu",
+ ],
+ },
+ "subdomain": {
+ "description": "The On-Call paging subdomain.",
+ "default_value": "navy.oncall",
+ "enum_values": [
+ "lava.oncall",
+ "saffron.oncall",
+ "navy.oncall",
+ "coral.oncall",
+ "teal.oncall",
+ "beige.oncall",
+ "scarlet.oncall",
+ ],
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ def acknowledge_on_call_page(self, page_id: UUID, ) -> None:
+ """Acknowledge On-Call Page.
+
+ Acknowledges an On-Call Page.
+
+ :param page_id: The page ID.
+ :type page_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ return self._acknowledge_on_call_page_endpoint.call_with_http_info(**kwargs)
+
+ def create_on_call_page(self, body: CreatePageRequest, ) -> CreatePageResponse:
+ """Create On-Call Page.
+
+ Trigger a new On-Call Page.
+
+ :type body: CreatePageRequest
+ :rtype: CreatePageResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_on_call_page_endpoint.call_with_http_info(**kwargs)
+
+ def escalate_on_call_page(self, page_id: UUID, ) -> None:
+ """Escalate On-Call Page.
+
+ Escalates an On-Call Page.
+
+ :param page_id: The page ID.
+ :type page_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ return self._escalate_on_call_page_endpoint.call_with_http_info(**kwargs)
+
+ def resolve_on_call_page(self, page_id: UUID, ) -> None:
+ """Resolve On-Call Page.
+
+ Resolves an On-Call Page.
+
+ :param page_id: The page ID.
+ :type page_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ return self._resolve_on_call_page_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/opsgenie_integration_api.py b/datadog_api_client/v2/api/opsgenie_integration_api.py
new file mode 100644
index 0000000000..4592ea9214
--- /dev/null
+++ b/datadog_api_client/v2/api/opsgenie_integration_api.py
@@ -0,0 +1,374 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.opsgenie_accounts_response import OpsgenieAccountsResponse
+from datadog_api_client.v2.model.opsgenie_account_response import OpsgenieAccountResponse
+from datadog_api_client.v2.model.opsgenie_account_create_request import OpsgenieAccountCreateRequest
+from datadog_api_client.v2.model.opsgenie_account_update_request import OpsgenieAccountUpdateRequest
+from datadog_api_client.v2.model.opsgenie_services_response import OpsgenieServicesResponse
+from datadog_api_client.v2.model.opsgenie_service_response import OpsgenieServiceResponse
+from datadog_api_client.v2.model.opsgenie_service_create_request import OpsgenieServiceCreateRequest
+from datadog_api_client.v2.model.opsgenie_service_update_request import OpsgenieServiceUpdateRequest
+
+
+class OpsgenieIntegrationApi:
+ """
+ Configure your `Datadog Opsgenie integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_opsgenie_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/accounts",
+ "operation_id": "create_opsgenie_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OpsgenieAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_opsgenie_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieServiceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/services",
+ "operation_id": "create_opsgenie_service",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OpsgenieServiceCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_opsgenie_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/accounts/{account_id}",
+ "operation_id": "delete_opsgenie_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_opsgenie_service_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/services/{integration_service_id}",
+ "operation_id": "delete_opsgenie_service",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "integration_service_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_service_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_opsgenie_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieServiceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/services/{integration_service_id}",
+ "operation_id": "get_opsgenie_service",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "integration_service_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_service_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_opsgenie_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieAccountsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/accounts",
+ "operation_id": "list_opsgenie_accounts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_opsgenie_services_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieServicesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/services",
+ "operation_id": "list_opsgenie_services",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_opsgenie_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/accounts/{account_id}",
+ "operation_id": "update_opsgenie_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OpsgenieAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_opsgenie_service_endpoint = _Endpoint(
+ settings={
+ "response_type": (OpsgenieServiceResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/opsgenie/services/{integration_service_id}",
+ "operation_id": "update_opsgenie_service",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "integration_service_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_service_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OpsgenieServiceUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_opsgenie_account(self, body: OpsgenieAccountCreateRequest, ) -> OpsgenieAccountResponse:
+ """Create a new Opsgenie account.
+
+ Create a new Opsgenie account in the Datadog Opsgenie integration.
+
+ :param body: Opsgenie account payload.
+ :type body: OpsgenieAccountCreateRequest
+ :rtype: OpsgenieAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_opsgenie_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_opsgenie_service(self, body: OpsgenieServiceCreateRequest, ) -> OpsgenieServiceResponse:
+ """Create a new service object.
+
+ Create a new service object in the Opsgenie integration.
+
+ :param body: Opsgenie service payload
+ :type body: OpsgenieServiceCreateRequest
+ :rtype: OpsgenieServiceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_opsgenie_service_endpoint.call_with_http_info(**kwargs)
+
+ def delete_opsgenie_account(self, account_id: str, ) -> None:
+ """Delete an Opsgenie account.
+
+ Delete a single Opsgenie account from the Datadog Opsgenie integration.
+
+ :param account_id: The UUID of the Opsgenie account.
+ :type account_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ return self._delete_opsgenie_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_opsgenie_service(self, integration_service_id: str, ) -> None:
+ """Delete a single service object.
+
+ Delete a single service object in the Datadog Opsgenie integration.
+
+ :param integration_service_id: The UUID of the service.
+ :type integration_service_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_service_id"] = integration_service_id
+
+ return self._delete_opsgenie_service_endpoint.call_with_http_info(**kwargs)
+
+ def get_opsgenie_service(self, integration_service_id: str, ) -> OpsgenieServiceResponse:
+ """Get a single service object.
+
+ Get a single service from the Datadog Opsgenie integration.
+
+ :param integration_service_id: The UUID of the service.
+ :type integration_service_id: str
+ :rtype: OpsgenieServiceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_service_id"] = integration_service_id
+
+ return self._get_opsgenie_service_endpoint.call_with_http_info(**kwargs)
+
+ def list_opsgenie_accounts(self, ) -> OpsgenieAccountsResponse:
+ """Get all Opsgenie accounts.
+
+ Get a list of all Opsgenie accounts from the Datadog Opsgenie integration.
+
+ :rtype: OpsgenieAccountsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_opsgenie_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def list_opsgenie_services(self, ) -> OpsgenieServicesResponse:
+ """Get all service objects.
+
+ Get a list of all services from the Datadog Opsgenie integration.
+
+ :rtype: OpsgenieServicesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_opsgenie_services_endpoint.call_with_http_info(**kwargs)
+
+ def update_opsgenie_account(self, account_id: str, body: OpsgenieAccountUpdateRequest, ) -> OpsgenieAccountResponse:
+ """Update an Opsgenie account.
+
+ Update a single Opsgenie account in the Datadog Opsgenie integration.
+
+ :param account_id: The UUID of the Opsgenie account.
+ :type account_id: str
+ :param body: Opsgenie account payload.
+ :type body: OpsgenieAccountUpdateRequest
+ :rtype: OpsgenieAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["account_id"] = account_id
+
+ kwargs["body"] = body
+
+ return self._update_opsgenie_account_endpoint.call_with_http_info(**kwargs)
+
+ def update_opsgenie_service(self, integration_service_id: str, body: OpsgenieServiceUpdateRequest, ) -> OpsgenieServiceResponse:
+ """Update a single service object.
+
+ Update a single service object in the Datadog Opsgenie integration.
+
+ :param integration_service_id: The UUID of the service.
+ :type integration_service_id: str
+ :param body: Opsgenie service payload.
+ :type body: OpsgenieServiceUpdateRequest
+ :rtype: OpsgenieServiceResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_service_id"] = integration_service_id
+
+ kwargs["body"] = body
+
+ return self._update_opsgenie_service_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/org_authorized_clients_api.py b/datadog_api_client/v2/api/org_authorized_clients_api.py
new file mode 100644
index 0000000000..7342606e6d
--- /dev/null
+++ b/datadog_api_client/v2/api/org_authorized_clients_api.py
@@ -0,0 +1,610 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.org_authorized_clients_response import OrgAuthorizedClientsResponse
+from datadog_api_client.v2.model.org_authorized_client_data import OrgAuthorizedClientData
+from datadog_api_client.v2.model.org_authorized_client_response import OrgAuthorizedClientResponse
+from datadog_api_client.v2.model.org_authorized_client_update_request import OrgAuthorizedClientUpdateRequest
+from datadog_api_client.v2.model.user_authorized_clients_response import UserAuthorizedClientsResponse
+from datadog_api_client.v2.model.org_authorized_client_user_authorizations_sort import OrgAuthorizedClientUserAuthorizationsSort
+from datadog_api_client.v2.model.user_authorized_client_data import UserAuthorizedClientData
+
+
+class OrgAuthorizedClientsApi:
+ """
+ Manage OAuth2 client authorizations at the organization level.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_org_authorized_client_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients/{org_authorized_client_id}",
+ "operation_id": "delete_org_authorized_client",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "org_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_authorized_client_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_org_authorized_client_all_user_authorizations_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients/{org_authorized_client_id}/user/{user_id}",
+ "operation_id": "delete_org_authorized_client_all_user_authorizations",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "org_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_authorized_client_id",
+ "location": "path",
+ },
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_org_authorized_client_user_authorization_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients/{org_authorized_client_id}/user_authorized_clients/{user_authorized_client_id}",
+ "operation_id": "delete_org_authorized_client_user_authorization",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "org_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_authorized_client_id",
+ "location": "path",
+ },
+ "user_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_authorized_client_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_authorized_client_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgAuthorizedClientResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients/{org_authorized_client_id}",
+ "operation_id": "get_org_authorized_client",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_authorized_client_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "filter_user_authorized_clients_disabled": {
+ "openapi_types": (str,),
+ "attribute": "filter[user_authorized_clients][disabled]",
+ "location": "query",
+ },
+ "filter_user_authorized_clients_user_disabled": {
+ "openapi_types": (str,),
+ "attribute": "filter[user_authorized_clients][user][disabled]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_authorized_clients_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgAuthorizedClientsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients",
+ "operation_id": "list_org_authorized_clients",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_oauth2_client_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[oauth2_client][name]",
+ "location": "query",
+ },
+ "filter_disabled": {
+ "openapi_types": (str,),
+ "attribute": "filter[disabled]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_authorized_client_user_authorizations_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserAuthorizedClientsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients/{org_authorized_client_id}/user_authorized_clients",
+ "operation_id": "list_org_authorized_client_user_authorizations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_authorized_client_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (OrgAuthorizedClientUserAuthorizationsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_disabled": {
+ "openapi_types": (str,),
+ "attribute": "filter[disabled]",
+ "location": "query",
+ },
+ "filter_user_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[user][name]",
+ "location": "query",
+ },
+ "filter_user_email": {
+ "openapi_types": (str,),
+ "attribute": "filter[user][email]",
+ "location": "query",
+ },
+ "filter_user_disabled": {
+ "openapi_types": (str,),
+ "attribute": "filter[user][disabled]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_authorized_client_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgAuthorizedClientResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_authorized_clients/{org_authorized_client_id}",
+ "operation_id": "update_org_authorized_client",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "org_authorized_client_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_authorized_client_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgAuthorizedClientUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_org_authorized_client(self, org_authorized_client_id: str, ) -> None:
+ """Delete an org authorized client.
+
+ Disable an OAuth2 client authorization for the current organization, revoking access for all users.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ return self._delete_org_authorized_client_endpoint.call_with_http_info(**kwargs)
+
+ def delete_org_authorized_client_all_user_authorizations(self, org_authorized_client_id: str, user_id: str, ) -> None:
+ """Delete a user's authorizations for a client.
+
+ Disable all authorizations for a specific user for the specified OAuth2 client in the current organization.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :param user_id: The ID of the user.
+ :type user_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ kwargs["user_id"] = user_id
+
+ return self._delete_org_authorized_client_all_user_authorizations_endpoint.call_with_http_info(**kwargs)
+
+ def delete_org_authorized_client_user_authorization(self, org_authorized_client_id: str, user_authorized_client_id: str, ) -> None:
+ """Delete a user authorization for a client.
+
+ Disable a specific user authorization for the specified OAuth2 client in the current organization.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :param user_authorized_client_id: The ID of the user authorized client.
+ :type user_authorized_client_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ kwargs["user_authorized_client_id"] = user_authorized_client_id
+
+ return self._delete_org_authorized_client_user_authorization_endpoint.call_with_http_info(**kwargs)
+
+ def get_org_authorized_client(self, org_authorized_client_id: str, *, include: Union[str, UnsetType]=unset, filter_user_authorized_clients_disabled: Union[str, UnsetType]=unset, filter_user_authorized_clients_user_disabled: Union[str, UnsetType]=unset, ) -> OrgAuthorizedClientResponse:
+ """Get an org authorized client.
+
+ Get a single OAuth2 client authorized for the current organization.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :param include: Comma-separated list of related resources to include.
+ Options: ``oauth2_client`` , ``oauth2_client.app`` , ``oauth2_client.scopes`` , ``user_authorized_clients.user``.
+ :type include: str, optional
+ :param filter_user_authorized_clients_disabled: Filter included user authorized clients by disabled status.
+ :type filter_user_authorized_clients_disabled: str, optional
+ :param filter_user_authorized_clients_user_disabled: Filter included user authorized clients by user disabled status.
+ :type filter_user_authorized_clients_user_disabled: str, optional
+ :rtype: OrgAuthorizedClientResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_user_authorized_clients_disabled is not unset:
+ kwargs["filter_user_authorized_clients_disabled"] = filter_user_authorized_clients_disabled
+
+ if filter_user_authorized_clients_user_disabled is not unset:
+ kwargs["filter_user_authorized_clients_user_disabled"] = filter_user_authorized_clients_user_disabled
+
+ return self._get_org_authorized_client_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_authorized_clients(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_oauth2_client_name: Union[str, UnsetType]=unset, filter_disabled: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> OrgAuthorizedClientsResponse:
+ """List org authorized clients.
+
+ Get a list of all OAuth2 clients authorized for the current organization.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Field to sort results by. Options include ``oauth2_client.name``.
+ :type sort: str, optional
+ :param filter: Filter results by client name, app title, or app description.
+ :type filter: str, optional
+ :param filter_oauth2_client_name: Filter results by the OAuth2 client name.
+ :type filter_oauth2_client_name: str, optional
+ :param filter_disabled: Filter results by the org-level disabled status.
+ :type filter_disabled: str, optional
+ :param include: Comma-separated list of related resources to include.
+ Options: ``oauth2_client`` , ``oauth2_client.app`` , ``user_authorized_clients.user``.
+ :type include: str, optional
+ :rtype: OrgAuthorizedClientsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_oauth2_client_name is not unset:
+ kwargs["filter_oauth2_client_name"] = filter_oauth2_client_name
+
+ if filter_disabled is not unset:
+ kwargs["filter_disabled"] = filter_disabled
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_org_authorized_clients_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_authorized_clients_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_oauth2_client_name: Union[str, UnsetType]=unset, filter_disabled: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[OrgAuthorizedClientData]:
+ """List org authorized clients.
+
+ Provide a paginated version of :meth:`list_org_authorized_clients`, returning all items.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Field to sort results by. Options include ``oauth2_client.name``.
+ :type sort: str, optional
+ :param filter: Filter results by client name, app title, or app description.
+ :type filter: str, optional
+ :param filter_oauth2_client_name: Filter results by the OAuth2 client name.
+ :type filter_oauth2_client_name: str, optional
+ :param filter_disabled: Filter results by the org-level disabled status.
+ :type filter_disabled: str, optional
+ :param include: Comma-separated list of related resources to include.
+ Options: ``oauth2_client`` , ``oauth2_client.app`` , ``user_authorized_clients.user``.
+ :type include: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[OrgAuthorizedClientData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_oauth2_client_name is not unset:
+ kwargs["filter_oauth2_client_name"] = filter_oauth2_client_name
+
+ if filter_disabled is not unset:
+ kwargs["filter_disabled"] = filter_disabled
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_org_authorized_clients_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_org_authorized_client_user_authorizations(self, org_authorized_client_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[OrgAuthorizedClientUserAuthorizationsSort, UnsetType]=unset, filter_disabled: Union[str, UnsetType]=unset, filter_user_name: Union[str, UnsetType]=unset, filter_user_email: Union[str, UnsetType]=unset, filter_user_disabled: Union[str, UnsetType]=unset, ) -> UserAuthorizedClientsResponse:
+ """List user authorizations for a client.
+
+ Get a list of user authorizations for the specified OAuth2 client in the current organization.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Field to sort results by. Options: ``user.name`` , ``user.email`` , ``oauth2_client.name``.
+ :type sort: OrgAuthorizedClientUserAuthorizationsSort, optional
+ :param filter_disabled: Filter results by the user authorization disabled status.
+ :type filter_disabled: str, optional
+ :param filter_user_name: Filter results by user name.
+ :type filter_user_name: str, optional
+ :param filter_user_email: Filter results by user email.
+ :type filter_user_email: str, optional
+ :param filter_user_disabled: Filter results by whether the user is disabled.
+ :type filter_user_disabled: str, optional
+ :rtype: UserAuthorizedClientsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_disabled is not unset:
+ kwargs["filter_disabled"] = filter_disabled
+
+ if filter_user_name is not unset:
+ kwargs["filter_user_name"] = filter_user_name
+
+ if filter_user_email is not unset:
+ kwargs["filter_user_email"] = filter_user_email
+
+ if filter_user_disabled is not unset:
+ kwargs["filter_user_disabled"] = filter_user_disabled
+
+ return self._list_org_authorized_client_user_authorizations_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_authorized_client_user_authorizations_with_pagination(self, org_authorized_client_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[OrgAuthorizedClientUserAuthorizationsSort, UnsetType]=unset, filter_disabled: Union[str, UnsetType]=unset, filter_user_name: Union[str, UnsetType]=unset, filter_user_email: Union[str, UnsetType]=unset, filter_user_disabled: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[UserAuthorizedClientData]:
+ """List user authorizations for a client.
+
+ Provide a paginated version of :meth:`list_org_authorized_client_user_authorizations`, returning all items.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Field to sort results by. Options: ``user.name`` , ``user.email`` , ``oauth2_client.name``.
+ :type sort: OrgAuthorizedClientUserAuthorizationsSort, optional
+ :param filter_disabled: Filter results by the user authorization disabled status.
+ :type filter_disabled: str, optional
+ :param filter_user_name: Filter results by user name.
+ :type filter_user_name: str, optional
+ :param filter_user_email: Filter results by user email.
+ :type filter_user_email: str, optional
+ :param filter_user_disabled: Filter results by whether the user is disabled.
+ :type filter_user_disabled: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[UserAuthorizedClientData]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_disabled is not unset:
+ kwargs["filter_disabled"] = filter_disabled
+
+ if filter_user_name is not unset:
+ kwargs["filter_user_name"] = filter_user_name
+
+ if filter_user_email is not unset:
+ kwargs["filter_user_email"] = filter_user_email
+
+ if filter_user_disabled is not unset:
+ kwargs["filter_user_disabled"] = filter_user_disabled
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_org_authorized_client_user_authorizations_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_org_authorized_client(self, org_authorized_client_id: str, body: OrgAuthorizedClientUpdateRequest, ) -> OrgAuthorizedClientResponse:
+ """Update an org authorized client.
+
+ Enable or disable an OAuth2 client authorization for the current organization.
+
+ :param org_authorized_client_id: The ID of the org authorized client.
+ :type org_authorized_client_id: str
+ :type body: OrgAuthorizedClientUpdateRequest
+ :rtype: OrgAuthorizedClientResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_authorized_client_id"] = org_authorized_client_id
+
+ kwargs["body"] = body
+
+ return self._update_org_authorized_client_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/org_connections_api.py b/datadog_api_client/v2/api/org_connections_api.py
new file mode 100644
index 0000000000..298528fd61
--- /dev/null
+++ b/datadog_api_client/v2/api/org_connections_api.py
@@ -0,0 +1,222 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.org_connection_list_response import OrgConnectionListResponse
+from datadog_api_client.v2.model.org_connection_response import OrgConnectionResponse
+from datadog_api_client.v2.model.org_connection_create_request import OrgConnectionCreateRequest
+from datadog_api_client.v2.model.org_connection_update_request import OrgConnectionUpdateRequest
+
+
+class OrgConnectionsApi:
+ """
+ Manage connections between organizations. Org connections allow for controlled sharing of data between different Datadog organizations. See the `Cross-Organization Visibiltiy `_ page for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_org_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_connections",
+ "operation_id": "create_org_connections",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrgConnectionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_org_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_connections/{connection_id}",
+ "operation_id": "delete_org_connections",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "connection_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "connection_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgConnectionListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_connections",
+ "operation_id": "list_org_connections",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "sink_org_id": {
+ "openapi_types": (str,),
+ "attribute": "sink_org_id",
+ "location": "query",
+ },
+ "source_org_id": {
+ "openapi_types": (str,),
+ "attribute": "source_org_id",
+ "location": "query",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "offset": {
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgConnectionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org_connections/{connection_id}",
+ "operation_id": "update_org_connections",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "connection_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "connection_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgConnectionUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_org_connections(self, body: OrgConnectionCreateRequest, ) -> OrgConnectionResponse:
+ """Create Org Connection.
+
+ Create a new org connection between the current org and a target org.
+
+ :type body: OrgConnectionCreateRequest
+ :rtype: OrgConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_org_connections_endpoint.call_with_http_info(**kwargs)
+
+ def delete_org_connections(self, connection_id: UUID, ) -> None:
+ """Delete Org Connection.
+
+ Delete an existing org connection.
+
+ :param connection_id: The unique identifier of the org connection.
+ :type connection_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["connection_id"] = connection_id
+
+ return self._delete_org_connections_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_connections(self, *, sink_org_id: Union[str, UnsetType]=unset, source_org_id: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, ) -> OrgConnectionListResponse:
+ """List Org Connections.
+
+ Returns a list of org connections.
+
+ :param sink_org_id: The Org ID of the sink org.
+ :type sink_org_id: str, optional
+ :param source_org_id: The Org ID of the source org.
+ :type source_org_id: str, optional
+ :param limit: The limit of number of entries you want to return. Default is 1000.
+ :type limit: int, optional
+ :param offset: The pagination offset which you want to query from. Default is 0.
+ :type offset: int, optional
+ :rtype: OrgConnectionListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if sink_org_id is not unset:
+ kwargs["sink_org_id"] = sink_org_id
+
+ if source_org_id is not unset:
+ kwargs["source_org_id"] = source_org_id
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ return self._list_org_connections_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_connections(self, connection_id: UUID, body: OrgConnectionUpdateRequest, ) -> OrgConnectionResponse:
+ """Update Org Connection.
+
+ Update an existing org connection.
+
+ :param connection_id: The unique identifier of the org connection.
+ :type connection_id: UUID
+ :type body: OrgConnectionUpdateRequest
+ :rtype: OrgConnectionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["connection_id"] = connection_id
+
+ kwargs["body"] = body
+
+ return self._update_org_connections_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/org_groups_api.py b/datadog_api_client/v2/api/org_groups_api.py
new file mode 100644
index 0000000000..1e285d154a
--- /dev/null
+++ b/datadog_api_client/v2/api/org_groups_api.py
@@ -0,0 +1,1021 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.org_group_membership_list_response import OrgGroupMembershipListResponse
+from datadog_api_client.v2.model.org_group_membership_sort_option import OrgGroupMembershipSortOption
+from datadog_api_client.v2.model.org_group_membership_bulk_update_request import OrgGroupMembershipBulkUpdateRequest
+from datadog_api_client.v2.model.org_group_membership_response import OrgGroupMembershipResponse
+from datadog_api_client.v2.model.org_group_membership_update_request import OrgGroupMembershipUpdateRequest
+from datadog_api_client.v2.model.org_group_policy_list_response import OrgGroupPolicyListResponse
+from datadog_api_client.v2.model.org_group_policy_sort_option import OrgGroupPolicySortOption
+from datadog_api_client.v2.model.org_group_policy_response import OrgGroupPolicyResponse
+from datadog_api_client.v2.model.org_group_policy_create_request import OrgGroupPolicyCreateRequest
+from datadog_api_client.v2.model.org_group_policy_update_request import OrgGroupPolicyUpdateRequest
+from datadog_api_client.v2.model.org_group_policy_config_list_response import OrgGroupPolicyConfigListResponse
+from datadog_api_client.v2.model.org_group_policy_override_list_response import OrgGroupPolicyOverrideListResponse
+from datadog_api_client.v2.model.org_group_policy_override_sort_option import OrgGroupPolicyOverrideSortOption
+from datadog_api_client.v2.model.org_group_policy_override_response import OrgGroupPolicyOverrideResponse
+from datadog_api_client.v2.model.org_group_policy_override_create_request import OrgGroupPolicyOverrideCreateRequest
+from datadog_api_client.v2.model.org_group_policy_override_update_request import OrgGroupPolicyOverrideUpdateRequest
+from datadog_api_client.v2.model.org_group_policy_suggestion_list_response import OrgGroupPolicySuggestionListResponse
+from datadog_api_client.v2.model.org_group_list_response import OrgGroupListResponse
+from datadog_api_client.v2.model.org_group_sort_option import OrgGroupSortOption
+from datadog_api_client.v2.model.org_group_response import OrgGroupResponse
+from datadog_api_client.v2.model.org_group_create_request import OrgGroupCreateRequest
+from datadog_api_client.v2.model.org_group_update_request import OrgGroupUpdateRequest
+
+
+class OrgGroupsApi:
+ """
+ Manage organization groups, memberships, policies, policy overrides, and policy configurations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._bulk_update_org_group_memberships_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupMembershipListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_memberships/bulk",
+ "operation_id": "bulk_update_org_group_memberships",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupMembershipBulkUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_org_group_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_groups",
+ "operation_id": "create_org_group",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_org_group_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policies",
+ "operation_id": "create_org_group_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupPolicyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_org_group_policy_override_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyOverrideResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_overrides",
+ "operation_id": "create_org_group_policy_override",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupPolicyOverrideCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_org_group_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_groups/{org_group_id}",
+ "operation_id": "delete_org_group",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_org_group_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policies/{org_group_policy_id}",
+ "operation_id": "delete_org_group_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_policy_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_org_group_policy_override_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_overrides/{org_group_policy_override_id}",
+ "operation_id": "delete_org_group_policy_override",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_policy_override_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_policy_override_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_group_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_groups/{org_group_id}",
+ "operation_id": "get_org_group",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_group_membership_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupMembershipResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_memberships/{org_group_membership_id}",
+ "operation_id": "get_org_group_membership",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_membership_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_membership_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_group_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policies/{org_group_policy_id}",
+ "operation_id": "get_org_group_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_policy_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_policy_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_org_group_policy_override_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyOverrideResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_overrides/{org_group_policy_override_id}",
+ "operation_id": "get_org_group_policy_override",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_policy_override_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_policy_override_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_group_memberships_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupMembershipListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_memberships",
+ "operation_id": "list_org_group_memberships",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_org_group_id": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[org_group_id]",
+ "location": "query",
+ },
+ "filter_org_uuid": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[org_uuid]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (OrgGroupMembershipSortOption,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_group_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policies",
+ "operation_id": "list_org_group_policies",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_org_group_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "filter[org_group_id]",
+ "location": "query",
+ },
+ "filter_policy_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[policy_name]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (OrgGroupPolicySortOption,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_group_policy_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyConfigListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_configs",
+ "operation_id": "list_org_group_policy_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_group_policy_overrides_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyOverrideListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_overrides",
+ "operation_id": "list_org_group_policy_overrides",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_org_group_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "filter[org_group_id]",
+ "location": "query",
+ },
+ "filter_policy_id": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[policy_id]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (OrgGroupPolicyOverrideSortOption,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_group_policy_suggestions_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicySuggestionListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_suggestions",
+ "operation_id": "list_org_group_policy_suggestions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_org_group_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "filter[org_group_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_groups_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_groups",
+ "operation_id": "list_org_groups",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (OrgGroupSortOption,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_group_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_groups/{org_group_id}",
+ "operation_id": "update_org_group",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_group_membership_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupMembershipResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_memberships/{org_group_membership_id}",
+ "operation_id": "update_org_group_membership",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_membership_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_membership_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupMembershipUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_group_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policies/{org_group_policy_id}",
+ "operation_id": "update_org_group_policy",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_policy_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_policy_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupPolicyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_group_policy_override_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgGroupPolicyOverrideResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_group_policy_overrides/{org_group_policy_override_id}",
+ "operation_id": "update_org_group_policy_override",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "org_group_policy_override_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "org_group_policy_override_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgGroupPolicyOverrideUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def bulk_update_org_group_memberships(self, body: OrgGroupMembershipBulkUpdateRequest, ) -> OrgGroupMembershipListResponse:
+ """Bulk update org group memberships.
+
+ Move a batch of organizations from one org group to another. This is an atomic operation. Maximum 100 orgs per request.
+
+ :type body: OrgGroupMembershipBulkUpdateRequest
+ :rtype: OrgGroupMembershipListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_update_org_group_memberships_endpoint.call_with_http_info(**kwargs)
+
+ def create_org_group(self, body: OrgGroupCreateRequest, ) -> OrgGroupResponse:
+ """Create an org group.
+
+ Create a new organization group.
+
+ :type body: OrgGroupCreateRequest
+ :rtype: OrgGroupResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_org_group_endpoint.call_with_http_info(**kwargs)
+
+ def create_org_group_policy(self, body: OrgGroupPolicyCreateRequest, ) -> OrgGroupPolicyResponse:
+ """Create an org group policy.
+
+ Create a new policy for an organization group.
+
+ :type body: OrgGroupPolicyCreateRequest
+ :rtype: OrgGroupPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_org_group_policy_endpoint.call_with_http_info(**kwargs)
+
+ def create_org_group_policy_override(self, body: OrgGroupPolicyOverrideCreateRequest, ) -> OrgGroupPolicyOverrideResponse:
+ """Create an org group policy override.
+
+ Create a new policy override for an organization within an org group.
+
+ :type body: OrgGroupPolicyOverrideCreateRequest
+ :rtype: OrgGroupPolicyOverrideResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_org_group_policy_override_endpoint.call_with_http_info(**kwargs)
+
+ def delete_org_group(self, org_group_id: UUID, ) -> None:
+ """Delete an org group.
+
+ Delete an organization group by its ID.
+
+ :param org_group_id: The ID of the org group.
+ :type org_group_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_id"] = org_group_id
+
+ return self._delete_org_group_endpoint.call_with_http_info(**kwargs)
+
+ def delete_org_group_policy(self, org_group_policy_id: UUID, ) -> None:
+ """Delete an org group policy.
+
+ Delete an organization group policy by its ID.
+
+ :param org_group_policy_id: The ID of the org group policy.
+ :type org_group_policy_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_policy_id"] = org_group_policy_id
+
+ return self._delete_org_group_policy_endpoint.call_with_http_info(**kwargs)
+
+ def delete_org_group_policy_override(self, org_group_policy_override_id: UUID, ) -> None:
+ """Delete an org group policy override.
+
+ Delete an organization group policy override by its ID.
+
+ :param org_group_policy_override_id: The ID of the org group policy override.
+ :type org_group_policy_override_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_policy_override_id"] = org_group_policy_override_id
+
+ return self._delete_org_group_policy_override_endpoint.call_with_http_info(**kwargs)
+
+ def get_org_group(self, org_group_id: UUID, ) -> OrgGroupResponse:
+ """Get an org group.
+
+ Get a specific organization group by its ID.
+
+ :param org_group_id: The ID of the org group.
+ :type org_group_id: UUID
+ :rtype: OrgGroupResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_id"] = org_group_id
+
+ return self._get_org_group_endpoint.call_with_http_info(**kwargs)
+
+ def get_org_group_membership(self, org_group_membership_id: UUID, ) -> OrgGroupMembershipResponse:
+ """Get an org group membership.
+
+ Get a specific organization group membership by its ID.
+
+ :param org_group_membership_id: The ID of the org group membership.
+ :type org_group_membership_id: UUID
+ :rtype: OrgGroupMembershipResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_membership_id"] = org_group_membership_id
+
+ return self._get_org_group_membership_endpoint.call_with_http_info(**kwargs)
+
+ def get_org_group_policy(self, org_group_policy_id: UUID, ) -> OrgGroupPolicyResponse:
+ """Get an org group policy.
+
+ Get a specific organization group policy by its ID.
+
+ :param org_group_policy_id: The ID of the org group policy.
+ :type org_group_policy_id: UUID
+ :rtype: OrgGroupPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_policy_id"] = org_group_policy_id
+
+ return self._get_org_group_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_org_group_policy_override(self, org_group_policy_override_id: UUID, ) -> OrgGroupPolicyOverrideResponse:
+ """Get an org group policy override.
+
+ Get a specific organization group policy override by its ID.
+
+ :param org_group_policy_override_id: The ID of the org group policy override.
+ :type org_group_policy_override_id: UUID
+ :rtype: OrgGroupPolicyOverrideResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_policy_override_id"] = org_group_policy_override_id
+
+ return self._get_org_group_policy_override_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_group_memberships(self, *, filter_org_group_id: Union[UUID, UnsetType]=unset, filter_org_uuid: Union[UUID, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort: Union[OrgGroupMembershipSortOption, UnsetType]=unset, ) -> OrgGroupMembershipListResponse:
+ """List org group memberships.
+
+ List organization group memberships. Filter by org group ID or org UUID. At least one of ``filter[org_group_id]`` or ``filter[org_uuid]`` must be provided. When filtering by org UUID, returns a single-item list with the membership for that org.
+
+ :param filter_org_group_id: Filter memberships by org group ID. Required when ``filter[org_uuid]`` is not provided.
+ :type filter_org_group_id: UUID, optional
+ :param filter_org_uuid: Filter memberships by org UUID. Returns a single-item list.
+ :type filter_org_uuid: UUID, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :param page_size: The number of items per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param sort: Field to sort memberships by. Supported values: ``name`` , ``uuid`` , ``-name`` , ``-uuid``. Defaults to ``uuid``.
+ :type sort: OrgGroupMembershipSortOption, optional
+ :rtype: OrgGroupMembershipListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_org_group_id is not unset:
+ kwargs["filter_org_group_id"] = filter_org_group_id
+
+ if filter_org_uuid is not unset:
+ kwargs["filter_org_uuid"] = filter_org_uuid
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_org_group_memberships_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_group_policies(self, filter_org_group_id: UUID, *, filter_policy_name: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort: Union[OrgGroupPolicySortOption, UnsetType]=unset, ) -> OrgGroupPolicyListResponse:
+ """List org group policies.
+
+ List policies for an organization group. Requires a filter on org group ID.
+
+ :param filter_org_group_id: Filter policies by org group ID.
+ :type filter_org_group_id: UUID
+ :param filter_policy_name: Filter policies by policy name.
+ :type filter_policy_name: str, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :param page_size: The number of items per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param sort: Field to sort policies by. Supported values: ``id`` , ``name`` , ``-id`` , ``-name``. Defaults to ``id``.
+ :type sort: OrgGroupPolicySortOption, optional
+ :rtype: OrgGroupPolicyListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_org_group_id"] = filter_org_group_id
+
+ if filter_policy_name is not unset:
+ kwargs["filter_policy_name"] = filter_policy_name
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_org_group_policies_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_group_policy_configs(self, ) -> OrgGroupPolicyConfigListResponse:
+ """List org group policy configs.
+
+ List all org configs that are eligible to be used as organization group policies.
+
+ :rtype: OrgGroupPolicyConfigListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_org_group_policy_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_group_policy_overrides(self, filter_org_group_id: UUID, *, filter_policy_id: Union[UUID, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort: Union[OrgGroupPolicyOverrideSortOption, UnsetType]=unset, ) -> OrgGroupPolicyOverrideListResponse:
+ """List org group policy overrides.
+
+ List policy overrides for an organization group. Requires a filter on org group ID. Optionally filter by policy ID.
+
+ :param filter_org_group_id: Filter policy overrides by org group ID.
+ :type filter_org_group_id: UUID
+ :param filter_policy_id: Filter policy overrides by policy ID.
+ :type filter_policy_id: UUID, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :param page_size: The number of items per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param sort: Field to sort overrides by. Supported values: ``id`` , ``org_uuid`` , ``-id`` , ``-org_uuid``. Defaults to ``id``.
+ :type sort: OrgGroupPolicyOverrideSortOption, optional
+ :rtype: OrgGroupPolicyOverrideListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_org_group_id"] = filter_org_group_id
+
+ if filter_policy_id is not unset:
+ kwargs["filter_policy_id"] = filter_policy_id
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_org_group_policy_overrides_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_group_policy_suggestions(self, filter_org_group_id: UUID, ) -> OrgGroupPolicySuggestionListResponse:
+ """List org group policy suggestions.
+
+ List suggested organization group policies. Requires a filter on org group ID.
+
+ :param filter_org_group_id: Filter policies by org group ID.
+ :type filter_org_group_id: UUID
+ :rtype: OrgGroupPolicySuggestionListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_org_group_id"] = filter_org_group_id
+
+ return self._list_org_group_policy_suggestions_endpoint.call_with_http_info(**kwargs)
+
+ def list_org_groups(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort: Union[OrgGroupSortOption, UnsetType]=unset, ) -> OrgGroupListResponse:
+ """List org groups.
+
+ List all organization groups that the requesting organization has access to.
+
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :param page_size: The number of items per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param sort: Field to sort org groups by. Supported values: ``name`` , ``uuid`` , ``-name`` , ``-uuid``. Defaults to ``uuid``.
+ :type sort: OrgGroupSortOption, optional
+ :rtype: OrgGroupListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_org_groups_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_group(self, org_group_id: UUID, body: OrgGroupUpdateRequest, ) -> OrgGroupResponse:
+ """Update an org group.
+
+ Update the name of an existing organization group.
+
+ :param org_group_id: The ID of the org group.
+ :type org_group_id: UUID
+ :type body: OrgGroupUpdateRequest
+ :rtype: OrgGroupResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_id"] = org_group_id
+
+ kwargs["body"] = body
+
+ return self._update_org_group_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_group_membership(self, org_group_membership_id: UUID, body: OrgGroupMembershipUpdateRequest, ) -> OrgGroupMembershipResponse:
+ """Update an org group membership.
+
+ Move an organization to a different org group by updating its membership.
+
+ :param org_group_membership_id: The ID of the org group membership.
+ :type org_group_membership_id: UUID
+ :type body: OrgGroupMembershipUpdateRequest
+ :rtype: OrgGroupMembershipResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_membership_id"] = org_group_membership_id
+
+ kwargs["body"] = body
+
+ return self._update_org_group_membership_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_group_policy(self, org_group_policy_id: UUID, body: OrgGroupPolicyUpdateRequest, ) -> OrgGroupPolicyResponse:
+ """Update an org group policy.
+
+ Update an existing organization group policy.
+
+ :param org_group_policy_id: The ID of the org group policy.
+ :type org_group_policy_id: UUID
+ :type body: OrgGroupPolicyUpdateRequest
+ :rtype: OrgGroupPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_policy_id"] = org_group_policy_id
+
+ kwargs["body"] = body
+
+ return self._update_org_group_policy_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_group_policy_override(self, org_group_policy_override_id: UUID, body: OrgGroupPolicyOverrideUpdateRequest, ) -> OrgGroupPolicyOverrideResponse:
+ """Update an org group policy override.
+
+ Update an existing organization group policy override.
+
+ :param org_group_policy_override_id: The ID of the org group policy override.
+ :type org_group_policy_override_id: UUID
+ :type body: OrgGroupPolicyOverrideUpdateRequest
+ :rtype: OrgGroupPolicyOverrideResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_group_policy_override_id"] = org_group_policy_override_id
+
+ kwargs["body"] = body
+
+ return self._update_org_group_policy_override_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/organizations_api.py b/datadog_api_client/v2/api/organizations_api.py
new file mode 100644
index 0000000000..24c6799da0
--- /dev/null
+++ b/datadog_api_client/v2/api/organizations_api.py
@@ -0,0 +1,521 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.global_orgs_response import GlobalOrgsResponse
+from datadog_api_client.v2.model.global_org_data import GlobalOrgData
+from datadog_api_client.v2.model.max_session_duration_update_request import MaxSessionDurationUpdateRequest
+from datadog_api_client.v2.model.managed_orgs_response import ManagedOrgsResponse
+from datadog_api_client.v2.model.org_saml_preferences_update_request import OrgSAMLPreferencesUpdateRequest
+from datadog_api_client.v2.model.org_config_list_response import OrgConfigListResponse
+from datadog_api_client.v2.model.org_config_get_response import OrgConfigGetResponse
+from datadog_api_client.v2.model.org_config_write_request import OrgConfigWriteRequest
+from datadog_api_client.v2.model.saml_configurations_response import SAMLConfigurationsResponse
+from datadog_api_client.v2.model.idp_metadata_form_data import IdPMetadataFormData
+from datadog_api_client.v2.model.saml_configuration_response import SAMLConfigurationResponse
+from datadog_api_client.v2.model.saml_configuration_update_request import SAMLConfigurationUpdateRequest
+
+
+class OrganizationsApi:
+ """
+ Create, edit, and manage your organizations. Read more about `multi-org accounts `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_org_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgConfigGetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_configs/{org_config_name}",
+ "operation_id": "get_org_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "org_config_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_config_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_saml_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (SAMLConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/saml_configurations/{saml_config_uuid}",
+ "operation_id": "get_saml_configuration",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "saml_config_uuid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "saml_config_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_global_orgs_endpoint = _Endpoint(
+ settings={
+ "response_type": (GlobalOrgsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/global_orgs",
+ "operation_id": "list_global_orgs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_handle",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_org_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgConfigListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_configs",
+ "operation_id": "list_org_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_orgs_endpoint = _Endpoint(
+ settings={
+ "response_type": (ManagedOrgsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/org",
+ "operation_id": "list_orgs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_saml_configurations_endpoint = _Endpoint(
+ settings={
+ "response_type": (SAMLConfigurationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/saml_configurations",
+ "operation_id": "list_saml_configurations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_login_org_configs_max_session_duration_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/login/org_configs/max_session_duration",
+ "operation_id": "update_login_org_configs_max_session_duration",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MaxSessionDurationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (OrgConfigGetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org_configs/{org_config_name}",
+ "operation_id": "update_org_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "org_config_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "org_config_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (OrgConfigWriteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_org_saml_configurations_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/org/saml_configurations",
+ "operation_id": "update_org_saml_configurations",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OrgSAMLPreferencesUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_saml_configuration_endpoint = _Endpoint(
+ settings={
+ "response_type": (SAMLConfigurationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/saml_configurations/{saml_config_uuid}",
+ "operation_id": "update_saml_configuration",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "saml_config_uuid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "saml_config_uuid",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SAMLConfigurationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upload_idp_metadata_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/saml_configurations/idp_metadata",
+ "operation_id": "upload_idp_metadata",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "idp_file": {
+ "openapi_types": (file_type,),
+ "attribute": "idp_file",
+ "location": "form",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["multipart/form-data"]
+ },
+ api_client=api_client,
+ )
+
+ def get_org_config(self, org_config_name: str, ) -> OrgConfigGetResponse:
+ """Get a specific Org Config value.
+
+ Return the name, description, and value of a specific Org Config.
+
+ :param org_config_name: The name of an Org Config.
+ :type org_config_name: str
+ :rtype: OrgConfigGetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_config_name"] = org_config_name
+
+ return self._get_org_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_saml_configuration(self, saml_config_uuid: str, ) -> SAMLConfigurationResponse:
+ """Get a SAML configuration.
+
+ Get a single SAML configuration for the current organization by its UUID.
+
+ :param saml_config_uuid: The UUID of the SAML configuration.
+ :type saml_config_uuid: str
+ :rtype: SAMLConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["saml_config_uuid"] = saml_config_uuid
+
+ return self._get_saml_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def list_global_orgs(self, user_handle: str, *, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> GlobalOrgsResponse:
+ """List global orgs.
+
+ Returns organizations across regions for the authenticated user. The ``user_handle`` query parameter must match the authenticated user's handle.
+
+ :param user_handle: The handle of the authenticated user.
+ :type user_handle: str
+ :param page_limit: Maximum number of results returned.
+ :type page_limit: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.page.next_cursor``.
+ :type page_cursor: str, optional
+ :rtype: GlobalOrgsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_handle"] = user_handle
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._list_global_orgs_endpoint.call_with_http_info(**kwargs)
+
+ def list_global_orgs_with_pagination(self, user_handle: str, *, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[GlobalOrgData]:
+ """List global orgs.
+
+ Provide a paginated version of :meth:`list_global_orgs`, returning all items.
+
+ :param user_handle: The handle of the authenticated user.
+ :type user_handle: str
+ :param page_limit: Maximum number of results returned.
+ :type page_limit: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.page.next_cursor``.
+ :type page_cursor: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[GlobalOrgData]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_handle"] = user_handle
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 100)
+ endpoint = self._list_global_orgs_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.next_cursor",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_org_configs(self, ) -> OrgConfigListResponse:
+ """List Org Configs.
+
+ Returns all Org Configs (name, description, and value).
+
+ :rtype: OrgConfigListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_org_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_orgs(self, *, filter_name: Union[str, UnsetType]=unset, ) -> ManagedOrgsResponse:
+ """List your managed organizations.
+
+ Returns the current organization and its managed organizations in JSON:API format.
+
+ :param filter_name: Filter managed organizations by name.
+ :type filter_name: str, optional
+ :rtype: ManagedOrgsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ return self._list_orgs_endpoint.call_with_http_info(**kwargs)
+
+ def list_saml_configurations(self, ) -> SAMLConfigurationsResponse:
+ """List SAML configurations.
+
+ Get the list of SAML configurations for the current organization. An organization has at most one SAML configuration.
+
+ :rtype: SAMLConfigurationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_saml_configurations_endpoint.call_with_http_info(**kwargs)
+
+ def update_login_org_configs_max_session_duration(self, body: MaxSessionDurationUpdateRequest, ) -> None:
+ """Update the maximum session duration.
+
+ Update the maximum session duration for the current organization.
+ The duration is specified in seconds.
+
+ :type body: MaxSessionDurationUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_login_org_configs_max_session_duration_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_config(self, org_config_name: str, body: OrgConfigWriteRequest, ) -> OrgConfigGetResponse:
+ """Update a specific Org Config.
+
+ Update the value of a specific Org Config.
+
+ :param org_config_name: The name of an Org Config.
+ :type org_config_name: str
+ :type body: OrgConfigWriteRequest
+ :rtype: OrgConfigGetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["org_config_name"] = org_config_name
+
+ kwargs["body"] = body
+
+ return self._update_org_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_org_saml_configurations(self, body: OrgSAMLPreferencesUpdateRequest, ) -> None:
+ """Update organization SAML preferences.
+
+ Update the SAML preferences for the current organization.
+
+ Use this endpoint to set the just-in-time (JIT) provisioning domains and the default role
+ assigned to just-in-time provisioned users.
+
+ :type body: OrgSAMLPreferencesUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_org_saml_configurations_endpoint.call_with_http_info(**kwargs)
+
+ def update_saml_configuration(self, saml_config_uuid: str, body: SAMLConfigurationUpdateRequest, ) -> SAMLConfigurationResponse:
+ """Update a SAML configuration.
+
+ Update a single SAML configuration for the current organization.
+
+ Use this endpoint to enable or disable identity-provider-initiated login, set the
+ just-in-time provisioning domains, and set the default role assigned to
+ just-in-time provisioned users. A default role is required to enable just-in-time provisioning.
+
+ :param saml_config_uuid: The UUID of the SAML configuration.
+ :type saml_config_uuid: str
+ :type body: SAMLConfigurationUpdateRequest
+ :rtype: SAMLConfigurationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["saml_config_uuid"] = saml_config_uuid
+
+ kwargs["body"] = body
+
+ return self._update_saml_configuration_endpoint.call_with_http_info(**kwargs)
+
+ def upload_idp_metadata(self, *, idp_file: Union[file_type, UnsetType]=unset, ) -> None:
+ """Upload IdP metadata.
+
+ Endpoint for uploading IdP metadata for SAML setup.
+
+ Use this endpoint to upload or replace IdP metadata for SAML login configuration.
+
+ :param idp_file: The IdP metadata XML file
+ :type idp_file: file_type, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ if idp_file is not unset:
+ kwargs["idp_file"] = idp_file
+
+ return self._upload_idp_metadata_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/powerpack_api.py b/datadog_api_client/v2/api/powerpack_api.py
new file mode 100644
index 0000000000..b4fd5708ec
--- /dev/null
+++ b/datadog_api_client/v2/api/powerpack_api.py
@@ -0,0 +1,286 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_powerpacks_response import ListPowerpacksResponse
+from datadog_api_client.v2.model.powerpack_data import PowerpackData
+from datadog_api_client.v2.model.powerpack_response import PowerpackResponse
+from datadog_api_client.v2.model.powerpack import Powerpack
+
+
+class PowerpackApi:
+ """
+ The Powerpack endpoints allow you to:
+
+ * Get a Powerpack
+ * Create a Powerpack
+ * Delete a Powerpack
+ * Get a list of all Powerpacks
+
+ The Patch and Delete API methods can only be performed on a Powerpack by
+ a user who has the powerpack create permission for that specific Powerpack.
+
+ Read `Scale Graphing Expertise with Powerpacks `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_powerpack_endpoint = _Endpoint(
+ settings={
+ "response_type": (PowerpackResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/powerpacks",
+ "operation_id": "create_powerpack",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (Powerpack,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_powerpack_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/powerpacks/{powerpack_id}",
+ "operation_id": "delete_powerpack",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "powerpack_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "powerpack_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_powerpack_endpoint = _Endpoint(
+ settings={
+ "response_type": (PowerpackResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/powerpacks/{powerpack_id}",
+ "operation_id": "get_powerpack",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "powerpack_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "powerpack_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_powerpacks_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListPowerpacksResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/powerpacks",
+ "operation_id": "list_powerpacks",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_powerpack_endpoint = _Endpoint(
+ settings={
+ "response_type": (PowerpackResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/powerpacks/{powerpack_id}",
+ "operation_id": "update_powerpack",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "powerpack_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "powerpack_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Powerpack,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_powerpack(self, body: Powerpack, ) -> PowerpackResponse:
+ """Create a new powerpack.
+
+ Create a powerpack.
+
+ :param body: Create a powerpack request body.
+ :type body: Powerpack
+ :rtype: PowerpackResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_powerpack_endpoint.call_with_http_info(**kwargs)
+
+ def delete_powerpack(self, powerpack_id: str, ) -> None:
+ """Delete a powerpack.
+
+ Delete a powerpack.
+
+ :param powerpack_id: Powerpack id
+ :type powerpack_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["powerpack_id"] = powerpack_id
+
+ return self._delete_powerpack_endpoint.call_with_http_info(**kwargs)
+
+ def get_powerpack(self, powerpack_id: str, ) -> PowerpackResponse:
+ """Get a Powerpack.
+
+ Get a powerpack.
+
+ :param powerpack_id: ID of the powerpack.
+ :type powerpack_id: str
+ :rtype: PowerpackResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["powerpack_id"] = powerpack_id
+
+ return self._get_powerpack_endpoint.call_with_http_info(**kwargs)
+
+ def list_powerpacks(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> ListPowerpacksResponse:
+ """Get all powerpacks.
+
+ Get a list of all powerpacks.
+
+ :param page_limit: Maximum number of powerpacks in the response.
+ :type page_limit: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :rtype: ListPowerpacksResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ return self._list_powerpacks_endpoint.call_with_http_info(**kwargs)
+
+ def list_powerpacks_with_pagination(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[PowerpackData]:
+ """Get all powerpacks.
+
+ Provide a paginated version of :meth:`list_powerpacks`, returning all items.
+
+ :param page_limit: Maximum number of powerpacks in the response.
+ :type page_limit: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[PowerpackData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 25)
+ endpoint = self._list_powerpacks_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_powerpack(self, powerpack_id: str, body: Powerpack, ) -> PowerpackResponse:
+ """Update a powerpack.
+
+ Update a powerpack.
+
+ :param powerpack_id: ID of the powerpack.
+ :type powerpack_id: str
+ :param body: Update a powerpack request body.
+ :type body: Powerpack
+ :rtype: PowerpackResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["powerpack_id"] = powerpack_id
+
+ kwargs["body"] = body
+
+ return self._update_powerpack_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/processes_api.py b/datadog_api_client/v2/api/processes_api.py
new file mode 100644
index 0000000000..d7d72b602b
--- /dev/null
+++ b/datadog_api_client/v2/api/processes_api.py
@@ -0,0 +1,188 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.process_summaries_response import ProcessSummariesResponse
+from datadog_api_client.v2.model.process_summary import ProcessSummary
+
+
+class ProcessesApi:
+ """
+ The processes API allows you to query processes data for your organization. See the `Live Processes page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_processes_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProcessSummariesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/processes",
+ "operation_id": "list_processes",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "search": {
+ "openapi_types": (str,),
+ "attribute": "search",
+ "location": "query",
+ },
+ "tags": {
+ "openapi_types": (str,),
+ "attribute": "tags",
+ "location": "query",
+ },
+ "_from": {
+ "openapi_types": (int,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (int,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 10000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_processes(self, *, search: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, _from: Union[int, UnsetType]=unset, to: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> ProcessSummariesResponse:
+ """Get all processes.
+
+ Get all processes for your organization.
+
+ :param search: String to search processes by.
+ :type search: str, optional
+ :param tags: Comma-separated list of tags to filter processes by.
+ :type tags: str, optional
+ :param _from: Unix timestamp (number of seconds since epoch) of the start of the query window.
+ If not provided, the start of the query window will be 15 minutes before the ``to`` timestamp. If neither
+ ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``.
+ :type _from: int, optional
+ :param to: Unix timestamp (number of seconds since epoch) of the end of the query window.
+ If not provided, the end of the query window will be 15 minutes after the ``from`` timestamp. If neither
+ ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``.
+ :type to: int, optional
+ :param page_limit: Maximum number of results returned.
+ :type page_limit: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.page.after``.
+ :type page_cursor: str, optional
+ :rtype: ProcessSummariesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if search is not unset:
+ kwargs["search"] = search
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._list_processes_endpoint.call_with_http_info(**kwargs)
+
+ def list_processes_with_pagination(self, *, search: Union[str, UnsetType]=unset, tags: Union[str, UnsetType]=unset, _from: Union[int, UnsetType]=unset, to: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[ProcessSummary]:
+ """Get all processes.
+
+ Provide a paginated version of :meth:`list_processes`, returning all items.
+
+ :param search: String to search processes by.
+ :type search: str, optional
+ :param tags: Comma-separated list of tags to filter processes by.
+ :type tags: str, optional
+ :param _from: Unix timestamp (number of seconds since epoch) of the start of the query window.
+ If not provided, the start of the query window will be 15 minutes before the ``to`` timestamp. If neither
+ ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``.
+ :type _from: int, optional
+ :param to: Unix timestamp (number of seconds since epoch) of the end of the query window.
+ If not provided, the end of the query window will be 15 minutes after the ``from`` timestamp. If neither
+ ``from`` nor ``to`` are provided, the query window will be ``[now - 15m, now]``.
+ :type to: int, optional
+ :param page_limit: Maximum number of results returned.
+ :type page_limit: int, optional
+ :param page_cursor: String to query the next page of results.
+ This key is provided with each valid response from the API in ``meta.page.after``.
+ :type page_cursor: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ProcessSummary]
+ """
+ kwargs: Dict[str, Any] = {}
+ if search is not unset:
+ kwargs["search"] = search
+
+ if tags is not unset:
+ kwargs["tags"] = tags
+
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 1000)
+ endpoint = self._list_processes_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/product_analytics_api.py b/datadog_api_client/v2/api/product_analytics_api.py
new file mode 100644
index 0000000000..8d6e15c155
--- /dev/null
+++ b/datadog_api_client/v2/api/product_analytics_api.py
@@ -0,0 +1,228 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.product_analytics_server_side_event_item import ProductAnalyticsServerSideEventItem
+from datadog_api_client.v2.model.product_analytics_scalar_response import ProductAnalyticsScalarResponse
+from datadog_api_client.v2.model.product_analytics_analytics_request import ProductAnalyticsAnalyticsRequest
+from datadog_api_client.v2.model.product_analytics_timeseries_response import ProductAnalyticsTimeseriesResponse
+
+
+class ProductAnalyticsApi:
+ """
+ Send server-side events to Product Analytics. Server-Side Events Ingestion allows you to collect custom events
+ from any server-side source, and retains events for 15 months. Server-side events are helpful for understanding
+ causes of a funnel drop-off which are external to the client-side (for example, payment processing error).
+
+ **Note** : Sending server-side events impacts billing. Review the `pricing page `_
+ and contact your Customer Success Manager for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._query_product_analytics_scalar_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProductAnalyticsScalarResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/product-analytics/analytics/scalar",
+ "operation_id": "query_product_analytics_scalar",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ProductAnalyticsAnalyticsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._query_product_analytics_timeseries_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProductAnalyticsTimeseriesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/product-analytics/analytics/timeseries",
+ "operation_id": "query_product_analytics_timeseries",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ProductAnalyticsAnalyticsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._submit_product_analytics_event_endpoint = _Endpoint(
+ settings={
+ "response_type": (dict,),
+ "auth": ["apiKeyAuth"],
+ "endpoint_path": "/api/v2/prodlytics",
+ "operation_id": "submit_product_analytics_event",
+ "http_method": "POST",
+ "version": "v2",
+ "servers": [
+ {
+ "url": "https://{site}",
+ "variables": {
+ "site": {
+ "description": "The intake domain for the regional site.",
+ "default_value": "browser-intake-datadoghq.com",
+ "enum_values": [
+ "browser-intake-datadoghq.com",
+ "browser-intake-us3-datadoghq.com",
+ "browser-intake-us5-datadoghq.com",
+ "browser-intake-ap1-datadoghq.com",
+ "browser-intake-ap2-datadoghq.com",
+ "browser-intake-datadoghq.eu",
+ ],
+ },
+ },
+ },
+ {
+ "url": "{protocol}://{name}",
+ "variables": {
+ "name": {
+ "description": "Full site DNS name.",
+ "default_value": "browser-intake-datadoghq.com",
+ },
+ "protocol": {
+ "description": "The protocol for accessing the API.",
+ "default_value": "https",
+ },
+ },
+ },
+ {
+ "url": "https://{subdomain}.{site}",
+ "variables": {
+ "site": {
+ "description": "Any Datadog deployment.",
+ "default_value": "datadoghq.com",
+ },
+ "subdomain": {
+ "description": "The subdomain where the API is deployed.",
+ "default_value": "api",
+ },
+ },
+ },
+ ],
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ProductAnalyticsServerSideEventItem,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def query_product_analytics_scalar(self, body: ProductAnalyticsAnalyticsRequest, ) -> ProductAnalyticsScalarResponse:
+ """Compute scalar analytics.
+
+ Compute scalar analytics results for Product Analytics data.
+ Returns aggregated values (counts, averages, percentiles) optionally grouped by facets.
+
+ :type body: ProductAnalyticsAnalyticsRequest
+ :rtype: ProductAnalyticsScalarResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_product_analytics_scalar_endpoint.call_with_http_info(**kwargs)
+
+ def query_product_analytics_timeseries(self, body: ProductAnalyticsAnalyticsRequest, ) -> ProductAnalyticsTimeseriesResponse:
+ """Compute timeseries analytics.
+
+ Compute timeseries analytics results for Product Analytics data.
+ Returns time-bucketed values for charts and trend analysis.
+ The ``compute.interval`` field (milliseconds) is required for time bucketing.
+
+ :type body: ProductAnalyticsAnalyticsRequest
+ :rtype: ProductAnalyticsTimeseriesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_product_analytics_timeseries_endpoint.call_with_http_info(**kwargs)
+
+ def submit_product_analytics_event(self, body: ProductAnalyticsServerSideEventItem, ) -> dict:
+ """Send server-side events.
+
+ Send server-side events to Product Analytics. Server-side events are retained for 15 months.
+
+ Server-Side events in Product Analytics are helpful for tracking events that occur on the server,
+ as opposed to client-side events, which are captured by Real User Monitoring (RUM) SDKs.
+ This allows for a more comprehensive view of the user journey by including actions that happen on the server.
+ Typical examples could be ``checkout.completed`` or ``payment.processed``.
+
+ Ingested server-side events are integrated into Product Analytics to allow users to select and filter
+ these events in the event picker, similar to how views or actions are handled.
+
+ **Requirements:**
+
+ * At least one of ``usr`` , ``account`` , or ``session`` must be provided with a valid ID.
+ * The ``application.id`` must reference a Product Analytics-enabled application.
+
+ **Custom Attributes:**
+ Any additional fields in the payload are flattened and searchable as facets.
+ For example, a payload with ``{"customer": {"tier": "premium"}}`` is searchable with
+ the syntax ``@customer.tier:premium`` in Datadog.
+
+ The status codes answered by the HTTP API are:
+
+ * 202: Accepted: The request has been accepted for processing
+ * 400: Bad request (likely an issue in the payload formatting)
+ * 401: Unauthorized (likely a missing API Key)
+ * 403: Permission issue (likely using an invalid API Key)
+ * 408: Request Timeout, request should be retried after some time
+ * 413: Payload too large (batch is above 5MB uncompressed)
+ * 429: Too Many Requests, request should be retried after some time
+ * 500: Internal Server Error, the server encountered an unexpected condition that prevented it from fulfilling the request, request should be retried after some time
+ * 503: Service Unavailable, the server is not ready to handle the request probably because it is overloaded, request should be retried after some time
+
+ :param body: Server-side event to send (JSON format).
+ :type body: ProductAnalyticsServerSideEventItem
+ :rtype: dict
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._submit_product_analytics_event_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/reference_tables_api.py b/datadog_api_client/v2/api/reference_tables_api.py
new file mode 100644
index 0000000000..ce68b68ba4
--- /dev/null
+++ b/datadog_api_client/v2/api/reference_tables_api.py
@@ -0,0 +1,573 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.batch_rows_query_response import BatchRowsQueryResponse
+from datadog_api_client.v2.model.batch_rows_query_request import BatchRowsQueryRequest
+from datadog_api_client.v2.model.table_result_v2_array import TableResultV2Array
+from datadog_api_client.v2.model.reference_table_sort_type import ReferenceTableSortType
+from datadog_api_client.v2.model.table_result_v2 import TableResultV2
+from datadog_api_client.v2.model.create_table_request import CreateTableRequest
+from datadog_api_client.v2.model.patch_table_request import PatchTableRequest
+from datadog_api_client.v2.model.batch_delete_rows_request_array import BatchDeleteRowsRequestArray
+from datadog_api_client.v2.model.table_row_resource_array import TableRowResourceArray
+from datadog_api_client.v2.model.batch_upsert_rows_request_array import BatchUpsertRowsRequestArray
+from datadog_api_client.v2.model.list_rows_response import ListRowsResponse
+from datadog_api_client.v2.model.create_upload_response import CreateUploadResponse
+from datadog_api_client.v2.model.create_upload_request import CreateUploadRequest
+
+
+class ReferenceTablesApi:
+ """
+ View and manage Reference Tables in your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._batch_rows_query_endpoint = _Endpoint(
+ settings={
+ "response_type": (BatchRowsQueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/queries/batch-rows",
+ "operation_id": "batch_rows_query",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (BatchRowsQueryRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_reference_table_endpoint = _Endpoint(
+ settings={
+ "response_type": (TableResultV2,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables",
+ "operation_id": "create_reference_table",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateTableRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_reference_table_upload_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateUploadResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/uploads",
+ "operation_id": "create_reference_table_upload",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateUploadRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rows_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}/rows",
+ "operation_id": "delete_rows",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (BatchDeleteRowsRequestArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_table_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}",
+ "operation_id": "delete_table",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rows_by_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (TableRowResourceArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}/rows",
+ "operation_id": "get_rows_by_id",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "row_id": {
+ "required": True,
+ "openapi_types": ([str],),
+ "attribute": "row_id",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_table_endpoint = _Endpoint(
+ settings={
+ "response_type": (TableResultV2,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}",
+ "operation_id": "get_table",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_reference_table_rows_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListRowsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}/rows/list",
+ "operation_id": "list_reference_table_rows",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_continuation_token": {
+ "openapi_types": (str,),
+ "attribute": "page[continuation_token]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tables_endpoint = _Endpoint(
+ settings={
+ "response_type": (TableResultV2Array,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables",
+ "operation_id": "list_tables",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (ReferenceTableSortType,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (str,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "filter_table_name_exact": {
+ "openapi_types": (str,),
+ "attribute": "filter[table_name][exact]",
+ "location": "query",
+ },
+ "filter_table_name_contains": {
+ "openapi_types": (str,),
+ "attribute": "filter[table_name][contains]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_reference_table_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}",
+ "operation_id": "update_reference_table",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchTableRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_rows_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/reference-tables/tables/{id}/rows",
+ "operation_id": "upsert_rows",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (BatchUpsertRowsRequestArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def batch_rows_query(self, body: BatchRowsQueryRequest, ) -> BatchRowsQueryResponse:
+ """Batch rows query.
+
+ Batch query reference table rows by their primary key values. Returns only found rows in the included array.
+
+ :type body: BatchRowsQueryRequest
+ :rtype: BatchRowsQueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._batch_rows_query_endpoint.call_with_http_info(**kwargs)
+
+ def create_reference_table(self, body: CreateTableRequest, ) -> TableResultV2:
+ """Create reference table.
+
+ Creates a reference table. You can provide data in two ways:
+
+ #. Call POST /api/v2/reference-tables/upload to get an upload ID. Then, PUT the CSV data
+ (not the file itself) in chunks to each URL in the request body. Finally, call this
+ POST endpoint with ``upload_id`` in ``file_metadata``.
+ #. Provide ``access_details`` in ``file_metadata`` pointing to a CSV file in cloud storage.
+
+ :type body: CreateTableRequest
+ :rtype: TableResultV2
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_reference_table_endpoint.call_with_http_info(**kwargs)
+
+ def create_reference_table_upload(self, body: CreateUploadRequest, ) -> CreateUploadResponse:
+ """Create reference table upload.
+
+ Create a reference table upload for bulk data ingestion
+
+ :type body: CreateUploadRequest
+ :rtype: CreateUploadResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_reference_table_upload_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rows(self, id: str, body: BatchDeleteRowsRequestArray, ) -> None:
+ """Delete rows.
+
+ Delete multiple rows from a Reference Table by their primary key values.
+
+ :param id: Unique identifier of the reference table to delete rows from
+ :type id: str
+ :type body: BatchDeleteRowsRequestArray
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._delete_rows_endpoint.call_with_http_info(**kwargs)
+
+ def delete_table(self, id: str, ) -> None:
+ """Delete table.
+
+ Delete a reference table by ID
+
+ :param id: Unique identifier of the reference table to delete
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_table_endpoint.call_with_http_info(**kwargs)
+
+ def get_rows_by_id(self, id: str, row_id: List[str], ) -> TableRowResourceArray:
+ """Get rows by id.
+
+ Get reference table rows by their primary key values.
+
+ :param id: Unique identifier of the reference table to get rows from
+ :type id: str
+ :param row_id: List of row IDs (primary key values) to retrieve from the reference table.
+ :type row_id: [str]
+ :rtype: TableRowResourceArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["row_id"] = row_id
+
+ return self._get_rows_by_id_endpoint.call_with_http_info(**kwargs)
+
+ def get_table(self, id: str, ) -> TableResultV2:
+ """Get table.
+
+ Get a reference table by ID
+
+ :param id: Unique identifier of the reference table to retrieve
+ :type id: str
+ :rtype: TableResultV2
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_table_endpoint.call_with_http_info(**kwargs)
+
+ def list_reference_table_rows(self, id: str, *, page_limit: Union[int, UnsetType]=unset, page_continuation_token: Union[str, UnsetType]=unset, ) -> ListRowsResponse:
+ """List rows.
+
+ List all rows in a reference table using cursor-based pagination. Pass the ``page[continuation_token]`` from the previous response to fetch the next page on the same consistent snapshot. Returns 400 for tables with more than 10,000,000 rows.
+
+ :param id: Unique identifier of the reference table to list rows from.
+ :type id: str
+ :param page_limit: Number of rows to return per page. Defaults to 100, maximum is 1000.
+ :type page_limit: int, optional
+ :param page_continuation_token: Opaque cursor from the previous response's next link. Pass this to retrieve the next page on the same consistent snapshot.
+ :type page_continuation_token: str, optional
+ :rtype: ListRowsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_continuation_token is not unset:
+ kwargs["page_continuation_token"] = page_continuation_token
+
+ return self._list_reference_table_rows_endpoint.call_with_http_info(**kwargs)
+
+ def list_tables(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, sort: Union[ReferenceTableSortType, UnsetType]=unset, filter_status: Union[str, UnsetType]=unset, filter_table_name_exact: Union[str, UnsetType]=unset, filter_table_name_contains: Union[str, UnsetType]=unset, ) -> TableResultV2Array:
+ """List tables.
+
+ List all reference tables in this organization.
+
+ :param page_limit: Number of tables to return.
+ :type page_limit: int, optional
+ :param page_offset: Number of tables to skip for pagination.
+ :type page_offset: int, optional
+ :param sort: Sort field and direction for the list of reference tables. Use field name for ascending, prefix with "-" for descending.
+ :type sort: ReferenceTableSortType, optional
+ :param filter_status: Filter by table status.
+ :type filter_status: str, optional
+ :param filter_table_name_exact: Filter by exact table name match.
+ :type filter_table_name_exact: str, optional
+ :param filter_table_name_contains: Filter by table name containing substring.
+ :type filter_table_name_contains: str, optional
+ :rtype: TableResultV2Array
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if filter_table_name_exact is not unset:
+ kwargs["filter_table_name_exact"] = filter_table_name_exact
+
+ if filter_table_name_contains is not unset:
+ kwargs["filter_table_name_contains"] = filter_table_name_contains
+
+ return self._list_tables_endpoint.call_with_http_info(**kwargs)
+
+ def update_reference_table(self, id: str, body: PatchTableRequest, ) -> None:
+ """Update reference table.
+
+ Update a reference table by ID. You can update the table's data, description, and tags. Note: The source type cannot be changed after table creation. For data updates: For existing tables of type `source:LOCAL_FILE`, call POST api/v2/reference-tables/uploads first to get an upload ID, then PUT chunks of CSV data to each provided URL, and finally call this PATCH endpoint with the upload_id in file_metadata. For existing tables with `source:` types of `S3 ``,`` GCS ``, or`` AZURE`, provide updated access_details in file_metadata pointing to a CSV file in the same type of cloud storage.
+
+ :param id: Unique identifier of the reference table to update
+ :type id: str
+ :type body: PatchTableRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_reference_table_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_rows(self, id: str, body: BatchUpsertRowsRequestArray, ) -> None:
+ """Upsert rows.
+
+ Create or update rows in a Reference Table by their primary key values. If a row with the specified primary key exists, it is updated; otherwise, a new row is created.
+
+ :param id: Unique identifier of the reference table to upsert rows into
+ :type id: str
+ :type body: BatchUpsertRowsRequestArray
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._upsert_rows_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/report_schedules_api.py b/datadog_api_client/v2/api/report_schedules_api.py
new file mode 100644
index 0000000000..327abce51b
--- /dev/null
+++ b/datadog_api_client/v2/api/report_schedules_api.py
@@ -0,0 +1,465 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.dataset_report_schedule_list_response import DatasetReportScheduleListResponse
+from datadog_api_client.v2.model.print_report_response import PrintReportResponse
+from datadog_api_client.v2.model.print_report_request import PrintReportRequest
+from datadog_api_client.v2.model.report_schedule_response import ReportScheduleResponse
+from datadog_api_client.v2.model.report_schedule_create_request import ReportScheduleCreateRequest
+from datadog_api_client.v2.model.report_schedule_list_response import ReportScheduleListResponse
+from datadog_api_client.v2.model.report_schedule_resource_type import ReportScheduleResourceType
+from datadog_api_client.v2.model.report_schedule_patch_request import ReportSchedulePatchRequest
+from datadog_api_client.v2.model.report_schedule_toggle_request import ReportScheduleToggleRequest
+
+
+class ReportSchedulesApi:
+ """
+ Create and manage scheduled reports. A scheduled report renders a dashboard or integration
+ dashboard on a recurring cadence and delivers it to a set of recipients over email, Slack,
+ or Microsoft Teams.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_report_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule",
+ "operation_id": "create_report_schedule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ReportScheduleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_report_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule/{schedule_uuid}",
+ "operation_id": "delete_report_schedule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "schedule_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "schedule_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_report_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule/{schedule_uuid}",
+ "operation_id": "get_report_schedule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "schedule_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "schedule_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_report_schedules_for_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule/{resource_type}/{resource_id}",
+ "operation_id": "get_report_schedules_for_resource",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_type": {
+ "required": True,
+ "openapi_types": (ReportScheduleResourceType,),
+ "attribute": "resource_type",
+ "location": "path",
+ },
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_dataset_report_schedules_endpoint = _Endpoint(
+ settings={
+ "response_type": (DatasetReportScheduleListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/dataset/{dataset_id}/schedules",
+ "operation_id": "list_dataset_report_schedules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_report_schedules_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule/list",
+ "operation_id": "list_report_schedules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 50,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "filter_title": {
+ "openapi_types": (str,),
+ "attribute": "filter[title]",
+ "location": "query",
+ },
+ "filter_author_uuid": {
+ "openapi_types": (UUID,),
+ "attribute": "filter[author_uuid]",
+ "location": "query",
+ },
+ "filter_recipients": {
+ "openapi_types": (str,),
+ "attribute": "filter[recipients]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._patch_report_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule/{schedule_uuid}",
+ "operation_id": "patch_report_schedule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "schedule_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "schedule_uuid",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ReportSchedulePatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._print_report_endpoint = _Endpoint(
+ settings={
+ "response_type": (PrintReportResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/print",
+ "operation_id": "print_report",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (PrintReportRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._toggle_report_schedule_endpoint = _Endpoint(
+ settings={
+ "response_type": (ReportScheduleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/reporting/schedule/{schedule_uuid}/toggle",
+ "operation_id": "toggle_report_schedule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "schedule_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "schedule_uuid",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ReportScheduleToggleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_report_schedule(self, body: ReportScheduleCreateRequest, ) -> ReportScheduleResponse:
+ """Create a report schedule.
+
+ Create a new scheduled report. A schedule renders a dashboard or integration dashboard
+ on a recurring cadence and delivers it to the configured recipients over email, Slack,
+ or Microsoft Teams.
+ Requires the ``generate_dashboard_reports`` permission.
+
+ :type body: ReportScheduleCreateRequest
+ :rtype: ReportScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_report_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_report_schedule(self, schedule_uuid: UUID, ) -> ReportScheduleResponse:
+ """Delete a report schedule.
+
+ Delete a report schedule by its unique identifier. The response returns the deleted schedule.
+ Requires a reporting write permission appropriate to the targeted resource type and schedule ownership.
+
+ :param schedule_uuid: The unique identifier of the report schedule to delete.
+ :type schedule_uuid: UUID
+ :rtype: ReportScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["schedule_uuid"] = schedule_uuid
+
+ return self._delete_report_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def get_report_schedule(self, schedule_uuid: UUID, ) -> ReportScheduleResponse:
+ """Get a report schedule.
+
+ Get a report schedule by its unique identifier.
+ Requires a reporting read permission appropriate to the targeted resource type.
+
+ :param schedule_uuid: The unique identifier of the report schedule to fetch.
+ :type schedule_uuid: UUID
+ :rtype: ReportScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["schedule_uuid"] = schedule_uuid
+
+ return self._get_report_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def get_report_schedules_for_resource(self, resource_type: ReportScheduleResourceType, resource_id: str, ) -> ReportScheduleListResponse:
+ """Get report schedules for a resource.
+
+ Get all report schedules that target a dashboard or integration dashboard resource.
+ Requires a reporting read permission appropriate to the targeted resource type.
+
+ :param resource_type: The type of resource to fetch report schedules for.
+ :type resource_type: ReportScheduleResourceType
+ :param resource_id: The identifier of the resource to fetch report schedules for.
+ :type resource_id: str
+ :rtype: ReportScheduleListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_type"] = resource_type
+
+ kwargs["resource_id"] = resource_id
+
+ return self._get_report_schedules_for_resource_endpoint.call_with_http_info(**kwargs)
+
+ def list_dataset_report_schedules(self, dataset_id: str, ) -> DatasetReportScheduleListResponse:
+ """List dataset report schedules.
+
+ Retrieve all report schedules for a given published dataset.
+ Returns report schedules belonging to the authenticated user's organization that target the specified dataset.
+ Requires the ``generate_log_reports`` or ``manage_log_reports`` permission.
+
+ :param dataset_id: The identifier of the published dataset to retrieve report schedules for.
+ :type dataset_id: str
+ :rtype: DatasetReportScheduleListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ return self._list_dataset_report_schedules_endpoint.call_with_http_info(**kwargs)
+
+ def list_report_schedules(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, filter_title: Union[str, UnsetType]=unset, filter_author_uuid: Union[UUID, UnsetType]=unset, filter_recipients: Union[str, UnsetType]=unset, ) -> ReportScheduleListResponse:
+ """List report schedules.
+
+ List dashboard and integration dashboard report schedules for the organization.
+ The response is paginated and can be filtered by title, author UUID, or recipients.
+ Requires the ``generate_dashboard_reports`` permission.
+
+ :param page_limit: The maximum number of schedules to return. The maximum value is 50.
+ :type page_limit: int, optional
+ :param page_offset: The offset from which to start returning schedules.
+ :type page_offset: int, optional
+ :param filter_title: Filter schedules by report title.
+ :type filter_title: str, optional
+ :param filter_author_uuid: Filter schedules by author UUID.
+ :type filter_author_uuid: UUID, optional
+ :param filter_recipients: Filter schedules by a comma-separated list of recipients.
+ :type filter_recipients: str, optional
+ :rtype: ReportScheduleListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if filter_title is not unset:
+ kwargs["filter_title"] = filter_title
+
+ if filter_author_uuid is not unset:
+ kwargs["filter_author_uuid"] = filter_author_uuid
+
+ if filter_recipients is not unset:
+ kwargs["filter_recipients"] = filter_recipients
+
+ return self._list_report_schedules_endpoint.call_with_http_info(**kwargs)
+
+ def patch_report_schedule(self, schedule_uuid: UUID, body: ReportSchedulePatchRequest, ) -> ReportScheduleResponse:
+ """Update a report schedule.
+
+ Update an existing scheduled report by its identifier. The editable attributes
+ are replaced with the supplied values; the targeted resource ( ``resource_id`` and
+ ``resource_type`` ) cannot be changed after creation.
+ Requires the ``generate_dashboard_reports`` permission and schedule ownership.
+
+ :param schedule_uuid: The unique identifier of the report schedule to update.
+ :type schedule_uuid: UUID
+ :type body: ReportSchedulePatchRequest
+ :rtype: ReportScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["schedule_uuid"] = schedule_uuid
+
+ kwargs["body"] = body
+
+ return self._patch_report_schedule_endpoint.call_with_http_info(**kwargs)
+
+ def print_report(self, body: PrintReportRequest, ) -> PrintReportResponse:
+ """Print a report.
+
+ Initiate a one-off, print-only report for a dashboard or integration dashboard.
+ The report is rendered as a PDF and made available for download through the URL returned in the response.
+ Requires a reporting permission appropriate to the targeted resource type.
+
+ :type body: PrintReportRequest
+ :rtype: PrintReportResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._print_report_endpoint.call_with_http_info(**kwargs)
+
+ def toggle_report_schedule(self, schedule_uuid: UUID, body: ReportScheduleToggleRequest, ) -> ReportScheduleResponse:
+ """Toggle a report schedule.
+
+ Activate or pause a report schedule by setting its status to ``active`` or ``inactive``.
+ Requires a reporting write permission appropriate to the targeted resource type and schedule ownership.
+
+ :param schedule_uuid: The unique identifier of the report schedule to toggle.
+ :type schedule_uuid: UUID
+ :type body: ReportScheduleToggleRequest
+ :rtype: ReportScheduleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["schedule_uuid"] = schedule_uuid
+
+ kwargs["body"] = body
+
+ return self._toggle_report_schedule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/reporting_and_sharing_api.py b/datadog_api_client/v2/api/reporting_and_sharing_api.py
new file mode 100644
index 0000000000..c0ff79ed98
--- /dev/null
+++ b/datadog_api_client/v2/api/reporting_and_sharing_api.py
@@ -0,0 +1,70 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.create_snapshot_response import CreateSnapshotResponse
+from datadog_api_client.v2.model.create_snapshot_request import CreateSnapshotRequest
+
+
+class ReportingAndSharingApi:
+ """
+ The Reporting and Sharing endpoints allow you to create snapshots of graph widgets and other shareable resources.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_snapshot_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateSnapshotResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/snapshot",
+ "operation_id": "create_snapshot",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateSnapshotRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_snapshot(self, body: CreateSnapshotRequest, ) -> CreateSnapshotResponse:
+ """Create a graph snapshot.
+
+ Create a snapshot of a graph widget. The snapshot is rendered asynchronously; the returned URL can be polled until the image is ready.
+
+ :type body: CreateSnapshotRequest
+ :rtype: CreateSnapshotResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_snapshot_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/restriction_policies_api.py b/datadog_api_client/v2/api/restriction_policies_api.py
new file mode 100644
index 0000000000..7df3f4a6fc
--- /dev/null
+++ b/datadog_api_client/v2/api/restriction_policies_api.py
@@ -0,0 +1,262 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.restriction_policy_response import RestrictionPolicyResponse
+from datadog_api_client.v2.model.restriction_policy_update_request import RestrictionPolicyUpdateRequest
+
+
+class RestrictionPoliciesApi:
+ """
+ A restriction policy defines the access control rules for a resource, mapping a set of relations
+ (such as editor and viewer) to a set of allowed principals (such as roles, teams, or users).
+ The restriction policy determines who is authorized to perform what actions on the resource.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_restriction_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/restriction_policy/{resource_id}",
+ "operation_id": "delete_restriction_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_restriction_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/restriction_policy/{resource_id}",
+ "operation_id": "get_restriction_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_restriction_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (RestrictionPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/restriction_policy/{resource_id}",
+ "operation_id": "update_restriction_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ "allow_self_lockout": {
+ "openapi_types": (bool,),
+ "attribute": "allow_self_lockout",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RestrictionPolicyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_restriction_policy(self, resource_id: str, ) -> None:
+ """Delete a restriction policy.
+
+ Deletes the restriction policy associated with a specified resource.
+
+ :param resource_id: Identifier, formatted as ``type:id``. Supported types: ``dashboard`` , ``integration-service`` , ``integration-webhook`` , ``notebook`` , ``powerpack`` , ``reference-table`` , ``security-rule`` , ``slo`` , ``synthetics-global-variable`` , ``synthetics-test`` , ``synthetics-private-location`` , ``monitor`` , ``workflow`` , ``app-builder-app`` , ``connection`` , ``connection-group`` , ``rum-application`` , ``cross-org-connection`` , ``spreadsheet`` , ``on-call-schedule`` , ``on-call-escalation-policy`` , ``on-call-team-routing-rules`` , ``logs-pipeline`` , ``case-management-project`` , ``monitor-notification-rule`` , ``status-page`` , ``feature-flag``.
+ :type resource_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ return self._delete_restriction_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_restriction_policy(self, resource_id: str, ) -> RestrictionPolicyResponse:
+ """Get a restriction policy.
+
+ Retrieves the restriction policy associated with a specified resource.
+
+ :param resource_id: Identifier, formatted as ``type:id``. Supported types: ``dashboard`` , ``integration-service`` , ``integration-webhook`` , ``notebook`` , ``powerpack`` , ``reference-table`` , ``security-rule`` , ``slo`` , ``synthetics-global-variable`` , ``synthetics-test`` , ``synthetics-private-location`` , ``monitor`` , ``workflow`` , ``app-builder-app`` , ``connection`` , ``connection-group`` , ``rum-application`` , ``cross-org-connection`` , ``spreadsheet`` , ``on-call-schedule`` , ``on-call-escalation-policy`` , ``on-call-team-routing-rules`` , ``logs-pipeline`` , ``case-management-project`` , ``monitor-notification-rule`` , ``status-page`` , ``feature-flag``.
+ :type resource_id: str
+ :rtype: RestrictionPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ return self._get_restriction_policy_endpoint.call_with_http_info(**kwargs)
+
+ def update_restriction_policy(self, resource_id: str, body: RestrictionPolicyUpdateRequest, *, allow_self_lockout: Union[bool, UnsetType]=unset, ) -> RestrictionPolicyResponse:
+ """Update a restriction policy.
+
+ Updates the restriction policy associated with a resource.
+
+ **Supported resources**
+
+ Restriction policies can be applied to the following resources:
+
+ * Dashboards: ``dashboard``
+ * Integration Services: ``integration-service``
+ * Integration Webhooks: ``integration-webhook``
+ * Notebooks: ``notebook``
+ * Powerpacks: ``powerpack``
+ * Reference Tables: ``reference-table``
+ * Security Rules: ``security-rule``
+ * Service Level Objectives: ``slo``
+ * Synthetic Global Variables: ``synthetics-global-variable``
+ * Synthetic Tests: ``synthetics-test``
+ * Synthetic Private Locations: ``synthetics-private-location``
+ * Monitors: ``monitor``
+ * Workflows: ``workflow``
+ * App Builder Apps: ``app-builder-app``
+ * Connections: ``connection``
+ * Connection Groups: ``connection-group``
+ * RUM Applications: ``rum-application``
+ * Cross Org Connections: ``cross-org-connection``
+ * Spreadsheets: ``spreadsheet``
+ * On-Call Schedules: ``on-call-schedule``
+ * On-Call Escalation Policies: ``on-call-escalation-policy``
+ * On-Call Team Routing Rules: ``on-call-team-routing-rules``
+ * Logs Pipelines: ``logs-pipeline``
+ * Case Management Projects: ``case-management-project``
+ * Monitor Notification Rules: ``monitor-notification-rule``
+ * Status Pages: ``status-page``
+ * Feature Flags: ``feature-flag``
+
+ **Supported relations for resources**
+
+ .. list-table::
+ :header-rows: 1
+
+ * - Resource Type
+ - Supported Relations
+ * - Dashboards
+ - ``viewer`` , ``editor``
+ * - Integration Services
+ - ``viewer`` , ``editor``
+ * - Integration Webhooks
+ - ``viewer`` , ``editor``
+ * - Notebooks
+ - ``viewer`` , ``editor``
+ * - Powerpacks
+ - ``viewer`` , ``editor``
+ * - Security Rules
+ - ``viewer`` , ``editor``
+ * - Service Level Objectives
+ - ``viewer`` , ``editor``
+ * - Synthetic Global Variables
+ - ``viewer`` , ``editor``
+ * - Synthetic Tests
+ - ``viewer`` , ``editor``
+ * - Synthetic Private Locations
+ - ``viewer`` , ``editor``
+ * - Monitors
+ - ``viewer`` , ``editor``
+ * - Reference Tables
+ - ``viewer`` , ``editor``
+ * - Workflows
+ - ``viewer`` , ``runner`` , ``editor``
+ * - App Builder Apps
+ - ``viewer`` , ``editor``
+ * - Connections
+ - ``viewer`` , ``resolver`` , ``editor``
+ * - Connection Groups
+ - ``viewer`` , ``editor``
+ * - RUM Application
+ - ``viewer`` , ``editor``
+ * - Cross Org Connections
+ - ``viewer`` , ``editor``
+ * - Spreadsheets
+ - ``viewer`` , ``editor``
+ * - On-Call Schedules
+ - ``viewer`` , ``overrider`` , ``editor``
+ * - On-Call Escalation Policies
+ - ``viewer`` , ``editor``
+ * - On-Call Team Routing Rules
+ - ``viewer`` , ``editor``
+ * - Logs Pipelines
+ - ``viewer`` , ``processors_editor`` , ``editor``
+ * - Case Management Projects
+ - ``viewer`` , ``contributor`` , ``manager``
+ * - Monitor Notification Rules
+ - ``viewer`` , ``editor``
+ * - Status Pages
+ - ``viewer`` , ``responder`` , ``manager``
+ * - Feature Flags
+ - ``viewer`` , ``contributor`` , ``editor``
+
+
+ :param resource_id: Identifier, formatted as ``type:id``. Supported types: ``dashboard`` , ``integration-service`` , ``integration-webhook`` , ``notebook`` , ``powerpack`` , ``reference-table`` , ``security-rule`` , ``slo`` , ``synthetics-global-variable`` , ``synthetics-test`` , ``synthetics-private-location`` , ``monitor`` , ``workflow`` , ``app-builder-app`` , ``connection`` , ``connection-group`` , ``rum-application`` , ``cross-org-connection`` , ``spreadsheet`` , ``on-call-schedule`` , ``on-call-escalation-policy`` , ``on-call-team-routing-rules`` , ``logs-pipeline`` , ``case-management-project`` , ``monitor-notification-rule`` , ``status-page`` , ``feature-flag``.
+ :type resource_id: str
+ :param body: Restriction policy payload
+ :type body: RestrictionPolicyUpdateRequest
+ :param allow_self_lockout: Allows admins (users with the ``user_access_manage`` permission) to remove their own access from the resource if set to ``true``. By default, this is set to ``false`` , preventing admins from locking themselves out.
+ :type allow_self_lockout: bool, optional
+ :rtype: RestrictionPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_id"] = resource_id
+
+ if allow_self_lockout is not unset:
+ kwargs["allow_self_lockout"] = allow_self_lockout
+
+ kwargs["body"] = body
+
+ return self._update_restriction_policy_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/roles_api.py b/datadog_api_client/v2/api/roles_api.py
new file mode 100644
index 0000000000..b80bb8a4e8
--- /dev/null
+++ b/datadog_api_client/v2/api/roles_api.py
@@ -0,0 +1,703 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.permissions_response import PermissionsResponse
+from datadog_api_client.v2.model.roles_response import RolesResponse
+from datadog_api_client.v2.model.roles_sort import RolesSort
+from datadog_api_client.v2.model.role_create_response import RoleCreateResponse
+from datadog_api_client.v2.model.role_create_request import RoleCreateRequest
+from datadog_api_client.v2.model.role_template_array import RoleTemplateArray
+from datadog_api_client.v2.model.role_response import RoleResponse
+from datadog_api_client.v2.model.role_update_response import RoleUpdateResponse
+from datadog_api_client.v2.model.role_update_request import RoleUpdateRequest
+from datadog_api_client.v2.model.role_clone_request import RoleCloneRequest
+from datadog_api_client.v2.model.relationship_to_permission import RelationshipToPermission
+from datadog_api_client.v2.model.users_response import UsersResponse
+from datadog_api_client.v2.model.relationship_to_user import RelationshipToUser
+
+
+class RolesApi:
+ """
+ The Roles API is used to create and manage Datadog roles, what
+ `global permissions `_
+ they grant, and which users belong to them.
+
+ Permissions related to specific account assets can be granted to roles
+ in the Datadog application without using this API. For example, granting
+ read access on a specific log index to a role can be done in Datadog from the
+ `Pipelines page `_.
+
+ Roles can also be managed in bulk through the Datadog UI, which provides
+ the capability to assign a single permission to multiple roles simultaneously.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_permission_to_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (PermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/permissions",
+ "operation_id": "add_permission_to_role",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToPermission,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._add_user_to_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/users",
+ "operation_id": "add_user_to_role",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToUser,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._clone_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (RoleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/clone",
+ "operation_id": "clone_role",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RoleCloneRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (RoleCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles",
+ "operation_id": "create_role",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RoleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_role_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}",
+ "operation_id": "delete_role",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (RoleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}",
+ "operation_id": "get_role",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_permissions_endpoint = _Endpoint(
+ settings={
+ "response_type": (PermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/permissions",
+ "operation_id": "list_permissions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_role_permissions_endpoint = _Endpoint(
+ settings={
+ "response_type": (PermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/permissions",
+ "operation_id": "list_role_permissions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_roles_endpoint = _Endpoint(
+ settings={
+ "response_type": (RolesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles",
+ "operation_id": "list_roles",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (RolesSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_role_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (RoleTemplateArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/templates",
+ "operation_id": "list_role_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_role_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/users",
+ "operation_id": "list_role_users",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_permission_from_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (PermissionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/permissions",
+ "operation_id": "remove_permission_from_role",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToPermission,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._remove_user_from_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}/users",
+ "operation_id": "remove_user_from_role",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RelationshipToUser,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_role_endpoint = _Endpoint(
+ settings={
+ "response_type": (RoleUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/roles/{role_id}",
+ "operation_id": "update_role",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "role_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "role_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RoleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def add_permission_to_role(self, role_id: str, body: RelationshipToPermission, ) -> PermissionsResponse:
+ """Grant permission to a role.
+
+ Adds a permission to a role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :type body: RelationshipToPermission
+ :rtype: PermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ kwargs["body"] = body
+
+ return self._add_permission_to_role_endpoint.call_with_http_info(**kwargs)
+
+ def add_user_to_role(self, role_id: str, body: RelationshipToUser, ) -> UsersResponse:
+ """Add a user to a role.
+
+ Adds a user to a role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :type body: RelationshipToUser
+ :rtype: UsersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ kwargs["body"] = body
+
+ return self._add_user_to_role_endpoint.call_with_http_info(**kwargs)
+
+ def clone_role(self, role_id: str, body: RoleCloneRequest, ) -> RoleResponse:
+ """Create a new role by cloning an existing role.
+
+ Clone an existing role
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :type body: RoleCloneRequest
+ :rtype: RoleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ kwargs["body"] = body
+
+ return self._clone_role_endpoint.call_with_http_info(**kwargs)
+
+ def create_role(self, body: RoleCreateRequest, ) -> RoleCreateResponse:
+ """Create role.
+
+ Create a new role for your organization.
+
+ The following read permissions are automatically added to every new role, even if they are not included in the request:
+
+ * Dashboards Read
+ * Notebooks Read
+ * Monitors Read
+ * APM Read
+ * Vulnerability Management Read
+ * RUM Apps Read
+ * Incidents Read
+ * SLOs Read
+ * CI Visibility Read
+ * CD Visibility Read
+
+ :type body: RoleCreateRequest
+ :rtype: RoleCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_role_endpoint.call_with_http_info(**kwargs)
+
+ def delete_role(self, role_id: str, ) -> None:
+ """Delete role.
+
+ Disables a role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ return self._delete_role_endpoint.call_with_http_info(**kwargs)
+
+ def get_role(self, role_id: str, ) -> RoleResponse:
+ """Get a role.
+
+ Get a role in the organization specified by the role’s ``role_id``.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :rtype: RoleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ return self._get_role_endpoint.call_with_http_info(**kwargs)
+
+ def list_permissions(self, ) -> PermissionsResponse:
+ """List permissions.
+
+ Returns a list of all permissions, including name, description, and ID.
+
+ :rtype: PermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_permissions_endpoint.call_with_http_info(**kwargs)
+
+ def list_role_permissions(self, role_id: str, ) -> PermissionsResponse:
+ """List permissions for a role.
+
+ Returns a list of all permissions for a single role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :rtype: PermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ return self._list_role_permissions_endpoint.call_with_http_info(**kwargs)
+
+ def list_roles(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[RolesSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, ) -> RolesResponse:
+ """List roles.
+
+ Returns all roles, including their names and their unique identifiers.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Sort roles depending on the given field. Sort order is **ascending** by default.
+ Sort order is **descending** if the field is prefixed by a negative sign, for example:
+ ``sort=-name``.
+ :type sort: RolesSort, optional
+ :param filter: Filter all roles by the given string.
+ :type filter: str, optional
+ :param filter_id: Filter all roles by the given list of role IDs.
+ :type filter_id: str, optional
+ :rtype: RolesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ return self._list_roles_endpoint.call_with_http_info(**kwargs)
+
+ def list_role_templates(self, ) -> RoleTemplateArray:
+ """List role templates.
+
+ List all role templates
+
+ :rtype: RoleTemplateArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_role_templates_endpoint.call_with_http_info(**kwargs)
+
+ def list_role_users(self, role_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter: Union[str, UnsetType]=unset, ) -> UsersResponse:
+ """Get all users of a role.
+
+ Gets all users of a role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: User attribute to order results by. Sort order is **ascending** by default.
+ Sort order is **descending** if the field is prefixed by a negative sign,
+ for example ``sort=-name``. Options: ``name`` , ``email`` , ``status``.
+ :type sort: str, optional
+ :param filter: Filter all users by the given string. Defaults to no filtering.
+ :type filter: str, optional
+ :rtype: UsersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ return self._list_role_users_endpoint.call_with_http_info(**kwargs)
+
+ def remove_permission_from_role(self, role_id: str, body: RelationshipToPermission, ) -> PermissionsResponse:
+ """Revoke permission.
+
+ Removes a permission from a role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :type body: RelationshipToPermission
+ :rtype: PermissionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ kwargs["body"] = body
+
+ return self._remove_permission_from_role_endpoint.call_with_http_info(**kwargs)
+
+ def remove_user_from_role(self, role_id: str, body: RelationshipToUser, ) -> UsersResponse:
+ """Remove a user from a role.
+
+ Removes a user from a role.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :type body: RelationshipToUser
+ :rtype: UsersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ kwargs["body"] = body
+
+ return self._remove_user_from_role_endpoint.call_with_http_info(**kwargs)
+
+ def update_role(self, role_id: str, body: RoleUpdateRequest, ) -> RoleUpdateResponse:
+ """Update a role.
+
+ Edit a role. Can only be used with application keys belonging to administrators.
+
+ :param role_id: The unique identifier of the role.
+ :type role_id: str
+ :type body: RoleUpdateRequest
+ :rtype: RoleUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["role_id"] = role_id
+
+ kwargs["body"] = body
+
+ return self._update_role_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_api.py b/datadog_api_client/v2/api/rum_api.py
new file mode 100644
index 0000000000..16c3f68c76
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_api.py
@@ -0,0 +1,1321 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rum_analytics_aggregate_response import RUMAnalyticsAggregateResponse
+from datadog_api_client.v2.model.rum_aggregate_request import RUMAggregateRequest
+from datadog_api_client.v2.model.rum_applications_response import RUMApplicationsResponse
+from datadog_api_client.v2.model.rum_application_response import RUMApplicationResponse
+from datadog_api_client.v2.model.rum_application_create_request import RUMApplicationCreateRequest
+from datadog_api_client.v2.model.rum_application_update_request import RUMApplicationUpdateRequest
+from datadog_api_client.v2.model.rum_events_response import RUMEventsResponse
+from datadog_api_client.v2.model.rum_sort import RUMSort
+from datadog_api_client.v2.model.rum_event import RUMEvent
+from datadog_api_client.v2.model.rum_search_events_request import RUMSearchEventsRequest
+from datadog_api_client.v2.model.sourcemaps_response import SourcemapsResponse
+from datadog_api_client.v2.model.sourcemap_map_kind import SourcemapMapKind
+from datadog_api_client.v2.model.sourcemap_file_response import SourcemapFileResponse
+from datadog_api_client.v2.model.list_sourcemaps_response import ListSourcemapsResponse
+from datadog_api_client.v2.model.service_repository_info_response import ServiceRepositoryInfoResponse
+from datadog_api_client.v2.model.service_repository_info_request import ServiceRepositoryInfoRequest
+
+
+class RUMApi:
+ """
+ Manage your Real User Monitoring (RUM) applications, and search or aggregate your RUM events over HTTP. See the `RUM & Session Replay page `_ for more information
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._aggregate_rum_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMAnalyticsAggregateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/analytics/aggregate",
+ "operation_id": "aggregate_rum_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RUMAggregateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_rum_application_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMApplicationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications",
+ "operation_id": "create_rum_application",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RUMApplicationCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rum_application_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{id}",
+ "operation_id": "delete_rum_application",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_sourcemaps_endpoint = _Endpoint(
+ settings={
+ "response_type": (SourcemapsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sourcemaps",
+ "operation_id": "delete_sourcemaps",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "mapkind": {
+ "required": True,
+ "openapi_types": (SourcemapMapKind,),
+ "attribute": "mapkind",
+ "location": "query",
+ },
+ "dry_run": {
+ "required": True,
+ "openapi_types": (bool,),
+ "attribute": "dry_run",
+ "location": "query",
+ },
+ "filter_service": {
+ "openapi_types": ([str],),
+ "attribute": "filter[service]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_version": {
+ "openapi_types": ([str],),
+ "attribute": "filter[version]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_variant": {
+ "openapi_types": ([str],),
+ "attribute": "filter[variant]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_id": {
+ "openapi_types": ([str],),
+ "attribute": "filter[id]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_build_id": {
+ "openapi_types": ([str],),
+ "attribute": "filter[build_id]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_uuid": {
+ "openapi_types": ([str],),
+ "attribute": "filter[uuid]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_platform": {
+ "openapi_types": ([str],),
+ "attribute": "filter[platform]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_build_number": {
+ "openapi_types": ([str],),
+ "attribute": "filter[build_number]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_bundle_name": {
+ "openapi_types": ([str],),
+ "attribute": "filter[bundle_name]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_arch": {
+ "openapi_types": ([str],),
+ "attribute": "filter[arch]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_symbol_source": {
+ "openapi_types": ([str],),
+ "attribute": "filter[symbol_source]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_origin": {
+ "openapi_types": ([str],),
+ "attribute": "filter[origin]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_origin_version": {
+ "openapi_types": ([str],),
+ "attribute": "filter[origin_version]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_filename": {
+ "openapi_types": (str,),
+ "attribute": "filter[filename]",
+ "location": "query",
+ },
+ "filter_debug_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[debug_id]",
+ "location": "query",
+ },
+ "filter_gnu_build_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[gnu_build_id]",
+ "location": "query",
+ },
+ "filter_go_build_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[go_build_id]",
+ "location": "query",
+ },
+ "filter_file_hash": {
+ "openapi_types": (str,),
+ "attribute": "filter[file_hash]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_application_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMApplicationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{id}",
+ "operation_id": "get_rum_application",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_applications_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMApplicationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications",
+ "operation_id": "get_rum_applications",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_service_repository_info_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceRepositoryInfoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sourcemaps/service_repository_info",
+ "operation_id": "get_service_repository_info",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceRepositoryInfoRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_sourcemaps_endpoint = _Endpoint(
+ settings={
+ "response_type": (SourcemapFileResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sourcemaps",
+ "operation_id": "get_sourcemaps",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filename": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filename",
+ "location": "query",
+ },
+ "service": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service",
+ "location": "query",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/events",
+ "operation_id": "list_rum_events",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (RUMSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_sourcemaps_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListSourcemapsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sourcemaps/list",
+ "operation_id": "list_sourcemaps",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "mapkind": {
+ "openapi_types": (SourcemapMapKind,),
+ "attribute": "mapkind",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_service": {
+ "openapi_types": ([str],),
+ "attribute": "filter[service]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_version": {
+ "openapi_types": ([str],),
+ "attribute": "filter[version]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_variant": {
+ "openapi_types": ([str],),
+ "attribute": "filter[variant]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_id": {
+ "openapi_types": ([str],),
+ "attribute": "filter[id]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_build_id": {
+ "openapi_types": ([str],),
+ "attribute": "filter[build_id]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_uuid": {
+ "openapi_types": ([str],),
+ "attribute": "filter[uuid]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_platform": {
+ "openapi_types": ([str],),
+ "attribute": "filter[platform]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_build_number": {
+ "openapi_types": ([str],),
+ "attribute": "filter[build_number]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_bundle_name": {
+ "openapi_types": ([str],),
+ "attribute": "filter[bundle_name]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_arch": {
+ "openapi_types": ([str],),
+ "attribute": "filter[arch]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_symbol_source": {
+ "openapi_types": ([str],),
+ "attribute": "filter[symbol_source]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_origin": {
+ "openapi_types": ([str],),
+ "attribute": "filter[origin]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_origin_version": {
+ "openapi_types": ([str],),
+ "attribute": "filter[origin_version]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_filename": {
+ "openapi_types": (str,),
+ "attribute": "filter[filename]",
+ "location": "query",
+ },
+ "filter_debug_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[debug_id]",
+ "location": "query",
+ },
+ "filter_gnu_build_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[gnu_build_id]",
+ "location": "query",
+ },
+ "filter_go_build_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[go_build_id]",
+ "location": "query",
+ },
+ "filter_file_hash": {
+ "openapi_types": (str,),
+ "attribute": "filter[file_hash]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._restore_sourcemaps_endpoint = _Endpoint(
+ settings={
+ "response_type": (SourcemapsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sourcemaps/restore",
+ "operation_id": "restore_sourcemaps",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "mapkind": {
+ "required": True,
+ "openapi_types": (SourcemapMapKind,),
+ "attribute": "mapkind",
+ "location": "query",
+ },
+ "dry_run": {
+ "required": True,
+ "openapi_types": (bool,),
+ "attribute": "dry_run",
+ "location": "query",
+ },
+ "filter_service": {
+ "openapi_types": ([str],),
+ "attribute": "filter[service]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_version": {
+ "openapi_types": ([str],),
+ "attribute": "filter[version]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_variant": {
+ "openapi_types": ([str],),
+ "attribute": "filter[variant]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_id": {
+ "openapi_types": ([str],),
+ "attribute": "filter[id]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_build_id": {
+ "openapi_types": ([str],),
+ "attribute": "filter[build_id]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_uuid": {
+ "openapi_types": ([str],),
+ "attribute": "filter[uuid]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_platform": {
+ "openapi_types": ([str],),
+ "attribute": "filter[platform]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_build_number": {
+ "openapi_types": ([str],),
+ "attribute": "filter[build_number]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_bundle_name": {
+ "openapi_types": ([str],),
+ "attribute": "filter[bundle_name]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_arch": {
+ "openapi_types": ([str],),
+ "attribute": "filter[arch]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_symbol_source": {
+ "openapi_types": ([str],),
+ "attribute": "filter[symbol_source]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_origin": {
+ "openapi_types": ([str],),
+ "attribute": "filter[origin]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_origin_version": {
+ "openapi_types": ([str],),
+ "attribute": "filter[origin_version]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_filename": {
+ "openapi_types": (str,),
+ "attribute": "filter[filename]",
+ "location": "query",
+ },
+ "filter_debug_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[debug_id]",
+ "location": "query",
+ },
+ "filter_gnu_build_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[gnu_build_id]",
+ "location": "query",
+ },
+ "filter_go_build_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[go_build_id]",
+ "location": "query",
+ },
+ "filter_file_hash": {
+ "openapi_types": (str,),
+ "attribute": "filter[file_hash]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_rum_events_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMEventsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/events/search",
+ "operation_id": "search_rum_events",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RUMSearchEventsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_application_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMApplicationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{id}",
+ "operation_id": "update_rum_application",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RUMApplicationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def aggregate_rum_events(self, body: RUMAggregateRequest, ) -> RUMAnalyticsAggregateResponse:
+ """Aggregate RUM events.
+
+ The API endpoint to aggregate RUM events into buckets of computed metrics and timeseries.
+
+ :type body: RUMAggregateRequest
+ :rtype: RUMAnalyticsAggregateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_rum_events_endpoint.call_with_http_info(**kwargs)
+
+ def create_rum_application(self, body: RUMApplicationCreateRequest, ) -> RUMApplicationResponse:
+ """Create a new RUM application.
+
+ Create a new RUM application in your organization.
+
+ :type body: RUMApplicationCreateRequest
+ :rtype: RUMApplicationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_rum_application_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rum_application(self, id: str, ) -> None:
+ """Delete a RUM application.
+
+ Delete an existing RUM application in your organization.
+
+ :param id: RUM application ID.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_rum_application_endpoint.call_with_http_info(**kwargs)
+
+ def delete_sourcemaps(self, mapkind: SourcemapMapKind, dry_run: bool, *, filter_service: Union[List[str], UnsetType]=unset, filter_version: Union[List[str], UnsetType]=unset, filter_variant: Union[List[str], UnsetType]=unset, filter_id: Union[List[str], UnsetType]=unset, filter_build_id: Union[List[str], UnsetType]=unset, filter_uuid: Union[List[str], UnsetType]=unset, filter_platform: Union[List[str], UnsetType]=unset, filter_build_number: Union[List[str], UnsetType]=unset, filter_bundle_name: Union[List[str], UnsetType]=unset, filter_arch: Union[List[str], UnsetType]=unset, filter_symbol_source: Union[List[str], UnsetType]=unset, filter_origin: Union[List[str], UnsetType]=unset, filter_origin_version: Union[List[str], UnsetType]=unset, filter_filename: Union[str, UnsetType]=unset, filter_debug_id: Union[str, UnsetType]=unset, filter_gnu_build_id: Union[str, UnsetType]=unset, filter_go_build_id: Union[str, UnsetType]=unset, filter_file_hash: Union[str, UnsetType]=unset, ) -> SourcemapsResponse:
+ """Delete source maps.
+
+ Deletes source maps matching the specified filter criteria. Supports
+ dry-run mode to preview which source maps would be deleted without
+ performing the actual deletion.
+
+ :param mapkind: The type of source map. Valid values are ``js`` , ``jvm`` , ``ios`` ,
+ ``react`` , ``flutter`` , ``elf`` , ``ndk`` , ``il2cpp``.
+ :type mapkind: SourcemapMapKind
+ :param dry_run: When set to ``true`` , returns the source maps that would be deleted
+ without performing the actual deletion. When set to ``false`` ,
+ performs the deletion.
+ :type dry_run: bool
+ :param filter_service: Filter by service names (multiple values allowed). Required for
+ ``js`` , ``jvm`` , ``react`` , and ``flutter`` map kinds.
+ :type filter_service: [str], optional
+ :param filter_version: Filter by version values (multiple values allowed, maximum 10).
+ Required for ``js`` , ``jvm`` , ``react`` , and ``flutter`` map kinds.
+ :type filter_version: [str], optional
+ :param filter_variant: Filter by variant values (multiple values allowed). Supported for ``jvm``.
+ :type filter_variant: [str], optional
+ :param filter_id: Filter by source map ID values (multiple values allowed). Supported for all map kinds.
+ :type filter_id: [str], optional
+ :param filter_build_id: Filter by build ID values (multiple values allowed). Supported for ``jvm`` , ``ndk`` , and ``il2cpp``.
+ :type filter_build_id: [str], optional
+ :param filter_uuid: Filter by UUID values (multiple values allowed). Supported for ``ios``.
+ :type filter_uuid: [str], optional
+ :param filter_platform: Filter by platform values (multiple values allowed). Supported for ``react``.
+ :type filter_platform: [str], optional
+ :param filter_build_number: Filter by build number values (multiple values allowed). Supported for ``react``.
+ :type filter_build_number: [str], optional
+ :param filter_bundle_name: Filter by bundle name values (multiple values allowed). Supported for ``react``.
+ :type filter_bundle_name: [str], optional
+ :param filter_arch: Filter by architecture values (multiple values allowed). Supported
+ for ``flutter`` , ``elf`` , and ``ndk``.
+ :type filter_arch: [str], optional
+ :param filter_symbol_source: Filter by symbol source values (multiple values allowed). Supported for ``elf``.
+ :type filter_symbol_source: [str], optional
+ :param filter_origin: Filter by origin values (multiple values allowed). Supported for ``elf``.
+ :type filter_origin: [str], optional
+ :param filter_origin_version: Filter by origin version values (multiple values allowed). Supported for ``elf``.
+ :type filter_origin_version: [str], optional
+ :param filter_filename: Filter by filename (single value). Supported for ``js`` , ``elf`` , and ``ndk``.
+ :type filter_filename: str, optional
+ :param filter_debug_id: Filter by debug ID (single value). Supported for ``react``.
+ :type filter_debug_id: str, optional
+ :param filter_gnu_build_id: Filter by GNU build ID (single value). Supported for ``elf``.
+ :type filter_gnu_build_id: str, optional
+ :param filter_go_build_id: Filter by Go build ID (single value). Supported for ``elf``.
+ :type filter_go_build_id: str, optional
+ :param filter_file_hash: Filter by file hash (single value). Supported for ``elf``.
+ :type filter_file_hash: str, optional
+ :rtype: SourcemapsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["mapkind"] = mapkind
+
+ kwargs["dry_run"] = dry_run
+
+ if filter_service is not unset:
+ kwargs["filter_service"] = filter_service
+
+ if filter_version is not unset:
+ kwargs["filter_version"] = filter_version
+
+ if filter_variant is not unset:
+ kwargs["filter_variant"] = filter_variant
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_build_id is not unset:
+ kwargs["filter_build_id"] = filter_build_id
+
+ if filter_uuid is not unset:
+ kwargs["filter_uuid"] = filter_uuid
+
+ if filter_platform is not unset:
+ kwargs["filter_platform"] = filter_platform
+
+ if filter_build_number is not unset:
+ kwargs["filter_build_number"] = filter_build_number
+
+ if filter_bundle_name is not unset:
+ kwargs["filter_bundle_name"] = filter_bundle_name
+
+ if filter_arch is not unset:
+ kwargs["filter_arch"] = filter_arch
+
+ if filter_symbol_source is not unset:
+ kwargs["filter_symbol_source"] = filter_symbol_source
+
+ if filter_origin is not unset:
+ kwargs["filter_origin"] = filter_origin
+
+ if filter_origin_version is not unset:
+ kwargs["filter_origin_version"] = filter_origin_version
+
+ if filter_filename is not unset:
+ kwargs["filter_filename"] = filter_filename
+
+ if filter_debug_id is not unset:
+ kwargs["filter_debug_id"] = filter_debug_id
+
+ if filter_gnu_build_id is not unset:
+ kwargs["filter_gnu_build_id"] = filter_gnu_build_id
+
+ if filter_go_build_id is not unset:
+ kwargs["filter_go_build_id"] = filter_go_build_id
+
+ if filter_file_hash is not unset:
+ kwargs["filter_file_hash"] = filter_file_hash
+
+ return self._delete_sourcemaps_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_application(self, id: str, ) -> RUMApplicationResponse:
+ """Get a RUM application.
+
+ Get the RUM application with given ID in your organization.
+
+ :param id: RUM application ID.
+ :type id: str
+ :rtype: RUMApplicationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_rum_application_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_applications(self, ) -> RUMApplicationsResponse:
+ """List all the RUM applications.
+
+ List all the RUM applications in your organization.
+
+ :rtype: RUMApplicationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_rum_applications_endpoint.call_with_http_info(**kwargs)
+
+ def get_service_repository_info(self, body: ServiceRepositoryInfoRequest, ) -> ServiceRepositoryInfoResponse:
+ """Get service repository information.
+
+ Returns the repository URL and commit SHA associated with a given service and version.
+
+ :type body: ServiceRepositoryInfoRequest
+ :rtype: ServiceRepositoryInfoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_service_repository_info_endpoint.call_with_http_info(**kwargs)
+
+ def get_sourcemaps(self, filename: str, service: str, version: str, ) -> SourcemapFileResponse:
+ """Get a JavaScript source map.
+
+ Retrieves the content of a specific JavaScript source map file by its
+ filename, service name, and version.
+
+ :param filename: The path to the source map file.
+ :type filename: str
+ :param service: The service name associated with the source map.
+ :type service: str
+ :param version: The version of the service associated with the source map.
+ :type version: str
+ :rtype: SourcemapFileResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filename"] = filename
+
+ kwargs["service"] = service
+
+ kwargs["version"] = version
+
+ return self._get_sourcemaps_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_events(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[RUMSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> RUMEventsResponse:
+ """Get a list of RUM events.
+
+ List endpoint returns events that match a RUM search query.
+ `Results are paginated `_.
+
+ Use this endpoint to see your latest RUM events.
+
+ :param filter_query: Search query following RUM syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: RUMSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+ :rtype: RUMEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_rum_events_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_events_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[RUMSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[RUMEvent]:
+ """Get a list of RUM events.
+
+ Provide a paginated version of :meth:`list_rum_events`, returning all items.
+
+ :param filter_query: Search query following RUM syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested events.
+ :type filter_from: datetime, optional
+ :param filter_to: Maximum timestamp for requested events.
+ :type filter_to: datetime, optional
+ :param sort: Order of events in results.
+ :type sort: RUMSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of events in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[RUMEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_rum_events_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_sourcemaps(self, *, mapkind: Union[SourcemapMapKind, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_service: Union[List[str], UnsetType]=unset, filter_version: Union[List[str], UnsetType]=unset, filter_variant: Union[List[str], UnsetType]=unset, filter_id: Union[List[str], UnsetType]=unset, filter_build_id: Union[List[str], UnsetType]=unset, filter_uuid: Union[List[str], UnsetType]=unset, filter_platform: Union[List[str], UnsetType]=unset, filter_build_number: Union[List[str], UnsetType]=unset, filter_bundle_name: Union[List[str], UnsetType]=unset, filter_arch: Union[List[str], UnsetType]=unset, filter_symbol_source: Union[List[str], UnsetType]=unset, filter_origin: Union[List[str], UnsetType]=unset, filter_origin_version: Union[List[str], UnsetType]=unset, filter_filename: Union[str, UnsetType]=unset, filter_debug_id: Union[str, UnsetType]=unset, filter_gnu_build_id: Union[str, UnsetType]=unset, filter_go_build_id: Union[str, UnsetType]=unset, filter_file_hash: Union[str, UnsetType]=unset, ) -> ListSourcemapsResponse:
+ """List source maps.
+
+ Retrieves a paginated list of source maps matching the specified filter criteria.
+
+ :param mapkind: The type of source map. Defaults to ``js``.
+ :type mapkind: SourcemapMapKind, optional
+ :param page_size: The number of results to return per page. Must be at least 1.
+ :type page_size: int, optional
+ :param page_number: The page number to retrieve, starting from 1.
+ :type page_number: int, optional
+ :param filter_service: Filter by service names (multiple values allowed). Required for
+ ``js`` , ``jvm`` , ``react`` , and ``flutter`` map kinds.
+ :type filter_service: [str], optional
+ :param filter_version: Filter by version values (multiple values allowed). Required for
+ ``js`` , ``jvm`` , ``react`` , and ``flutter`` map kinds.
+ :type filter_version: [str], optional
+ :param filter_variant: Filter by variant values (multiple values allowed). Supported for ``jvm``.
+ :type filter_variant: [str], optional
+ :param filter_id: Filter by source map ID values (multiple values allowed). Supported for all map kinds.
+ :type filter_id: [str], optional
+ :param filter_build_id: Filter by build ID values (multiple values allowed). Supported for ``jvm`` , ``ndk`` , and ``il2cpp``.
+ :type filter_build_id: [str], optional
+ :param filter_uuid: Filter by UUID values (multiple values allowed). Supported for ``ios``.
+ :type filter_uuid: [str], optional
+ :param filter_platform: Filter by platform values (multiple values allowed). Supported for ``react``.
+ :type filter_platform: [str], optional
+ :param filter_build_number: Filter by build number values (multiple values allowed). Supported for ``react``.
+ :type filter_build_number: [str], optional
+ :param filter_bundle_name: Filter by bundle name values (multiple values allowed). Supported for ``react``.
+ :type filter_bundle_name: [str], optional
+ :param filter_arch: Filter by architecture values (multiple values allowed). Supported
+ for ``flutter`` , ``elf`` , and ``ndk``.
+ :type filter_arch: [str], optional
+ :param filter_symbol_source: Filter by symbol source values (multiple values allowed). Supported for ``elf``.
+ :type filter_symbol_source: [str], optional
+ :param filter_origin: Filter by origin values (multiple values allowed). Supported for ``elf``.
+ :type filter_origin: [str], optional
+ :param filter_origin_version: Filter by origin version values (multiple values allowed). Supported for ``elf``.
+ :type filter_origin_version: [str], optional
+ :param filter_filename: Filter by filename (single value). Supported for ``js`` , ``elf`` , and ``ndk``.
+ :type filter_filename: str, optional
+ :param filter_debug_id: Filter by debug ID (single value). Supported for ``react``.
+ :type filter_debug_id: str, optional
+ :param filter_gnu_build_id: Filter by GNU build ID (single value). Supported for ``elf``.
+ :type filter_gnu_build_id: str, optional
+ :param filter_go_build_id: Filter by Go build ID (single value). Supported for ``elf``.
+ :type filter_go_build_id: str, optional
+ :param filter_file_hash: Filter by file hash (single value). Supported for ``elf``.
+ :type filter_file_hash: str, optional
+ :rtype: ListSourcemapsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if mapkind is not unset:
+ kwargs["mapkind"] = mapkind
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_service is not unset:
+ kwargs["filter_service"] = filter_service
+
+ if filter_version is not unset:
+ kwargs["filter_version"] = filter_version
+
+ if filter_variant is not unset:
+ kwargs["filter_variant"] = filter_variant
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_build_id is not unset:
+ kwargs["filter_build_id"] = filter_build_id
+
+ if filter_uuid is not unset:
+ kwargs["filter_uuid"] = filter_uuid
+
+ if filter_platform is not unset:
+ kwargs["filter_platform"] = filter_platform
+
+ if filter_build_number is not unset:
+ kwargs["filter_build_number"] = filter_build_number
+
+ if filter_bundle_name is not unset:
+ kwargs["filter_bundle_name"] = filter_bundle_name
+
+ if filter_arch is not unset:
+ kwargs["filter_arch"] = filter_arch
+
+ if filter_symbol_source is not unset:
+ kwargs["filter_symbol_source"] = filter_symbol_source
+
+ if filter_origin is not unset:
+ kwargs["filter_origin"] = filter_origin
+
+ if filter_origin_version is not unset:
+ kwargs["filter_origin_version"] = filter_origin_version
+
+ if filter_filename is not unset:
+ kwargs["filter_filename"] = filter_filename
+
+ if filter_debug_id is not unset:
+ kwargs["filter_debug_id"] = filter_debug_id
+
+ if filter_gnu_build_id is not unset:
+ kwargs["filter_gnu_build_id"] = filter_gnu_build_id
+
+ if filter_go_build_id is not unset:
+ kwargs["filter_go_build_id"] = filter_go_build_id
+
+ if filter_file_hash is not unset:
+ kwargs["filter_file_hash"] = filter_file_hash
+
+ return self._list_sourcemaps_endpoint.call_with_http_info(**kwargs)
+
+ def restore_sourcemaps(self, mapkind: SourcemapMapKind, dry_run: bool, *, filter_service: Union[List[str], UnsetType]=unset, filter_version: Union[List[str], UnsetType]=unset, filter_variant: Union[List[str], UnsetType]=unset, filter_id: Union[List[str], UnsetType]=unset, filter_build_id: Union[List[str], UnsetType]=unset, filter_uuid: Union[List[str], UnsetType]=unset, filter_platform: Union[List[str], UnsetType]=unset, filter_build_number: Union[List[str], UnsetType]=unset, filter_bundle_name: Union[List[str], UnsetType]=unset, filter_arch: Union[List[str], UnsetType]=unset, filter_symbol_source: Union[List[str], UnsetType]=unset, filter_origin: Union[List[str], UnsetType]=unset, filter_origin_version: Union[List[str], UnsetType]=unset, filter_filename: Union[str, UnsetType]=unset, filter_debug_id: Union[str, UnsetType]=unset, filter_gnu_build_id: Union[str, UnsetType]=unset, filter_go_build_id: Union[str, UnsetType]=unset, filter_file_hash: Union[str, UnsetType]=unset, ) -> SourcemapsResponse:
+ """Restore source maps.
+
+ Restores previously deleted source maps matching the specified filter
+ criteria. Supports dry-run mode to preview which source maps would be
+ restored without performing the actual restoration.
+
+ :param mapkind: The type of source map. Valid values are ``js`` , ``jvm`` , ``ios`` ,
+ ``react`` , ``flutter`` , ``elf`` , ``ndk`` , ``il2cpp``.
+ :type mapkind: SourcemapMapKind
+ :param dry_run: When set to ``true`` , returns the source maps that would be restored
+ without performing the actual restoration. When set to ``false`` ,
+ performs the restoration.
+ :type dry_run: bool
+ :param filter_service: Filter by service names (multiple values allowed). Required for
+ ``js`` , ``jvm`` , ``react`` , and ``flutter`` map kinds.
+ :type filter_service: [str], optional
+ :param filter_version: Filter by version values (multiple values allowed, maximum 10).
+ Required for ``js`` , ``jvm`` , ``react`` , and ``flutter`` map kinds.
+ :type filter_version: [str], optional
+ :param filter_variant: Filter by variant values (multiple values allowed). Supported for ``jvm``.
+ :type filter_variant: [str], optional
+ :param filter_id: Filter by source map ID values (multiple values allowed). Supported for all map kinds.
+ :type filter_id: [str], optional
+ :param filter_build_id: Filter by build ID values (multiple values allowed). Supported for ``jvm`` , ``ndk`` , and ``il2cpp``.
+ :type filter_build_id: [str], optional
+ :param filter_uuid: Filter by UUID values (multiple values allowed). Supported for ``ios``.
+ :type filter_uuid: [str], optional
+ :param filter_platform: Filter by platform values (multiple values allowed). Supported for ``react``.
+ :type filter_platform: [str], optional
+ :param filter_build_number: Filter by build number values (multiple values allowed). Supported for ``react``.
+ :type filter_build_number: [str], optional
+ :param filter_bundle_name: Filter by bundle name values (multiple values allowed). Supported for ``react``.
+ :type filter_bundle_name: [str], optional
+ :param filter_arch: Filter by architecture values (multiple values allowed). Supported
+ for ``flutter`` , ``elf`` , and ``ndk``.
+ :type filter_arch: [str], optional
+ :param filter_symbol_source: Filter by symbol source values (multiple values allowed). Supported for ``elf``.
+ :type filter_symbol_source: [str], optional
+ :param filter_origin: Filter by origin values (multiple values allowed). Supported for ``elf``.
+ :type filter_origin: [str], optional
+ :param filter_origin_version: Filter by origin version values (multiple values allowed). Supported for ``elf``.
+ :type filter_origin_version: [str], optional
+ :param filter_filename: Filter by filename (single value). Supported for ``js`` , ``elf`` , and ``ndk``.
+ :type filter_filename: str, optional
+ :param filter_debug_id: Filter by debug ID (single value). Supported for ``react``.
+ :type filter_debug_id: str, optional
+ :param filter_gnu_build_id: Filter by GNU build ID (single value). Supported for ``elf``.
+ :type filter_gnu_build_id: str, optional
+ :param filter_go_build_id: Filter by Go build ID (single value). Supported for ``elf``.
+ :type filter_go_build_id: str, optional
+ :param filter_file_hash: Filter by file hash (single value). Supported for ``elf``.
+ :type filter_file_hash: str, optional
+ :rtype: SourcemapsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["mapkind"] = mapkind
+
+ kwargs["dry_run"] = dry_run
+
+ if filter_service is not unset:
+ kwargs["filter_service"] = filter_service
+
+ if filter_version is not unset:
+ kwargs["filter_version"] = filter_version
+
+ if filter_variant is not unset:
+ kwargs["filter_variant"] = filter_variant
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_build_id is not unset:
+ kwargs["filter_build_id"] = filter_build_id
+
+ if filter_uuid is not unset:
+ kwargs["filter_uuid"] = filter_uuid
+
+ if filter_platform is not unset:
+ kwargs["filter_platform"] = filter_platform
+
+ if filter_build_number is not unset:
+ kwargs["filter_build_number"] = filter_build_number
+
+ if filter_bundle_name is not unset:
+ kwargs["filter_bundle_name"] = filter_bundle_name
+
+ if filter_arch is not unset:
+ kwargs["filter_arch"] = filter_arch
+
+ if filter_symbol_source is not unset:
+ kwargs["filter_symbol_source"] = filter_symbol_source
+
+ if filter_origin is not unset:
+ kwargs["filter_origin"] = filter_origin
+
+ if filter_origin_version is not unset:
+ kwargs["filter_origin_version"] = filter_origin_version
+
+ if filter_filename is not unset:
+ kwargs["filter_filename"] = filter_filename
+
+ if filter_debug_id is not unset:
+ kwargs["filter_debug_id"] = filter_debug_id
+
+ if filter_gnu_build_id is not unset:
+ kwargs["filter_gnu_build_id"] = filter_gnu_build_id
+
+ if filter_go_build_id is not unset:
+ kwargs["filter_go_build_id"] = filter_go_build_id
+
+ if filter_file_hash is not unset:
+ kwargs["filter_file_hash"] = filter_file_hash
+
+ return self._restore_sourcemaps_endpoint.call_with_http_info(**kwargs)
+
+ def search_rum_events(self, body: RUMSearchEventsRequest, ) -> RUMEventsResponse:
+ """Search RUM events.
+
+ List endpoint returns RUM events that match a RUM search query.
+ `Results are paginated `_.
+
+ Use this endpoint to build complex RUM events filtering and search.
+
+ :type body: RUMSearchEventsRequest
+ :rtype: RUMEventsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._search_rum_events_endpoint.call_with_http_info(**kwargs)
+
+ def search_rum_events_with_pagination(self, body: RUMSearchEventsRequest, ) -> collections.abc.Iterable[RUMEvent]:
+ """Search RUM events.
+
+ Provide a paginated version of :meth:`search_rum_events`, returning all items.
+
+ :type body: RUMSearchEventsRequest
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[RUMEvent]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._search_rum_events_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_rum_application(self, id: str, body: RUMApplicationUpdateRequest, ) -> RUMApplicationResponse:
+ """Update a RUM application.
+
+ Update the RUM application with given ID in your organization.
+
+ :param id: RUM application ID.
+ :type id: str
+ :type body: RUMApplicationUpdateRequest
+ :rtype: RUMApplicationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._update_rum_application_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_audience_management_api.py b/datadog_api_client/v2/api/rum_audience_management_api.py
new file mode 100644
index 0000000000..cea35e3d9d
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_audience_management_api.py
@@ -0,0 +1,435 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.facet_info_response import FacetInfoResponse
+from datadog_api_client.v2.model.facet_info_request import FacetInfoRequest
+from datadog_api_client.v2.model.query_response import QueryResponse
+from datadog_api_client.v2.model.query_account_request import QueryAccountRequest
+from datadog_api_client.v2.model.query_event_filtered_users_request import QueryEventFilteredUsersRequest
+from datadog_api_client.v2.model.query_users_request import QueryUsersRequest
+from datadog_api_client.v2.model.get_mapping_response import GetMappingResponse
+from datadog_api_client.v2.model.create_connection_request import CreateConnectionRequest
+from datadog_api_client.v2.model.update_connection_request import UpdateConnectionRequest
+from datadog_api_client.v2.model.list_connections_response import ListConnectionsResponse
+
+
+class RumAudienceManagementApi:
+ """
+ Auto-generated tag Rum Audience Management
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/{entity}/mapping/connection",
+ "operation_id": "create_connection",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "entity": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateConnectionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/{entity}/mapping/connection/{id}",
+ "operation_id": "delete_connection",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "entity": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_account_facet_info_endpoint = _Endpoint(
+ settings={
+ "response_type": (FacetInfoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/accounts/facet_info",
+ "operation_id": "get_account_facet_info",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (FacetInfoRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/{entity}/mapping",
+ "operation_id": "get_mapping",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "entity": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_user_facet_info_endpoint = _Endpoint(
+ settings={
+ "response_type": (FacetInfoResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/users/facet_info",
+ "operation_id": "get_user_facet_info",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (FacetInfoRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListConnectionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/{entity}/mapping/connections",
+ "operation_id": "list_connections",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "entity": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._query_accounts_endpoint = _Endpoint(
+ settings={
+ "response_type": (QueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/accounts/query",
+ "operation_id": "query_accounts",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (QueryAccountRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._query_event_filtered_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (QueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/users/event_filtered_query",
+ "operation_id": "query_event_filtered_users",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (QueryEventFilteredUsersRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._query_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (QueryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/users/query",
+ "operation_id": "query_users",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (QueryUsersRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_connection_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/product-analytics/{entity}/mapping/connection",
+ "operation_id": "update_connection",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "entity": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateConnectionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_connection(self, entity: str, body: CreateConnectionRequest, ) -> None:
+ """Create connection.
+
+ Create a new data connection and its fields for an entity
+
+ :param entity: The entity for which to create the connection
+ :type entity: str
+ :type body: CreateConnectionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity"] = entity
+
+ kwargs["body"] = body
+
+ return self._create_connection_endpoint.call_with_http_info(**kwargs)
+
+ def delete_connection(self, id: str, entity: str, ) -> None:
+ """Delete connection.
+
+ Delete an existing data connection for an entity
+
+ :param id: The connection ID to delete
+ :type id: str
+ :param entity: The entity for which to delete the connection
+ :type entity: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["entity"] = entity
+
+ return self._delete_connection_endpoint.call_with_http_info(**kwargs)
+
+ def get_account_facet_info(self, body: FacetInfoRequest, ) -> FacetInfoResponse:
+ """Get account facet info.
+
+ Get facet information for account attributes including possible values and counts
+
+ :type body: FacetInfoRequest
+ :rtype: FacetInfoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_account_facet_info_endpoint.call_with_http_info(**kwargs)
+
+ def get_mapping(self, entity: str, ) -> GetMappingResponse:
+ """Get mapping.
+
+ Get entity mapping configuration including all available attributes and their properties
+
+ :param entity: The entity for which to get the mapping
+ :type entity: str
+ :rtype: GetMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity"] = entity
+
+ return self._get_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def get_user_facet_info(self, body: FacetInfoRequest, ) -> FacetInfoResponse:
+ """Get user facet info.
+
+ Get facet information for user attributes including possible values and counts
+
+ :type body: FacetInfoRequest
+ :rtype: FacetInfoResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_user_facet_info_endpoint.call_with_http_info(**kwargs)
+
+ def list_connections(self, entity: str, ) -> ListConnectionsResponse:
+ """List connections.
+
+ List all data connections for an entity
+
+ :param entity: The entity for which to list connections
+ :type entity: str
+ :rtype: ListConnectionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity"] = entity
+
+ return self._list_connections_endpoint.call_with_http_info(**kwargs)
+
+ def query_accounts(self, body: QueryAccountRequest, ) -> QueryResponse:
+ """Query accounts.
+
+ Query accounts with flexible filtering by account properties
+
+ :type body: QueryAccountRequest
+ :rtype: QueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_accounts_endpoint.call_with_http_info(**kwargs)
+
+ def query_event_filtered_users(self, body: QueryEventFilteredUsersRequest, ) -> QueryResponse:
+ """Query event filtered users.
+
+ Query users filtered by both user properties and event platform data
+
+ :type body: QueryEventFilteredUsersRequest
+ :rtype: QueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_event_filtered_users_endpoint.call_with_http_info(**kwargs)
+
+ def query_users(self, body: QueryUsersRequest, ) -> QueryResponse:
+ """Query users.
+
+ Query users with flexible filtering by user properties, with optional wildcard search
+
+ :type body: QueryUsersRequest
+ :rtype: QueryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_users_endpoint.call_with_http_info(**kwargs)
+
+ def update_connection(self, entity: str, body: UpdateConnectionRequest, ) -> None:
+ """Update connection.
+
+ Update an existing data connection by adding, updating, or deleting fields
+
+ :param entity: The entity for which to update the connection
+ :type entity: str
+ :type body: UpdateConnectionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity"] = entity
+
+ kwargs["body"] = body
+
+ return self._update_connection_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_config_api.py b/datadog_api_client/v2/api/rum_config_api.py
new file mode 100644
index 0000000000..e788390084
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_config_api.py
@@ -0,0 +1,139 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rum_config_response import RumConfigResponse
+from datadog_api_client.v2.model.rum_config_update_request import RumConfigUpdateRequest
+from datadog_api_client.v2.model.rum_config_create_request import RumConfigCreateRequest
+
+
+class RUMConfigApi:
+ """
+ Manage the `Real User Monitoring (RUM) `_
+ configuration for your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_rum_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config",
+ "operation_id": "create_rum_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RumConfigCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config",
+ "operation_id": "get_rum_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config",
+ "operation_id": "update_rum_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RumConfigUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_rum_config(self, body: RumConfigCreateRequest, ) -> RumConfigResponse:
+ """Create the RUM configuration.
+
+ Create the RUM configuration for your organization.
+ Returns the RUM configuration object from the request body when the request is successful.
+
+ :param body: The definition of the RUM configuration to create.
+ :type body: RumConfigCreateRequest
+ :rtype: RumConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_rum_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_config(self, ) -> RumConfigResponse:
+ """Get the RUM configuration.
+
+ Get the RUM configuration for your organization.
+
+ :rtype: RumConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_rum_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_rum_config(self, body: RumConfigUpdateRequest, ) -> RumConfigResponse:
+ """Update the RUM configuration.
+
+ Update the RUM configuration for your organization.
+ Returns the RUM configuration object from the request body when the request is successful.
+
+ :param body: New definition of the RUM configuration.
+ :type body: RumConfigUpdateRequest
+ :rtype: RumConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_rum_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_insights_api.py b/datadog_api_client/v2/api/rum_insights_api.py
new file mode 100644
index 0000000000..9c017732c0
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_insights_api.py
@@ -0,0 +1,146 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.aggregated_long_tasks_response import AggregatedLongTasksResponse
+from datadog_api_client.v2.model.aggregated_long_tasks_request import AggregatedLongTasksRequest
+from datadog_api_client.v2.model.aggregated_signals_problems_response import AggregatedSignalsProblemsResponse
+from datadog_api_client.v2.model.aggregated_signals_problems_request import AggregatedSignalsProblemsRequest
+from datadog_api_client.v2.model.aggregated_waterfall_response import AggregatedWaterfallResponse
+from datadog_api_client.v2.model.aggregated_waterfall_request import AggregatedWaterfallRequest
+
+
+class RUMInsightsApi:
+ """
+ Get insights into the performance of your Real User Monitoring (RUM) applications over HTTP. See the `RUM & Session Replay page `_ for more information
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._query_aggregated_long_tasks_endpoint = _Endpoint(
+ settings={
+ "response_type": (AggregatedLongTasksResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/query/insight/aggregated_long_tasks",
+ "operation_id": "query_aggregated_long_tasks",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AggregatedLongTasksRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._query_aggregated_signals_problems_endpoint = _Endpoint(
+ settings={
+ "response_type": (AggregatedSignalsProblemsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/query/insight/aggregated_signals_problems",
+ "operation_id": "query_aggregated_signals_problems",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AggregatedSignalsProblemsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._query_aggregated_waterfall_endpoint = _Endpoint(
+ settings={
+ "response_type": (AggregatedWaterfallResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/query/insight/aggregated_waterfall",
+ "operation_id": "query_aggregated_waterfall",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AggregatedWaterfallRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def query_aggregated_long_tasks(self, body: AggregatedLongTasksRequest, ) -> AggregatedLongTasksResponse:
+ """Query aggregated long tasks.
+
+ Get aggregated long task data for a RUM view, grouped by invoker type and sampled across multiple view instances.
+
+ :type body: AggregatedLongTasksRequest
+ :rtype: AggregatedLongTasksResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_aggregated_long_tasks_endpoint.call_with_http_info(**kwargs)
+
+ def query_aggregated_signals_problems(self, body: AggregatedSignalsProblemsRequest, ) -> AggregatedSignalsProblemsResponse:
+ """Query aggregated signals and problems.
+
+ Get aggregated performance signals and problem detections for a RUM view, sampled across multiple view instances.
+
+ :type body: AggregatedSignalsProblemsRequest
+ :rtype: AggregatedSignalsProblemsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_aggregated_signals_problems_endpoint.call_with_http_info(**kwargs)
+
+ def query_aggregated_waterfall(self, body: AggregatedWaterfallRequest, ) -> AggregatedWaterfallResponse:
+ """Query aggregated waterfall.
+
+ Get aggregated network resource waterfall data for a RUM view, sampled across multiple view instances.
+
+ :type body: AggregatedWaterfallRequest
+ :rtype: AggregatedWaterfallResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._query_aggregated_waterfall_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_metrics_api.py b/datadog_api_client/v2/api/rum_metrics_api.py
new file mode 100644
index 0000000000..7e0709a2ca
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_metrics_api.py
@@ -0,0 +1,223 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rum_metrics_response import RumMetricsResponse
+from datadog_api_client.v2.model.rum_metric_response import RumMetricResponse
+from datadog_api_client.v2.model.rum_metric_create_request import RumMetricCreateRequest
+from datadog_api_client.v2.model.rum_metric_update_request import RumMetricUpdateRequest
+
+
+class RumMetricsApi:
+ """
+ Manage configuration of `RUM-based metrics `_ for your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_rum_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config/metrics",
+ "operation_id": "create_rum_metric",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RumMetricCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rum_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config/metrics/{metric_id}",
+ "operation_id": "delete_rum_metric",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config/metrics/{metric_id}",
+ "operation_id": "get_rum_metric",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumMetricsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config/metrics",
+ "operation_id": "list_rum_metrics",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/config/metrics/{metric_id}",
+ "operation_id": "update_rum_metric",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RumMetricUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_rum_metric(self, body: RumMetricCreateRequest, ) -> RumMetricResponse:
+ """Create a RUM-based metric.
+
+ Create a metric based on your organization's RUM data.
+ Returns the RUM-based metric object from the request body when the request is successful.
+
+ :param body: The definition of the new RUM-based metric.
+ :type body: RumMetricCreateRequest
+ :rtype: RumMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_rum_metric_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rum_metric(self, metric_id: str, ) -> None:
+ """Delete a RUM-based metric.
+
+ Delete a specific RUM-based metric from your organization.
+
+ :param metric_id: The name of the RUM-based metric.
+ :type metric_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ return self._delete_rum_metric_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_metric(self, metric_id: str, ) -> RumMetricResponse:
+ """Get a RUM-based metric.
+
+ Get a specific RUM-based metric from your organization.
+
+ :param metric_id: The name of the RUM-based metric.
+ :type metric_id: str
+ :rtype: RumMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ return self._get_rum_metric_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_metrics(self, ) -> RumMetricsResponse:
+ """Get all RUM-based metrics.
+
+ Get the list of configured RUM-based metrics with their definitions.
+
+ :rtype: RumMetricsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_rum_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def update_rum_metric(self, metric_id: str, body: RumMetricUpdateRequest, ) -> RumMetricResponse:
+ """Update a RUM-based metric.
+
+ Update a specific RUM-based metric from your organization.
+ Returns the RUM-based metric object from the request body when the request is successful.
+
+ :param metric_id: The name of the RUM-based metric.
+ :type metric_id: str
+ :param body: New definition of the RUM-based metric.
+ :type body: RumMetricUpdateRequest
+ :rtype: RumMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ kwargs["body"] = body
+
+ return self._update_rum_metric_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_operations_api.py b/datadog_api_client/v2/api/rum_operations_api.py
new file mode 100644
index 0000000000..62877dc46e
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_operations_api.py
@@ -0,0 +1,558 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rum_operation_response import RUMOperationResponse
+from datadog_api_client.v2.model.rum_operation_create_request import RUMOperationCreateRequest
+from datadog_api_client.v2.model.rum_operations_list_response import RUMOperationsListResponse
+from datadog_api_client.v2.model.rum_operation_strong_links_list_response import RUMOperationStrongLinksListResponse
+from datadog_api_client.v2.model.rum_operation_strong_link_response import RUMOperationStrongLinkResponse
+from datadog_api_client.v2.model.rum_operation_strong_link_create_request import RUMOperationStrongLinkCreateRequest
+from datadog_api_client.v2.model.rum_operation_strong_link_update_request import RUMOperationStrongLinkUpdateRequest
+from datadog_api_client.v2.model.rum_operation_update_request import RUMOperationUpdateRequest
+
+
+class RUMOperationsApi:
+ """
+ Manage `RUM Operations `_ , business
+ transactions detected from RUM events through a configurable journey, and their strong links
+ to features. See the `RUM & Session Replay page `_
+ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_rum_operation_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations",
+ "operation_id": "create_rum_operation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RUMOperationCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_rum_operation_strong_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationStrongLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/strong_links",
+ "operation_id": "create_rum_operation_strong_link",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RUMOperationStrongLinkCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rum_operation_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/{rum_operation_id}",
+ "operation_id": "delete_rum_operation",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rum_operation_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rum_operation_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rum_operation_strong_link_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/strong_links/{rum_operation_id}/{feature_id}",
+ "operation_id": "delete_rum_operation_strong_link",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rum_operation_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rum_operation_id",
+ "location": "path",
+ },
+ "feature_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "feature_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_operation_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/{rum_operation_id}",
+ "operation_id": "get_rum_operation",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rum_operation_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rum_operation_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_operation_by_name_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/by-name/{name}",
+ "operation_id": "get_rum_operation_by_name",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_operations_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/search",
+ "operation_id": "list_rum_operations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "page_offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 100,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "creator": {
+ "openapi_types": (str,),
+ "attribute": "creator",
+ "location": "query",
+ },
+ "team": {
+ "openapi_types": (str,),
+ "attribute": "team",
+ "location": "query",
+ },
+ "feature_id": {
+ "openapi_types": (str,),
+ "attribute": "feature_id",
+ "location": "query",
+ },
+ "application_id": {
+ "openapi_types": (UUID,),
+ "attribute": "application_id",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_operation_strong_links_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationStrongLinksListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/strong_links",
+ "operation_id": "list_rum_operation_strong_links",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "operation_id": {
+ "openapi_types": (str,),
+ "attribute": "operation_id",
+ "location": "query",
+ },
+ "feature_id": {
+ "openapi_types": (str,),
+ "attribute": "feature_id",
+ "location": "query",
+ },
+ "page_offset": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 200,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_operation_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/{rum_operation_id}",
+ "operation_id": "update_rum_operation",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rum_operation_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rum_operation_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RUMOperationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_operation_strong_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (RUMOperationStrongLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/operations/strong_links/{rum_operation_id}/{feature_id}",
+ "operation_id": "update_rum_operation_strong_link",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rum_operation_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rum_operation_id",
+ "location": "path",
+ },
+ "feature_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "feature_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RUMOperationStrongLinkUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_rum_operation(self, body: RUMOperationCreateRequest, ) -> RUMOperationResponse:
+ """Create a RUM operation.
+
+ Create a new RUM operation, defining the journey used to detect it from RUM events.
+
+ :type body: RUMOperationCreateRequest
+ :rtype: RUMOperationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_rum_operation_endpoint.call_with_http_info(**kwargs)
+
+ def create_rum_operation_strong_link(self, body: RUMOperationStrongLinkCreateRequest, ) -> RUMOperationStrongLinkResponse:
+ """Create a RUM operation strong link.
+
+ Create a strong link between a RUM operation and a feature, confirming that the feature
+ belongs to the operation. The operation can be identified by ``operation_id`` or ``operation_name`` ;
+ if ``operation_name`` does not match an existing operation, a stub operation is created.
+
+ :type body: RUMOperationStrongLinkCreateRequest
+ :rtype: RUMOperationStrongLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_rum_operation_strong_link_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rum_operation(self, rum_operation_id: str, ) -> None:
+ """Delete a RUM operation.
+
+ Delete a RUM operation.
+
+ :param rum_operation_id: The unique identifier of the RUM operation to delete.
+ :type rum_operation_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rum_operation_id"] = rum_operation_id
+
+ return self._delete_rum_operation_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rum_operation_strong_link(self, rum_operation_id: str, feature_id: str, ) -> None:
+ """Delete a RUM operation strong link.
+
+ Delete the strong link between a RUM operation and a feature.
+
+ :param rum_operation_id: The unique identifier of the RUM operation.
+ :type rum_operation_id: str
+ :param feature_id: The unique identifier of the feature.
+ :type feature_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rum_operation_id"] = rum_operation_id
+
+ kwargs["feature_id"] = feature_id
+
+ return self._delete_rum_operation_strong_link_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_operation(self, rum_operation_id: str, ) -> RUMOperationResponse:
+ """Get a RUM operation.
+
+ Retrieve a specific RUM operation by its unique identifier.
+
+ :param rum_operation_id: The unique identifier of the RUM operation.
+ :type rum_operation_id: str
+ :rtype: RUMOperationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rum_operation_id"] = rum_operation_id
+
+ return self._get_rum_operation_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_operation_by_name(self, name: str, ) -> RUMOperationResponse:
+ """Get a RUM operation by name.
+
+ Retrieve a specific RUM operation by its unique name.
+
+ :param name: The unique name of the RUM operation.
+ :type name: str
+ :rtype: RUMOperationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["name"] = name
+
+ return self._get_rum_operation_by_name_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_operations(self, *, query: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, creator: Union[str, UnsetType]=unset, team: Union[str, UnsetType]=unset, feature_id: Union[str, UnsetType]=unset, application_id: Union[UUID, UnsetType]=unset, ) -> RUMOperationsListResponse:
+ """Search RUM operations.
+
+ Search RUM operations for your organization. Supports filtering by query, creator, team, feature, and application.
+
+ :param query: A search query to filter operations by name.
+ :type query: str, optional
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: Number of items per page. Maximum of 100.
+ :type page_limit: int, optional
+ :param creator: Filter operations by the email of their creator.
+ :type creator: str, optional
+ :param team: Filter operations by team. Accepts a comma-separated list of teams.
+ :type team: str, optional
+ :param feature_id: Filter operations by feature ID. Accepts a comma-separated list of feature IDs.
+ :type feature_id: str, optional
+ :param application_id: Filter operations by RUM application ID.
+ :type application_id: UUID, optional
+ :rtype: RUMOperationsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if creator is not unset:
+ kwargs["creator"] = creator
+
+ if team is not unset:
+ kwargs["team"] = team
+
+ if feature_id is not unset:
+ kwargs["feature_id"] = feature_id
+
+ if application_id is not unset:
+ kwargs["application_id"] = application_id
+
+ return self._list_rum_operations_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_operation_strong_links(self, *, operation_id: Union[str, UnsetType]=unset, feature_id: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> RUMOperationStrongLinksListResponse:
+ """List RUM operation strong links.
+
+ List strong links between RUM operations and features. A strong link confirms that a feature
+ belongs to an operation. Provide ``operation_id`` , ``feature_id`` , or both to filter results;
+ at least one is required.
+
+ :param operation_id: Filter strong links by RUM operation ID.
+ :type operation_id: str, optional
+ :param feature_id: Filter strong links by feature ID.
+ :type feature_id: str, optional
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: Number of items per page. Maximum of 200.
+ :type page_limit: int, optional
+ :rtype: RUMOperationStrongLinksListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if operation_id is not unset:
+ kwargs["operation_id"] = operation_id
+
+ if feature_id is not unset:
+ kwargs["feature_id"] = feature_id
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_rum_operation_strong_links_endpoint.call_with_http_info(**kwargs)
+
+ def update_rum_operation(self, rum_operation_id: str, body: RUMOperationUpdateRequest, ) -> RUMOperationResponse:
+ """Update a RUM operation.
+
+ Update an existing RUM operation. Fields omitted from the request body keep their existing value,
+ with the exception of ``journey_rum`` , which is required and fully replaced on every update.
+
+ :param rum_operation_id: The unique identifier of the RUM operation to update.
+ :type rum_operation_id: str
+ :type body: RUMOperationUpdateRequest
+ :rtype: RUMOperationResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rum_operation_id"] = rum_operation_id
+
+ kwargs["body"] = body
+
+ return self._update_rum_operation_endpoint.call_with_http_info(**kwargs)
+
+ def update_rum_operation_strong_link(self, rum_operation_id: str, feature_id: str, body: RUMOperationStrongLinkUpdateRequest, ) -> RUMOperationStrongLinkResponse:
+ """Update a RUM operation strong link.
+
+ Update the status of a strong link between a RUM operation and a feature.
+
+ :param rum_operation_id: The unique identifier of the RUM operation.
+ :type rum_operation_id: str
+ :param feature_id: The unique identifier of the feature.
+ :type feature_id: str
+ :type body: RUMOperationStrongLinkUpdateRequest
+ :rtype: RUMOperationStrongLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rum_operation_id"] = rum_operation_id
+
+ kwargs["feature_id"] = feature_id
+
+ kwargs["body"] = body
+
+ return self._update_rum_operation_strong_link_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_remote_config_api.py b/datadog_api_client/v2/api/rum_remote_config_api.py
new file mode 100644
index 0000000000..116df67c9f
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_remote_config_api.py
@@ -0,0 +1,119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rum_sdk_config_response import RumSdkConfigResponse
+from datadog_api_client.v2.model.rum_sdk_config_update_request import RumSdkConfigUpdateRequest
+
+
+class RUMRemoteConfigApi:
+ """
+ Manage `RUM SDK configurations `_ delivered to RUM applications via Remote Configuration.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_rum_sdk_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumSdkConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/rum/configs/{config_id}",
+ "operation_id": "get_rum_sdk_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_sdk_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumSdkConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/remote_config/products/rum/configs/{config_id}",
+ "operation_id": "update_rum_sdk_config",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "config_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RumSdkConfigUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def get_rum_sdk_config(self, config_id: str, ) -> RumSdkConfigResponse:
+ """Get a RUM SDK configuration.
+
+ Retrieve a RUM SDK configuration by its identifier.
+
+ :param config_id: The ID of the RUM SDK configuration.
+ :type config_id: str
+ :rtype: RumSdkConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ return self._get_rum_sdk_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_rum_sdk_config(self, config_id: str, body: RumSdkConfigUpdateRequest, ) -> RumSdkConfigResponse:
+ """Update a RUM SDK configuration.
+
+ Update an existing RUM SDK configuration by its identifier.
+ Returns the updated configuration when successful.
+
+ :param config_id: The ID of the RUM SDK configuration.
+ :type config_id: str
+ :param body: The RUM SDK configuration update.
+ :type body: RumSdkConfigUpdateRequest
+ :rtype: RumSdkConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["config_id"] = config_id
+
+ kwargs["body"] = body
+
+ return self._update_rum_sdk_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_replay_heatmaps_api.py b/datadog_api_client/v2/api/rum_replay_heatmaps_api.py
new file mode 100644
index 0000000000..cc5b665030
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_replay_heatmaps_api.py
@@ -0,0 +1,222 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.snapshot_array import SnapshotArray
+from datadog_api_client.v2.model.snapshot import Snapshot
+from datadog_api_client.v2.model.snapshot_create_request import SnapshotCreateRequest
+from datadog_api_client.v2.model.snapshot_update_request import SnapshotUpdateRequest
+
+
+class RumReplayHeatmapsApi:
+ """
+ Manage heatmap snapshots for RUM replay sessions. Create, update, delete, and retrieve snapshots to visualize user interactions on specific views.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_replay_heatmap_snapshot_endpoint = _Endpoint(
+ settings={
+ "response_type": (Snapshot,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/replay/heatmap/snapshots",
+ "operation_id": "create_replay_heatmap_snapshot",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SnapshotCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_replay_heatmap_snapshot_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/replay/heatmap/snapshots/{snapshot_id}",
+ "operation_id": "delete_replay_heatmap_snapshot",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "snapshot_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "snapshot_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_replay_heatmap_snapshots_endpoint = _Endpoint(
+ settings={
+ "response_type": (SnapshotArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/replay/heatmap/snapshots",
+ "operation_id": "list_replay_heatmap_snapshots",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_device_type": {
+ "openapi_types": (str,),
+ "attribute": "filter[device_type]",
+ "location": "query",
+ },
+ "filter_view_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[view_name]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "filter_application_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[application_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_replay_heatmap_snapshot_endpoint = _Endpoint(
+ settings={
+ "response_type": (Snapshot,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/replay/heatmap/snapshots/{snapshot_id}",
+ "operation_id": "update_replay_heatmap_snapshot",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "snapshot_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "snapshot_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SnapshotUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_replay_heatmap_snapshot(self, body: SnapshotCreateRequest, ) -> Snapshot:
+ """Create replay heatmap snapshot.
+
+ Create a heatmap snapshot.
+
+ :type body: SnapshotCreateRequest
+ :rtype: Snapshot
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_replay_heatmap_snapshot_endpoint.call_with_http_info(**kwargs)
+
+ def delete_replay_heatmap_snapshot(self, snapshot_id: str, ) -> None:
+ """Delete replay heatmap snapshot.
+
+ Delete a heatmap snapshot.
+
+ :param snapshot_id: Unique identifier of the heatmap snapshot.
+ :type snapshot_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["snapshot_id"] = snapshot_id
+
+ return self._delete_replay_heatmap_snapshot_endpoint.call_with_http_info(**kwargs)
+
+ def list_replay_heatmap_snapshots(self, filter_view_name: str, *, filter_device_type: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_application_id: Union[str, UnsetType]=unset, ) -> SnapshotArray:
+ """List replay heatmap snapshots.
+
+ List heatmap snapshots.
+
+ :param filter_view_name: View name to filter snapshots.
+ :type filter_view_name: str
+ :param filter_device_type: Device type to filter snapshots.
+ :type filter_device_type: str, optional
+ :param page_limit: Maximum number of snapshots to return.
+ :type page_limit: int, optional
+ :param filter_application_id: Filter by application ID.
+ :type filter_application_id: str, optional
+ :rtype: SnapshotArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_device_type is not unset:
+ kwargs["filter_device_type"] = filter_device_type
+
+ kwargs["filter_view_name"] = filter_view_name
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_application_id is not unset:
+ kwargs["filter_application_id"] = filter_application_id
+
+ return self._list_replay_heatmap_snapshots_endpoint.call_with_http_info(**kwargs)
+
+ def update_replay_heatmap_snapshot(self, snapshot_id: str, body: SnapshotUpdateRequest, ) -> Snapshot:
+ """Update replay heatmap snapshot.
+
+ Update a heatmap snapshot.
+
+ :param snapshot_id: Unique identifier of the heatmap snapshot.
+ :type snapshot_id: str
+ :type body: SnapshotUpdateRequest
+ :rtype: Snapshot
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["snapshot_id"] = snapshot_id
+
+ kwargs["body"] = body
+
+ return self._update_replay_heatmap_snapshot_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_replay_playlists_api.py b/datadog_api_client/v2/api/rum_replay_playlists_api.py
new file mode 100644
index 0000000000..91ee257734
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_replay_playlists_api.py
@@ -0,0 +1,477 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.playlist_array import PlaylistArray
+from datadog_api_client.v2.model.playlist import Playlist
+from datadog_api_client.v2.model.session_id_array import SessionIdArray
+from datadog_api_client.v2.model.playlists_session_array import PlaylistsSessionArray
+from datadog_api_client.v2.model.playlists_session import PlaylistsSession
+
+
+class RumReplayPlaylistsApi:
+ """
+ Create and manage playlists of RUM replay sessions. Organize, categorize, and share collections of replay sessions for analysis and collaboration.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_rum_replay_session_to_playlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (PlaylistsSession,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}/sessions/{session_id}",
+ "operation_id": "add_rum_replay_session_to_playlist",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "data_source": {
+ "openapi_types": (str,),
+ "attribute": "data_source",
+ "location": "query",
+ },
+ "ts": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "ts",
+ "location": "query",
+ },
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ "session_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "session_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_remove_rum_replay_playlist_sessions_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}/sessions",
+ "operation_id": "bulk_remove_rum_replay_playlist_sessions",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SessionIdArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_rum_replay_playlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (Playlist,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists",
+ "operation_id": "create_rum_replay_playlist",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (Playlist,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rum_replay_playlist_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}",
+ "operation_id": "delete_rum_replay_playlist",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rum_replay_playlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (Playlist,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}",
+ "operation_id": "get_rum_replay_playlist",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_replay_playlists_endpoint = _Endpoint(
+ settings={
+ "response_type": (PlaylistArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists",
+ "operation_id": "list_rum_replay_playlists",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_created_by_uuid": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_by_uuid]",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_replay_playlist_sessions_endpoint = _Endpoint(
+ settings={
+ "response_type": (PlaylistsSessionArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}/sessions",
+ "operation_id": "list_rum_replay_playlist_sessions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_rum_replay_session_from_playlist_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}/sessions/{session_id}",
+ "operation_id": "remove_rum_replay_session_from_playlist",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ "session_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "session_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_rum_replay_playlist_endpoint = _Endpoint(
+ settings={
+ "response_type": (Playlist,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/playlists/{playlist_id}",
+ "operation_id": "update_rum_replay_playlist",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "playlist_id": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "playlist_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Playlist,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def add_rum_replay_session_to_playlist(self, ts: int, playlist_id: int, session_id: str, *, data_source: Union[str, UnsetType]=unset, ) -> PlaylistsSession:
+ """Add RUM replay session to playlist.
+
+ Add a session to a playlist.
+
+ :param ts: Server-side timestamp in milliseconds.
+ :type ts: int
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :param session_id: Unique identifier of the session.
+ :type session_id: str
+ :param data_source: Data source type. Valid values: 'rum' or 'product_analytics'. Defaults to 'rum'.
+ :type data_source: str, optional
+ :rtype: PlaylistsSession
+ """
+ kwargs: Dict[str, Any] = {}
+ if data_source is not unset:
+ kwargs["data_source"] = data_source
+
+ kwargs["ts"] = ts
+
+ kwargs["playlist_id"] = playlist_id
+
+ kwargs["session_id"] = session_id
+
+ return self._add_rum_replay_session_to_playlist_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_remove_rum_replay_playlist_sessions(self, playlist_id: int, body: SessionIdArray, ) -> None:
+ """Bulk remove RUM replay playlist sessions.
+
+ Remove sessions from a playlist.
+
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :type body: SessionIdArray
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["playlist_id"] = playlist_id
+
+ kwargs["body"] = body
+
+ return self._bulk_remove_rum_replay_playlist_sessions_endpoint.call_with_http_info(**kwargs)
+
+ def create_rum_replay_playlist(self, body: Playlist, ) -> Playlist:
+ """Create RUM replay playlist.
+
+ Create a playlist.
+
+ :type body: Playlist
+ :rtype: Playlist
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_rum_replay_playlist_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rum_replay_playlist(self, playlist_id: int, ) -> None:
+ """Delete RUM replay playlist.
+
+ Delete a playlist.
+
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["playlist_id"] = playlist_id
+
+ return self._delete_rum_replay_playlist_endpoint.call_with_http_info(**kwargs)
+
+ def get_rum_replay_playlist(self, playlist_id: int, ) -> Playlist:
+ """Get RUM replay playlist.
+
+ Get a playlist.
+
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :rtype: Playlist
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["playlist_id"] = playlist_id
+
+ return self._get_rum_replay_playlist_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_replay_playlists(self, *, filter_created_by_uuid: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> PlaylistArray:
+ """List RUM replay playlists.
+
+ List playlists.
+
+ :param filter_created_by_uuid: Filter playlists by the UUID of the user who created them.
+ :type filter_created_by_uuid: str, optional
+ :param filter_query: Search query to filter playlists by name.
+ :type filter_query: str, optional
+ :param page_number: Page number for pagination (0-indexed).
+ :type page_number: int, optional
+ :param page_size: Number of items per page.
+ :type page_size: int, optional
+ :rtype: PlaylistArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_created_by_uuid is not unset:
+ kwargs["filter_created_by_uuid"] = filter_created_by_uuid
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._list_rum_replay_playlists_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_replay_playlist_sessions(self, playlist_id: int, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, ) -> PlaylistsSessionArray:
+ """List RUM replay playlist sessions.
+
+ List sessions in a playlist.
+
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :param page_number: Page number for pagination (0-indexed).
+ :type page_number: int, optional
+ :param page_size: Number of items per page.
+ :type page_size: int, optional
+ :rtype: PlaylistsSessionArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["playlist_id"] = playlist_id
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ return self._list_rum_replay_playlist_sessions_endpoint.call_with_http_info(**kwargs)
+
+ def remove_rum_replay_session_from_playlist(self, playlist_id: int, session_id: str, ) -> None:
+ """Remove RUM replay session from playlist.
+
+ Remove a session from a playlist.
+
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :param session_id: Unique identifier of the session.
+ :type session_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["playlist_id"] = playlist_id
+
+ kwargs["session_id"] = session_id
+
+ return self._remove_rum_replay_session_from_playlist_endpoint.call_with_http_info(**kwargs)
+
+ def update_rum_replay_playlist(self, playlist_id: int, body: Playlist, ) -> Playlist:
+ """Update RUM replay playlist.
+
+ Update a playlist.
+
+ :param playlist_id: Unique identifier of the playlist.
+ :type playlist_id: int
+ :type body: Playlist
+ :rtype: Playlist
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["playlist_id"] = playlist_id
+
+ kwargs["body"] = body
+
+ return self._update_rum_replay_playlist_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_replay_sessions_api.py b/datadog_api_client/v2/api/rum_replay_sessions_api.py
new file mode 100644
index 0000000000..638455998a
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_replay_sessions_api.py
@@ -0,0 +1,119 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+
+
+class RumReplaySessionsApi:
+ """
+ Retrieve segments for RUM replay sessions. Access session replay data stored in event platform or blob storage.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_segments_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/sessions/{session_id}/views/{view_id}/segments",
+ "operation_id": "get_segments",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "view_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "view_id",
+ "location": "path",
+ },
+ "source": {
+ "openapi_types": (str,),
+ "attribute": "source",
+ "location": "query",
+ },
+ "session_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "session_id",
+ "location": "path",
+ },
+ "ts": {
+ "openapi_types": (int,),
+ "attribute": "ts",
+ "location": "query",
+ },
+ "max_list_size": {
+ "openapi_types": (int,),
+ "attribute": "max_list_size",
+ "location": "query",
+ },
+ "paging": {
+ "openapi_types": (str,),
+ "attribute": "paging",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ def get_segments(self, view_id: str, session_id: str, *, source: Union[str, UnsetType]=unset, ts: Union[int, UnsetType]=unset, max_list_size: Union[int, UnsetType]=unset, paging: Union[str, UnsetType]=unset, ) -> None:
+ """Get segments.
+
+ Get segments for a view.
+
+ :param view_id: Unique identifier of the view.
+ :type view_id: str
+ :param session_id: Unique identifier of the session.
+ :type session_id: str
+ :param source: Storage source: 'event_platform' or 'blob'.
+ :type source: str, optional
+ :param ts: Server-side timestamp in milliseconds.
+ :type ts: int, optional
+ :param max_list_size: Maximum size in bytes for the segment list.
+ :type max_list_size: int, optional
+ :param paging: Paging token for pagination.
+ :type paging: str, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["view_id"] = view_id
+
+ if source is not unset:
+ kwargs["source"] = source
+
+ kwargs["session_id"] = session_id
+
+ if ts is not unset:
+ kwargs["ts"] = ts
+
+ if max_list_size is not unset:
+ kwargs["max_list_size"] = max_list_size
+
+ if paging is not unset:
+ kwargs["paging"] = paging
+
+ return self._get_segments_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_replay_viewership_api.py b/datadog_api_client/v2/api/rum_replay_viewership_api.py
new file mode 100644
index 0000000000..146a4f60de
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_replay_viewership_api.py
@@ -0,0 +1,272 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.watcher_array import WatcherArray
+from datadog_api_client.v2.model.watch import Watch
+from datadog_api_client.v2.model.viewership_history_session_array import ViewershipHistorySessionArray
+
+
+class RumReplayViewershipApi:
+ """
+ Track and manage RUM replay session viewership. Monitor who watches replay sessions and maintain watch history for audit and analytics purposes.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_rum_replay_session_watch_endpoint = _Endpoint(
+ settings={
+ "response_type": (Watch,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/sessions/{session_id}/watches",
+ "operation_id": "create_rum_replay_session_watch",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "session_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "session_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (Watch,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_rum_replay_session_watch_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/sessions/{session_id}/watches",
+ "operation_id": "delete_rum_replay_session_watch",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "session_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "session_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_replay_session_watchers_endpoint = _Endpoint(
+ settings={
+ "response_type": (WatcherArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/sessions/{session_id}/watchers",
+ "operation_id": "list_rum_replay_session_watchers",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "session_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "session_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_rum_replay_viewership_history_sessions_endpoint = _Endpoint(
+ settings={
+ "response_type": (ViewershipHistorySessionArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/rum/replay/viewership-history/sessions",
+ "operation_id": "list_rum_replay_viewership_history_sessions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_watched_at_start": {
+ "openapi_types": (int,),
+ "attribute": "filter[watched_at][start]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_created_by": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_by]",
+ "location": "query",
+ },
+ "filter_watched_at_end": {
+ "openapi_types": (int,),
+ "attribute": "filter[watched_at][end]",
+ "location": "query",
+ },
+ "filter_session_ids": {
+ "openapi_types": (str,),
+ "attribute": "filter[session_ids]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "filter_application_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[application_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_rum_replay_session_watch(self, session_id: str, body: Watch, ) -> Watch:
+ """Create RUM replay session watch.
+
+ Record a session watch.
+
+ :param session_id: Unique identifier of the session.
+ :type session_id: str
+ :type body: Watch
+ :rtype: Watch
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["session_id"] = session_id
+
+ kwargs["body"] = body
+
+ return self._create_rum_replay_session_watch_endpoint.call_with_http_info(**kwargs)
+
+ def delete_rum_replay_session_watch(self, session_id: str, ) -> None:
+ """Delete RUM replay session watch.
+
+ Delete session watch history.
+
+ :param session_id: Unique identifier of the session.
+ :type session_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["session_id"] = session_id
+
+ return self._delete_rum_replay_session_watch_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_replay_session_watchers(self, session_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> WatcherArray:
+ """List RUM replay session watchers.
+
+ List session watchers.
+
+ :param session_id: Unique identifier of the session.
+ :type session_id: str
+ :param page_size: Number of items per page.
+ :type page_size: int, optional
+ :param page_number: Page number for pagination (0-indexed).
+ :type page_number: int, optional
+ :rtype: WatcherArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ kwargs["session_id"] = session_id
+
+ return self._list_rum_replay_session_watchers_endpoint.call_with_http_info(**kwargs)
+
+ def list_rum_replay_viewership_history_sessions(self, *, filter_watched_at_start: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_created_by: Union[str, UnsetType]=unset, filter_watched_at_end: Union[int, UnsetType]=unset, filter_session_ids: Union[str, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, filter_application_id: Union[str, UnsetType]=unset, ) -> ViewershipHistorySessionArray:
+ """List RUM replay viewership history sessions.
+
+ List watched sessions.
+
+ :param filter_watched_at_start: Start timestamp in milliseconds for watched_at filter.
+ :type filter_watched_at_start: int, optional
+ :param page_number: Page number for pagination (0-indexed).
+ :type page_number: int, optional
+ :param filter_created_by: Filter by user UUID. Defaults to current user if not specified.
+ :type filter_created_by: str, optional
+ :param filter_watched_at_end: End timestamp in milliseconds for watched_at filter.
+ :type filter_watched_at_end: int, optional
+ :param filter_session_ids: Comma-separated list of session IDs to filter by.
+ :type filter_session_ids: str, optional
+ :param page_size: Number of items per page.
+ :type page_size: int, optional
+ :param filter_application_id: Filter by application ID.
+ :type filter_application_id: str, optional
+ :rtype: ViewershipHistorySessionArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_watched_at_start is not unset:
+ kwargs["filter_watched_at_start"] = filter_watched_at_start
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_created_by is not unset:
+ kwargs["filter_created_by"] = filter_created_by
+
+ if filter_watched_at_end is not unset:
+ kwargs["filter_watched_at_end"] = filter_watched_at_end
+
+ if filter_session_ids is not unset:
+ kwargs["filter_session_ids"] = filter_session_ids
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if filter_application_id is not unset:
+ kwargs["filter_application_id"] = filter_application_id
+
+ return self._list_rum_replay_viewership_history_sessions_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/rum_retention_filters_api.py b/datadog_api_client/v2/api/rum_retention_filters_api.py
new file mode 100644
index 0000000000..dd2f6d5c7d
--- /dev/null
+++ b/datadog_api_client/v2/api/rum_retention_filters_api.py
@@ -0,0 +1,472 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.rum_retention_filters_order_response import RumRetentionFiltersOrderResponse
+from datadog_api_client.v2.model.rum_retention_filters_order_request import RumRetentionFiltersOrderRequest
+from datadog_api_client.v2.model.rum_retention_filters_response import RumRetentionFiltersResponse
+from datadog_api_client.v2.model.rum_retention_filter_response import RumRetentionFilterResponse
+from datadog_api_client.v2.model.rum_retention_filter_create_request import RumRetentionFilterCreateRequest
+from datadog_api_client.v2.model.rum_permanent_retention_filters_response import RumPermanentRetentionFiltersResponse
+from datadog_api_client.v2.model.rum_permanent_retention_filter_response import RumPermanentRetentionFilterResponse
+from datadog_api_client.v2.model.rum_permanent_retention_filter_id import RumPermanentRetentionFilterID
+from datadog_api_client.v2.model.rum_permanent_retention_filter_update_request import RumPermanentRetentionFilterUpdateRequest
+from datadog_api_client.v2.model.rum_retention_filter_update_request import RumRetentionFilterUpdateRequest
+
+
+class RumRetentionFiltersApi:
+ """
+ Manage retention filters through `Manage Applications `_ of RUM for your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumRetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters",
+ "operation_id": "create_retention_filter",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RumRetentionFilterCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}",
+ "operation_id": "delete_retention_filter",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "rf_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rf_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_permanent_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumPermanentRetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters/permanent/{permanent_rf_id}",
+ "operation_id": "get_permanent_retention_filter",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "permanent_rf_id": {
+ "required": True,
+ "openapi_types": (RumPermanentRetentionFilterID,),
+ "attribute": "permanent_rf_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumRetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}",
+ "operation_id": "get_retention_filter",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "rf_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rf_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_permanent_retention_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumPermanentRetentionFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters/permanent",
+ "operation_id": "list_permanent_retention_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_retention_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumRetentionFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters",
+ "operation_id": "list_retention_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._order_retention_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumRetentionFiltersOrderResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/relationships/retention_filters",
+ "operation_id": "order_retention_filters",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RumRetentionFiltersOrderRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_permanent_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumPermanentRetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters/permanent/{permanent_rf_id}",
+ "operation_id": "update_permanent_retention_filter",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "permanent_rf_id": {
+ "required": True,
+ "openapi_types": (RumPermanentRetentionFilterID,),
+ "attribute": "permanent_rf_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RumPermanentRetentionFilterUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_retention_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (RumRetentionFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}",
+ "operation_id": "update_retention_filter",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "app_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_id",
+ "location": "path",
+ },
+ "rf_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rf_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RumRetentionFilterUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_retention_filter(self, app_id: str, body: RumRetentionFilterCreateRequest, ) -> RumRetentionFilterResponse:
+ """Create a RUM retention filter.
+
+ Create a RUM retention filter for a RUM application.
+ Returns RUM retention filter objects from the request body when the request is successful.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param body: The definition of the new RUM retention filter.
+ :type body: RumRetentionFilterCreateRequest
+ :rtype: RumRetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._create_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def delete_retention_filter(self, app_id: str, rf_id: str, ) -> None:
+ """Delete a RUM retention filter.
+
+ Delete a RUM retention filter for a RUM application.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param rf_id: Retention filter ID.
+ :type rf_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["rf_id"] = rf_id
+
+ return self._delete_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def get_permanent_retention_filter(self, app_id: str, permanent_rf_id: RumPermanentRetentionFilterID, ) -> RumPermanentRetentionFilterResponse:
+ """Get a permanent RUM retention filter.
+
+ Get a permanent RUM retention filter for a RUM application by its identifier.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param permanent_rf_id: The identifier of the permanent RUM retention filter.
+ :type permanent_rf_id: RumPermanentRetentionFilterID
+ :rtype: RumPermanentRetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["permanent_rf_id"] = permanent_rf_id
+
+ return self._get_permanent_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def get_retention_filter(self, app_id: str, rf_id: str, ) -> RumRetentionFilterResponse:
+ """Get a RUM retention filter.
+
+ Get a RUM retention filter for a RUM application.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param rf_id: Retention filter ID.
+ :type rf_id: str
+ :rtype: RumRetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["rf_id"] = rf_id
+
+ return self._get_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def list_permanent_retention_filters(self, app_id: str, ) -> RumPermanentRetentionFiltersResponse:
+ """Get all permanent RUM retention filters.
+
+ Get the list of permanent RUM retention filters for a RUM application.
+ Permanent retention filters are predefined filters that cannot be created or deleted.
+ For each filter, the ``editability`` block indicates which cross-product fields can be updated.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :rtype: RumPermanentRetentionFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ return self._list_permanent_retention_filters_endpoint.call_with_http_info(**kwargs)
+
+ def list_retention_filters(self, app_id: str, ) -> RumRetentionFiltersResponse:
+ """Get all RUM retention filters.
+
+ Get the list of RUM retention filters for a RUM application.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :rtype: RumRetentionFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ return self._list_retention_filters_endpoint.call_with_http_info(**kwargs)
+
+ def order_retention_filters(self, app_id: str, body: RumRetentionFiltersOrderRequest, ) -> RumRetentionFiltersOrderResponse:
+ """Order RUM retention filters.
+
+ Order RUM retention filters for a RUM application.
+ Returns RUM retention filter objects without attributes from the request body when the request is successful.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param body: New definition of the RUM retention filter.
+ :type body: RumRetentionFiltersOrderRequest
+ :rtype: RumRetentionFiltersOrderResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["body"] = body
+
+ return self._order_retention_filters_endpoint.call_with_http_info(**kwargs)
+
+ def update_permanent_retention_filter(self, app_id: str, permanent_rf_id: RumPermanentRetentionFilterID, body: RumPermanentRetentionFilterUpdateRequest, ) -> RumPermanentRetentionFilterResponse:
+ """Update a permanent RUM retention filter.
+
+ Update the cross-product sampling configuration of a permanent RUM retention filter for a RUM application.
+ Only fields marked as editable in the ``editability`` block of the filter can be updated.
+ Updating a non-editable field returns a ``400`` response.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param permanent_rf_id: The identifier of the permanent RUM retention filter.
+ :type permanent_rf_id: RumPermanentRetentionFilterID
+ :param body: New configuration of the permanent RUM retention filter.
+ :type body: RumPermanentRetentionFilterUpdateRequest
+ :rtype: RumPermanentRetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["permanent_rf_id"] = permanent_rf_id
+
+ kwargs["body"] = body
+
+ return self._update_permanent_retention_filter_endpoint.call_with_http_info(**kwargs)
+
+ def update_retention_filter(self, app_id: str, rf_id: str, body: RumRetentionFilterUpdateRequest, ) -> RumRetentionFilterResponse:
+ """Update a RUM retention filter.
+
+ Update a RUM retention filter for a RUM application.
+ Returns RUM retention filter objects from the request body when the request is successful.
+
+ :param app_id: RUM application ID.
+ :type app_id: str
+ :param rf_id: Retention filter ID.
+ :type rf_id: str
+ :param body: New definition of the RUM retention filter.
+ :type body: RumRetentionFilterUpdateRequest
+ :rtype: RumRetentionFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["app_id"] = app_id
+
+ kwargs["rf_id"] = rf_id
+
+ kwargs["body"] = body
+
+ return self._update_retention_filter_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/salesforce_integration_api.py b/datadog_api_client/v2/api/salesforce_integration_api.py
new file mode 100644
index 0000000000..45294d7b2b
--- /dev/null
+++ b/datadog_api_client/v2/api/salesforce_integration_api.py
@@ -0,0 +1,254 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.salesforce_incidents_templates_response import SalesforceIncidentsTemplatesResponse
+from datadog_api_client.v2.model.salesforce_incidents_template_response import SalesforceIncidentsTemplateResponse
+from datadog_api_client.v2.model.salesforce_incidents_template_create_request import SalesforceIncidentsTemplateCreateRequest
+from datadog_api_client.v2.model.salesforce_incidents_template_update_request import SalesforceIncidentsTemplateUpdateRequest
+from datadog_api_client.v2.model.salesforce_incidents_organizations_response import SalesforceIncidentsOrganizationsResponse
+
+
+class SalesforceIntegrationApi:
+ """
+ Configure your `Datadog Salesforce integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_incident_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (SalesforceIncidentsTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/salesforce-incidents/incident-templates",
+ "operation_id": "create_incident_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SalesforceIncidentsTemplateCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_incident_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/salesforce-incidents/incident-templates/{incident_template_id}",
+ "operation_id": "delete_incident_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "incident_template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_salesforce_organization_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/salesforce-incidents/organizations/{salesforce_org_id}",
+ "operation_id": "delete_salesforce_organization",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "salesforce_org_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "salesforce_org_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_incident_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (SalesforceIncidentsTemplatesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/salesforce-incidents/incident-templates",
+ "operation_id": "get_incident_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_salesforce_organizations_endpoint = _Endpoint(
+ settings={
+ "response_type": (SalesforceIncidentsOrganizationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/salesforce-incidents/organizations",
+ "operation_id": "get_salesforce_organizations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_incident_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (SalesforceIncidentsTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/salesforce-incidents/incident-templates/{incident_template_id}",
+ "operation_id": "update_incident_template",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "incident_template_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "incident_template_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SalesforceIncidentsTemplateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_incident_template(self, body: SalesforceIncidentsTemplateCreateRequest, ) -> SalesforceIncidentsTemplateResponse:
+ """Create a Salesforce incident template.
+
+ Create a new Salesforce incident template for your organization. Template
+ names must be unique within an organization.
+
+ :param body: Salesforce incident template payload.
+ :type body: SalesforceIncidentsTemplateCreateRequest
+ :rtype: SalesforceIncidentsTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_incident_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_incident_template(self, incident_template_id: str, ) -> None:
+ """Delete a Salesforce incident template.
+
+ Delete a single Salesforce incident template from your organization.
+
+ :param incident_template_id: The ID of the Salesforce incident template.
+ :type incident_template_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_template_id"] = incident_template_id
+
+ return self._delete_incident_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_salesforce_organization(self, salesforce_org_id: str, ) -> None:
+ """Delete a connected Salesforce organization.
+
+ Disconnect a Salesforce organization from your Datadog organization.
+ This also deletes any incident templates referencing the organization.
+
+ :param salesforce_org_id: The Datadog-assigned ID of the connected Salesforce organization.
+ :type salesforce_org_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["salesforce_org_id"] = salesforce_org_id
+
+ return self._delete_salesforce_organization_endpoint.call_with_http_info(**kwargs)
+
+ def get_incident_templates(self, ) -> SalesforceIncidentsTemplatesResponse:
+ """Get all Salesforce incident templates.
+
+ Get all Salesforce incident templates configured for your organization.
+
+ :rtype: SalesforceIncidentsTemplatesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_incident_templates_endpoint.call_with_http_info(**kwargs)
+
+ def get_salesforce_organizations(self, ) -> SalesforceIncidentsOrganizationsResponse:
+ """Get all connected Salesforce organizations.
+
+ Get all Salesforce organizations connected to your Datadog organization
+ through the Salesforce integration. Salesforce organizations are connected
+ through the OAuth setup flow in the Datadog Salesforce integration page.
+
+ :rtype: SalesforceIncidentsOrganizationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_salesforce_organizations_endpoint.call_with_http_info(**kwargs)
+
+ def update_incident_template(self, incident_template_id: str, body: SalesforceIncidentsTemplateUpdateRequest, ) -> SalesforceIncidentsTemplateResponse:
+ """Update a Salesforce incident template.
+
+ Update a single Salesforce incident template in your organization.
+
+ :param incident_template_id: The ID of the Salesforce incident template.
+ :type incident_template_id: str
+ :param body: Salesforce incident template payload.
+ :type body: SalesforceIncidentsTemplateUpdateRequest
+ :rtype: SalesforceIncidentsTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["incident_template_id"] = incident_template_id
+
+ kwargs["body"] = body
+
+ return self._update_incident_template_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/scorecards_api.py b/datadog_api_client/v2/api/scorecards_api.py
new file mode 100644
index 0000000000..bfad1e07ea
--- /dev/null
+++ b/datadog_api_client/v2/api/scorecards_api.py
@@ -0,0 +1,1103 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_campaigns_response import ListCampaignsResponse
+from datadog_api_client.v2.model.campaign_response import CampaignResponse
+from datadog_api_client.v2.model.create_campaign_request import CreateCampaignRequest
+from datadog_api_client.v2.model.update_campaign_request import UpdateCampaignRequest
+from datadog_api_client.v2.model.outcomes_response import OutcomesResponse
+from datadog_api_client.v2.model.outcomes_response_data_item import OutcomesResponseDataItem
+from datadog_api_client.v2.model.update_outcomes_async_request import UpdateOutcomesAsyncRequest
+from datadog_api_client.v2.model.outcomes_batch_response import OutcomesBatchResponse
+from datadog_api_client.v2.model.outcomes_batch_request import OutcomesBatchRequest
+from datadog_api_client.v2.model.list_rules_response import ListRulesResponse
+from datadog_api_client.v2.model.list_rules_response_data_item import ListRulesResponseDataItem
+from datadog_api_client.v2.model.create_rule_response import CreateRuleResponse
+from datadog_api_client.v2.model.create_rule_request import CreateRuleRequest
+from datadog_api_client.v2.model.update_rule_response import UpdateRuleResponse
+from datadog_api_client.v2.model.update_rule_request import UpdateRuleRequest
+from datadog_api_client.v2.model.list_scorecards_response import ListScorecardsResponse
+from datadog_api_client.v2.model.list_scorecard_scores_response import ListScorecardScoresResponse
+from datadog_api_client.v2.model.scorecard_scores_aggregation import ScorecardScoresAggregation
+
+
+class ScorecardsApi:
+ """
+ API to create and update scorecard rules and outcomes. See `Scorecards `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_scorecard_campaign_endpoint = _Endpoint(
+ settings={
+ "response_type": (CampaignResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/campaigns",
+ "operation_id": "create_scorecard_campaign",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateCampaignRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_scorecard_outcomes_batch_endpoint = _Endpoint(
+ settings={
+ "response_type": (OutcomesBatchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/outcomes/batch",
+ "operation_id": "create_scorecard_outcomes_batch",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OutcomesBatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_scorecard_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/rules",
+ "operation_id": "create_scorecard_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_scorecard_campaign_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/campaigns/{campaign_id}",
+ "operation_id": "delete_scorecard_campaign",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "campaign_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "campaign_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_scorecard_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/rules/{rule_id}",
+ "operation_id": "delete_scorecard_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_scorecard_campaign_endpoint = _Endpoint(
+ settings={
+ "response_type": (CampaignResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/campaigns/{campaign_id}",
+ "operation_id": "get_scorecard_campaign",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "campaign_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "campaign_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "include_meta": {
+ "openapi_types": (bool,),
+ "attribute": "include_meta",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_scorecard_campaigns_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListCampaignsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/campaigns",
+ "operation_id": "list_scorecard_campaigns",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "filter_campaign_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[campaign][name]",
+ "location": "query",
+ },
+ "filter_campaign_status": {
+ "openapi_types": (str,),
+ "attribute": "filter[campaign][status]",
+ "location": "query",
+ },
+ "filter_campaign_owner": {
+ "openapi_types": (str,),
+ "attribute": "filter[campaign][owner]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_scorecard_outcomes_endpoint = _Endpoint(
+ settings={
+ "response_type": (OutcomesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/outcomes",
+ "operation_id": "list_scorecard_outcomes",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "fields_outcome": {
+ "openapi_types": (str,),
+ "attribute": "fields[outcome]",
+ "location": "query",
+ },
+ "fields_rule": {
+ "openapi_types": (str,),
+ "attribute": "fields[rule]",
+ "location": "query",
+ },
+ "filter_outcome_service_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[outcome][service_name]",
+ "location": "query",
+ },
+ "filter_outcome_state": {
+ "openapi_types": (str,),
+ "attribute": "filter[outcome][state]",
+ "location": "query",
+ },
+ "filter_rule_enabled": {
+ "openapi_types": (bool,),
+ "attribute": "filter[rule][enabled]",
+ "location": "query",
+ },
+ "filter_rule_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][id]",
+ "location": "query",
+ },
+ "filter_rule_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][name]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_scorecard_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/rules",
+ "operation_id": "list_scorecard_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "filter_rule_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][id]",
+ "location": "query",
+ },
+ "filter_rule_enabled": {
+ "openapi_types": (bool,),
+ "attribute": "filter[rule][enabled]",
+ "location": "query",
+ },
+ "filter_rule_custom": {
+ "openapi_types": (bool,),
+ "attribute": "filter[rule][custom]",
+ "location": "query",
+ },
+ "filter_rule_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][name]",
+ "location": "query",
+ },
+ "filter_rule_description": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][description]",
+ "location": "query",
+ },
+ "fields_rule": {
+ "openapi_types": (str,),
+ "attribute": "fields[rule]",
+ "location": "query",
+ },
+ "fields_scorecard": {
+ "openapi_types": (str,),
+ "attribute": "fields[scorecard]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_scorecards_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListScorecardsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/scorecards",
+ "operation_id": "list_scorecards",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "filter_scorecard_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[scorecard][id]",
+ "location": "query",
+ },
+ "filter_scorecard_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[scorecard][name]",
+ "location": "query",
+ },
+ "filter_scorecard_description": {
+ "openapi_types": (str,),
+ "attribute": "filter[scorecard][description]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_scorecard_scores_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListScorecardScoresResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/scores/{aggregation}",
+ "operation_id": "list_scorecard_scores",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "aggregation": {
+ "required": True,
+ "openapi_types": (ScorecardScoresAggregation,),
+ "attribute": "aggregation",
+ "location": "path",
+ },
+ "filter_rule_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][id]",
+ "location": "query",
+ },
+ "filter_rule_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][name]",
+ "location": "query",
+ },
+ "filter_rule_level": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][level]",
+ "location": "query",
+ },
+ "filter_rule_scorecard_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule][scorecard_id]",
+ "location": "query",
+ },
+ "filter_rule_is_custom": {
+ "openapi_types": (bool,),
+ "attribute": "filter[rule][is_custom]",
+ "location": "query",
+ },
+ "filter_rule_is_enabled": {
+ "openapi_types": (bool,),
+ "attribute": "filter[rule][is_enabled]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_scorecard_campaign_endpoint = _Endpoint(
+ settings={
+ "response_type": (CampaignResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/campaigns/{campaign_id}",
+ "operation_id": "update_scorecard_campaign",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "campaign_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "campaign_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateCampaignRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_scorecard_outcomes_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/outcomes",
+ "operation_id": "update_scorecard_outcomes",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateOutcomesAsyncRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_scorecard_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/scorecard/rules/{rule_id}",
+ "operation_id": "update_scorecard_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_scorecard_campaign(self, body: CreateCampaignRequest, ) -> CampaignResponse:
+ """Create a new campaign.
+
+ Creates a new scorecard campaign.
+
+ :param body: Campaign data.
+ :type body: CreateCampaignRequest
+ :rtype: CampaignResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_scorecard_campaign_endpoint.call_with_http_info(**kwargs)
+
+ def create_scorecard_outcomes_batch(self, body: OutcomesBatchRequest, ) -> OutcomesBatchResponse:
+ """Create outcomes batch. **Deprecated**.
+
+ Sets multiple service-rule outcomes in a single batched request.
+
+ :param body: Set of scorecard outcomes.
+ :type body: OutcomesBatchRequest
+ :rtype: OutcomesBatchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_scorecard_outcomes_batch is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_scorecard_outcomes_batch_endpoint.call_with_http_info(**kwargs)
+
+ def create_scorecard_rule(self, body: CreateRuleRequest, ) -> CreateRuleResponse:
+ """Create a new rule.
+
+ Creates a new rule.
+
+ :param body: Rule attributes.
+ :type body: CreateRuleRequest
+ :rtype: CreateRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_scorecard_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_scorecard_campaign(self, campaign_id: str, ) -> None:
+ """Delete a campaign.
+
+ Deletes a single campaign by ID or key.
+
+ :param campaign_id: Campaign ID or key.
+ :type campaign_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["campaign_id"] = campaign_id
+
+ return self._delete_scorecard_campaign_endpoint.call_with_http_info(**kwargs)
+
+ def delete_scorecard_rule(self, rule_id: str, ) -> None:
+ """Delete a rule.
+
+ Deletes a single rule.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_scorecard_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_scorecard_campaign(self, campaign_id: str, *, include: Union[str, UnsetType]=unset, include_meta: Union[bool, UnsetType]=unset, ) -> CampaignResponse:
+ """Get a campaign.
+
+ Fetches a single campaign by ID or key.
+
+ :param campaign_id: Campaign ID or key.
+ :type campaign_id: str
+ :param include: Include related data (for example, scores).
+ :type include: str, optional
+ :param include_meta: Include metadata (entity and rule counts).
+ :type include_meta: bool, optional
+ :rtype: CampaignResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["campaign_id"] = campaign_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if include_meta is not unset:
+ kwargs["include_meta"] = include_meta
+
+ return self._get_scorecard_campaign_endpoint.call_with_http_info(**kwargs)
+
+ def list_scorecard_campaigns(self, *, page_limit: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, filter_campaign_name: Union[str, UnsetType]=unset, filter_campaign_status: Union[str, UnsetType]=unset, filter_campaign_owner: Union[str, UnsetType]=unset, ) -> ListCampaignsResponse:
+ """List all campaigns.
+
+ Fetches all scorecard campaigns.
+
+ :param page_limit: Maximum number of campaigns to return.
+ :type page_limit: int, optional
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param filter_campaign_name: Filter campaigns by name (full-text search).
+ :type filter_campaign_name: str, optional
+ :param filter_campaign_status: Filter campaigns by status.
+ :type filter_campaign_status: str, optional
+ :param filter_campaign_owner: Filter campaigns by owner UUID.
+ :type filter_campaign_owner: str, optional
+ :rtype: ListCampaignsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if filter_campaign_name is not unset:
+ kwargs["filter_campaign_name"] = filter_campaign_name
+
+ if filter_campaign_status is not unset:
+ kwargs["filter_campaign_status"] = filter_campaign_status
+
+ if filter_campaign_owner is not unset:
+ kwargs["filter_campaign_owner"] = filter_campaign_owner
+
+ return self._list_scorecard_campaigns_endpoint.call_with_http_info(**kwargs)
+
+ def list_scorecard_outcomes(self, *, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, include: Union[str, UnsetType]=unset, fields_outcome: Union[str, UnsetType]=unset, fields_rule: Union[str, UnsetType]=unset, filter_outcome_service_name: Union[str, UnsetType]=unset, filter_outcome_state: Union[str, UnsetType]=unset, filter_rule_enabled: Union[bool, UnsetType]=unset, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, ) -> OutcomesResponse:
+ """List all rule outcomes.
+
+ Fetches all rule outcomes.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param include: Include related rule details in the response.
+ :type include: str, optional
+ :param fields_outcome: Return only specified values in the outcome attributes.
+ :type fields_outcome: str, optional
+ :param fields_rule: Return only specified values in the included rule details.
+ :type fields_rule: str, optional
+ :param filter_outcome_service_name: Filter outcomes on a specific service name.
+ :type filter_outcome_service_name: str, optional
+ :param filter_outcome_state: Filter outcomes by a specific state.
+ :type filter_outcome_state: str, optional
+ :param filter_rule_enabled: Filter outcomes based on whether a rule is enabled or disabled.
+ :type filter_rule_enabled: bool, optional
+ :param filter_rule_id: Filter outcomes based on rule ID.
+ :type filter_rule_id: str, optional
+ :param filter_rule_name: Filter outcomes based on rule name.
+ :type filter_rule_name: str, optional
+ :rtype: OutcomesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if fields_outcome is not unset:
+ kwargs["fields_outcome"] = fields_outcome
+
+ if fields_rule is not unset:
+ kwargs["fields_rule"] = fields_rule
+
+ if filter_outcome_service_name is not unset:
+ kwargs["filter_outcome_service_name"] = filter_outcome_service_name
+
+ if filter_outcome_state is not unset:
+ kwargs["filter_outcome_state"] = filter_outcome_state
+
+ if filter_rule_enabled is not unset:
+ kwargs["filter_rule_enabled"] = filter_rule_enabled
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ return self._list_scorecard_outcomes_endpoint.call_with_http_info(**kwargs)
+
+ def list_scorecard_outcomes_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, include: Union[str, UnsetType]=unset, fields_outcome: Union[str, UnsetType]=unset, fields_rule: Union[str, UnsetType]=unset, filter_outcome_service_name: Union[str, UnsetType]=unset, filter_outcome_state: Union[str, UnsetType]=unset, filter_rule_enabled: Union[bool, UnsetType]=unset, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[OutcomesResponseDataItem]:
+ """List all rule outcomes.
+
+ Provide a paginated version of :meth:`list_scorecard_outcomes`, returning all items.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param include: Include related rule details in the response.
+ :type include: str, optional
+ :param fields_outcome: Return only specified values in the outcome attributes.
+ :type fields_outcome: str, optional
+ :param fields_rule: Return only specified values in the included rule details.
+ :type fields_rule: str, optional
+ :param filter_outcome_service_name: Filter outcomes on a specific service name.
+ :type filter_outcome_service_name: str, optional
+ :param filter_outcome_state: Filter outcomes by a specific state.
+ :type filter_outcome_state: str, optional
+ :param filter_rule_enabled: Filter outcomes based on whether a rule is enabled or disabled.
+ :type filter_rule_enabled: bool, optional
+ :param filter_rule_id: Filter outcomes based on rule ID.
+ :type filter_rule_id: str, optional
+ :param filter_rule_name: Filter outcomes based on rule name.
+ :type filter_rule_name: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[OutcomesResponseDataItem]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if fields_outcome is not unset:
+ kwargs["fields_outcome"] = fields_outcome
+
+ if fields_rule is not unset:
+ kwargs["fields_rule"] = fields_rule
+
+ if filter_outcome_service_name is not unset:
+ kwargs["filter_outcome_service_name"] = filter_outcome_service_name
+
+ if filter_outcome_state is not unset:
+ kwargs["filter_outcome_state"] = filter_outcome_state
+
+ if filter_rule_enabled is not unset:
+ kwargs["filter_rule_enabled"] = filter_rule_enabled
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_scorecard_outcomes_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_scorecard_rules(self, *, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, include: Union[str, UnsetType]=unset, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_enabled: Union[bool, UnsetType]=unset, filter_rule_custom: Union[bool, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, filter_rule_description: Union[str, UnsetType]=unset, fields_rule: Union[str, UnsetType]=unset, fields_scorecard: Union[str, UnsetType]=unset, ) -> ListRulesResponse:
+ """List all rules.
+
+ Fetch all rules.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param include: Include related scorecard details in the response.
+ :type include: str, optional
+ :param filter_rule_id: Filter the rules on a rule ID.
+ :type filter_rule_id: str, optional
+ :param filter_rule_enabled: Filter for enabled rules only.
+ :type filter_rule_enabled: bool, optional
+ :param filter_rule_custom: Filter for custom rules only.
+ :type filter_rule_custom: bool, optional
+ :param filter_rule_name: Filter rules on the rule name.
+ :type filter_rule_name: str, optional
+ :param filter_rule_description: Filter rules on the rule description.
+ :type filter_rule_description: str, optional
+ :param fields_rule: Return only specific fields in the response for rule attributes.
+ :type fields_rule: str, optional
+ :param fields_scorecard: Return only specific fields in the included response for scorecard attributes.
+ :type fields_scorecard: str, optional
+ :rtype: ListRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_enabled is not unset:
+ kwargs["filter_rule_enabled"] = filter_rule_enabled
+
+ if filter_rule_custom is not unset:
+ kwargs["filter_rule_custom"] = filter_rule_custom
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ if filter_rule_description is not unset:
+ kwargs["filter_rule_description"] = filter_rule_description
+
+ if fields_rule is not unset:
+ kwargs["fields_rule"] = fields_rule
+
+ if fields_scorecard is not unset:
+ kwargs["fields_scorecard"] = fields_scorecard
+
+ return self._list_scorecard_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_scorecard_rules_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, include: Union[str, UnsetType]=unset, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_enabled: Union[bool, UnsetType]=unset, filter_rule_custom: Union[bool, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, filter_rule_description: Union[str, UnsetType]=unset, fields_rule: Union[str, UnsetType]=unset, fields_scorecard: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[ListRulesResponseDataItem]:
+ """List all rules.
+
+ Provide a paginated version of :meth:`list_scorecard_rules`, returning all items.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param include: Include related scorecard details in the response.
+ :type include: str, optional
+ :param filter_rule_id: Filter the rules on a rule ID.
+ :type filter_rule_id: str, optional
+ :param filter_rule_enabled: Filter for enabled rules only.
+ :type filter_rule_enabled: bool, optional
+ :param filter_rule_custom: Filter for custom rules only.
+ :type filter_rule_custom: bool, optional
+ :param filter_rule_name: Filter rules on the rule name.
+ :type filter_rule_name: str, optional
+ :param filter_rule_description: Filter rules on the rule description.
+ :type filter_rule_description: str, optional
+ :param fields_rule: Return only specific fields in the response for rule attributes.
+ :type fields_rule: str, optional
+ :param fields_scorecard: Return only specific fields in the included response for scorecard attributes.
+ :type fields_scorecard: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ListRulesResponseDataItem]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_enabled is not unset:
+ kwargs["filter_rule_enabled"] = filter_rule_enabled
+
+ if filter_rule_custom is not unset:
+ kwargs["filter_rule_custom"] = filter_rule_custom
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ if filter_rule_description is not unset:
+ kwargs["filter_rule_description"] = filter_rule_description
+
+ if fields_rule is not unset:
+ kwargs["fields_rule"] = fields_rule
+
+ if fields_scorecard is not unset:
+ kwargs["fields_scorecard"] = fields_scorecard
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_scorecard_rules_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_scorecards(self, *, page_offset: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, filter_scorecard_id: Union[str, UnsetType]=unset, filter_scorecard_name: Union[str, UnsetType]=unset, filter_scorecard_description: Union[str, UnsetType]=unset, ) -> ListScorecardsResponse:
+ """List all scorecards.
+
+ Fetches all scorecards.
+
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param page_size: Maximum number of scorecards to return.
+ :type page_size: int, optional
+ :param filter_scorecard_id: Filter by scorecard ID.
+ :type filter_scorecard_id: str, optional
+ :param filter_scorecard_name: Filter by scorecard name (partial match).
+ :type filter_scorecard_name: str, optional
+ :param filter_scorecard_description: Filter by scorecard description (partial match).
+ :type filter_scorecard_description: str, optional
+ :rtype: ListScorecardsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if filter_scorecard_id is not unset:
+ kwargs["filter_scorecard_id"] = filter_scorecard_id
+
+ if filter_scorecard_name is not unset:
+ kwargs["filter_scorecard_name"] = filter_scorecard_name
+
+ if filter_scorecard_description is not unset:
+ kwargs["filter_scorecard_description"] = filter_scorecard_description
+
+ return self._list_scorecards_endpoint.call_with_http_info(**kwargs)
+
+ def list_scorecard_scores(self, aggregation: ScorecardScoresAggregation, *, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, filter_rule_level: Union[str, UnsetType]=unset, filter_rule_scorecard_id: Union[str, UnsetType]=unset, filter_rule_is_custom: Union[bool, UnsetType]=unset, filter_rule_is_enabled: Union[bool, UnsetType]=unset, sort: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> ListScorecardScoresResponse:
+ """List all scores.
+
+ Returns a list of scorecard scores for each aggregation type, with score breakdowns.
+
+ :param aggregation: The type of scores being requested.
+ :type aggregation: ScorecardScoresAggregation
+ :param filter_rule_id: Filter scores by rule ID(s), comma-separated.
+ :type filter_rule_id: str, optional
+ :param filter_rule_name: Filter scores by rule name.
+ :type filter_rule_name: str, optional
+ :param filter_rule_level: Filter scores by rule level(s), comma-separated.
+ :type filter_rule_level: str, optional
+ :param filter_rule_scorecard_id: Filter scores by scorecard ID(s), comma-separated.
+ :type filter_rule_scorecard_id: str, optional
+ :param filter_rule_is_custom: Filter scores to show only custom rules.
+ :type filter_rule_is_custom: bool, optional
+ :param filter_rule_is_enabled: Filter scores to show only enabled rules.
+ :type filter_rule_is_enabled: bool, optional
+ :param sort: Sort scores by field. Use a hyphen prefix for descending order. Options: score, numerator, denominator, total_pass, total_fail, total_skip, total_no_data.
+ :type sort: str, optional
+ :param page_offset: Offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: Number of scores to return. Max is 1000.
+ :type page_limit: int, optional
+ :rtype: ListScorecardScoresResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["aggregation"] = aggregation
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ if filter_rule_level is not unset:
+ kwargs["filter_rule_level"] = filter_rule_level
+
+ if filter_rule_scorecard_id is not unset:
+ kwargs["filter_rule_scorecard_id"] = filter_rule_scorecard_id
+
+ if filter_rule_is_custom is not unset:
+ kwargs["filter_rule_is_custom"] = filter_rule_is_custom
+
+ if filter_rule_is_enabled is not unset:
+ kwargs["filter_rule_is_enabled"] = filter_rule_is_enabled
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_scorecard_scores_endpoint.call_with_http_info(**kwargs)
+
+ def update_scorecard_campaign(self, campaign_id: str, body: UpdateCampaignRequest, ) -> CampaignResponse:
+ """Update a campaign.
+
+ Updates an existing campaign.
+
+ :param campaign_id: Campaign ID or key.
+ :type campaign_id: str
+ :param body: Campaign data.
+ :type body: UpdateCampaignRequest
+ :rtype: CampaignResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["campaign_id"] = campaign_id
+
+ kwargs["body"] = body
+
+ return self._update_scorecard_campaign_endpoint.call_with_http_info(**kwargs)
+
+ def update_scorecard_outcomes(self, body: UpdateOutcomesAsyncRequest, ) -> None:
+ """Update Scorecard outcomes.
+
+ Updates multiple scorecard rule outcomes in a single batched request.
+
+ :param body: Set of scorecard outcomes.
+ :type body: UpdateOutcomesAsyncRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_scorecard_outcomes_endpoint.call_with_http_info(**kwargs)
+
+ def update_scorecard_rule(self, rule_id: str, body: UpdateRuleRequest, ) -> UpdateRuleResponse:
+ """Update an existing scorecard rule.
+
+ Updates an existing rule.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :param body: Rule attributes.
+ :type body: UpdateRuleRequest
+ :rtype: UpdateRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_scorecard_rule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/seats_api.py b/datadog_api_client/v2/api/seats_api.py
new file mode 100644
index 0000000000..ae86723dc4
--- /dev/null
+++ b/datadog_api_client/v2/api/seats_api.py
@@ -0,0 +1,165 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.unassign_seats_user_request import UnassignSeatsUserRequest
+from datadog_api_client.v2.model.seat_user_data_array import SeatUserDataArray
+from datadog_api_client.v2.model.assign_seats_user_response import AssignSeatsUserResponse
+from datadog_api_client.v2.model.assign_seats_user_request import AssignSeatsUserRequest
+
+
+class SeatsApi:
+ """
+ The seats API allows you to view, assign, and unassign seats for your organization.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._assign_seats_user_endpoint = _Endpoint(
+ settings={
+ "response_type": (AssignSeatsUserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/seats/users",
+ "operation_id": "assign_seats_user",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AssignSeatsUserRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_seats_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (SeatUserDataArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/seats/users",
+ "operation_id": "get_seats_users",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "product_code": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "product_code",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._unassign_seats_user_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/seats/users",
+ "operation_id": "unassign_seats_user",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UnassignSeatsUserRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def assign_seats_user(self, body: AssignSeatsUserRequest, ) -> AssignSeatsUserResponse:
+ """Assign seats to users.
+
+ Assign seats to users for a product code.
+
+ :type body: AssignSeatsUserRequest
+ :rtype: AssignSeatsUserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._assign_seats_user_endpoint.call_with_http_info(**kwargs)
+
+ def get_seats_users(self, product_code: str, *, page_limit: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, ) -> SeatUserDataArray:
+ """Get users with seats.
+
+ Get the list of users assigned seats for a product code.
+
+ :param product_code: The product code for which to retrieve seat users.
+ :type product_code: str
+ :param page_limit: Maximum number of results to return.
+ :type page_limit: int, optional
+ :param page_cursor: Cursor for pagination.
+ :type page_cursor: str, optional
+ :rtype: SeatUserDataArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["product_code"] = product_code
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ return self._get_seats_users_endpoint.call_with_http_info(**kwargs)
+
+ def unassign_seats_user(self, body: UnassignSeatsUserRequest, ) -> None:
+ """Unassign seats from users.
+
+ Unassign seats from users for a product code.
+
+ :type body: UnassignSeatsUserRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._unassign_seats_user_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/security_monitoring_api.py b/datadog_api_client/v2/api/security_monitoring_api.py
new file mode 100644
index 0000000000..fd9dfb1623
--- /dev/null
+++ b/datadog_api_client/v2/api/security_monitoring_api.py
@@ -0,0 +1,8403 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.create_custom_framework_response import CreateCustomFrameworkResponse
+from datadog_api_client.v2.model.create_custom_framework_request import CreateCustomFrameworkRequest
+from datadog_api_client.v2.model.delete_custom_framework_response import DeleteCustomFrameworkResponse
+from datadog_api_client.v2.model.get_custom_framework_response import GetCustomFrameworkResponse
+from datadog_api_client.v2.model.update_custom_framework_response import UpdateCustomFrameworkResponse
+from datadog_api_client.v2.model.update_custom_framework_request import UpdateCustomFrameworkRequest
+from datadog_api_client.v2.model.get_resource_evaluation_filters_response import GetResourceEvaluationFiltersResponse
+from datadog_api_client.v2.model.update_resource_evaluation_filters_response import UpdateResourceEvaluationFiltersResponse
+from datadog_api_client.v2.model.update_resource_evaluation_filters_request import UpdateResourceEvaluationFiltersRequest
+from datadog_api_client.v2.model.list_findings_response import ListFindingsResponse
+from datadog_api_client.v2.model.finding_evaluation import FindingEvaluation
+from datadog_api_client.v2.model.finding_status import FindingStatus
+from datadog_api_client.v2.model.finding_vulnerability_type import FindingVulnerabilityType
+from datadog_api_client.v2.model.finding import Finding
+from datadog_api_client.v2.model.get_finding_response import GetFindingResponse
+from datadog_api_client.v2.model.list_security_findings_response import ListSecurityFindingsResponse
+from datadog_api_client.v2.model.security_findings_sort import SecurityFindingsSort
+from datadog_api_client.v2.model.security_findings_data import SecurityFindingsData
+from datadog_api_client.v2.model.assignee_response import AssigneeResponse
+from datadog_api_client.v2.model.assignee_request import AssigneeRequest
+from datadog_api_client.v2.model.due_date_rules_response import DueDateRulesResponse
+from datadog_api_client.v2.model.due_date_rule_response import DueDateRuleResponse
+from datadog_api_client.v2.model.due_date_rule_create_request import DueDateRuleCreateRequest
+from datadog_api_client.v2.model.due_date_rule_reorder_request import DueDateRuleReorderRequest
+from datadog_api_client.v2.model.due_date_rule_update_request import DueDateRuleUpdateRequest
+from datadog_api_client.v2.model.mute_rules_response import MuteRulesResponse
+from datadog_api_client.v2.model.mute_rule_response import MuteRuleResponse
+from datadog_api_client.v2.model.mute_rule_create_request import MuteRuleCreateRequest
+from datadog_api_client.v2.model.mute_rule_reorder_request import MuteRuleReorderRequest
+from datadog_api_client.v2.model.mute_rule_update_request import MuteRuleUpdateRequest
+from datadog_api_client.v2.model.ticket_creation_rules_response import TicketCreationRulesResponse
+from datadog_api_client.v2.model.ticket_creation_rule_response import TicketCreationRuleResponse
+from datadog_api_client.v2.model.ticket_creation_rule_create_request import TicketCreationRuleCreateRequest
+from datadog_api_client.v2.model.ticket_creation_rule_reorder_request import TicketCreationRuleReorderRequest
+from datadog_api_client.v2.model.ticket_creation_rule_update_request import TicketCreationRuleUpdateRequest
+from datadog_api_client.v2.model.detach_case_request import DetachCaseRequest
+from datadog_api_client.v2.model.finding_case_response_array import FindingCaseResponseArray
+from datadog_api_client.v2.model.create_case_request_array import CreateCaseRequestArray
+from datadog_api_client.v2.model.finding_case_response import FindingCaseResponse
+from datadog_api_client.v2.model.attach_case_request import AttachCaseRequest
+from datadog_api_client.v2.model.attach_jira_issue_request import AttachJiraIssueRequest
+from datadog_api_client.v2.model.create_jira_issue_request_array import CreateJiraIssueRequestArray
+from datadog_api_client.v2.model.attach_linear_issue_request import AttachLinearIssueRequest
+from datadog_api_client.v2.model.create_linear_issue_request_array import CreateLinearIssueRequestArray
+from datadog_api_client.v2.model.mute_findings_response import MuteFindingsResponse
+from datadog_api_client.v2.model.mute_findings_request import MuteFindingsRequest
+from datadog_api_client.v2.model.security_findings_search_request import SecurityFindingsSearchRequest
+from datadog_api_client.v2.model.attach_service_now_ticket_request import AttachServiceNowTicketRequest
+from datadog_api_client.v2.model.create_service_now_ticket_request_array import CreateServiceNowTicketRequestArray
+from datadog_api_client.v2.model.list_assets_sbo_ms_response import ListAssetsSBOMsResponse
+from datadog_api_client.v2.model.asset_type import AssetType
+from datadog_api_client.v2.model.sbom_component_license_type import SBOMComponentLicenseType
+from datadog_api_client.v2.model.get_sbom_response import GetSBOMResponse
+from datadog_api_client.v2.model.sbom_format import SBOMFormat
+from datadog_api_client.v2.model.scanned_assets_metadata import ScannedAssetsMetadata
+from datadog_api_client.v2.model.cloud_asset_type import CloudAssetType
+from datadog_api_client.v2.model.io_c_explorer_list_response import IoCExplorerListResponse
+from datadog_api_client.v2.model.io_c_triage_state import IoCTriageState
+from datadog_api_client.v2.model.get_io_c_indicator_response import GetIoCIndicatorResponse
+from datadog_api_client.v2.model.io_c_triage_write_response import IoCTriageWriteResponse
+from datadog_api_client.v2.model.io_c_triage_write_request import IoCTriageWriteRequest
+from datadog_api_client.v2.model.notification_rules_list_response import NotificationRulesListResponse
+from datadog_api_client.v2.model.notification_rule_response import NotificationRuleResponse
+from datadog_api_client.v2.model.create_notification_rule_parameters import CreateNotificationRuleParameters
+from datadog_api_client.v2.model.patch_notification_rule_parameters import PatchNotificationRuleParameters
+from datadog_api_client.v2.model.list_vulnerabilities_response import ListVulnerabilitiesResponse
+from datadog_api_client.v2.model.vulnerability_type import VulnerabilityType
+from datadog_api_client.v2.model.vulnerability_severity import VulnerabilitySeverity
+from datadog_api_client.v2.model.vulnerability_status import VulnerabilityStatus
+from datadog_api_client.v2.model.vulnerability_tool import VulnerabilityTool
+from datadog_api_client.v2.model.vulnerability_ecosystem import VulnerabilityEcosystem
+from datadog_api_client.v2.model.cyclone_dx_bom import CycloneDXBom
+from datadog_api_client.v2.model.list_vulnerable_assets_response import ListVulnerableAssetsResponse
+from datadog_api_client.v2.model.security_monitoring_critical_assets_response import SecurityMonitoringCriticalAssetsResponse
+from datadog_api_client.v2.model.security_monitoring_critical_asset_response import SecurityMonitoringCriticalAssetResponse
+from datadog_api_client.v2.model.security_monitoring_critical_asset_create_request import SecurityMonitoringCriticalAssetCreateRequest
+from datadog_api_client.v2.model.security_monitoring_critical_asset_update_request import SecurityMonitoringCriticalAssetUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_integration_configs_response import SecurityMonitoringIntegrationConfigsResponse
+from datadog_api_client.v2.model.security_monitoring_integration_type import SecurityMonitoringIntegrationType
+from datadog_api_client.v2.model.security_monitoring_integration_config_response import SecurityMonitoringIntegrationConfigResponse
+from datadog_api_client.v2.model.security_monitoring_integration_config_create_request import SecurityMonitoringIntegrationConfigCreateRequest
+from datadog_api_client.v2.model.security_monitoring_entra_id_azure_app_registrations_response import SecurityMonitoringEntraIdAzureAppRegistrationsResponse
+from datadog_api_client.v2.model.security_monitoring_integration_credentials_validate_request import SecurityMonitoringIntegrationCredentialsValidateRequest
+from datadog_api_client.v2.model.security_monitoring_integration_config_update_request import SecurityMonitoringIntegrationConfigUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_integration_activate_request import SecurityMonitoringIntegrationActivateRequest
+from datadog_api_client.v2.model.notification_rule_preview_response import NotificationRulePreviewResponse
+from datadog_api_client.v2.model.security_filters_response import SecurityFiltersResponse
+from datadog_api_client.v2.model.security_filter_response import SecurityFilterResponse
+from datadog_api_client.v2.model.security_filter_create_request import SecurityFilterCreateRequest
+from datadog_api_client.v2.model.security_filter_versions_response import SecurityFilterVersionsResponse
+from datadog_api_client.v2.model.security_filter_update_request import SecurityFilterUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_paginated_suppressions_response import SecurityMonitoringPaginatedSuppressionsResponse
+from datadog_api_client.v2.model.security_monitoring_suppression_sort import SecurityMonitoringSuppressionSort
+from datadog_api_client.v2.model.security_monitoring_suppression_response import SecurityMonitoringSuppressionResponse
+from datadog_api_client.v2.model.security_monitoring_suppression_create_request import SecurityMonitoringSuppressionCreateRequest
+from datadog_api_client.v2.model.security_monitoring_suppressions_response import SecurityMonitoringSuppressionsResponse
+from datadog_api_client.v2.model.security_monitoring_rule_create_payload import SecurityMonitoringRuleCreatePayload
+from datadog_api_client.v2.model.security_monitoring_standard_rule_create_payload import SecurityMonitoringStandardRuleCreatePayload
+from datadog_api_client.v2.model.security_monitoring_signal_rule_create_payload import SecurityMonitoringSignalRuleCreatePayload
+from datadog_api_client.v2.model.cloud_configuration_rule_create_payload import CloudConfigurationRuleCreatePayload
+from datadog_api_client.v2.model.security_monitoring_suppression_update_request import SecurityMonitoringSuppressionUpdateRequest
+from datadog_api_client.v2.model.get_suppression_version_history_response import GetSuppressionVersionHistoryResponse
+from datadog_api_client.v2.model.security_monitoring_content_pack_states_response import SecurityMonitoringContentPackStatesResponse
+from datadog_api_client.v2.model.security_monitoring_datasets_list_response import SecurityMonitoringDatasetsListResponse
+from datadog_api_client.v2.model.security_monitoring_dataset_create_response import SecurityMonitoringDatasetCreateResponse
+from datadog_api_client.v2.model.security_monitoring_dataset_create_request import SecurityMonitoringDatasetCreateRequest
+from datadog_api_client.v2.model.security_monitoring_dataset_dependencies_response import SecurityMonitoringDatasetDependenciesResponse
+from datadog_api_client.v2.model.security_monitoring_dataset_dependencies_request import SecurityMonitoringDatasetDependenciesRequest
+from datadog_api_client.v2.model.security_monitoring_dataset_response import SecurityMonitoringDatasetResponse
+from datadog_api_client.v2.model.security_monitoring_dataset_update_request import SecurityMonitoringDatasetUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_dataset_version_history_response import SecurityMonitoringDatasetVersionHistoryResponse
+from datadog_api_client.v2.model.entity_context_response import EntityContextResponse
+from datadog_api_client.v2.model.single_entity_context_response import SingleEntityContextResponse
+from datadog_api_client.v2.model.security_monitoring_list_rules_response import SecurityMonitoringListRulesResponse
+from datadog_api_client.v2.model.security_monitoring_rule_sort import SecurityMonitoringRuleSort
+from datadog_api_client.v2.model.security_monitoring_rule_response import SecurityMonitoringRuleResponse
+from datadog_api_client.v2.model.security_monitoring_rule_bulk_delete_response import SecurityMonitoringRuleBulkDeleteResponse
+from datadog_api_client.v2.model.security_monitoring_rule_bulk_delete_payload import SecurityMonitoringRuleBulkDeletePayload
+from datadog_api_client.v2.model.security_monitoring_rule_bulk_export_payload import SecurityMonitoringRuleBulkExportPayload
+from datadog_api_client.v2.model.security_monitoring_rule_convert_response import SecurityMonitoringRuleConvertResponse
+from datadog_api_client.v2.model.security_monitoring_rule_convert_payload import SecurityMonitoringRuleConvertPayload
+from datadog_api_client.v2.model.security_monitoring_standard_rule_payload import SecurityMonitoringStandardRulePayload
+from datadog_api_client.v2.model.security_monitoring_signal_rule_payload import SecurityMonitoringSignalRulePayload
+from datadog_api_client.v2.model.security_monitoring_rule_convert_bulk_payload import SecurityMonitoringRuleConvertBulkPayload
+from datadog_api_client.v2.model.security_monitoring_rule_test_response import SecurityMonitoringRuleTestResponse
+from datadog_api_client.v2.model.security_monitoring_rule_test_request import SecurityMonitoringRuleTestRequest
+from datadog_api_client.v2.model.security_monitoring_rule_validate_payload import SecurityMonitoringRuleValidatePayload
+from datadog_api_client.v2.model.cloud_configuration_rule_payload import CloudConfigurationRulePayload
+from datadog_api_client.v2.model.security_monitoring_rule_update_payload import SecurityMonitoringRuleUpdatePayload
+from datadog_api_client.v2.model.get_rule_version_history_response import GetRuleVersionHistoryResponse
+from datadog_api_client.v2.model.sample_log_generation_subscriptions_response import SampleLogGenerationSubscriptionsResponse
+from datadog_api_client.v2.model.sample_log_generation_subscriptions_status_filter import SampleLogGenerationSubscriptionsStatusFilter
+from datadog_api_client.v2.model.sample_log_generation_subscription_response import SampleLogGenerationSubscriptionResponse
+from datadog_api_client.v2.model.sample_log_generation_subscription_create_request import SampleLogGenerationSubscriptionCreateRequest
+from datadog_api_client.v2.model.sample_log_generation_bulk_subscription_response import SampleLogGenerationBulkSubscriptionResponse
+from datadog_api_client.v2.model.sample_log_generation_bulk_subscription_request import SampleLogGenerationBulkSubscriptionRequest
+from datadog_api_client.v2.model.security_monitoring_signals_list_response import SecurityMonitoringSignalsListResponse
+from datadog_api_client.v2.model.security_monitoring_signals_sort import SecurityMonitoringSignalsSort
+from datadog_api_client.v2.model.security_monitoring_signal import SecurityMonitoringSignal
+from datadog_api_client.v2.model.security_monitoring_signals_bulk_triage_update_response import SecurityMonitoringSignalsBulkTriageUpdateResponse
+from datadog_api_client.v2.model.security_monitoring_signals_bulk_assignee_update_request import SecurityMonitoringSignalsBulkAssigneeUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_signals_bulk_state_update_request import SecurityMonitoringSignalsBulkStateUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_signals_bulk_update_request import SecurityMonitoringSignalsBulkUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_signal_list_request import SecurityMonitoringSignalListRequest
+from datadog_api_client.v2.model.security_monitoring_signal_response import SecurityMonitoringSignalResponse
+from datadog_api_client.v2.model.security_monitoring_signal_triage_update_response import SecurityMonitoringSignalTriageUpdateResponse
+from datadog_api_client.v2.model.security_monitoring_signal_assignee_update_request import SecurityMonitoringSignalAssigneeUpdateRequest
+from datadog_api_client.v2.model.signal_entities_response import SignalEntitiesResponse
+from datadog_api_client.v2.model.security_monitoring_signal_incidents_update_request import SecurityMonitoringSignalIncidentsUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_signal_suggested_actions_response import SecurityMonitoringSignalSuggestedActionsResponse
+from datadog_api_client.v2.model.security_monitoring_signal_state_update_request import SecurityMonitoringSignalStateUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_signal_update_request import SecurityMonitoringSignalUpdateRequest
+from datadog_api_client.v2.model.security_monitoring_terraform_resource_type import SecurityMonitoringTerraformResourceType
+from datadog_api_client.v2.model.security_monitoring_terraform_bulk_export_request import SecurityMonitoringTerraformBulkExportRequest
+from datadog_api_client.v2.model.security_monitoring_terraform_export_response import SecurityMonitoringTerraformExportResponse
+from datadog_api_client.v2.model.security_monitoring_terraform_convert_request import SecurityMonitoringTerraformConvertRequest
+from datadog_api_client.v2.model.list_historical_jobs_response import ListHistoricalJobsResponse
+from datadog_api_client.v2.model.job_create_response import JobCreateResponse
+from datadog_api_client.v2.model.run_historical_job_request import RunHistoricalJobRequest
+from datadog_api_client.v2.model.convert_job_results_to_signals_request import ConvertJobResultsToSignalsRequest
+from datadog_api_client.v2.model.historical_job_response import HistoricalJobResponse
+from datadog_api_client.v2.model.sast_rulesets_response import SastRulesetsResponse
+from datadog_api_client.v2.model.default_rulesets_per_language_response import DefaultRulesetsPerLanguageResponse
+from datadog_api_client.v2.model.get_multiple_rulesets_response import GetMultipleRulesetsResponse
+from datadog_api_client.v2.model.get_multiple_rulesets_request import GetMultipleRulesetsRequest
+from datadog_api_client.v2.model.sast_ruleset_response import SastRulesetResponse
+from datadog_api_client.v2.model.secret_rule_array import SecretRuleArray
+from datadog_api_client.v2.model.analysis_response import AnalysisResponse
+from datadog_api_client.v2.model.analysis_request import AnalysisRequest
+from datadog_api_client.v2.model.get_ast_response import GetAstResponse
+from datadog_api_client.v2.model.get_ast_request import GetAstRequest
+from datadog_api_client.v2.model.node_types_response import NodeTypesResponse
+
+
+class SecurityMonitoringApi:
+ """
+ Create and manage your security rules, signals, filters, and more. See the `Datadog Security page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._activate_content_pack_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/content_packs/{content_pack_id}/activate",
+ "operation_id": "activate_content_pack",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "content_pack_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "content_pack_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._activate_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/{integration_type}/activate",
+ "operation_id": "activate_integration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "integration_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_type",
+ "location": "path",
+ },
+ "body": {
+ "openapi_types": (SecurityMonitoringIntegrationActivateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._attach_case_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/cases/{case_id}",
+ "operation_id": "attach_case",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "case_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "case_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AttachCaseRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._attach_jira_issue_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/jira_issues",
+ "operation_id": "attach_jira_issue",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AttachJiraIssueRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._attach_linear_issue_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/linear_issues",
+ "operation_id": "attach_linear_issue",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AttachLinearIssueRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._attach_service_now_ticket_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/servicenow_tickets",
+ "operation_id": "attach_service_now_ticket",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AttachServiceNowTicketRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._batch_get_security_monitoring_dataset_dependencies_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringDatasetDependenciesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets/dependencies",
+ "operation_id": "batch_get_security_monitoring_dataset_dependencies",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringDatasetDependenciesRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_convert_existing_security_monitoring_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/convert/bulk",
+ "operation_id": "bulk_convert_existing_security_monitoring_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleConvertBulkPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/zip", "application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_create_sample_log_generation_subscriptions_endpoint = _Endpoint(
+ settings={
+ "response_type": (SampleLogGenerationBulkSubscriptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/sample_log_generation/subscriptions/bulk",
+ "operation_id": "bulk_create_sample_log_generation_subscriptions",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SampleLogGenerationBulkSubscriptionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_delete_security_monitoring_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleBulkDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/bulk_delete",
+ "operation_id": "bulk_delete_security_monitoring_rules",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleBulkDeletePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_edit_security_monitoring_signals_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsBulkTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/bulk/update",
+ "operation_id": "bulk_edit_security_monitoring_signals",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalsBulkUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_edit_security_monitoring_signals_assignee_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsBulkTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/bulk/assignee",
+ "operation_id": "bulk_edit_security_monitoring_signals_assignee",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalsBulkAssigneeUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_edit_security_monitoring_signals_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsBulkTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/bulk/state",
+ "operation_id": "bulk_edit_security_monitoring_signals_state",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalsBulkStateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_export_security_monitoring_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/bulk_export",
+ "operation_id": "bulk_export_security_monitoring_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleBulkExportPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/zip", "application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._bulk_export_security_monitoring_terraform_resources_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/terraform/{resource_type}/bulk",
+ "operation_id": "bulk_export_security_monitoring_terraform_resources",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "resource_type": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringTerraformResourceType,),
+ "attribute": "resource_type",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringTerraformBulkExportRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/zip", "application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._cancel_historical_job_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs/{job_id}/cancel",
+ "operation_id": "cancel_historical_job",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "job_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "job_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._convert_existing_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleConvertResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}/convert",
+ "operation_id": "convert_existing_security_monitoring_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._convert_job_result_to_signal_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs/signal_convert",
+ "operation_id": "convert_job_result_to_signal",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ConvertJobResultsToSignalsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._convert_security_monitoring_rule_from_json_to_terraform_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleConvertResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/convert",
+ "operation_id": "convert_security_monitoring_rule_from_json_to_terraform",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleConvertPayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._convert_security_monitoring_terraform_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringTerraformExportResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/terraform/{resource_type}/convert",
+ "operation_id": "convert_security_monitoring_terraform_resource",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "resource_type": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringTerraformResourceType,),
+ "attribute": "resource_type",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringTerraformConvertRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_cases_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/cases",
+ "operation_id": "create_cases",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateCaseRequestArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_custom_framework_endpoint = _Endpoint(
+ settings={
+ "response_type": (CreateCustomFrameworkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cloud_security_management/custom_frameworks",
+ "operation_id": "create_custom_framework",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateCustomFrameworkRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_io_c_triage_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (IoCTriageWriteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/siem/ioc-explorer/triage",
+ "operation_id": "create_io_c_triage_state",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (IoCTriageWriteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_jira_issues_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/jira_issues",
+ "operation_id": "create_jira_issues",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateJiraIssueRequestArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_linear_issues_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/linear_issues",
+ "operation_id": "create_linear_issues",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateLinearIssueRequestArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_sample_log_generation_subscription_endpoint = _Endpoint(
+ settings={
+ "response_type": (SampleLogGenerationSubscriptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/sample_log_generation/subscriptions",
+ "operation_id": "create_sample_log_generation_subscription",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SampleLogGenerationSubscriptionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/security_filters",
+ "operation_id": "create_security_filter",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityFilterCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_findings_automation_due_date_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (DueDateRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/due_date_rules",
+ "operation_id": "create_security_findings_automation_due_date_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DueDateRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_findings_automation_mute_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (MuteRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/mute_rules",
+ "operation_id": "create_security_findings_automation_mute_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MuteRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TicketCreationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/ticket_creation_rules",
+ "operation_id": "create_security_findings_automation_ticket_creation_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TicketCreationRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_monitoring_critical_asset_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringCriticalAssetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/critical_assets",
+ "operation_id": "create_security_monitoring_critical_asset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringCriticalAssetCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_monitoring_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringDatasetCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets",
+ "operation_id": "create_security_monitoring_dataset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringDatasetCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_monitoring_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config",
+ "operation_id": "create_security_monitoring_integration_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringIntegrationConfigCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules",
+ "operation_id": "create_security_monitoring_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleCreatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_security_monitoring_suppression_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSuppressionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions",
+ "operation_id": "create_security_monitoring_suppression",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSuppressionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_service_now_tickets_endpoint = _Endpoint(
+ settings={
+ "response_type": (FindingCaseResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/servicenow_tickets",
+ "operation_id": "create_service_now_tickets",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateServiceNowTicketRequestArray,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_signal_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/signals/notification_rules",
+ "operation_id": "create_signal_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateNotificationRuleParameters,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_static_analysis_ast_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetAstResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/static-analysis-server/get-ast",
+ "operation_id": "create_static_analysis_ast",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GetAstRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_static_analysis_server_analysis_endpoint = _Endpoint(
+ settings={
+ "response_type": (AnalysisResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/static-analysis-server/analyze",
+ "operation_id": "create_static_analysis_server_analysis",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AnalysisRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_vulnerability_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerabilities/notification_rules",
+ "operation_id": "create_vulnerability_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateNotificationRuleParameters,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._deactivate_content_pack_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/content_packs/{content_pack_id}/deactivate",
+ "operation_id": "deactivate_content_pack",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "content_pack_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "content_pack_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._deactivate_integration_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/{integration_type}/deactivate",
+ "operation_id": "deactivate_integration",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "integration_type": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_type",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_framework_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeleteCustomFrameworkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}",
+ "operation_id": "delete_custom_framework",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_historical_job_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs/{job_id}",
+ "operation_id": "delete_historical_job",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "job_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "job_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_sample_log_generation_subscription_endpoint = _Endpoint(
+ settings={
+ "response_type": (SampleLogGenerationSubscriptionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/sample_log_generation/subscriptions/{content_pack_id}",
+ "operation_id": "delete_sample_log_generation_subscription",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "content_pack_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "content_pack_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}",
+ "operation_id": "delete_security_filter",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "security_filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "security_filter_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_findings_automation_due_date_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/due_date_rules/{rule_id}",
+ "operation_id": "delete_security_findings_automation_due_date_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_findings_automation_mute_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/mute_rules/{rule_id}",
+ "operation_id": "delete_security_findings_automation_mute_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/ticket_creation_rules/{rule_id}",
+ "operation_id": "delete_security_findings_automation_ticket_creation_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_monitoring_critical_asset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}",
+ "operation_id": "delete_security_monitoring_critical_asset",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "critical_asset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "critical_asset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_monitoring_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets/{dataset_id}",
+ "operation_id": "delete_security_monitoring_dataset",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_monitoring_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/{integration_config_id}",
+ "operation_id": "delete_security_monitoring_integration_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "integration_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}",
+ "operation_id": "delete_security_monitoring_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_security_monitoring_suppression_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/{suppression_id}",
+ "operation_id": "delete_security_monitoring_suppression",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "suppression_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "suppression_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_signal_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/signals/notification_rules/{id}",
+ "operation_id": "delete_signal_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_vulnerability_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerabilities/notification_rules/{id}",
+ "operation_id": "delete_vulnerability_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._detach_case_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/cases",
+ "operation_id": "detach_case",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DetachCaseRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_security_monitoring_signal_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/update",
+ "operation_id": "edit_security_monitoring_signal",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_security_monitoring_signal_assignee_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/assignee",
+ "operation_id": "edit_security_monitoring_signal_assignee",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalAssigneeUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_security_monitoring_signal_incidents_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/incidents",
+ "operation_id": "edit_security_monitoring_signal_incidents",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalIncidentsUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_security_monitoring_signal_state_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalTriageUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/state",
+ "operation_id": "edit_security_monitoring_signal_state",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSignalStateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._export_security_monitoring_terraform_resource_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringTerraformExportResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/terraform/{resource_type}/{resource_id}",
+ "operation_id": "export_security_monitoring_terraform_resource",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "resource_type": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringTerraformResourceType,),
+ "attribute": "resource_type",
+ "location": "path",
+ },
+ "resource_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "resource_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_content_packs_states_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringContentPackStatesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/content_packs/states",
+ "operation_id": "get_content_packs_states",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_critical_assets_affecting_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringCriticalAssetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/critical_assets/rules/{rule_id}",
+ "operation_id": "get_critical_assets_affecting_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_framework_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetCustomFrameworkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}",
+ "operation_id": "get_custom_framework",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_entity_context_endpoint = _Endpoint(
+ settings={
+ "response_type": (EntityContextResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/entity_context",
+ "operation_id": "get_entity_context",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "_from": {
+ "openapi_types": (str,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (str,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "as_of": {
+ "openapi_types": (str,),
+ "attribute": "as_of",
+ "location": "query",
+ },
+ "limit": {
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page_token",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_entra_id_azure_app_registrations_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringEntraIdAzureAppRegistrationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/entra_id/azure_app_registrations",
+ "operation_id": "get_entra_id_azure_app_registrations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_finding_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetFindingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/posture_management/findings/{finding_id}",
+ "operation_id": "get_finding",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "finding_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "finding_id",
+ "location": "path",
+ },
+ "snapshot_timestamp": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "snapshot_timestamp",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_historical_job_endpoint = _Endpoint(
+ settings={
+ "response_type": (HistoricalJobResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs/{job_id}",
+ "operation_id": "get_historical_job",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "job_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "job_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_indicator_of_compromise_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetIoCIndicatorResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/siem/ioc-explorer/indicator",
+ "operation_id": "get_indicator_of_compromise",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "indicator": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "indicator",
+ "location": "query",
+ },
+ "ocsf": {
+ "openapi_types": (bool,),
+ "attribute": "ocsf",
+ "location": "query",
+ },
+ "include_triage_history": {
+ "openapi_types": (bool,),
+ "attribute": "include_triage_history",
+ "location": "query",
+ },
+ "triage_history_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "triage_history_limit",
+ "location": "query",
+ },
+ "triage_history_offset": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "triage_history_offset",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_investigation_log_queries_matching_signal_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalSuggestedActionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/investigation_queries",
+ "operation_id": "get_investigation_log_queries_matching_signal",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_resource_evaluation_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetResourceEvaluationFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cloud_security_management/resource_filters",
+ "operation_id": "get_resource_evaluation_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "cloud_provider": {
+ "openapi_types": (str,),
+ "attribute": "cloud_provider",
+ "location": "query",
+ },
+ "account_id": {
+ "openapi_types": (str,),
+ "attribute": "account_id",
+ "location": "query",
+ },
+ "skip_cache": {
+ "openapi_types": (bool,),
+ "attribute": "skip_cache",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_rule_version_history_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetRuleVersionHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}/version_history",
+ "operation_id": "get_rule_version_history",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_sbom_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetSBOMResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/sboms/{asset_type}",
+ "operation_id": "get_sbom",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "asset_type": {
+ "required": True,
+ "openapi_types": (AssetType,),
+ "attribute": "asset_type",
+ "location": "path",
+ },
+ "filter_asset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[asset_name]",
+ "location": "query",
+ },
+ "filter_repo_digest": {
+ "openapi_types": (str,),
+ "attribute": "filter[repo_digest]",
+ "location": "query",
+ },
+ "ext_format": {
+ "openapi_types": (SBOMFormat,),
+ "attribute": "ext:format",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_secrets_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecretRuleArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/secrets/rules",
+ "operation_id": "get_secrets_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}",
+ "operation_id": "get_security_filter",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "security_filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "security_filter_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_findings_automation_due_date_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (DueDateRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/due_date_rules/{rule_id}",
+ "operation_id": "get_security_findings_automation_due_date_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_findings_automation_mute_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (MuteRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/mute_rules/{rule_id}",
+ "operation_id": "get_security_findings_automation_mute_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TicketCreationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/ticket_creation_rules/{rule_id}",
+ "operation_id": "get_security_findings_automation_ticket_creation_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_critical_asset_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringCriticalAssetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}",
+ "operation_id": "get_security_monitoring_critical_asset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "critical_asset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "critical_asset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringDatasetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets/{dataset_id}",
+ "operation_id": "get_security_monitoring_dataset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_dataset_by_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringDatasetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets/{dataset_id}/version/{version}",
+ "operation_id": "get_security_monitoring_dataset_by_version",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "version",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_dataset_version_history_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringDatasetVersionHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets/{dataset_id}/version_history",
+ "operation_id": "get_security_monitoring_dataset_version_history",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_histsignal_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/histsignals/{histsignal_id}",
+ "operation_id": "get_security_monitoring_histsignal",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "histsignal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "histsignal_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_histsignals_by_job_id_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs/{job_id}/histsignals",
+ "operation_id": "get_security_monitoring_histsignals_by_job_id",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "job_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "job_id",
+ "location": "path",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SecurityMonitoringSignalsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/{integration_config_id}",
+ "operation_id": "get_security_monitoring_integration_config",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "integration_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}",
+ "operation_id": "get_security_monitoring_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_signal_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}",
+ "operation_id": "get_security_monitoring_signal",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_security_monitoring_suppression_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSuppressionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/{suppression_id}",
+ "operation_id": "get_security_monitoring_suppression",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "suppression_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "suppression_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_signal_entities_endpoint = _Endpoint(
+ settings={
+ "response_type": (SignalEntitiesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/entities",
+ "operation_id": "get_signal_entities",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_signal_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/signals/notification_rules/{id}",
+ "operation_id": "get_signal_notification_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_signal_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRulesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/signals/notification_rules",
+ "operation_id": "get_signal_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_single_entity_context_endpoint = _Endpoint(
+ settings={
+ "response_type": (SingleEntityContextResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/entity_context/{id}",
+ "operation_id": "get_single_entity_context",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "_from": {
+ "openapi_types": (str,),
+ "attribute": "from",
+ "location": "query",
+ },
+ "to": {
+ "openapi_types": (str,),
+ "attribute": "to",
+ "location": "query",
+ },
+ "as_of": {
+ "openapi_types": (str,),
+ "attribute": "as_of",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_static_analysis_default_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": (DefaultRulesetsPerLanguageResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/default-rulesets/{language}",
+ "operation_id": "get_static_analysis_default_rulesets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "language": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "language",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_static_analysis_node_types_endpoint = _Endpoint(
+ settings={
+ "response_type": (NodeTypesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/static-analysis-server/node-types/{language}",
+ "operation_id": "get_static_analysis_node_types",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "language": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "language",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_static_analysis_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (SastRulesetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/rulesets/{ruleset_name}",
+ "operation_id": "get_static_analysis_ruleset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "include_tests": {
+ "openapi_types": (bool,),
+ "attribute": "include_tests",
+ "location": "query",
+ },
+ "include_testing_rules": {
+ "openapi_types": (bool,),
+ "attribute": "include_testing_rules",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_static_analysis_tree_sitter_wasm_endpoint = _Endpoint(
+ settings={
+ "response_type": (file_type,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/static-analysis-server/tree-sitter-wasm/{file}",
+ "operation_id": "get_static_analysis_tree_sitter_wasm",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "file": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "file",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/octet-stream", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_suggested_actions_matching_signal_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalSuggestedActionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/{signal_id}/suggested_actions",
+ "operation_id": "get_suggested_actions_matching_signal",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "signal_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "signal_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_suppressions_affecting_future_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSuppressionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/rules",
+ "operation_id": "get_suppressions_affecting_future_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleCreatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_suppressions_affecting_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSuppressionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/rules/{rule_id}",
+ "operation_id": "get_suppressions_affecting_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_suppression_version_history_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetSuppressionVersionHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/{suppression_id}/version_history",
+ "operation_id": "get_suppression_version_history",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "suppression_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "suppression_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_vulnerability_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerabilities/notification_rules/{id}",
+ "operation_id": "get_vulnerability_notification_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_vulnerability_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRulesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerabilities/notification_rules",
+ "operation_id": "get_vulnerability_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._import_security_vulnerabilities_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/vulnerabilities",
+ "operation_id": "import_security_vulnerabilities",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CycloneDXBom,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_assets_sbo_ms_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListAssetsSBOMsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/sboms",
+ "operation_id": "list_assets_sbo_ms",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page[token]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_asset_type": {
+ "openapi_types": (AssetType,),
+ "attribute": "filter[asset_type]",
+ "location": "query",
+ },
+ "filter_asset_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset_name]",
+ "location": "query",
+ },
+ "filter_package_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[package_name]",
+ "location": "query",
+ },
+ "filter_package_version": {
+ "openapi_types": (str,),
+ "attribute": "filter[package_version]",
+ "location": "query",
+ },
+ "filter_license_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[license_name]",
+ "location": "query",
+ },
+ "filter_license_type": {
+ "openapi_types": (SBOMComponentLicenseType,),
+ "attribute": "filter[license_type]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_findings_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListFindingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/posture_management/findings",
+ "operation_id": "list_findings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "snapshot_timestamp": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "snapshot_timestamp",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "filter_tags": {
+ "openapi_types": (str,),
+ "attribute": "filter[tags]",
+ "location": "query",
+ },
+ "filter_evaluation_changed_at": {
+ "openapi_types": (str,),
+ "attribute": "filter[evaluation_changed_at]",
+ "location": "query",
+ },
+ "filter_muted": {
+ "openapi_types": (bool,),
+ "attribute": "filter[muted]",
+ "location": "query",
+ },
+ "filter_rule_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule_id]",
+ "location": "query",
+ },
+ "filter_rule_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[rule_name]",
+ "location": "query",
+ },
+ "filter_resource_type": {
+ "openapi_types": (str,),
+ "attribute": "filter[resource_type]",
+ "location": "query",
+ },
+ "filter_resource_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[@resource_id]",
+ "location": "query",
+ },
+ "filter_discovery_timestamp": {
+ "openapi_types": (str,),
+ "attribute": "filter[discovery_timestamp]",
+ "location": "query",
+ },
+ "filter_evaluation": {
+ "openapi_types": (FindingEvaluation,),
+ "attribute": "filter[evaluation]",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (FindingStatus,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "filter_vulnerability_type": {
+ "openapi_types": ([FindingVulnerabilityType],),
+ "attribute": "filter[vulnerability_type]",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "detailed_findings": {
+ "openapi_types": (bool,),
+ "attribute": "detailed_findings",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_historical_jobs_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListHistoricalJobsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs",
+ "operation_id": "list_historical_jobs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_indicators_of_compromise_endpoint = _Endpoint(
+ settings={
+ "response_type": (IoCExplorerListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/siem/ioc-explorer",
+ "operation_id": "list_indicators_of_compromise",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ "offset": {
+ "validation": {
+ "inclusive_maximum": 2147483647,
+ },
+ "openapi_types": (int,),
+ "attribute": "offset",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "sort_column": {
+ "openapi_types": (str,),
+ "attribute": "sort[column]",
+ "location": "query",
+ },
+ "sort_order": {
+ "openapi_types": (str,),
+ "attribute": "sort[order]",
+ "location": "query",
+ },
+ "ocsf": {
+ "openapi_types": (bool,),
+ "attribute": "ocsf",
+ "location": "query",
+ },
+ "worked_by": {
+ "openapi_types": (str,),
+ "attribute": "worked_by",
+ "location": "query",
+ },
+ "triage_state": {
+ "openapi_types": (IoCTriageState,),
+ "attribute": "triage_state",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_multiple_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": (GetMultipleRulesetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/rulesets",
+ "operation_id": "list_multiple_rulesets",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (GetMultipleRulesetsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_sample_log_generation_subscriptions_endpoint = _Endpoint(
+ settings={
+ "response_type": (SampleLogGenerationSubscriptionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/sample_log_generation/subscriptions",
+ "operation_id": "list_sample_log_generation_subscriptions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "status": {
+ "openapi_types": (SampleLogGenerationSubscriptionsStatusFilter,),
+ "attribute": "status",
+ "location": "query",
+ },
+ "start_timestamp": {
+ "openapi_types": (datetime,),
+ "attribute": "start_timestamp",
+ "location": "query",
+ },
+ "end_timestamp": {
+ "openapi_types": (datetime,),
+ "attribute": "end_timestamp",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_scanned_assets_metadata_endpoint = _Endpoint(
+ settings={
+ "response_type": (ScannedAssetsMetadata,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/scanned-assets-metadata",
+ "operation_id": "list_scanned_assets_metadata",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page[token]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_asset_type": {
+ "openapi_types": (CloudAssetType,),
+ "attribute": "filter[asset.type]",
+ "location": "query",
+ },
+ "filter_asset_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.name]",
+ "location": "query",
+ },
+ "filter_last_success_origin": {
+ "openapi_types": (str,),
+ "attribute": "filter[last_success.origin]",
+ "location": "query",
+ },
+ "filter_last_success_env": {
+ "openapi_types": (str,),
+ "attribute": "filter[last_success.env]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/security_filters",
+ "operation_id": "list_security_filters",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_filter_versions_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityFilterVersionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/security_filters/versions",
+ "operation_id": "list_security_filter_versions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_findings_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListSecurityFindingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings",
+ "operation_id": "list_security_findings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 150,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SecurityFindingsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_findings_automation_due_date_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (DueDateRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/due_date_rules",
+ "operation_id": "list_security_findings_automation_due_date_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_findings_automation_mute_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (MuteRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/mute_rules",
+ "operation_id": "list_security_findings_automation_mute_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_findings_automation_ticket_creation_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (TicketCreationRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/ticket_creation_rules",
+ "operation_id": "list_security_findings_automation_ticket_creation_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_critical_assets_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringCriticalAssetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/critical_assets",
+ "operation_id": "list_security_monitoring_critical_assets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_datasets_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringDatasetsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets",
+ "operation_id": "list_security_monitoring_datasets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_histsignals_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/histsignals",
+ "operation_id": "list_security_monitoring_histsignals",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SecurityMonitoringSignalsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_integration_configs_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringIntegrationConfigsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config",
+ "operation_id": "list_security_monitoring_integration_configs",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_integration_type": {
+ "openapi_types": (SecurityMonitoringIntegrationType,),
+ "attribute": "filter[integration_type]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringListRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules",
+ "operation_id": "list_security_monitoring_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SecurityMonitoringRuleSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_signals_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals",
+ "operation_id": "list_security_monitoring_signals",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SecurityMonitoringSignalsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_security_monitoring_suppressions_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringPaginatedSuppressionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions",
+ "operation_id": "list_security_monitoring_suppressions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SecurityMonitoringSuppressionSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_static_analysis_codegen_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": (SastRulesetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/codegen/rulesets",
+ "operation_id": "list_static_analysis_codegen_rulesets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_vulnerabilities_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListVulnerabilitiesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerabilities",
+ "operation_id": "list_vulnerabilities",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page[token]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_type": {
+ "openapi_types": (VulnerabilityType,),
+ "attribute": "filter[type]",
+ "location": "query",
+ },
+ "filter_cvss_base_score_op": {
+ "validation": {
+ "inclusive_maximum": 10,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (float,),
+ "attribute": "filter[cvss.base.score][`$op`]",
+ "location": "query",
+ },
+ "filter_cvss_base_severity": {
+ "openapi_types": (VulnerabilitySeverity,),
+ "attribute": "filter[cvss.base.severity]",
+ "location": "query",
+ },
+ "filter_cvss_base_vector": {
+ "openapi_types": (str,),
+ "attribute": "filter[cvss.base.vector]",
+ "location": "query",
+ },
+ "filter_cvss_datadog_score_op": {
+ "validation": {
+ "inclusive_maximum": 10,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (float,),
+ "attribute": "filter[cvss.datadog.score][`$op`]",
+ "location": "query",
+ },
+ "filter_cvss_datadog_severity": {
+ "openapi_types": (VulnerabilitySeverity,),
+ "attribute": "filter[cvss.datadog.severity]",
+ "location": "query",
+ },
+ "filter_cvss_datadog_vector": {
+ "openapi_types": (str,),
+ "attribute": "filter[cvss.datadog.vector]",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (VulnerabilityStatus,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "filter_tool": {
+ "openapi_types": (VulnerabilityTool,),
+ "attribute": "filter[tool]",
+ "location": "query",
+ },
+ "filter_library_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[library.name]",
+ "location": "query",
+ },
+ "filter_library_version": {
+ "openapi_types": (str,),
+ "attribute": "filter[library.version]",
+ "location": "query",
+ },
+ "filter_advisory_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[advisory.id]",
+ "location": "query",
+ },
+ "filter_risks_exploitation_probability": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.exploitation_probability]",
+ "location": "query",
+ },
+ "filter_risks_poc_exploit_available": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.poc_exploit_available]",
+ "location": "query",
+ },
+ "filter_risks_exploit_available": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.exploit_available]",
+ "location": "query",
+ },
+ "filter_risks_epss_score_op": {
+ "validation": {
+ "inclusive_maximum": 1,
+ "inclusive_minimum": 0,
+ },
+ "openapi_types": (float,),
+ "attribute": "filter[risks.epss.score][`$op`]",
+ "location": "query",
+ },
+ "filter_risks_epss_severity": {
+ "openapi_types": (VulnerabilitySeverity,),
+ "attribute": "filter[risks.epss.severity]",
+ "location": "query",
+ },
+ "filter_language": {
+ "openapi_types": (str,),
+ "attribute": "filter[language]",
+ "location": "query",
+ },
+ "filter_ecosystem": {
+ "openapi_types": (VulnerabilityEcosystem,),
+ "attribute": "filter[ecosystem]",
+ "location": "query",
+ },
+ "filter_code_location_location": {
+ "openapi_types": (str,),
+ "attribute": "filter[code_location.location]",
+ "location": "query",
+ },
+ "filter_code_location_file_path": {
+ "openapi_types": (str,),
+ "attribute": "filter[code_location.file_path]",
+ "location": "query",
+ },
+ "filter_code_location_method": {
+ "openapi_types": (str,),
+ "attribute": "filter[code_location.method]",
+ "location": "query",
+ },
+ "filter_fix_available": {
+ "openapi_types": (bool,),
+ "attribute": "filter[fix_available]",
+ "location": "query",
+ },
+ "filter_repo_digests": {
+ "openapi_types": (str,),
+ "attribute": "filter[repo_digests]",
+ "location": "query",
+ },
+ "filter_origin": {
+ "openapi_types": (str,),
+ "attribute": "filter[origin]",
+ "location": "query",
+ },
+ "filter_running_kernel": {
+ "openapi_types": (bool,),
+ "attribute": "filter[running_kernel]",
+ "location": "query",
+ },
+ "filter_asset_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.name]",
+ "location": "query",
+ },
+ "filter_asset_type": {
+ "openapi_types": (AssetType,),
+ "attribute": "filter[asset.type]",
+ "location": "query",
+ },
+ "filter_asset_version_first": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.version.first]",
+ "location": "query",
+ },
+ "filter_asset_version_last": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.version.last]",
+ "location": "query",
+ },
+ "filter_asset_repository_url": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.repository_url]",
+ "location": "query",
+ },
+ "filter_asset_risks_in_production": {
+ "openapi_types": (bool,),
+ "attribute": "filter[asset.risks.in_production]",
+ "location": "query",
+ },
+ "filter_asset_risks_under_attack": {
+ "openapi_types": (bool,),
+ "attribute": "filter[asset.risks.under_attack]",
+ "location": "query",
+ },
+ "filter_asset_risks_is_publicly_accessible": {
+ "openapi_types": (bool,),
+ "attribute": "filter[asset.risks.is_publicly_accessible]",
+ "location": "query",
+ },
+ "filter_asset_risks_has_privileged_access": {
+ "openapi_types": (bool,),
+ "attribute": "filter[asset.risks.has_privileged_access]",
+ "location": "query",
+ },
+ "filter_asset_risks_has_access_to_sensitive_data": {
+ "openapi_types": (bool,),
+ "attribute": "filter[asset.risks.has_access_to_sensitive_data]",
+ "location": "query",
+ },
+ "filter_asset_environments": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.environments]",
+ "location": "query",
+ },
+ "filter_asset_teams": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.teams]",
+ "location": "query",
+ },
+ "filter_asset_arch": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.arch]",
+ "location": "query",
+ },
+ "filter_asset_operating_system_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.operating_system.name]",
+ "location": "query",
+ },
+ "filter_asset_operating_system_version": {
+ "openapi_types": (str,),
+ "attribute": "filter[asset.operating_system.version]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_vulnerable_assets_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListVulnerableAssetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerable-assets",
+ "operation_id": "list_vulnerable_assets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_token": {
+ "openapi_types": (str,),
+ "attribute": "page[token]",
+ "location": "query",
+ },
+ "page_number": {
+ "validation": {
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "filter_type": {
+ "openapi_types": (AssetType,),
+ "attribute": "filter[type]",
+ "location": "query",
+ },
+ "filter_version_first": {
+ "openapi_types": (str,),
+ "attribute": "filter[version.first]",
+ "location": "query",
+ },
+ "filter_version_last": {
+ "openapi_types": (str,),
+ "attribute": "filter[version.last]",
+ "location": "query",
+ },
+ "filter_repository_url": {
+ "openapi_types": (str,),
+ "attribute": "filter[repository_url]",
+ "location": "query",
+ },
+ "filter_risks_in_production": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.in_production]",
+ "location": "query",
+ },
+ "filter_risks_under_attack": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.under_attack]",
+ "location": "query",
+ },
+ "filter_risks_is_publicly_accessible": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.is_publicly_accessible]",
+ "location": "query",
+ },
+ "filter_risks_has_privileged_access": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.has_privileged_access]",
+ "location": "query",
+ },
+ "filter_risks_has_access_to_sensitive_data": {
+ "openapi_types": (bool,),
+ "attribute": "filter[risks.has_access_to_sensitive_data]",
+ "location": "query",
+ },
+ "filter_environments": {
+ "openapi_types": (str,),
+ "attribute": "filter[environments]",
+ "location": "query",
+ },
+ "filter_teams": {
+ "openapi_types": (str,),
+ "attribute": "filter[teams]",
+ "location": "query",
+ },
+ "filter_arch": {
+ "openapi_types": (str,),
+ "attribute": "filter[arch]",
+ "location": "query",
+ },
+ "filter_operating_system_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[operating_system.name]",
+ "location": "query",
+ },
+ "filter_operating_system_version": {
+ "openapi_types": (str,),
+ "attribute": "filter[operating_system.version]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._mute_security_findings_endpoint = _Endpoint(
+ settings={
+ "response_type": (MuteFindingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/mute",
+ "operation_id": "mute_security_findings",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MuteFindingsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._patch_signal_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/signals/notification_rules/{id}",
+ "operation_id": "patch_signal_notification_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchNotificationRuleParameters,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._patch_vulnerability_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/vulnerabilities/notification_rules/{id}",
+ "operation_id": "patch_vulnerability_notification_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchNotificationRuleParameters,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_security_findings_automation_due_date_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (DueDateRuleReorderRequest,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/due_date_rules/reorder",
+ "operation_id": "reorder_security_findings_automation_due_date_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DueDateRuleReorderRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_security_findings_automation_mute_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (MuteRuleReorderRequest,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/mute_rules/reorder",
+ "operation_id": "reorder_security_findings_automation_mute_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (MuteRuleReorderRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_security_findings_automation_ticket_creation_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (TicketCreationRuleReorderRequest,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/ticket_creation_rules/reorder",
+ "operation_id": "reorder_security_findings_automation_ticket_creation_rules",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TicketCreationRuleReorderRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._restore_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}/restore/{version}",
+ "operation_id": "restore_security_monitoring_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "version",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._run_historical_job_endpoint = _Endpoint(
+ settings={
+ "response_type": (JobCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/jobs",
+ "operation_id": "run_historical_job",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (RunHistoricalJobRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_security_findings_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListSecurityFindingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/search",
+ "operation_id": "search_security_findings",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityFindingsSearchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_security_monitoring_histsignals_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/siem-historical-detections/histsignals/search",
+ "operation_id": "search_security_monitoring_histsignals",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (SecurityMonitoringSignalListRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_security_monitoring_signals_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSignalsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/signals/search",
+ "operation_id": "search_security_monitoring_signals",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (SecurityMonitoringSignalListRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._send_security_monitoring_notification_preview_endpoint = _Endpoint(
+ settings={
+ "response_type": (NotificationRulePreviewResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/notification_rules/send_notification_preview",
+ "operation_id": "send_security_monitoring_notification_preview",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CreateNotificationRuleParameters,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._test_existing_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleTestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}/test",
+ "operation_id": "test_existing_security_monitoring_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleTestRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._test_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleTestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/test",
+ "operation_id": "test_security_monitoring_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleTestRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_custom_framework_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateCustomFrameworkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}",
+ "operation_id": "update_custom_framework",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "handle": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "handle",
+ "location": "path",
+ },
+ "version": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "version",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateCustomFrameworkRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_findings_assignee_endpoint = _Endpoint(
+ settings={
+ "response_type": (AssigneeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security/findings/assignee",
+ "operation_id": "update_findings_assignee",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AssigneeRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_resource_evaluation_filters_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateResourceEvaluationFiltersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cloud_security_management/resource_filters",
+ "operation_id": "update_resource_evaluation_filters",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateResourceEvaluationFiltersRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_filter_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityFilterResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}",
+ "operation_id": "update_security_filter",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "security_filter_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "security_filter_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityFilterUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_findings_automation_due_date_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (DueDateRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/due_date_rules/{rule_id}",
+ "operation_id": "update_security_findings_automation_due_date_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (DueDateRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_findings_automation_mute_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (MuteRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/mute_rules/{rule_id}",
+ "operation_id": "update_security_findings_automation_mute_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (MuteRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_findings_automation_ticket_creation_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TicketCreationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/security/findings/automation/ticket_creation_rules/{rule_id}",
+ "operation_id": "update_security_findings_automation_ticket_creation_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TicketCreationRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_monitoring_critical_asset_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringCriticalAssetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/critical_assets/{critical_asset_id}",
+ "operation_id": "update_security_monitoring_critical_asset",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "critical_asset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "critical_asset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringCriticalAssetUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_monitoring_dataset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/datasets/{dataset_id}",
+ "operation_id": "update_security_monitoring_dataset",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "dataset_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "dataset_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringDatasetUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_monitoring_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringIntegrationConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/{integration_config_id}",
+ "operation_id": "update_security_monitoring_integration_config",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "integration_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_config_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringIntegrationConfigUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/{rule_id}",
+ "operation_id": "update_security_monitoring_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleUpdatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_security_monitoring_suppression_endpoint = _Endpoint(
+ settings={
+ "response_type": (SecurityMonitoringSuppressionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/{suppression_id}",
+ "operation_id": "update_security_monitoring_suppression",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "suppression_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "suppression_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSuppressionUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_security_monitoring_integration_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/{integration_config_id}/validate",
+ "operation_id": "validate_security_monitoring_integration_config",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "integration_config_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "integration_config_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._validate_security_monitoring_integration_credentials_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/integration_config/validate",
+ "operation_id": "validate_security_monitoring_integration_credentials",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringIntegrationCredentialsValidateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_security_monitoring_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/rules/validation",
+ "operation_id": "validate_security_monitoring_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringRuleValidatePayload,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._validate_security_monitoring_suppression_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/security_monitoring/configuration/suppressions/validation",
+ "operation_id": "validate_security_monitoring_suppression",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SecurityMonitoringSuppressionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def activate_content_pack(self, content_pack_id: str, ) -> None:
+ """Activate content pack.
+
+ Activate a Cloud SIEM content pack. This operation configures the necessary
+ log filters or security filters depending on the pricing model and updates the content
+ pack activation state.
+
+ :param content_pack_id: The ID of the content pack to activate (for example, ``aws-cloudtrail`` ).
+ :type content_pack_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["content_pack_id"] = content_pack_id
+
+ return self._activate_content_pack_endpoint.call_with_http_info(**kwargs)
+
+ def activate_integration(self, integration_type: str, *, body: Union[SecurityMonitoringIntegrationActivateRequest, UnsetType]=unset, ) -> SecurityMonitoringIntegrationConfigResponse:
+ """Activate an entity context sync integration.
+
+ Activate an entity context sync integration for a source type that does not require manually
+ supplied credentials (for example, Entra ID). If an integration of this type already exists,
+ it is returned (re-enabling it first if it was disabled) instead of creating a duplicate.
+
+ :param integration_type: The integration type to activate (for example, ``entra_id`` ).
+ :type integration_type: str
+ :param body: Optional configuration overrides for the integration to activate.
+ :type body: SecurityMonitoringIntegrationActivateRequest, optional
+ :rtype: SecurityMonitoringIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_type"] = integration_type
+
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._activate_integration_endpoint.call_with_http_info(**kwargs)
+
+ def attach_case(self, case_id: str, body: AttachCaseRequest, ) -> FindingCaseResponse:
+ """Attach security findings to a case.
+
+ Attach security findings to a case.
+ You can attach up to 50 security findings per case. Security findings that are already attached to another case will be detached from their previous case and attached to the specified case.
+
+ :param case_id: Unique identifier of the case to attach security findings to
+ :type case_id: str
+ :type body: AttachCaseRequest
+ :rtype: FindingCaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["case_id"] = case_id
+
+ kwargs["body"] = body
+
+ return self._attach_case_endpoint.call_with_http_info(**kwargs)
+
+ def attach_jira_issue(self, body: AttachJiraIssueRequest, ) -> FindingCaseResponse:
+ """Attach security findings to a Jira issue.
+
+ Attach security findings to a Jira issue by providing the Jira issue URL.
+ You can attach up to 50 security findings per Jira issue. If the Jira issue is not linked to any case, this operation will create a case for the security findings and link the Jira issue to the newly created case. To configure the Jira integration, see `Bidirectional ticket syncing with Jira `_. Security findings that are already attached to another Jira issue will be detached from their previous Jira issue and attached to the specified Jira issue.
+
+ :type body: AttachJiraIssueRequest
+ :rtype: FindingCaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._attach_jira_issue_endpoint.call_with_http_info(**kwargs)
+
+ def attach_linear_issue(self, body: AttachLinearIssueRequest, ) -> FindingCaseResponse:
+ """Attach security findings to a Linear issue.
+
+ Attach security findings to a Linear issue by providing the Linear issue URL.
+ You can attach up to 50 security findings per Linear issue. If the Linear issue is not linked to any case, this operation will create a case for the security findings and link the Linear issue to the newly created case. Security findings that are already attached to another Linear issue will be detached from their previous Linear issue and attached to the specified Linear issue.
+
+ :type body: AttachLinearIssueRequest
+ :rtype: FindingCaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._attach_linear_issue_endpoint.call_with_http_info(**kwargs)
+
+ def attach_service_now_ticket(self, body: AttachServiceNowTicketRequest, ) -> FindingCaseResponse:
+ """Attach security findings to a ServiceNow ticket.
+
+ Attach security findings to a ServiceNow ticket by providing the ServiceNow ticket URL.
+ You can attach up to 50 security findings per ServiceNow ticket. If the ServiceNow ticket is not linked to any case, this operation will create a case for the security findings and link the ServiceNow ticket to the newly created case. Security findings that are already attached to another ServiceNow ticket will be detached from their previous ServiceNow ticket and attached to the specified ServiceNow ticket.
+
+ :type body: AttachServiceNowTicketRequest
+ :rtype: FindingCaseResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._attach_service_now_ticket_endpoint.call_with_http_info(**kwargs)
+
+ def batch_get_security_monitoring_dataset_dependencies(self, body: SecurityMonitoringDatasetDependenciesRequest, ) -> SecurityMonitoringDatasetDependenciesResponse:
+ """Get dataset dependencies.
+
+ Return, for each of the requested datasets, the list of detection rules that depend
+ on it. Useful for understanding the impact of updating or deleting a dataset.
+
+ :type body: SecurityMonitoringDatasetDependenciesRequest
+ :rtype: SecurityMonitoringDatasetDependenciesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._batch_get_security_monitoring_dataset_dependencies_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_convert_existing_security_monitoring_rules(self, body: SecurityMonitoringRuleConvertBulkPayload, ) -> file_type:
+ """Bulk convert rules to Terraform.
+
+ Convert a list of existing security monitoring rules to Terraform for the Datadog provider
+ resource ``datadog_security_monitoring_rule``. Returns a ZIP archive containing one Terraform
+ file per rule. You can convert rules for the following types:
+
+ * App and API Protection
+ * Cloud SIEM (log detection and signal correlation)
+ * Workload Protection
+
+ :type body: SecurityMonitoringRuleConvertBulkPayload
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_convert_existing_security_monitoring_rules_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_create_sample_log_generation_subscriptions(self, body: SampleLogGenerationBulkSubscriptionRequest, ) -> SampleLogGenerationBulkSubscriptionResponse:
+ """Bulk subscribe to sample log generation.
+
+ Subscribe to sample log generation for multiple Cloud SIEM content packs in a single call.
+ Each requested content pack is processed independently; the response includes a per-item
+ status so partial successes can be inspected.
+
+ **Availability** : this endpoint is restricted to Cloud SIEM trial organizations on an
+ eligible pricing model. Non-trial orgs receive ``403 Forbidden`` , the feature flag may also reject
+ requests with ``400 Bad Request`` , and legacy pricing tiers receive per-item responses with ``status: not_available``.
+
+ :param body: The content packs to subscribe to and the desired duration of the subscriptions.
+ :type body: SampleLogGenerationBulkSubscriptionRequest
+ :rtype: SampleLogGenerationBulkSubscriptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_create_sample_log_generation_subscriptions_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_delete_security_monitoring_rules(self, body: SecurityMonitoringRuleBulkDeletePayload, ) -> SecurityMonitoringRuleBulkDeleteResponse:
+ """Bulk delete security monitoring rules.
+
+ Delete multiple security monitoring rules in a single request. Default rules cannot be deleted.
+
+ :type body: SecurityMonitoringRuleBulkDeletePayload
+ :rtype: SecurityMonitoringRuleBulkDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_delete_security_monitoring_rules_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_edit_security_monitoring_signals(self, body: SecurityMonitoringSignalsBulkUpdateRequest, ) -> SecurityMonitoringSignalsBulkTriageUpdateResponse:
+ """Bulk update security signals.
+
+ Update the triage state or assignee of multiple security signals at once.
+ The maximum number of signals that can be updated in a single request is 199.
+
+ :param body: Attributes describing the signal updates.
+ :type body: SecurityMonitoringSignalsBulkUpdateRequest
+ :rtype: SecurityMonitoringSignalsBulkTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_edit_security_monitoring_signals_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_edit_security_monitoring_signals_assignee(self, body: SecurityMonitoringSignalsBulkAssigneeUpdateRequest, ) -> SecurityMonitoringSignalsBulkTriageUpdateResponse:
+ """Bulk update triage assignee of security signals.
+
+ Change the triage assignees of multiple security signals at once.
+ The maximum number of signals that can be updated in a single request is 199.
+
+ :param body: Attributes describing the signal assignee updates.
+ :type body: SecurityMonitoringSignalsBulkAssigneeUpdateRequest
+ :rtype: SecurityMonitoringSignalsBulkTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_edit_security_monitoring_signals_assignee_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_edit_security_monitoring_signals_state(self, body: SecurityMonitoringSignalsBulkStateUpdateRequest, ) -> SecurityMonitoringSignalsBulkTriageUpdateResponse:
+ """Bulk update triage state of security signals.
+
+ Change the triage states of multiple security signals at once.
+ The maximum number of signals that can be updated in a single request is 199.
+
+ :param body: Attributes describing the signal state updates.
+ :type body: SecurityMonitoringSignalsBulkStateUpdateRequest
+ :rtype: SecurityMonitoringSignalsBulkTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_edit_security_monitoring_signals_state_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_export_security_monitoring_rules(self, body: SecurityMonitoringRuleBulkExportPayload, ) -> file_type:
+ """Bulk export security monitoring rules.
+
+ Export a list of security monitoring rules as a ZIP file containing JSON rule definitions.
+ The endpoint accepts a list of rule IDs and returns a ZIP archive where each rule is
+ saved as a separate JSON file named after the rule.
+
+ :type body: SecurityMonitoringRuleBulkExportPayload
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._bulk_export_security_monitoring_rules_endpoint.call_with_http_info(**kwargs)
+
+ def bulk_export_security_monitoring_terraform_resources(self, resource_type: SecurityMonitoringTerraformResourceType, body: SecurityMonitoringTerraformBulkExportRequest, ) -> file_type:
+ """Export security monitoring resources to Terraform.
+
+ Export multiple security monitoring resources to Terraform, packaged as a zip archive.
+ The ``resource_type`` path parameter specifies the type of resources to export
+ and must be one of ``suppressions`` , ``critical_assets`` , ``security_filters`` , or ``rules``.
+ A maximum of 1000 resources can be exported in a single request.
+ For ``rules`` , partner rules cannot be exported and return a 400 error.
+
+ :param resource_type: The type of security monitoring resource to export.
+ :type resource_type: SecurityMonitoringTerraformResourceType
+ :param body: The resource IDs to export.
+ :type body: SecurityMonitoringTerraformBulkExportRequest
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_type"] = resource_type
+
+ kwargs["body"] = body
+
+ return self._bulk_export_security_monitoring_terraform_resources_endpoint.call_with_http_info(**kwargs)
+
+ def cancel_historical_job(self, job_id: str, ) -> None:
+ """Cancel a historical job.
+
+ Cancel a historical job.
+
+ :param job_id: The ID of the job.
+ :type job_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["job_id"] = job_id
+
+ return self._cancel_historical_job_endpoint.call_with_http_info(**kwargs)
+
+ def convert_existing_security_monitoring_rule(self, rule_id: str, ) -> SecurityMonitoringRuleConvertResponse:
+ """Convert an existing rule from JSON to Terraform.
+
+ Convert an existing rule from JSON to Terraform for Datadog provider
+ resource ``datadog_security_monitoring_rule``. You can do so for the following rule types:
+
+ * App and API Protection
+ * Cloud SIEM (log detection and signal correlation)
+ * Workload Protection
+
+ You can convert Cloud Security configuration rules using Terraform's `Datadog Cloud Configuration Rule resource `_.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :rtype: SecurityMonitoringRuleConvertResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._convert_existing_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def convert_job_result_to_signal(self, body: ConvertJobResultsToSignalsRequest, ) -> None:
+ """Convert a job result to a signal.
+
+ Convert a job result to a signal.
+
+ :type body: ConvertJobResultsToSignalsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._convert_job_result_to_signal_endpoint.call_with_http_info(**kwargs)
+
+ def convert_security_monitoring_rule_from_json_to_terraform(self, body: Union[SecurityMonitoringRuleConvertPayload, SecurityMonitoringStandardRulePayload, SecurityMonitoringSignalRulePayload], ) -> SecurityMonitoringRuleConvertResponse:
+ """Convert a rule from JSON to Terraform.
+
+ Convert a rule that doesn't (yet) exist from JSON to Terraform for Datadog provider
+ resource ``datadog_security_monitoring_rule``. You can do so for the following rule types:
+
+ * App and API Protection
+ * Cloud SIEM (log detection and signal correlation)
+ * Workload Protection
+
+ You can convert Cloud Security configuration rules using Terraform's `Datadog Cloud Configuration Rule resource `_.
+
+ :type body: SecurityMonitoringRuleConvertPayload
+ :rtype: SecurityMonitoringRuleConvertResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._convert_security_monitoring_rule_from_json_to_terraform_endpoint.call_with_http_info(**kwargs)
+
+ def convert_security_monitoring_terraform_resource(self, resource_type: SecurityMonitoringTerraformResourceType, body: SecurityMonitoringTerraformConvertRequest, ) -> SecurityMonitoringTerraformExportResponse:
+ """Convert security monitoring resource to Terraform.
+
+ Convert a security monitoring resource that doesn't (yet) exist from JSON to Terraform.
+ The ``resource_type`` path parameter specifies the type of resource to convert
+ and must be one of ``suppressions`` , ``critical_assets`` , ``security_filters`` , or ``rules``.
+
+ :param resource_type: The type of security monitoring resource to export.
+ :type resource_type: SecurityMonitoringTerraformResourceType
+ :param body: The resource JSON to convert.
+ :type body: SecurityMonitoringTerraformConvertRequest
+ :rtype: SecurityMonitoringTerraformExportResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_type"] = resource_type
+
+ kwargs["body"] = body
+
+ return self._convert_security_monitoring_terraform_resource_endpoint.call_with_http_info(**kwargs)
+
+ def create_cases(self, body: CreateCaseRequestArray, ) -> FindingCaseResponseArray:
+ """Create cases for security findings.
+
+ Create cases for security findings.
+ You can create up to 50 cases per request and associate up to 50 security findings per case. Security findings that are already attached to another case will be detached from their previous case and attached to the newly created case.
+
+ :type body: CreateCaseRequestArray
+ :rtype: FindingCaseResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_cases_endpoint.call_with_http_info(**kwargs)
+
+ def create_custom_framework(self, body: CreateCustomFrameworkRequest, ) -> CreateCustomFrameworkResponse:
+ """Create a custom framework.
+
+ Create a custom framework.
+
+ :type body: CreateCustomFrameworkRequest
+ :rtype: CreateCustomFrameworkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_custom_framework_endpoint.call_with_http_info(**kwargs)
+
+ def create_io_c_triage_state(self, body: IoCTriageWriteRequest, ) -> IoCTriageWriteResponse:
+ """Create or update an indicator triage state.
+
+ Set the triage state of an indicator of compromise (IoC). This creates or
+ updates the triage state for the indicator in your organization.
+
+ :param body: The triage state to set for the indicator.
+ :type body: IoCTriageWriteRequest
+ :rtype: IoCTriageWriteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_io_c_triage_state_endpoint.call_with_http_info(**kwargs)
+
+ def create_jira_issues(self, body: CreateJiraIssueRequestArray, ) -> FindingCaseResponseArray:
+ """Create Jira issues for security findings.
+
+ Create Jira issues for security findings.
+ This operation creates a case in Datadog and a Jira issue linked to that case for bidirectional sync between Datadog and Jira. To configure the Jira integration, see `Bidirectional ticket syncing with Jira `_. You can create up to 50 Jira issues per request and associate up to 50 security findings per Jira issue. Security findings that are already attached to another Jira issue will be detached from their previous Jira issue and attached to the newly created Jira issue.
+
+ :type body: CreateJiraIssueRequestArray
+ :rtype: FindingCaseResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_jira_issues_endpoint.call_with_http_info(**kwargs)
+
+ def create_linear_issues(self, body: CreateLinearIssueRequestArray, ) -> FindingCaseResponseArray:
+ """Create Linear issues for security findings.
+
+ Create Linear issues for security findings.
+ This operation creates a case in Datadog and a Linear issue linked to that case for bidirectional sync between Datadog and Linear. You can create up to 50 Linear issues per request and associate up to 50 security findings per Linear issue. Security findings that are already attached to another Linear issue will be detached from their previous Linear issue and attached to the newly created Linear issue.
+
+ :type body: CreateLinearIssueRequestArray
+ :rtype: FindingCaseResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_linear_issues_endpoint.call_with_http_info(**kwargs)
+
+ def create_sample_log_generation_subscription(self, body: SampleLogGenerationSubscriptionCreateRequest, ) -> SampleLogGenerationSubscriptionResponse:
+ """Subscribe to sample log generation.
+
+ Subscribe to sample log generation for a Cloud SIEM content pack. Sample logs for the
+ requested content pack are injected into the Logs platform for the duration of the subscription,
+ so detection rules can be exercised without onboarding the underlying integration first.
+
+ **Availability** : this endpoint is restricted to Cloud SIEM trial organizations on an
+ eligible pricing model. Non-trial orgs receive ``403 Forbidden`` , the feature flag may also reject
+ requests with ``400 Bad Request`` , and legacy pricing tiers receive a response with ``status: not_available``.
+
+ :param body: The content pack to subscribe to and the desired duration of the subscription.
+ :type body: SampleLogGenerationSubscriptionCreateRequest
+ :rtype: SampleLogGenerationSubscriptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_sample_log_generation_subscription_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_filter(self, body: SecurityFilterCreateRequest, ) -> SecurityFilterResponse:
+ """Create a security filter.
+
+ Create a security filter.
+
+ See the `security filter guide `_
+ for more examples.
+
+ :param body: The definition of the new security filter.
+ :type body: SecurityFilterCreateRequest
+ :rtype: SecurityFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_filter_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_findings_automation_due_date_rule(self, body: DueDateRuleCreateRequest, ) -> DueDateRuleResponse:
+ """Create a due date rule.
+
+ Create a new due date rule for the current organization.
+
+ :type body: DueDateRuleCreateRequest
+ :rtype: DueDateRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_findings_automation_due_date_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_findings_automation_mute_rule(self, body: MuteRuleCreateRequest, ) -> MuteRuleResponse:
+ """Create a mute rule.
+
+ Create a new mute rule for the current organization.
+
+ :type body: MuteRuleCreateRequest
+ :rtype: MuteRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_findings_automation_ticket_creation_rule(self, body: TicketCreationRuleCreateRequest, ) -> TicketCreationRuleResponse:
+ """Create a ticket creation rule.
+
+ Create a new ticket creation rule for the current organization.
+
+ :type body: TicketCreationRuleCreateRequest
+ :rtype: TicketCreationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_findings_automation_ticket_creation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_monitoring_critical_asset(self, body: SecurityMonitoringCriticalAssetCreateRequest, ) -> SecurityMonitoringCriticalAssetResponse:
+ """Create a critical asset.
+
+ Create a new critical asset.
+
+ :param body: The definition of the new critical asset.
+ :type body: SecurityMonitoringCriticalAssetCreateRequest
+ :rtype: SecurityMonitoringCriticalAssetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_monitoring_critical_asset_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_monitoring_dataset(self, body: SecurityMonitoringDatasetCreateRequest, ) -> SecurityMonitoringDatasetCreateResponse:
+ """Create a dataset.
+
+ Create a new Cloud SIEM dataset. A dataset bundles a data source, a set of
+ indexes, and a search query that can be referenced from detection rules.
+
+ :type body: SecurityMonitoringDatasetCreateRequest
+ :rtype: SecurityMonitoringDatasetCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_monitoring_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_monitoring_integration_config(self, body: SecurityMonitoringIntegrationConfigCreateRequest, ) -> SecurityMonitoringIntegrationConfigResponse:
+ """Create an entity context sync configuration.
+
+ Create a new entity context sync configuration so Cloud SIEM can ingest entities from an external
+ source. The credentials provided in ``secrets`` are validated against the source before the configuration
+ is stored and never returned in subsequent responses.
+
+ :param body: The definition of the new integration configuration.
+ :type body: SecurityMonitoringIntegrationConfigCreateRequest
+ :rtype: SecurityMonitoringIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_monitoring_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_monitoring_rule(self, body: Union[SecurityMonitoringRuleCreatePayload, SecurityMonitoringStandardRuleCreatePayload, SecurityMonitoringSignalRuleCreatePayload, CloudConfigurationRuleCreatePayload], ) -> SecurityMonitoringRuleResponse:
+ """Create a detection rule.
+
+ Create a detection rule.
+
+ :type body: SecurityMonitoringRuleCreatePayload
+ :rtype: SecurityMonitoringRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_security_monitoring_suppression(self, body: SecurityMonitoringSuppressionCreateRequest, ) -> SecurityMonitoringSuppressionResponse:
+ """Create a suppression rule.
+
+ Create a new suppression rule.
+
+ :param body: The definition of the new suppression rule.
+ :type body: SecurityMonitoringSuppressionCreateRequest
+ :rtype: SecurityMonitoringSuppressionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_security_monitoring_suppression_endpoint.call_with_http_info(**kwargs)
+
+ def create_service_now_tickets(self, body: CreateServiceNowTicketRequestArray, ) -> FindingCaseResponseArray:
+ """Create ServiceNow tickets for security findings.
+
+ Create ServiceNow tickets for security findings.
+ This operation creates a case in Datadog and a ServiceNow ticket linked to that case for bidirectional sync between Datadog and ServiceNow. You can create up to 50 ServiceNow tickets per request and associate up to 50 security findings per ServiceNow ticket. Security findings that are already attached to another ServiceNow ticket will be detached from their previous ServiceNow ticket and attached to the newly created ServiceNow ticket.
+
+ :type body: CreateServiceNowTicketRequestArray
+ :rtype: FindingCaseResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_service_now_tickets_endpoint.call_with_http_info(**kwargs)
+
+ def create_signal_notification_rule(self, body: CreateNotificationRuleParameters, ) -> NotificationRuleResponse:
+ """Create a new signal-based notification rule.
+
+ Create a new notification rule for security signals and return the created rule.
+
+ :param body: The body of the create notification rule request is composed of the rule type and the rule attributes:
+ the rule name, the selectors, the notification targets, and the rule enabled status.
+ :type body: CreateNotificationRuleParameters
+ :rtype: NotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_signal_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_static_analysis_ast(self, body: GetAstRequest, ) -> GetAstResponse:
+ """Get AST for source code.
+
+ Parse source code into an abstract syntax tree (AST) for the specified language.
+
+ :type body: GetAstRequest
+ :rtype: GetAstResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_static_analysis_ast_endpoint.call_with_http_info(**kwargs)
+
+ def create_static_analysis_server_analysis(self, body: AnalysisRequest, ) -> AnalysisResponse:
+ """Analyze code.
+
+ Run static analysis rules against a source code file and return violations found.
+
+ :type body: AnalysisRequest
+ :rtype: AnalysisResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_static_analysis_server_analysis_endpoint.call_with_http_info(**kwargs)
+
+ def create_vulnerability_notification_rule(self, body: CreateNotificationRuleParameters, ) -> NotificationRuleResponse:
+ """Create a new vulnerability-based notification rule.
+
+ Create a new notification rule for security vulnerabilities and return the created rule.
+
+ :param body: The body of the create notification rule request is composed of the rule type and the rule attributes:
+ the rule name, the selectors, the notification targets, and the rule enabled status.
+ :type body: CreateNotificationRuleParameters
+ :rtype: NotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_vulnerability_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def deactivate_content_pack(self, content_pack_id: str, ) -> None:
+ """Deactivate content pack.
+
+ Deactivate a Cloud SIEM content pack. This operation removes the content pack's
+ configuration from log filters or security filters and updates the content pack activation state.
+
+ :param content_pack_id: The ID of the content pack to deactivate (for example, ``aws-cloudtrail`` ).
+ :type content_pack_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["content_pack_id"] = content_pack_id
+
+ return self._deactivate_content_pack_endpoint.call_with_http_info(**kwargs)
+
+ def deactivate_integration(self, integration_type: str, ) -> SecurityMonitoringIntegrationConfigResponse:
+ """Deactivate an entity context sync integration.
+
+ Deactivate all active entity context sync integrations of the given source type (for example, Entra ID).
+
+ :param integration_type: The integration type to deactivate (for example, ``entra_id`` ).
+ :type integration_type: str
+ :rtype: SecurityMonitoringIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_type"] = integration_type
+
+ return self._deactivate_integration_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_framework(self, handle: str, version: str, ) -> DeleteCustomFrameworkResponse:
+ """Delete a custom framework.
+
+ Delete a custom framework.
+
+ :param handle: The framework handle
+ :type handle: str
+ :param version: The framework version
+ :type version: str
+ :rtype: DeleteCustomFrameworkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle"] = handle
+
+ kwargs["version"] = version
+
+ return self._delete_custom_framework_endpoint.call_with_http_info(**kwargs)
+
+ def delete_historical_job(self, job_id: str, ) -> None:
+ """Delete an existing job.
+
+ Delete an existing job.
+
+ :param job_id: The ID of the job.
+ :type job_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["job_id"] = job_id
+
+ return self._delete_historical_job_endpoint.call_with_http_info(**kwargs)
+
+ def delete_sample_log_generation_subscription(self, content_pack_id: str, ) -> SampleLogGenerationSubscriptionResponse:
+ """Unsubscribe from sample log generation.
+
+ Unsubscribe from sample log generation for a Cloud SIEM content pack.
+ After unsubscribing, no more sample logs are generated for the requested content pack.
+
+ **Availability** : this endpoint is restricted to Cloud SIEM trial organizations on an
+ eligible pricing model. Non-trial orgs receive ``403 Forbidden`` , the feature flag may also reject
+ requests with ``400 Bad Request`` , and legacy pricing tiers receive a response with ``status: not_available``.
+
+ :param content_pack_id: The identifier of the Cloud SIEM content pack to operate on (for example, ``aws-cloudtrail`` ).
+ :type content_pack_id: str
+ :rtype: SampleLogGenerationSubscriptionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["content_pack_id"] = content_pack_id
+
+ return self._delete_sample_log_generation_subscription_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_filter(self, security_filter_id: str, ) -> None:
+ """Delete a security filter.
+
+ Delete a specific security filter.
+
+ :param security_filter_id: The ID of the security filter.
+ :type security_filter_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["security_filter_id"] = security_filter_id
+
+ return self._delete_security_filter_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_findings_automation_due_date_rule(self, rule_id: UUID, ) -> None:
+ """Delete a due date rule.
+
+ Delete an existing due date rule by ID.
+
+ :param rule_id: The ID of the due date rule.
+ :type rule_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_security_findings_automation_due_date_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_findings_automation_mute_rule(self, rule_id: UUID, ) -> None:
+ """Delete a mute rule.
+
+ Delete an existing mute rule by ID.
+
+ :param rule_id: The ID of the mute rule.
+ :type rule_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_findings_automation_ticket_creation_rule(self, rule_id: UUID, ) -> None:
+ """Delete a ticket creation rule.
+
+ Delete an existing ticket creation rule by ID.
+
+ :param rule_id: The ID of the ticket creation rule.
+ :type rule_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_security_findings_automation_ticket_creation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_monitoring_critical_asset(self, critical_asset_id: str, ) -> None:
+ """Delete a critical asset.
+
+ Delete a specific critical asset.
+
+ :param critical_asset_id: The ID of the critical asset.
+ :type critical_asset_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["critical_asset_id"] = critical_asset_id
+
+ return self._delete_security_monitoring_critical_asset_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_monitoring_dataset(self, dataset_id: str, ) -> None:
+ """Delete a dataset.
+
+ Delete a Cloud SIEM dataset. Out-of-the-box datasets cannot be deleted and
+ deleting a dataset that is referenced by a detection rule is rejected.
+
+ :param dataset_id: The UUID of the dataset.
+ :type dataset_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ return self._delete_security_monitoring_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_monitoring_integration_config(self, integration_config_id: str, ) -> None:
+ """Delete an entity context sync configuration.
+
+ Delete an entity context sync configuration. Cloud SIEM stops ingesting entities from this source,
+ and the credentials stored for the configuration are removed from the secrets store.
+
+ :param integration_config_id: The ID of the entity context sync configuration.
+ :type integration_config_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_config_id"] = integration_config_id
+
+ return self._delete_security_monitoring_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_monitoring_rule(self, rule_id: str, ) -> None:
+ """Delete an existing rule.
+
+ Delete an existing rule. Default rules cannot be deleted.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_security_monitoring_suppression(self, suppression_id: str, ) -> None:
+ """Delete a suppression rule.
+
+ Delete a specific suppression rule.
+
+ :param suppression_id: The ID of the suppression rule
+ :type suppression_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["suppression_id"] = suppression_id
+
+ return self._delete_security_monitoring_suppression_endpoint.call_with_http_info(**kwargs)
+
+ def delete_signal_notification_rule(self, id: str, ) -> None:
+ """Delete a signal-based notification rule.
+
+ Delete a notification rule for security signals.
+
+ :param id: ID of the notification rule.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_signal_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_vulnerability_notification_rule(self, id: str, ) -> None:
+ """Delete a vulnerability-based notification rule.
+
+ Delete a notification rule for security vulnerabilities.
+
+ :param id: ID of the notification rule.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_vulnerability_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def detach_case(self, body: DetachCaseRequest, ) -> None:
+ """Detach security findings from their case.
+
+ Detach security findings from their case.
+ This operation dissociates security findings from their associated cases without deleting the cases themselves. You can detach security findings from multiple different cases in a single request, with a limit of 50 security findings per request. Security findings that are not currently attached to any case will be ignored.
+
+ :type body: DetachCaseRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._detach_case_endpoint.call_with_http_info(**kwargs)
+
+ def edit_security_monitoring_signal(self, signal_id: str, body: SecurityMonitoringSignalUpdateRequest, ) -> SecurityMonitoringSignalTriageUpdateResponse:
+ """Update security signal triage state or assignee.
+
+ Update the triage state or assignee of a security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal triage state or assignee update.
+ :type body: SecurityMonitoringSignalUpdateRequest
+ :rtype: SecurityMonitoringSignalTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ return self._edit_security_monitoring_signal_endpoint.call_with_http_info(**kwargs)
+
+ def edit_security_monitoring_signal_assignee(self, signal_id: str, body: SecurityMonitoringSignalAssigneeUpdateRequest, ) -> SecurityMonitoringSignalTriageUpdateResponse:
+ """Modify the triage assignee of a security signal.
+
+ Modify the triage assignee of a security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal update.
+ :type body: SecurityMonitoringSignalAssigneeUpdateRequest
+ :rtype: SecurityMonitoringSignalTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ return self._edit_security_monitoring_signal_assignee_endpoint.call_with_http_info(**kwargs)
+
+ def edit_security_monitoring_signal_incidents(self, signal_id: str, body: SecurityMonitoringSignalIncidentsUpdateRequest, ) -> SecurityMonitoringSignalTriageUpdateResponse:
+ """Change the related incidents of a security signal.
+
+ Change the related incidents for a security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal update.
+ :type body: SecurityMonitoringSignalIncidentsUpdateRequest
+ :rtype: SecurityMonitoringSignalTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ return self._edit_security_monitoring_signal_incidents_endpoint.call_with_http_info(**kwargs)
+
+ def edit_security_monitoring_signal_state(self, signal_id: str, body: SecurityMonitoringSignalStateUpdateRequest, ) -> SecurityMonitoringSignalTriageUpdateResponse:
+ """Change the triage state of a security signal.
+
+ Change the triage state of a security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param body: Attributes describing the signal update.
+ :type body: SecurityMonitoringSignalStateUpdateRequest
+ :rtype: SecurityMonitoringSignalTriageUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ kwargs["body"] = body
+
+ return self._edit_security_monitoring_signal_state_endpoint.call_with_http_info(**kwargs)
+
+ def export_security_monitoring_terraform_resource(self, resource_type: SecurityMonitoringTerraformResourceType, resource_id: str, ) -> SecurityMonitoringTerraformExportResponse:
+ """Export security monitoring resource to Terraform.
+
+ Export a security monitoring resource to a Terraform configuration.
+ The ``resource_type`` path parameter specifies the type of resource to export
+ and must be one of ``suppressions`` , ``critical_assets`` , ``security_filters`` , or ``rules``.
+ For ``rules`` , partner rules cannot be exported and return a 400 error.
+
+ :param resource_type: The type of security monitoring resource to export.
+ :type resource_type: SecurityMonitoringTerraformResourceType
+ :param resource_id: The ID of the security monitoring resource to export.
+ :type resource_id: str
+ :rtype: SecurityMonitoringTerraformExportResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["resource_type"] = resource_type
+
+ kwargs["resource_id"] = resource_id
+
+ return self._export_security_monitoring_terraform_resource_endpoint.call_with_http_info(**kwargs)
+
+ def get_content_packs_states(self, ) -> SecurityMonitoringContentPackStatesResponse:
+ """Get content pack states.
+
+ Get the activation state, integration status, and log collection status
+ for all Cloud SIEM content packs.
+
+ :rtype: SecurityMonitoringContentPackStatesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_content_packs_states_endpoint.call_with_http_info(**kwargs)
+
+ def get_critical_assets_affecting_rule(self, rule_id: str, ) -> SecurityMonitoringCriticalAssetsResponse:
+ """Get critical assets affecting a specific rule.
+
+ Get the list of critical assets that affect a specific existing rule by the rule's ID.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :rtype: SecurityMonitoringCriticalAssetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_critical_assets_affecting_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_framework(self, handle: str, version: str, ) -> GetCustomFrameworkResponse:
+ """Get a custom framework.
+
+ Get a custom framework.
+
+ :param handle: The framework handle
+ :type handle: str
+ :param version: The framework version
+ :type version: str
+ :rtype: GetCustomFrameworkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle"] = handle
+
+ kwargs["version"] = version
+
+ return self._get_custom_framework_endpoint.call_with_http_info(**kwargs)
+
+ def get_entity_context(self, *, query: Union[str, UnsetType]=unset, _from: Union[str, UnsetType]=unset, to: Union[str, UnsetType]=unset, as_of: Union[str, UnsetType]=unset, limit: Union[int, UnsetType]=unset, page_token: Union[str, UnsetType]=unset, ) -> EntityContextResponse:
+ """Get entity context.
+
+ Search the Cloud SIEM entity context store for entities that match a query, and return the historical
+ revisions of each entity in the requested time range. The endpoint can either return revisions across an
+ interval ( ``from`` / ``to`` ) or the snapshot of each entity at a single point in time ( ``as_of`` ); the two modes
+ are mutually exclusive.
+
+ :param query: A free-text query (for example, an email address or principal ID) used to filter the entities returned.
+ :type query: str, optional
+ :param _from: The start of the time range to query, as an RFC3339 timestamp or a relative time (for example, ``now-7d`` ).
+ Defaults to ``now-7d``. Ignored when ``as_of`` is set.
+ :type _from: str, optional
+ :param to: The end of the time range to query, as an RFC3339 timestamp or a relative time (for example, ``now`` ).
+ Defaults to ``now``. Ignored when ``as_of`` is set.
+ :type to: str, optional
+ :param as_of: A point in time at which to query the entity revisions, as an RFC3339 timestamp, a Unix timestamp
+ (in seconds), or a relative time (for example, ``now-1d`` ). When set, ``from`` and ``to`` are ignored.
+ Cannot be combined with custom ``from`` / ``to`` values.
+ :type as_of: str, optional
+ :param limit: The maximum number of entities to return.
+ :type limit: int, optional
+ :param page_token: An opaque token used to fetch the next page of results, as returned in ``meta.page.next_token`` of a previous response.
+ :type page_token: str, optional
+ :rtype: EntityContextResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if as_of is not unset:
+ kwargs["as_of"] = as_of
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ return self._get_entity_context_endpoint.call_with_http_info(**kwargs)
+
+ def get_entra_id_azure_app_registrations(self, ) -> SecurityMonitoringEntraIdAzureAppRegistrationsResponse:
+ """Get Entra ID Azure App Registration prerequisites.
+
+ Get the Azure App Registrations discovered for the organization and whether at least one of them has
+ resource collection enabled, which is a prerequisite for activating the Entra ID entity context sync integration.
+
+ :rtype: SecurityMonitoringEntraIdAzureAppRegistrationsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_entra_id_azure_app_registrations_endpoint.call_with_http_info(**kwargs)
+
+ def get_finding(self, finding_id: str, *, snapshot_timestamp: Union[int, UnsetType]=unset, ) -> GetFindingResponse:
+ """Get a finding.
+
+ Returns a single finding with message and resource configuration.
+
+ :param finding_id: The ID of the finding.
+ :type finding_id: str
+ :param snapshot_timestamp: Return the finding for a given snapshot of time (Unix ms).
+ :type snapshot_timestamp: int, optional
+ :rtype: GetFindingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["finding_id"] = finding_id
+
+ if snapshot_timestamp is not unset:
+ kwargs["snapshot_timestamp"] = snapshot_timestamp
+
+ return self._get_finding_endpoint.call_with_http_info(**kwargs)
+
+ def get_historical_job(self, job_id: str, ) -> HistoricalJobResponse:
+ """Get a job's details.
+
+ Get a job's details.
+
+ :param job_id: The ID of the job.
+ :type job_id: str
+ :rtype: HistoricalJobResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["job_id"] = job_id
+
+ return self._get_historical_job_endpoint.call_with_http_info(**kwargs)
+
+ def get_indicator_of_compromise(self, indicator: str, *, ocsf: Union[bool, UnsetType]=unset, include_triage_history: Union[bool, UnsetType]=unset, triage_history_limit: Union[int, UnsetType]=unset, triage_history_offset: Union[int, UnsetType]=unset, ) -> GetIoCIndicatorResponse:
+ """Get an indicator of compromise.
+
+ Get detailed information about a specific indicator of compromise (IoC).
+
+ :param indicator: The indicator value to look up (for example, an IP address or domain).
+ :type indicator: str
+ :param ocsf: When true, return only OCSF field-based matches. When false, return regex/message-based matches.
+ :type ocsf: bool, optional
+ :param include_triage_history: Include full triage history for the indicator.
+ :type include_triage_history: bool, optional
+ :param triage_history_limit: Maximum number of triage history events returned. Only applied when ``include_triage_history`` is true.
+ :type triage_history_limit: int, optional
+ :param triage_history_offset: Pagination offset into the triage history. Only applied when ``include_triage_history`` is true.
+ :type triage_history_offset: int, optional
+ :rtype: GetIoCIndicatorResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["indicator"] = indicator
+
+ if ocsf is not unset:
+ kwargs["ocsf"] = ocsf
+
+ if include_triage_history is not unset:
+ kwargs["include_triage_history"] = include_triage_history
+
+ if triage_history_limit is not unset:
+ kwargs["triage_history_limit"] = triage_history_limit
+
+ if triage_history_offset is not unset:
+ kwargs["triage_history_offset"] = triage_history_offset
+
+ return self._get_indicator_of_compromise_endpoint.call_with_http_info(**kwargs)
+
+ def get_investigation_log_queries_matching_signal(self, signal_id: str, ) -> SecurityMonitoringSignalSuggestedActionsResponse:
+ """Get investigation queries for a signal.
+
+ Get the list of investigation log queries available for a given security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :rtype: SecurityMonitoringSignalSuggestedActionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ return self._get_investigation_log_queries_matching_signal_endpoint.call_with_http_info(**kwargs)
+
+ def get_resource_evaluation_filters(self, *, cloud_provider: Union[str, UnsetType]=unset, account_id: Union[str, UnsetType]=unset, skip_cache: Union[bool, UnsetType]=unset, ) -> GetResourceEvaluationFiltersResponse:
+ """List resource filters.
+
+ List resource filters.
+
+ :param cloud_provider: Filter resource filters by cloud provider (e.g. aws, gcp, azure).
+ :type cloud_provider: str, optional
+ :param account_id: Filter resource filters by cloud provider account ID. This parameter is only valid when provider is specified.
+ :type account_id: str, optional
+ :param skip_cache: Skip cache for resource filters.
+ :type skip_cache: bool, optional
+ :rtype: GetResourceEvaluationFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if cloud_provider is not unset:
+ kwargs["cloud_provider"] = cloud_provider
+
+ if account_id is not unset:
+ kwargs["account_id"] = account_id
+
+ if skip_cache is not unset:
+ kwargs["skip_cache"] = skip_cache
+
+ return self._get_resource_evaluation_filters_endpoint.call_with_http_info(**kwargs)
+
+ def get_rule_version_history(self, rule_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> GetRuleVersionHistoryResponse:
+ """Get a rule's version history.
+
+ Get a rule's version history.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: GetRuleVersionHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._get_rule_version_history_endpoint.call_with_http_info(**kwargs)
+
+ def get_sbom(self, asset_type: AssetType, filter_asset_name: str, *, filter_repo_digest: Union[str, UnsetType]=unset, ext_format: Union[SBOMFormat, UnsetType]=unset, ) -> GetSBOMResponse:
+ """Get SBOM.
+
+ Get a single SBOM related to an asset by its type and name.
+
+ :param asset_type: The type of the asset for the SBOM request.
+ :type asset_type: AssetType
+ :param filter_asset_name: The name of the asset for the SBOM request.
+ :type filter_asset_name: str
+ :param filter_repo_digest: The container image ``repo_digest`` for the SBOM request. When the requested asset type is 'Image', this filter is mandatory.
+ :type filter_repo_digest: str, optional
+ :param ext_format: The standard of the SBOM.
+ :type ext_format: SBOMFormat, optional
+ :rtype: GetSBOMResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["asset_type"] = asset_type
+
+ kwargs["filter_asset_name"] = filter_asset_name
+
+ if filter_repo_digest is not unset:
+ kwargs["filter_repo_digest"] = filter_repo_digest
+
+ if ext_format is not unset:
+ kwargs["ext_format"] = ext_format
+
+ return self._get_sbom_endpoint.call_with_http_info(**kwargs)
+
+ def get_secrets_rules(self, ) -> SecretRuleArray:
+ """Returns a list of Secrets rules.
+
+ Returns a list of Secrets rules with ID, Pattern, Description, Priority, and SDS ID.
+
+ :rtype: SecretRuleArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_secrets_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_filter(self, security_filter_id: str, ) -> SecurityFilterResponse:
+ """Get a security filter.
+
+ Get the details of a specific security filter.
+
+ See the `security filter guide `_
+ for more examples.
+
+ :param security_filter_id: The ID of the security filter.
+ :type security_filter_id: str
+ :rtype: SecurityFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["security_filter_id"] = security_filter_id
+
+ return self._get_security_filter_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_findings_automation_due_date_rule(self, rule_id: UUID, ) -> DueDateRuleResponse:
+ """Get a due date rule.
+
+ Get the details of a due date rule by ID.
+
+ :param rule_id: The ID of the due date rule.
+ :type rule_id: UUID
+ :rtype: DueDateRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_security_findings_automation_due_date_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_findings_automation_mute_rule(self, rule_id: UUID, ) -> MuteRuleResponse:
+ """Get a mute rule.
+
+ Get the details of a mute rule by ID.
+
+ :param rule_id: The ID of the mute rule.
+ :type rule_id: UUID
+ :rtype: MuteRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_findings_automation_ticket_creation_rule(self, rule_id: UUID, ) -> TicketCreationRuleResponse:
+ """Get a ticket creation rule.
+
+ Get the details of a ticket creation rule by ID.
+
+ :param rule_id: The ID of the ticket creation rule.
+ :type rule_id: UUID
+ :rtype: TicketCreationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_security_findings_automation_ticket_creation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_critical_asset(self, critical_asset_id: str, ) -> SecurityMonitoringCriticalAssetResponse:
+ """Get a critical asset.
+
+ Get the details of a specific critical asset.
+
+ :param critical_asset_id: The ID of the critical asset.
+ :type critical_asset_id: str
+ :rtype: SecurityMonitoringCriticalAssetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["critical_asset_id"] = critical_asset_id
+
+ return self._get_security_monitoring_critical_asset_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_dataset(self, dataset_id: str, ) -> SecurityMonitoringDatasetResponse:
+ """Get a dataset.
+
+ Get the current version of a Cloud SIEM dataset by ID.
+
+ :param dataset_id: The UUID of the dataset.
+ :type dataset_id: str
+ :rtype: SecurityMonitoringDatasetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ return self._get_security_monitoring_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_dataset_by_version(self, dataset_id: str, version: int, ) -> SecurityMonitoringDatasetResponse:
+ """Get a dataset at a specific version.
+
+ Retrieve a specific historical version of a Cloud SIEM dataset.
+
+ :param dataset_id: The UUID of the dataset.
+ :type dataset_id: str
+ :param version: The version number of the dataset to retrieve.
+ :type version: int
+ :rtype: SecurityMonitoringDatasetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["version"] = version
+
+ return self._get_security_monitoring_dataset_by_version_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_dataset_version_history(self, dataset_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> SecurityMonitoringDatasetVersionHistoryResponse:
+ """Get the version history of a dataset.
+
+ Retrieve the version history of a Cloud SIEM dataset, including the changes made at each version.
+
+ :param dataset_id: The UUID of the dataset.
+ :type dataset_id: str
+ :param page_size: Size for a given page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: SecurityMonitoringDatasetVersionHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._get_security_monitoring_dataset_version_history_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_histsignal(self, histsignal_id: str, ) -> SecurityMonitoringSignalResponse:
+ """Get a hist signal's details.
+
+ Get a hist signal's details.
+
+ :param histsignal_id: The ID of the historical signal.
+ :type histsignal_id: str
+ :rtype: SecurityMonitoringSignalResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["histsignal_id"] = histsignal_id
+
+ return self._get_security_monitoring_histsignal_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_histsignals_by_job_id(self, job_id: str, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[SecurityMonitoringSignalsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> SecurityMonitoringSignalsListResponse:
+ """Get a job's hist signals.
+
+ Get a job's hist signals.
+
+ :param job_id: The ID of the job.
+ :type job_id: str
+ :param filter_query: The search query for security signals.
+ :type filter_query: str, optional
+ :param filter_from: The minimum timestamp for requested security signals.
+ :type filter_from: datetime, optional
+ :param filter_to: The maximum timestamp for requested security signals.
+ :type filter_to: datetime, optional
+ :param sort: The order of the security signals in results.
+ :type sort: SecurityMonitoringSignalsSort, optional
+ :param page_cursor: A list of results using the cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: The maximum number of security signals in the response.
+ :type page_limit: int, optional
+ :rtype: SecurityMonitoringSignalsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["job_id"] = job_id
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._get_security_monitoring_histsignals_by_job_id_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_integration_config(self, integration_config_id: str, ) -> SecurityMonitoringIntegrationConfigResponse:
+ """Get an entity context sync configuration.
+
+ Get the details of a specific entity context sync configuration.
+
+ :param integration_config_id: The ID of the entity context sync configuration.
+ :type integration_config_id: str
+ :rtype: SecurityMonitoringIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_config_id"] = integration_config_id
+
+ return self._get_security_monitoring_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_rule(self, rule_id: str, ) -> SecurityMonitoringRuleResponse:
+ """Get a rule's details.
+
+ Get a rule's details.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :rtype: SecurityMonitoringRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_signal(self, signal_id: str, ) -> SecurityMonitoringSignalResponse:
+ """Get a signal's details.
+
+ Get a signal's details.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :rtype: SecurityMonitoringSignalResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ return self._get_security_monitoring_signal_endpoint.call_with_http_info(**kwargs)
+
+ def get_security_monitoring_suppression(self, suppression_id: str, ) -> SecurityMonitoringSuppressionResponse:
+ """Get a suppression rule.
+
+ Get the details of a specific suppression rule.
+
+ :param suppression_id: The ID of the suppression rule
+ :type suppression_id: str
+ :rtype: SecurityMonitoringSuppressionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["suppression_id"] = suppression_id
+
+ return self._get_security_monitoring_suppression_endpoint.call_with_http_info(**kwargs)
+
+ def get_signal_entities(self, signal_id: str, *, limit: Union[int, UnsetType]=unset, ) -> SignalEntitiesResponse:
+ """Get entities related to a signal.
+
+ Get the list of entities related to a security signal, captured at the signal's timestamp.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :param limit: The maximum number of entities to return.
+ :type limit: int, optional
+ :rtype: SignalEntitiesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._get_signal_entities_endpoint.call_with_http_info(**kwargs)
+
+ def get_signal_notification_rule(self, id: str, ) -> NotificationRuleResponse:
+ """Get details of a signal-based notification rule.
+
+ Get the details of a notification rule for security signals.
+
+ :param id: ID of the notification rule.
+ :type id: str
+ :rtype: NotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_signal_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_signal_notification_rules(self, ) -> NotificationRulesListResponse:
+ """Get the list of signal-based notification rules.
+
+ Returns the list of notification rules for security signals.
+
+ :rtype: NotificationRulesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_signal_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_single_entity_context(self, id: str, *, _from: Union[str, UnsetType]=unset, to: Union[str, UnsetType]=unset, as_of: Union[str, UnsetType]=unset, ) -> SingleEntityContextResponse:
+ """Get a single entity context.
+
+ Get a single entity from the Cloud SIEM entity context store by its identifier, returning the historical
+ revisions of the entity in the requested time range. The endpoint can either return revisions across an
+ interval ( ``from`` / ``to`` ) or the snapshot of the entity at a single point in time ( ``as_of`` ); the two modes
+ are mutually exclusive.
+
+ :param id: The unique identifier of the entity to retrieve.
+ :type id: str
+ :param _from: The start of the time range to query, as an RFC3339 timestamp or a relative time (for example, ``now-7d`` ).
+ Defaults to ``now-7d``. Ignored when ``as_of`` is set.
+ :type _from: str, optional
+ :param to: The end of the time range to query, as an RFC3339 timestamp or a relative time (for example, ``now`` ).
+ Defaults to ``now``. Ignored when ``as_of`` is set.
+ :type to: str, optional
+ :param as_of: A point in time at which to query the entity revisions, as an RFC3339 timestamp, a Unix timestamp
+ (in seconds), or a relative time (for example, ``now-1d`` ). When set, ``from`` and ``to`` are ignored.
+ Cannot be combined with custom ``from`` / ``to`` values.
+ :type as_of: str, optional
+ :rtype: SingleEntityContextResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ if _from is not unset:
+ kwargs["_from"] = _from
+
+ if to is not unset:
+ kwargs["to"] = to
+
+ if as_of is not unset:
+ kwargs["as_of"] = as_of
+
+ return self._get_single_entity_context_endpoint.call_with_http_info(**kwargs)
+
+ def get_static_analysis_default_rulesets(self, language: str, ) -> DefaultRulesetsPerLanguageResponse:
+ """Get default rulesets for a language.
+
+ Get the default SAST ruleset names for a given programming language.
+
+ :param language: The programming language for which to retrieve the default rulesets.
+ :type language: str
+ :rtype: DefaultRulesetsPerLanguageResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["language"] = language
+
+ return self._get_static_analysis_default_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def get_static_analysis_node_types(self, language: str, ) -> NodeTypesResponse:
+ """Get node types for a language.
+
+ Retrieve tree-sitter node type definitions for a given programming language.
+
+ :param language: The programming language for which to retrieve node type definitions.
+ :type language: str
+ :rtype: NodeTypesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["language"] = language
+
+ return self._get_static_analysis_node_types_endpoint.call_with_http_info(**kwargs)
+
+ def get_static_analysis_ruleset(self, ruleset_name: str, *, include_tests: Union[bool, UnsetType]=unset, include_testing_rules: Union[bool, UnsetType]=unset, ) -> SastRulesetResponse:
+ """Get a SAST ruleset.
+
+ Get a SAST ruleset by name, including all its rules.
+
+ :param ruleset_name: The name of the ruleset to retrieve.
+ :type ruleset_name: str
+ :param include_tests: When true, test cases for each rule are included in the response.
+ :type include_tests: bool, optional
+ :param include_testing_rules: When true, rules that are in testing mode are included in the response.
+ :type include_testing_rules: bool, optional
+ :rtype: SastRulesetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ if include_tests is not unset:
+ kwargs["include_tests"] = include_tests
+
+ if include_testing_rules is not unset:
+ kwargs["include_testing_rules"] = include_testing_rules
+
+ return self._get_static_analysis_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def get_static_analysis_tree_sitter_wasm(self, file: str, ) -> file_type:
+ """Get tree-sitter WASM file.
+
+ Download the WebAssembly binary for a tree-sitter grammar by file name.
+
+ :param file: The name of the WASM file to download.
+ :type file: str
+ :rtype: file_type
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["file"] = file
+
+ return self._get_static_analysis_tree_sitter_wasm_endpoint.call_with_http_info(**kwargs)
+
+ def get_suggested_actions_matching_signal(self, signal_id: str, ) -> SecurityMonitoringSignalSuggestedActionsResponse:
+ """Get suggested actions for a signal.
+
+ Get the list of suggested actions for a given security signal.
+
+ :param signal_id: The ID of the signal.
+ :type signal_id: str
+ :rtype: SecurityMonitoringSignalSuggestedActionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["signal_id"] = signal_id
+
+ return self._get_suggested_actions_matching_signal_endpoint.call_with_http_info(**kwargs)
+
+ def get_suppressions_affecting_future_rule(self, body: Union[SecurityMonitoringRuleCreatePayload, SecurityMonitoringStandardRuleCreatePayload, SecurityMonitoringSignalRuleCreatePayload, CloudConfigurationRuleCreatePayload], ) -> SecurityMonitoringSuppressionsResponse:
+ """Get suppressions affecting future rule.
+
+ Get the list of suppressions that would affect a rule.
+
+ :type body: SecurityMonitoringRuleCreatePayload
+ :rtype: SecurityMonitoringSuppressionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_suppressions_affecting_future_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_suppressions_affecting_rule(self, rule_id: str, ) -> SecurityMonitoringSuppressionsResponse:
+ """Get suppressions affecting a specific rule.
+
+ Get the list of suppressions that affect a specific existing rule by its ID.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :rtype: SecurityMonitoringSuppressionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ return self._get_suppressions_affecting_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_suppression_version_history(self, suppression_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> GetSuppressionVersionHistoryResponse:
+ """Get a suppression's version history.
+
+ Get a suppression's version history.
+
+ :param suppression_id: The ID of the suppression rule
+ :type suppression_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: GetSuppressionVersionHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["suppression_id"] = suppression_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._get_suppression_version_history_endpoint.call_with_http_info(**kwargs)
+
+ def get_vulnerability_notification_rule(self, id: str, ) -> NotificationRuleResponse:
+ """Get details of a vulnerability notification rule.
+
+ Get the details of a notification rule for security vulnerabilities.
+
+ :param id: ID of the notification rule.
+ :type id: str
+ :rtype: NotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_vulnerability_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_vulnerability_notification_rules(self, ) -> NotificationRulesListResponse:
+ """Get the list of vulnerability notification rules.
+
+ Returns the list of notification rules for security vulnerabilities.
+
+ :rtype: NotificationRulesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_vulnerability_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def import_security_vulnerabilities(self, body: CycloneDXBom, ) -> None:
+ """Import security vulnerabilities.
+
+ Import security vulnerabilities from an external scanner in CycloneDX 1.5 format.
+
+ The payload is validated against the CycloneDX 1.5 JSON schema and the following
+ additional constraints:
+
+ * ``metadata`` , ``metadata.component`` , and ``metadata.component.name`` are required.
+ * ``metadata.tools.components`` must contain exactly one element with a ``name`` field.
+ * ``components`` cannot be empty. Each component requires ``bom-ref`` , ``type`` , ``name`` , and ``version``.
+ * When ``type`` is ``library`` , ``purl`` is required and must be a valid PURL.
+ * When ``type`` is ``operating-system`` , ``name`` must be one of the supported OS values:
+ ``alma`` , ``alpine`` , ``amazon`` , ``azurelinux`` , ``bottlerocket`` , ``cbl-mariner`` , ``chainguard`` ,
+ ``centos`` , ``debian`` , ``fedora`` , ``opensuse`` , ``opensuse-leap`` , ``opensuse-tumbleweed`` ,
+ ``oracle`` , ``photon`` , ``redhat`` , ``rocky`` , ``slem`` , ``sles`` , ``ubuntu`` , ``wolfi`` , ``windows`` , ``macos``.
+ * ``vulnerabilities`` cannot be empty. Each vulnerability requires ``id`` , exactly one ``ratings`` entry,
+ and at least one ``affects`` entry.
+ * Each ``affects[].ref`` must match a ``bom-ref`` value in ``components``.
+
+ :type body: CycloneDXBom
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._import_security_vulnerabilities_endpoint.call_with_http_info(**kwargs)
+
+ def list_assets_sbo_ms(self, *, page_token: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_asset_type: Union[AssetType, UnsetType]=unset, filter_asset_name: Union[str, UnsetType]=unset, filter_package_name: Union[str, UnsetType]=unset, filter_package_version: Union[str, UnsetType]=unset, filter_license_name: Union[str, UnsetType]=unset, filter_license_type: Union[SBOMComponentLicenseType, UnsetType]=unset, ) -> ListAssetsSBOMsResponse:
+ """List assets SBOMs.
+
+ Get a list of assets SBOMs for an organization.
+
+ The ``filter[asset_type]`` parameter is required for initial requests (when no ``page[token]`` is provided).
+ Subsequent pages encode the asset type in the pagination token, so ``filter[asset_type]`` is not required
+ for paginated requests. Mixing infrastructure asset types ( ``Host`` , ``HostImage`` , ``Image`` , ``ServerlessFunction`` )
+ with code asset types ( ``Repository`` , ``Service`` ) in the same request is not supported and returns a 400 error.
+
+ **Pagination**
+
+ Please review the `Pagination section <#pagination>`_ for the "List Vulnerabilities" endpoint.
+
+ **Filtering**
+
+ Please review the `Filtering section <#filtering>`_ for the "List Vulnerabilities" endpoint.
+
+ **Metadata**
+
+ Please review the `Metadata section <#metadata>`_ for the "List Vulnerabilities" endpoint.
+
+ :param page_token: Its value must come from the ``links`` section of the response of the first request. Do not manually edit it.
+ :type page_token: str, optional
+ :param page_number: The page number to be retrieved. It should be equal to or greater than 1.
+ :type page_number: int, optional
+ :param filter_asset_type: The type of the assets for the SBOM request. Required for initial requests (when no ``page[token]`` is provided). Infrastructure types ( ``Host`` , ``HostImage`` , ``Image`` , ``ServerlessFunction`` ) and code types ( ``Repository`` , ``Service`` ) cannot be mixed in the same request.
+ :type filter_asset_type: AssetType, optional
+ :param filter_asset_name: The name of the asset for the SBOM request.
+ :type filter_asset_name: str, optional
+ :param filter_package_name: The name of the component that is a dependency of an asset.
+ :type filter_package_name: str, optional
+ :param filter_package_version: The version of the component that is a dependency of an asset.
+ :type filter_package_version: str, optional
+ :param filter_license_name: The software license name of the component that is a dependency of an asset.
+ :type filter_license_name: str, optional
+ :param filter_license_type: The software license type of the component that is a dependency of an asset.
+ :type filter_license_type: SBOMComponentLicenseType, optional
+ :rtype: ListAssetsSBOMsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_asset_type is not unset:
+ kwargs["filter_asset_type"] = filter_asset_type
+
+ if filter_asset_name is not unset:
+ kwargs["filter_asset_name"] = filter_asset_name
+
+ if filter_package_name is not unset:
+ kwargs["filter_package_name"] = filter_package_name
+
+ if filter_package_version is not unset:
+ kwargs["filter_package_version"] = filter_package_version
+
+ if filter_license_name is not unset:
+ kwargs["filter_license_name"] = filter_license_name
+
+ if filter_license_type is not unset:
+ kwargs["filter_license_type"] = filter_license_type
+
+ return self._list_assets_sbo_ms_endpoint.call_with_http_info(**kwargs)
+
+ def list_findings(self, *, page_limit: Union[int, UnsetType]=unset, snapshot_timestamp: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_evaluation_changed_at: Union[str, UnsetType]=unset, filter_muted: Union[bool, UnsetType]=unset, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, filter_resource_type: Union[str, UnsetType]=unset, filter_resource_id: Union[str, UnsetType]=unset, filter_discovery_timestamp: Union[str, UnsetType]=unset, filter_evaluation: Union[FindingEvaluation, UnsetType]=unset, filter_status: Union[FindingStatus, UnsetType]=unset, filter_vulnerability_type: Union[List[FindingVulnerabilityType], UnsetType]=unset, detailed_findings: Union[bool, UnsetType]=unset, ) -> ListFindingsResponse:
+ """List findings.
+
+ Get a list of findings. These include both misconfigurations and identity risks.
+
+ **Note** : To filter and return only identity risks, add the following query parameter: ``?filter[tags]=dd_rule_type:ciem``
+
+ **Filtering**
+
+ Filters can be applied by appending query parameters to the URL.
+
+ * Using a single filter: ``?filter[attribute_key]=attribute_value``
+ * Chaining filters: ``?filter[attribute_key]=attribute_value&filter[attribute_key]=attribute_value...``
+ * Filtering on tags: ``?filter[tags]=tag_key:tag_value&filter[tags]=tag_key_2:tag_value_2``
+
+ Here, ``attribute_key`` can be any of the filter keys described further below.
+
+ Query parameters of type ``integer`` support comparison operators ( ``>`` , ``>=`` , ``<`` , ``<=`` ). This is particularly useful when filtering by ``evaluation_changed_at`` or ``resource_discovery_timestamp``. For example: ``?filter[evaluation_changed_at]=>20123123121``.
+
+ You can also use the negation operator on strings. For example, use ``filter[resource_type]=-aws*`` to filter for any non-AWS resources.
+
+ The operator must come after the equal sign. For example, to filter with the ``>=`` operator, add the operator after the equal sign: ``filter[evaluation_changed_at]=>=1678809373257``.
+
+ Query parameters must be only among the documented ones and with values of correct types. Duplicated query parameters (e.g. ``filter[status]=low&filter[status]=info`` ) are not allowed.
+
+ **Additional extension fields**
+
+ Additional extension fields are available for some findings.
+
+ The data is available when you include the query parameter ``?detailed_findings=true`` in the request.
+
+ The following fields are available for findings:
+
+ * ``external_id`` : The resource external ID related to the finding.
+ * ``description`` : The description and remediation steps for the finding.
+ * ``datadog_link`` : The Datadog relative link for the finding.
+ * ``ip_addresses`` : The list of private IP addresses for the resource related to the finding.
+
+ **Response**
+
+ The response includes an array of finding objects, pagination metadata, and a count of items that match the query.
+
+ Each finding object contains the following:
+
+ * The finding ID that can be used in a ``GetFinding`` request to retrieve the full finding details.
+ * Core attributes, including status, evaluation, high-level resource details, muted state, and rule details.
+ * ``evaluation_changed_at`` and ``resource_discovery_date`` time stamps.
+ * An array of associated tags.
+
+ :param page_limit: Limit the number of findings returned. Must be <= 1000.
+ :type page_limit: int, optional
+ :param snapshot_timestamp: Return findings for a given snapshot of time (Unix ms).
+ :type snapshot_timestamp: int, optional
+ :param page_cursor: Return the next page of findings pointed to by the cursor.
+ :type page_cursor: str, optional
+ :param filter_tags: Return findings that have these associated tags (repeatable).
+ :type filter_tags: str, optional
+ :param filter_evaluation_changed_at: Return findings that have changed from pass to fail or vice versa on a specified date (Unix ms) or date range (using comparison operators).
+ :type filter_evaluation_changed_at: str, optional
+ :param filter_muted: Set to ``true`` to return findings that are muted. Set to ``false`` to return unmuted findings.
+ :type filter_muted: bool, optional
+ :param filter_rule_id: Return findings for the specified rule ID.
+ :type filter_rule_id: str, optional
+ :param filter_rule_name: Return findings for the specified rule.
+ :type filter_rule_name: str, optional
+ :param filter_resource_type: Return only findings for the specified resource type.
+ :type filter_resource_type: str, optional
+ :param filter_resource_id: Return only findings for the specified resource id.
+ :type filter_resource_id: str, optional
+ :param filter_discovery_timestamp: Return findings that were found on a specified date (Unix ms) or date range (using comparison operators).
+ :type filter_discovery_timestamp: str, optional
+ :param filter_evaluation: Return only ``pass`` or ``fail`` findings.
+ :type filter_evaluation: FindingEvaluation, optional
+ :param filter_status: Return only findings with the specified status.
+ :type filter_status: FindingStatus, optional
+ :param filter_vulnerability_type: Return findings that match the selected vulnerability types (repeatable).
+ :type filter_vulnerability_type: [FindingVulnerabilityType], optional
+ :param detailed_findings: Return additional fields for some findings.
+ :type detailed_findings: bool, optional
+ :rtype: ListFindingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if snapshot_timestamp is not unset:
+ kwargs["snapshot_timestamp"] = snapshot_timestamp
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_evaluation_changed_at is not unset:
+ kwargs["filter_evaluation_changed_at"] = filter_evaluation_changed_at
+
+ if filter_muted is not unset:
+ kwargs["filter_muted"] = filter_muted
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ if filter_resource_type is not unset:
+ kwargs["filter_resource_type"] = filter_resource_type
+
+ if filter_resource_id is not unset:
+ kwargs["filter_resource_id"] = filter_resource_id
+
+ if filter_discovery_timestamp is not unset:
+ kwargs["filter_discovery_timestamp"] = filter_discovery_timestamp
+
+ if filter_evaluation is not unset:
+ kwargs["filter_evaluation"] = filter_evaluation
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if filter_vulnerability_type is not unset:
+ kwargs["filter_vulnerability_type"] = filter_vulnerability_type
+
+ if detailed_findings is not unset:
+ kwargs["detailed_findings"] = detailed_findings
+
+ return self._list_findings_endpoint.call_with_http_info(**kwargs)
+
+ def list_findings_with_pagination(self, *, page_limit: Union[int, UnsetType]=unset, snapshot_timestamp: Union[int, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, filter_tags: Union[str, UnsetType]=unset, filter_evaluation_changed_at: Union[str, UnsetType]=unset, filter_muted: Union[bool, UnsetType]=unset, filter_rule_id: Union[str, UnsetType]=unset, filter_rule_name: Union[str, UnsetType]=unset, filter_resource_type: Union[str, UnsetType]=unset, filter_resource_id: Union[str, UnsetType]=unset, filter_discovery_timestamp: Union[str, UnsetType]=unset, filter_evaluation: Union[FindingEvaluation, UnsetType]=unset, filter_status: Union[FindingStatus, UnsetType]=unset, filter_vulnerability_type: Union[List[FindingVulnerabilityType], UnsetType]=unset, detailed_findings: Union[bool, UnsetType]=unset, ) -> collections.abc.Iterable[Finding]:
+ """List findings.
+
+ Provide a paginated version of :meth:`list_findings`, returning all items.
+
+ :param page_limit: Limit the number of findings returned. Must be <= 1000.
+ :type page_limit: int, optional
+ :param snapshot_timestamp: Return findings for a given snapshot of time (Unix ms).
+ :type snapshot_timestamp: int, optional
+ :param page_cursor: Return the next page of findings pointed to by the cursor.
+ :type page_cursor: str, optional
+ :param filter_tags: Return findings that have these associated tags (repeatable).
+ :type filter_tags: str, optional
+ :param filter_evaluation_changed_at: Return findings that have changed from pass to fail or vice versa on a specified date (Unix ms) or date range (using comparison operators).
+ :type filter_evaluation_changed_at: str, optional
+ :param filter_muted: Set to ``true`` to return findings that are muted. Set to ``false`` to return unmuted findings.
+ :type filter_muted: bool, optional
+ :param filter_rule_id: Return findings for the specified rule ID.
+ :type filter_rule_id: str, optional
+ :param filter_rule_name: Return findings for the specified rule.
+ :type filter_rule_name: str, optional
+ :param filter_resource_type: Return only findings for the specified resource type.
+ :type filter_resource_type: str, optional
+ :param filter_resource_id: Return only findings for the specified resource id.
+ :type filter_resource_id: str, optional
+ :param filter_discovery_timestamp: Return findings that were found on a specified date (Unix ms) or date range (using comparison operators).
+ :type filter_discovery_timestamp: str, optional
+ :param filter_evaluation: Return only ``pass`` or ``fail`` findings.
+ :type filter_evaluation: FindingEvaluation, optional
+ :param filter_status: Return only findings with the specified status.
+ :type filter_status: FindingStatus, optional
+ :param filter_vulnerability_type: Return findings that match the selected vulnerability types (repeatable).
+ :type filter_vulnerability_type: [FindingVulnerabilityType], optional
+ :param detailed_findings: Return additional fields for some findings.
+ :type detailed_findings: bool, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Finding]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if snapshot_timestamp is not unset:
+ kwargs["snapshot_timestamp"] = snapshot_timestamp
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if filter_tags is not unset:
+ kwargs["filter_tags"] = filter_tags
+
+ if filter_evaluation_changed_at is not unset:
+ kwargs["filter_evaluation_changed_at"] = filter_evaluation_changed_at
+
+ if filter_muted is not unset:
+ kwargs["filter_muted"] = filter_muted
+
+ if filter_rule_id is not unset:
+ kwargs["filter_rule_id"] = filter_rule_id
+
+ if filter_rule_name is not unset:
+ kwargs["filter_rule_name"] = filter_rule_name
+
+ if filter_resource_type is not unset:
+ kwargs["filter_resource_type"] = filter_resource_type
+
+ if filter_resource_id is not unset:
+ kwargs["filter_resource_id"] = filter_resource_id
+
+ if filter_discovery_timestamp is not unset:
+ kwargs["filter_discovery_timestamp"] = filter_discovery_timestamp
+
+ if filter_evaluation is not unset:
+ kwargs["filter_evaluation"] = filter_evaluation
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if filter_vulnerability_type is not unset:
+ kwargs["filter_vulnerability_type"] = filter_vulnerability_type
+
+ if detailed_findings is not unset:
+ kwargs["detailed_findings"] = detailed_findings
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 100)
+ endpoint = self._list_findings_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.cursor",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_historical_jobs(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, ) -> ListHistoricalJobsResponse:
+ """List historical jobs.
+
+ List historical jobs.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: The order of the jobs in results.
+ :type sort: str, optional
+ :param filter_query: Query used to filter items from the fetched list.
+ :type filter_query: str, optional
+ :rtype: ListHistoricalJobsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ return self._list_historical_jobs_endpoint.call_with_http_info(**kwargs)
+
+ def list_indicators_of_compromise(self, *, limit: Union[int, UnsetType]=unset, offset: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, sort_column: Union[str, UnsetType]=unset, sort_order: Union[str, UnsetType]=unset, ocsf: Union[bool, UnsetType]=unset, worked_by: Union[str, UnsetType]=unset, triage_state: Union[IoCTriageState, UnsetType]=unset, ) -> IoCExplorerListResponse:
+ """List indicators of compromise.
+
+ Get a list of indicators of compromise (IoCs) matching the specified filters.
+
+ :param limit: Number of results per page.
+ :type limit: int, optional
+ :param offset: Pagination offset.
+ :type offset: int, optional
+ :param query: Search/filter query (supports field:value syntax).
+ :type query: str, optional
+ :param sort_column: Sort column: score, first_seen_ts_epoch, last_seen_ts_epoch, indicator, indicator_type, signal_count, log_count, category, as_type.
+ :type sort_column: str, optional
+ :param sort_order: Sort order: asc or desc.
+ :type sort_order: str, optional
+ :param ocsf: When true, return only OCSF field-based matches. When false, return regex/message-based matches.
+ :type ocsf: bool, optional
+ :param worked_by: Filter indicators whose triage state was updated by a specific user identified by their handle.
+ :type worked_by: str, optional
+ :param triage_state: Filter by triage state.
+ :type triage_state: IoCTriageState, optional
+ :rtype: IoCExplorerListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ if offset is not unset:
+ kwargs["offset"] = offset
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if sort_column is not unset:
+ kwargs["sort_column"] = sort_column
+
+ if sort_order is not unset:
+ kwargs["sort_order"] = sort_order
+
+ if ocsf is not unset:
+ kwargs["ocsf"] = ocsf
+
+ if worked_by is not unset:
+ kwargs["worked_by"] = worked_by
+
+ if triage_state is not unset:
+ kwargs["triage_state"] = triage_state
+
+ return self._list_indicators_of_compromise_endpoint.call_with_http_info(**kwargs)
+
+ def list_multiple_rulesets(self, body: GetMultipleRulesetsRequest, ) -> GetMultipleRulesetsResponse:
+ """Ruleset get multiple.
+
+ Get rules for multiple rulesets in batch.
+
+ :type body: GetMultipleRulesetsRequest
+ :rtype: GetMultipleRulesetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._list_multiple_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def list_sample_log_generation_subscriptions(self, *, status: Union[SampleLogGenerationSubscriptionsStatusFilter, UnsetType]=unset, start_timestamp: Union[datetime, UnsetType]=unset, end_timestamp: Union[datetime, UnsetType]=unset, ) -> SampleLogGenerationSubscriptionsResponse:
+ """Get sample log generation subscriptions.
+
+ Get the sample log generation subscriptions for the organization.
+ Sample log generation injects representative example logs for a given Cloud SIEM content pack into the Logs platform,
+ which can be used to test detection rules without onboarding the underlying integration first.
+
+ **Availability** : this endpoint is restricted to Cloud SIEM trial organizations on an eligible
+ pricing model. Other organizations receive a ``403 Forbidden`` (non-trial orgs) or a ``400 Bad Request``
+ (feature disabled), and legacy pricing tiers receive a response with ``status: not_available``.
+
+ :param status: Filter the subscriptions by status. Use ``active`` to return only currently active
+ subscriptions, or ``all`` to return every subscription including expired ones.
+ Ignored when ``start_timestamp`` is provided. Defaults to ``active``.
+ :type status: SampleLogGenerationSubscriptionsStatusFilter, optional
+ :param start_timestamp: The start of the time range, as an RFC3339 timestamp. When provided, the response includes
+ every subscription that was active at any point in ``[start_timestamp, end_timestamp]`` ,
+ and the ``status`` filter is ignored.
+ :type start_timestamp: datetime, optional
+ :param end_timestamp: The end of the time range, as an RFC3339 timestamp. Ignored unless ``start_timestamp`` is set.
+ Defaults to the current time when ``start_timestamp`` is provided.
+ :type end_timestamp: datetime, optional
+ :rtype: SampleLogGenerationSubscriptionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if status is not unset:
+ kwargs["status"] = status
+
+ if start_timestamp is not unset:
+ kwargs["start_timestamp"] = start_timestamp
+
+ if end_timestamp is not unset:
+ kwargs["end_timestamp"] = end_timestamp
+
+ return self._list_sample_log_generation_subscriptions_endpoint.call_with_http_info(**kwargs)
+
+ def list_scanned_assets_metadata(self, *, page_token: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_asset_type: Union[CloudAssetType, UnsetType]=unset, filter_asset_name: Union[str, UnsetType]=unset, filter_last_success_origin: Union[str, UnsetType]=unset, filter_last_success_env: Union[str, UnsetType]=unset, ) -> ScannedAssetsMetadata:
+ """List scanned assets metadata.
+
+ Get a list of security scanned assets metadata for an organization.
+
+ **Pagination**
+
+ For the "List Vulnerabilities" endpoint, see the `Pagination section <#pagination>`_.
+
+ **Filtering**
+
+ For the "List Vulnerabilities" endpoint, see the `Filtering section <#filtering>`_.
+
+ **Metadata**
+
+ For the "List Vulnerabilities" endpoint, see the `Metadata section <#metadata>`_.
+
+ **Related endpoints**
+
+ This endpoint returns additional metadata for cloud resources that is not available from the standard resource endpoints. To access a richer dataset, call this endpoint together with the relevant resource endpoint(s) and merge (join) their results using the resource identifier.
+
+ **Hosts**
+
+ To enrich host data, join the response from the `Hosts `_ endpoint with the response from the scanned-assets-metadata endpoint on the following key fields:
+
+ .. list-table::
+ :header-rows: 1
+
+ * - ENDPOINT
+ - JOIN KEY
+ - TYPE
+ * - `/api/v1/hosts `_
+ - host_list.host_name
+ - string
+ * - /api/v2/security/scanned-assets-metadata
+ - data.attributes.asset.name
+ - string
+
+ **Host Images**
+
+ To enrich host image data, join the response from the `Hosts `_ endpoint with the response from the scanned-assets-metadata endpoint on the following key fields:
+
+ .. list-table::
+ :header-rows: 1
+
+ * - ENDPOINT
+ - JOIN KEY
+ - TYPE
+ * - `/api/v1/hosts `_
+ - host_list.tags_by_source["Amazon Web Services"]["image"]
+ - string
+ * - /api/v2/security/scanned-assets-metadata
+ - data.attributes.asset.name
+ - string
+
+ **Container Images**
+
+ To enrich container image data, join the response from the `Container Images `_ endpoint with the response from the scanned-assets-metadata endpoint on the following key fields:
+
+ .. list-table::
+ :header-rows: 1
+
+ * - ENDPOINT
+ - JOIN KEY
+ - TYPE
+ * - `/api/v2/container_images `_
+ - ``data.attributes.name`` @ ``data.attributes.repo_digest``
+ - string
+ * - /api/v2/security/scanned-assets-metadata
+ - data.attributes.asset.name
+ - string
+
+
+ :param page_token: Its value must come from the ``links`` section of the response of the first request. Do not manually edit it.
+ :type page_token: str, optional
+ :param page_number: The page number to be retrieved. It should be equal to or greater than 1.
+ :type page_number: int, optional
+ :param filter_asset_type: The type of the scanned asset.
+ :type filter_asset_type: CloudAssetType, optional
+ :param filter_asset_name: The name of the scanned asset.
+ :type filter_asset_name: str, optional
+ :param filter_last_success_origin: The origin of last success scan.
+ :type filter_last_success_origin: str, optional
+ :param filter_last_success_env: The environment of last success scan.
+ :type filter_last_success_env: str, optional
+ :rtype: ScannedAssetsMetadata
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_asset_type is not unset:
+ kwargs["filter_asset_type"] = filter_asset_type
+
+ if filter_asset_name is not unset:
+ kwargs["filter_asset_name"] = filter_asset_name
+
+ if filter_last_success_origin is not unset:
+ kwargs["filter_last_success_origin"] = filter_last_success_origin
+
+ if filter_last_success_env is not unset:
+ kwargs["filter_last_success_env"] = filter_last_success_env
+
+ return self._list_scanned_assets_metadata_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_filters(self, ) -> SecurityFiltersResponse:
+ """Get all security filters.
+
+ Get the list of configured security filters with their definitions.
+
+ :rtype: SecurityFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_security_filters_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_filter_versions(self, ) -> SecurityFilterVersionsResponse:
+ """Get the version history of security filters.
+
+ Get the configured security filters at each historical version of the configuration.
+ Each entry in the response represents the set of all security filters at a given version,
+ ordered from the most recent version to the oldest.
+
+ :rtype: SecurityFilterVersionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_security_filter_versions_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_findings(self, *, filter_query: Union[str, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, sort: Union[SecurityFindingsSort, UnsetType]=unset, ) -> ListSecurityFindingsResponse:
+ """List security findings.
+
+ Get a list of security findings that match a search query. `See the schema for security findings `_.
+
+ **Query Syntax**
+
+ This endpoint uses the logs query syntax. Findings attributes (living in the attributes.attributes. namespace) are prefixed by @ when queried. Tags are queried without a prefix.
+
+ Example: ``@severity:(critical OR high) @status:open team:platform``
+
+ :param filter_query: The search query following log search syntax.
+ :type filter_query: str, optional
+ :param page_cursor: Get the next page of results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: The maximum number of findings in the response.
+ :type page_limit: int, optional
+ :param sort: Sorts by @detection_changed_at.
+ :type sort: SecurityFindingsSort, optional
+ :rtype: ListSecurityFindingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_security_findings_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_findings_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, sort: Union[SecurityFindingsSort, UnsetType]=unset, ) -> collections.abc.Iterable[SecurityFindingsData]:
+ """List security findings.
+
+ Provide a paginated version of :meth:`list_security_findings`, returning all items.
+
+ :param filter_query: The search query following log search syntax.
+ :type filter_query: str, optional
+ :param page_cursor: Get the next page of results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: The maximum number of findings in the response.
+ :type page_limit: int, optional
+ :param sort: Sorts by @detection_changed_at.
+ :type sort: SecurityFindingsSort, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[SecurityFindingsData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_security_findings_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_security_findings_automation_due_date_rules(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> DueDateRulesResponse:
+ """Get all due date rules.
+
+ Get all due date rules for the current organization.
+
+ :param page_size: The number of rules per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :rtype: DueDateRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_security_findings_automation_due_date_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_findings_automation_mute_rules(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> MuteRulesResponse:
+ """Get all mute rules.
+
+ Get all mute rules for the current organization.
+
+ :param page_size: The number of rules per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :rtype: MuteRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_security_findings_automation_mute_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_findings_automation_ticket_creation_rules(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> TicketCreationRulesResponse:
+ """Get all ticket creation rules.
+
+ Get all ticket creation rules for the current organization.
+
+ :param page_size: The number of rules per page. Maximum is 1000.
+ :type page_size: int, optional
+ :param page_number: The page number to return.
+ :type page_number: int, optional
+ :rtype: TicketCreationRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_security_findings_automation_ticket_creation_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_critical_assets(self, ) -> SecurityMonitoringCriticalAssetsResponse:
+ """Get all critical assets.
+
+ Get the list of all critical assets.
+
+ :rtype: SecurityMonitoringCriticalAssetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_security_monitoring_critical_assets_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_datasets(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter_query: Union[str, UnsetType]=unset, ) -> SecurityMonitoringDatasetsListResponse:
+ """List datasets.
+
+ List all Cloud SIEM datasets available to the organization, including both
+ customer-defined datasets and Datadog out-of-the-box datasets.
+
+ :param page_size: Size for a given page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Attribute used to sort datasets. Prefix with ``-`` to sort in descending order.
+ :type sort: str, optional
+ :param filter_query: A search query to filter datasets by name or description.
+ :type filter_query: str, optional
+ :rtype: SecurityMonitoringDatasetsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ return self._list_security_monitoring_datasets_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_histsignals(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[SecurityMonitoringSignalsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> SecurityMonitoringSignalsListResponse:
+ """List hist signals.
+
+ List hist signals.
+
+ :param filter_query: The search query for security signals.
+ :type filter_query: str, optional
+ :param filter_from: The minimum timestamp for requested security signals.
+ :type filter_from: datetime, optional
+ :param filter_to: The maximum timestamp for requested security signals.
+ :type filter_to: datetime, optional
+ :param sort: The order of the security signals in results.
+ :type sort: SecurityMonitoringSignalsSort, optional
+ :param page_cursor: A list of results using the cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: The maximum number of security signals in the response.
+ :type page_limit: int, optional
+ :rtype: SecurityMonitoringSignalsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_security_monitoring_histsignals_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_integration_configs(self, *, filter_integration_type: Union[SecurityMonitoringIntegrationType, UnsetType]=unset, ) -> SecurityMonitoringIntegrationConfigsResponse:
+ """List entity context sync configurations.
+
+ List the entity context sync configurations for Cloud SIEM. Each configuration connects Cloud SIEM
+ to an external source that provides entities (for example, users from an identity provider) for use
+ in signals and the entity explorer.
+
+ :param filter_integration_type: Filter the entity context sync configurations by source type.
+ :type filter_integration_type: SecurityMonitoringIntegrationType, optional
+ :rtype: SecurityMonitoringIntegrationConfigsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_integration_type is not unset:
+ kwargs["filter_integration_type"] = filter_integration_type
+
+ return self._list_security_monitoring_integration_configs_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_rules(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, query: Union[str, UnsetType]=unset, sort: Union[SecurityMonitoringRuleSort, UnsetType]=unset, ) -> SecurityMonitoringListRulesResponse:
+ """List rules.
+
+ List rules.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param query: A search query to filter security rules. You can filter by attributes such as ``type`` , ``source`` , ``tags``.
+ :type query: str, optional
+ :param sort: Attribute used to sort rules. Prefix with ``-`` to sort in descending order.
+ :type sort: SecurityMonitoringRuleSort, optional
+ :rtype: SecurityMonitoringListRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if query is not unset:
+ kwargs["query"] = query
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_security_monitoring_rules_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_signals(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[SecurityMonitoringSignalsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> SecurityMonitoringSignalsListResponse:
+ """Get a quick list of security signals.
+
+ The list endpoint returns security signals that match a search query.
+ Both this endpoint and the POST endpoint can be used interchangeably when listing
+ security signals.
+
+ :param filter_query: The search query for security signals.
+ :type filter_query: str, optional
+ :param filter_from: The minimum timestamp for requested security signals.
+ :type filter_from: datetime, optional
+ :param filter_to: The maximum timestamp for requested security signals.
+ :type filter_to: datetime, optional
+ :param sort: The order of the security signals in results.
+ :type sort: SecurityMonitoringSignalsSort, optional
+ :param page_cursor: A list of results using the cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: The maximum number of security signals in the response.
+ :type page_limit: int, optional
+ :rtype: SecurityMonitoringSignalsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_security_monitoring_signals_endpoint.call_with_http_info(**kwargs)
+
+ def list_security_monitoring_signals_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[datetime, UnsetType]=unset, filter_to: Union[datetime, UnsetType]=unset, sort: Union[SecurityMonitoringSignalsSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[SecurityMonitoringSignal]:
+ """Get a quick list of security signals.
+
+ Provide a paginated version of :meth:`list_security_monitoring_signals`, returning all items.
+
+ :param filter_query: The search query for security signals.
+ :type filter_query: str, optional
+ :param filter_from: The minimum timestamp for requested security signals.
+ :type filter_from: datetime, optional
+ :param filter_to: The maximum timestamp for requested security signals.
+ :type filter_to: datetime, optional
+ :param sort: The order of the security signals in results.
+ :type sort: SecurityMonitoringSignalsSort, optional
+ :param page_cursor: A list of results using the cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: The maximum number of security signals in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[SecurityMonitoringSignal]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_security_monitoring_signals_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_security_monitoring_suppressions(self, *, query: Union[str, UnsetType]=unset, sort: Union[SecurityMonitoringSuppressionSort, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, ) -> SecurityMonitoringPaginatedSuppressionsResponse:
+ """Get all suppression rules.
+
+ Get the list of all suppression rules.
+
+ :param query: Query string.
+ :type query: str, optional
+ :param sort: Attribute used to sort the list of suppression rules. Prefix with ``-`` to sort in descending order.
+ :type sort: SecurityMonitoringSuppressionSort, optional
+ :param page_size: Size for a given page. Use ``-1`` to return all items.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :rtype: SecurityMonitoringPaginatedSuppressionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ return self._list_security_monitoring_suppressions_endpoint.call_with_http_info(**kwargs)
+
+ def list_static_analysis_codegen_rulesets(self, ) -> SastRulesetsResponse:
+ """List codegen rulesets.
+
+ Get the rulesets relevant for code generation for the authenticated user.
+
+ :rtype: SastRulesetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_static_analysis_codegen_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def list_vulnerabilities(self, *, page_token: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_type: Union[VulnerabilityType, UnsetType]=unset, filter_cvss_base_score_op: Union[float, UnsetType]=unset, filter_cvss_base_severity: Union[VulnerabilitySeverity, UnsetType]=unset, filter_cvss_base_vector: Union[str, UnsetType]=unset, filter_cvss_datadog_score_op: Union[float, UnsetType]=unset, filter_cvss_datadog_severity: Union[VulnerabilitySeverity, UnsetType]=unset, filter_cvss_datadog_vector: Union[str, UnsetType]=unset, filter_status: Union[VulnerabilityStatus, UnsetType]=unset, filter_tool: Union[VulnerabilityTool, UnsetType]=unset, filter_library_name: Union[str, UnsetType]=unset, filter_library_version: Union[str, UnsetType]=unset, filter_advisory_id: Union[str, UnsetType]=unset, filter_risks_exploitation_probability: Union[bool, UnsetType]=unset, filter_risks_poc_exploit_available: Union[bool, UnsetType]=unset, filter_risks_exploit_available: Union[bool, UnsetType]=unset, filter_risks_epss_score_op: Union[float, UnsetType]=unset, filter_risks_epss_severity: Union[VulnerabilitySeverity, UnsetType]=unset, filter_language: Union[str, UnsetType]=unset, filter_ecosystem: Union[VulnerabilityEcosystem, UnsetType]=unset, filter_code_location_location: Union[str, UnsetType]=unset, filter_code_location_file_path: Union[str, UnsetType]=unset, filter_code_location_method: Union[str, UnsetType]=unset, filter_fix_available: Union[bool, UnsetType]=unset, filter_repo_digests: Union[str, UnsetType]=unset, filter_origin: Union[str, UnsetType]=unset, filter_running_kernel: Union[bool, UnsetType]=unset, filter_asset_name: Union[str, UnsetType]=unset, filter_asset_type: Union[AssetType, UnsetType]=unset, filter_asset_version_first: Union[str, UnsetType]=unset, filter_asset_version_last: Union[str, UnsetType]=unset, filter_asset_repository_url: Union[str, UnsetType]=unset, filter_asset_risks_in_production: Union[bool, UnsetType]=unset, filter_asset_risks_under_attack: Union[bool, UnsetType]=unset, filter_asset_risks_is_publicly_accessible: Union[bool, UnsetType]=unset, filter_asset_risks_has_privileged_access: Union[bool, UnsetType]=unset, filter_asset_risks_has_access_to_sensitive_data: Union[bool, UnsetType]=unset, filter_asset_environments: Union[str, UnsetType]=unset, filter_asset_teams: Union[str, UnsetType]=unset, filter_asset_arch: Union[str, UnsetType]=unset, filter_asset_operating_system_name: Union[str, UnsetType]=unset, filter_asset_operating_system_version: Union[str, UnsetType]=unset, ) -> ListVulnerabilitiesResponse:
+ """List vulnerabilities. **Deprecated**.
+
+ Get a list of vulnerabilities.
+
+ **Pagination**
+
+ Pagination is enabled by default in both ``vulnerabilities`` and ``assets``. The size of the page varies depending on the endpoint and cannot be modified. To automate the request of the next page, you can use the links section in the response.
+
+ This endpoint will return paginated responses. The pages are stored in the links section of the response:
+
+ .. code-block:: JSON
+
+ {
+ "data": [...],
+ "meta": {...},
+ "links": {
+ "self": "https://.../api/v2/security/vulnerabilities",
+ "first": "https://.../api/v2/security/vulnerabilities?page[number]=1&page[token]=abc",
+ "last": "https://.../api/v2/security/vulnerabilities?page[number]=43&page[token]=abc",
+ "next": "https://.../api/v2/security/vulnerabilities?page[number]=2&page[token]=abc"
+ }
+ }
+
+ * ``links.previous`` is empty if the first page is requested.
+ * ``links.next`` is empty if the last page is requested.
+
+ **Token**
+
+ Vulnerabilities can be created, updated or deleted at any point in time.
+
+ Upon the first request, a token is created to ensure consistency across subsequent paginated requests.
+
+ A token is valid only for 24 hours.
+
+ **First request**
+
+ We consider a request to be the first request when there is no ``page[token]`` parameter.
+
+ The response of this first request contains the newly created token in the ``links`` section.
+
+ This token can then be used in the subsequent paginated requests.
+
+ *Note: The first request may take longer to complete than subsequent requests.*
+
+ **Subsequent requests**
+
+ Any request containing valid ``page[token]`` and ``page[number]`` parameters will be considered a subsequent request.
+
+ If the ``token`` is invalid, a ``404`` response will be returned.
+
+ If the page ``number`` is invalid, a ``400`` response will be returned.
+
+ The returned ``token`` is valid for all requests in the pagination sequence. To send paginated requests in parallel, reuse the same ``token`` and change only the ``page[number]`` parameter.
+
+ **Filtering**
+
+ The request can include some filter parameters to filter the data to be retrieved. The format of the filter parameters follows the `JSON:API format `_ : ``filter[$prop_name]`` , where ``prop_name`` is the property name in the entity being filtered by.
+
+ All filters can include multiple values, where data will be filtered with an OR clause: ``filter[title]=Title1,Title2`` will filter all vulnerabilities where title is equal to ``Title1`` OR ``Title2``.
+
+ String filters are case sensitive.
+
+ Boolean filters accept ``true`` or ``false`` as values.
+
+ Number filters must include an operator as a second filter input: ``filter[$prop_name][$operator]``. For example, for the vulnerabilities endpoint: ``filter[cvss.base.score][lte]=8``.
+
+ Available operators are: ``eq`` (==), ``lt`` (<), ``lte`` (<=), ``gt`` (>) and ``gte`` (>=).
+
+ **Metadata**
+
+ Following `JSON:API format `_ , object including non-standard meta-information.
+
+ This endpoint includes the meta member in the response. For more details on each of the properties included in this section, check the endpoints response tables.
+
+ .. code-block:: JSON
+
+ {
+ "data": [...],
+ "meta": {
+ "total": 1500,
+ "count": 18732,
+ "token": "some_token"
+ },
+ "links": {...}
+ }
+
+ **Extensions**
+
+ Requests may include extensions to modify the behavior of the requested endpoint. The filter parameters follow the `JSON:API format `_ format: ``ext:$extension_name`` , where ``extension_name`` is the name of the modifier that is being applied.
+
+ Extensions can only include one value: ``ext:modifier=value``.
+
+ :param page_token: Its value must come from the ``links`` section of the response of the first request. Do not manually edit it.
+ :type page_token: str, optional
+ :param page_number: The page number to be retrieved. It should be equal or greater than ``1``
+ :type page_number: int, optional
+ :param filter_type: Filter by vulnerability type.
+ :type filter_type: VulnerabilityType, optional
+ :param filter_cvss_base_score_op: Filter by vulnerability base (i.e. from the original advisory) severity score.
+ :type filter_cvss_base_score_op: float, optional
+ :param filter_cvss_base_severity: Filter by vulnerability base severity.
+ :type filter_cvss_base_severity: VulnerabilitySeverity, optional
+ :param filter_cvss_base_vector: Filter by vulnerability base CVSS vector.
+ :type filter_cvss_base_vector: str, optional
+ :param filter_cvss_datadog_score_op: Filter by vulnerability Datadog severity score.
+ :type filter_cvss_datadog_score_op: float, optional
+ :param filter_cvss_datadog_severity: Filter by vulnerability Datadog severity.
+ :type filter_cvss_datadog_severity: VulnerabilitySeverity, optional
+ :param filter_cvss_datadog_vector: Filter by vulnerability Datadog CVSS vector.
+ :type filter_cvss_datadog_vector: str, optional
+ :param filter_status: Filter by the status of the vulnerability.
+ :type filter_status: VulnerabilityStatus, optional
+ :param filter_tool: Filter by the tool of the vulnerability.
+ :type filter_tool: VulnerabilityTool, optional
+ :param filter_library_name: Filter by library name.
+ :type filter_library_name: str, optional
+ :param filter_library_version: Filter by library version.
+ :type filter_library_version: str, optional
+ :param filter_advisory_id: Filter by advisory ID.
+ :type filter_advisory_id: str, optional
+ :param filter_risks_exploitation_probability: Filter by exploitation probability.
+ :type filter_risks_exploitation_probability: bool, optional
+ :param filter_risks_poc_exploit_available: Filter by POC exploit availability.
+ :type filter_risks_poc_exploit_available: bool, optional
+ :param filter_risks_exploit_available: Filter by public exploit availability.
+ :type filter_risks_exploit_available: bool, optional
+ :param filter_risks_epss_score_op: Filter by vulnerability `EPSS `_ severity score.
+ :type filter_risks_epss_score_op: float, optional
+ :param filter_risks_epss_severity: Filter by vulnerability `EPSS `_ severity.
+ :type filter_risks_epss_severity: VulnerabilitySeverity, optional
+ :param filter_language: Filter by language.
+ :type filter_language: str, optional
+ :param filter_ecosystem: Filter by ecosystem.
+ :type filter_ecosystem: VulnerabilityEcosystem, optional
+ :param filter_code_location_location: Filter by vulnerability location.
+ :type filter_code_location_location: str, optional
+ :param filter_code_location_file_path: Filter by vulnerability file path.
+ :type filter_code_location_file_path: str, optional
+ :param filter_code_location_method: Filter by method.
+ :type filter_code_location_method: str, optional
+ :param filter_fix_available: Filter by fix availability.
+ :type filter_fix_available: bool, optional
+ :param filter_repo_digests: Filter by vulnerability ``repo_digest`` (when the vulnerability is related to ``Image`` asset).
+ :type filter_repo_digests: str, optional
+ :param filter_origin: Filter by origin.
+ :type filter_origin: str, optional
+ :param filter_running_kernel: Filter for whether the vulnerability affects a running kernel (for vulnerabilities related to a ``Host`` asset).
+ :type filter_running_kernel: bool, optional
+ :param filter_asset_name: Filter by asset name. This field supports the usage of wildcards (*).
+ :type filter_asset_name: str, optional
+ :param filter_asset_type: Filter by asset type.
+ :type filter_asset_type: AssetType, optional
+ :param filter_asset_version_first: Filter by the first version of the asset this vulnerability has been detected on.
+ :type filter_asset_version_first: str, optional
+ :param filter_asset_version_last: Filter by the last version of the asset this vulnerability has been detected on.
+ :type filter_asset_version_last: str, optional
+ :param filter_asset_repository_url: Filter by the repository url associated to the asset.
+ :type filter_asset_repository_url: str, optional
+ :param filter_asset_risks_in_production: Filter whether the asset is in production or not.
+ :type filter_asset_risks_in_production: bool, optional
+ :param filter_asset_risks_under_attack: Filter whether the asset is under attack or not.
+ :type filter_asset_risks_under_attack: bool, optional
+ :param filter_asset_risks_is_publicly_accessible: Filter whether the asset is publicly accessible or not.
+ :type filter_asset_risks_is_publicly_accessible: bool, optional
+ :param filter_asset_risks_has_privileged_access: Filter whether the asset is publicly accessible or not.
+ :type filter_asset_risks_has_privileged_access: bool, optional
+ :param filter_asset_risks_has_access_to_sensitive_data: Filter whether the asset has access to sensitive data or not.
+ :type filter_asset_risks_has_access_to_sensitive_data: bool, optional
+ :param filter_asset_environments: Filter by asset environments.
+ :type filter_asset_environments: str, optional
+ :param filter_asset_teams: Filter by asset teams.
+ :type filter_asset_teams: str, optional
+ :param filter_asset_arch: Filter by asset architecture.
+ :type filter_asset_arch: str, optional
+ :param filter_asset_operating_system_name: Filter by asset operating system name.
+ :type filter_asset_operating_system_name: str, optional
+ :param filter_asset_operating_system_version: Filter by asset operating system version.
+ :type filter_asset_operating_system_version: str, optional
+ :rtype: ListVulnerabilitiesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_type is not unset:
+ kwargs["filter_type"] = filter_type
+
+ if filter_cvss_base_score_op is not unset:
+ kwargs["filter_cvss_base_score_op"] = filter_cvss_base_score_op
+
+ if filter_cvss_base_severity is not unset:
+ kwargs["filter_cvss_base_severity"] = filter_cvss_base_severity
+
+ if filter_cvss_base_vector is not unset:
+ kwargs["filter_cvss_base_vector"] = filter_cvss_base_vector
+
+ if filter_cvss_datadog_score_op is not unset:
+ kwargs["filter_cvss_datadog_score_op"] = filter_cvss_datadog_score_op
+
+ if filter_cvss_datadog_severity is not unset:
+ kwargs["filter_cvss_datadog_severity"] = filter_cvss_datadog_severity
+
+ if filter_cvss_datadog_vector is not unset:
+ kwargs["filter_cvss_datadog_vector"] = filter_cvss_datadog_vector
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if filter_tool is not unset:
+ kwargs["filter_tool"] = filter_tool
+
+ if filter_library_name is not unset:
+ kwargs["filter_library_name"] = filter_library_name
+
+ if filter_library_version is not unset:
+ kwargs["filter_library_version"] = filter_library_version
+
+ if filter_advisory_id is not unset:
+ kwargs["filter_advisory_id"] = filter_advisory_id
+
+ if filter_risks_exploitation_probability is not unset:
+ kwargs["filter_risks_exploitation_probability"] = filter_risks_exploitation_probability
+
+ if filter_risks_poc_exploit_available is not unset:
+ kwargs["filter_risks_poc_exploit_available"] = filter_risks_poc_exploit_available
+
+ if filter_risks_exploit_available is not unset:
+ kwargs["filter_risks_exploit_available"] = filter_risks_exploit_available
+
+ if filter_risks_epss_score_op is not unset:
+ kwargs["filter_risks_epss_score_op"] = filter_risks_epss_score_op
+
+ if filter_risks_epss_severity is not unset:
+ kwargs["filter_risks_epss_severity"] = filter_risks_epss_severity
+
+ if filter_language is not unset:
+ kwargs["filter_language"] = filter_language
+
+ if filter_ecosystem is not unset:
+ kwargs["filter_ecosystem"] = filter_ecosystem
+
+ if filter_code_location_location is not unset:
+ kwargs["filter_code_location_location"] = filter_code_location_location
+
+ if filter_code_location_file_path is not unset:
+ kwargs["filter_code_location_file_path"] = filter_code_location_file_path
+
+ if filter_code_location_method is not unset:
+ kwargs["filter_code_location_method"] = filter_code_location_method
+
+ if filter_fix_available is not unset:
+ kwargs["filter_fix_available"] = filter_fix_available
+
+ if filter_repo_digests is not unset:
+ kwargs["filter_repo_digests"] = filter_repo_digests
+
+ if filter_origin is not unset:
+ kwargs["filter_origin"] = filter_origin
+
+ if filter_running_kernel is not unset:
+ kwargs["filter_running_kernel"] = filter_running_kernel
+
+ if filter_asset_name is not unset:
+ kwargs["filter_asset_name"] = filter_asset_name
+
+ if filter_asset_type is not unset:
+ kwargs["filter_asset_type"] = filter_asset_type
+
+ if filter_asset_version_first is not unset:
+ kwargs["filter_asset_version_first"] = filter_asset_version_first
+
+ if filter_asset_version_last is not unset:
+ kwargs["filter_asset_version_last"] = filter_asset_version_last
+
+ if filter_asset_repository_url is not unset:
+ kwargs["filter_asset_repository_url"] = filter_asset_repository_url
+
+ if filter_asset_risks_in_production is not unset:
+ kwargs["filter_asset_risks_in_production"] = filter_asset_risks_in_production
+
+ if filter_asset_risks_under_attack is not unset:
+ kwargs["filter_asset_risks_under_attack"] = filter_asset_risks_under_attack
+
+ if filter_asset_risks_is_publicly_accessible is not unset:
+ kwargs["filter_asset_risks_is_publicly_accessible"] = filter_asset_risks_is_publicly_accessible
+
+ if filter_asset_risks_has_privileged_access is not unset:
+ kwargs["filter_asset_risks_has_privileged_access"] = filter_asset_risks_has_privileged_access
+
+ if filter_asset_risks_has_access_to_sensitive_data is not unset:
+ kwargs["filter_asset_risks_has_access_to_sensitive_data"] = filter_asset_risks_has_access_to_sensitive_data
+
+ if filter_asset_environments is not unset:
+ kwargs["filter_asset_environments"] = filter_asset_environments
+
+ if filter_asset_teams is not unset:
+ kwargs["filter_asset_teams"] = filter_asset_teams
+
+ if filter_asset_arch is not unset:
+ kwargs["filter_asset_arch"] = filter_asset_arch
+
+ if filter_asset_operating_system_name is not unset:
+ kwargs["filter_asset_operating_system_name"] = filter_asset_operating_system_name
+
+ if filter_asset_operating_system_version is not unset:
+ kwargs["filter_asset_operating_system_version"] = filter_asset_operating_system_version
+
+ warnings.warn("list_vulnerabilities is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_vulnerabilities_endpoint.call_with_http_info(**kwargs)
+
+ def list_vulnerable_assets(self, *, page_token: Union[str, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, filter_type: Union[AssetType, UnsetType]=unset, filter_version_first: Union[str, UnsetType]=unset, filter_version_last: Union[str, UnsetType]=unset, filter_repository_url: Union[str, UnsetType]=unset, filter_risks_in_production: Union[bool, UnsetType]=unset, filter_risks_under_attack: Union[bool, UnsetType]=unset, filter_risks_is_publicly_accessible: Union[bool, UnsetType]=unset, filter_risks_has_privileged_access: Union[bool, UnsetType]=unset, filter_risks_has_access_to_sensitive_data: Union[bool, UnsetType]=unset, filter_environments: Union[str, UnsetType]=unset, filter_teams: Union[str, UnsetType]=unset, filter_arch: Union[str, UnsetType]=unset, filter_operating_system_name: Union[str, UnsetType]=unset, filter_operating_system_version: Union[str, UnsetType]=unset, ) -> ListVulnerableAssetsResponse:
+ """List vulnerable assets.
+
+ Get a list of vulnerable assets.
+
+ **Pagination**
+
+ Please review the `Pagination section for the "List Vulnerabilities" <#pagination>`_ endpoint.
+
+ **Filtering**
+
+ Please review the `Filtering section for the "List Vulnerabilities" <#filtering>`_ endpoint.
+
+ **Metadata**
+
+ Please review the `Metadata section for the "List Vulnerabilities" <#metadata>`_ endpoint.
+
+ :param page_token: Its value must come from the ``links`` section of the response of the first request. Do not manually edit it.
+ :type page_token: str, optional
+ :param page_number: The page number to be retrieved. It should be equal or greater than ``1``
+ :type page_number: int, optional
+ :param filter_name: Filter by name. This field supports the usage of wildcards (*).
+ :type filter_name: str, optional
+ :param filter_type: Filter by type.
+ :type filter_type: AssetType, optional
+ :param filter_version_first: Filter by the first version of the asset since it has been vulnerable.
+ :type filter_version_first: str, optional
+ :param filter_version_last: Filter by the last detected version of the asset.
+ :type filter_version_last: str, optional
+ :param filter_repository_url: Filter by the repository url associated to the asset.
+ :type filter_repository_url: str, optional
+ :param filter_risks_in_production: Filter whether the asset is in production or not.
+ :type filter_risks_in_production: bool, optional
+ :param filter_risks_under_attack: Filter whether the asset (Service) is under attack or not.
+ :type filter_risks_under_attack: bool, optional
+ :param filter_risks_is_publicly_accessible: Filter whether the asset (Host) is publicly accessible or not.
+ :type filter_risks_is_publicly_accessible: bool, optional
+ :param filter_risks_has_privileged_access: Filter whether the asset (Host) has privileged access or not.
+ :type filter_risks_has_privileged_access: bool, optional
+ :param filter_risks_has_access_to_sensitive_data: Filter whether the asset (Host) has access to sensitive data or not.
+ :type filter_risks_has_access_to_sensitive_data: bool, optional
+ :param filter_environments: Filter by environment.
+ :type filter_environments: str, optional
+ :param filter_teams: Filter by teams.
+ :type filter_teams: str, optional
+ :param filter_arch: Filter by architecture.
+ :type filter_arch: str, optional
+ :param filter_operating_system_name: Filter by operating system name.
+ :type filter_operating_system_name: str, optional
+ :param filter_operating_system_version: Filter by operating system version.
+ :type filter_operating_system_version: str, optional
+ :rtype: ListVulnerableAssetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_token is not unset:
+ kwargs["page_token"] = page_token
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_type is not unset:
+ kwargs["filter_type"] = filter_type
+
+ if filter_version_first is not unset:
+ kwargs["filter_version_first"] = filter_version_first
+
+ if filter_version_last is not unset:
+ kwargs["filter_version_last"] = filter_version_last
+
+ if filter_repository_url is not unset:
+ kwargs["filter_repository_url"] = filter_repository_url
+
+ if filter_risks_in_production is not unset:
+ kwargs["filter_risks_in_production"] = filter_risks_in_production
+
+ if filter_risks_under_attack is not unset:
+ kwargs["filter_risks_under_attack"] = filter_risks_under_attack
+
+ if filter_risks_is_publicly_accessible is not unset:
+ kwargs["filter_risks_is_publicly_accessible"] = filter_risks_is_publicly_accessible
+
+ if filter_risks_has_privileged_access is not unset:
+ kwargs["filter_risks_has_privileged_access"] = filter_risks_has_privileged_access
+
+ if filter_risks_has_access_to_sensitive_data is not unset:
+ kwargs["filter_risks_has_access_to_sensitive_data"] = filter_risks_has_access_to_sensitive_data
+
+ if filter_environments is not unset:
+ kwargs["filter_environments"] = filter_environments
+
+ if filter_teams is not unset:
+ kwargs["filter_teams"] = filter_teams
+
+ if filter_arch is not unset:
+ kwargs["filter_arch"] = filter_arch
+
+ if filter_operating_system_name is not unset:
+ kwargs["filter_operating_system_name"] = filter_operating_system_name
+
+ if filter_operating_system_version is not unset:
+ kwargs["filter_operating_system_version"] = filter_operating_system_version
+
+ return self._list_vulnerable_assets_endpoint.call_with_http_info(**kwargs)
+
+ def mute_security_findings(self, body: MuteFindingsRequest, ) -> MuteFindingsResponse:
+ """Mute or unmute security findings.
+
+ Mute or unmute security findings.
+ You can mute or unmute up to 100 security findings per request. The request body must include ``is_muted`` and ``reason`` attributes. The allowed reasons depend on whether the finding is being muted or unmuted:
+
+ * To mute a finding: ``PENDING_FIX`` , ``FALSE_POSITIVE`` , ``OTHER`` , ``NO_FIX`` , ``DUPLICATE`` , ``RISK_ACCEPTED``.
+ * To unmute a finding: ``NO_PENDING_FIX`` , ``HUMAN_ERROR`` , ``NO_LONGER_ACCEPTED_RISK`` , ``OTHER``.
+
+ :type body: MuteFindingsRequest
+ :rtype: MuteFindingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._mute_security_findings_endpoint.call_with_http_info(**kwargs)
+
+ def patch_signal_notification_rule(self, id: str, body: PatchNotificationRuleParameters, ) -> NotificationRuleResponse:
+ """Patch a signal-based notification rule.
+
+ Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.
+
+ :param id: ID of the notification rule.
+ :type id: str
+ :type body: PatchNotificationRuleParameters
+ :rtype: NotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._patch_signal_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def patch_vulnerability_notification_rule(self, id: str, body: PatchNotificationRuleParameters, ) -> NotificationRuleResponse:
+ """Patch a vulnerability-based notification rule.
+
+ Partially update the notification rule. All fields are optional; if a field is not provided, it is not updated.
+
+ :param id: ID of the notification rule.
+ :type id: str
+ :type body: PatchNotificationRuleParameters
+ :rtype: NotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ kwargs["body"] = body
+
+ return self._patch_vulnerability_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_security_findings_automation_due_date_rules(self, body: DueDateRuleReorderRequest, ) -> DueDateRuleReorderRequest:
+ """Reorder due date rules.
+
+ Reorder the list of due date rules for the current organization.
+
+ :type body: DueDateRuleReorderRequest
+ :rtype: DueDateRuleReorderRequest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_security_findings_automation_due_date_rules_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_security_findings_automation_mute_rules(self, body: MuteRuleReorderRequest, ) -> MuteRuleReorderRequest:
+ """Reorder mute rules.
+
+ Reorder the list of mute rules for the current organization.
+
+ :type body: MuteRuleReorderRequest
+ :rtype: MuteRuleReorderRequest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_security_findings_automation_mute_rules_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_security_findings_automation_ticket_creation_rules(self, body: TicketCreationRuleReorderRequest, ) -> TicketCreationRuleReorderRequest:
+ """Reorder ticket creation rules.
+
+ Reorder the list of ticket creation rules for the current organization.
+
+ :type body: TicketCreationRuleReorderRequest
+ :rtype: TicketCreationRuleReorderRequest
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_security_findings_automation_ticket_creation_rules_endpoint.call_with_http_info(**kwargs)
+
+ def restore_security_monitoring_rule(self, rule_id: str, version: int, ) -> SecurityMonitoringRuleResponse:
+ """Restore a rule to a historical version.
+
+ Restores a custom detection rule to a previously saved historical version.
+ Only custom rules can be restored. Default and partner rules return 400.
+ The restore creates a new version entry; it does not overwrite history.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :param version: The historical version number of the rule.
+ :type version: int
+ :rtype: SecurityMonitoringRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["version"] = version
+
+ return self._restore_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def run_historical_job(self, body: RunHistoricalJobRequest, ) -> JobCreateResponse:
+ """Run a historical job.
+
+ Run a historical job.
+
+ :type body: RunHistoricalJobRequest
+ :rtype: JobCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._run_historical_job_endpoint.call_with_http_info(**kwargs)
+
+ def search_security_findings(self, body: SecurityFindingsSearchRequest, ) -> ListSecurityFindingsResponse:
+ """Search security findings.
+
+ Get a list of security findings that match a search query. `See the schema for security findings `_.
+
+ **Query Syntax**
+
+ The API uses the logs query syntax. Findings attributes (living in the attributes.attributes. namespace) are prefixed by @ when queried. Tags are queried without a prefix.
+
+ Example: ``@severity:(critical OR high) @status:open team:platform``
+
+ :type body: SecurityFindingsSearchRequest
+ :rtype: ListSecurityFindingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._search_security_findings_endpoint.call_with_http_info(**kwargs)
+
+ def search_security_findings_with_pagination(self, body: SecurityFindingsSearchRequest, ) -> collections.abc.Iterable[SecurityFindingsData]:
+ """Search security findings.
+
+ Provide a paginated version of :meth:`search_security_findings`, returning all items.
+
+ :type body: SecurityFindingsSearchRequest
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[SecurityFindingsData]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.data.attributes.page.limit", 10)
+ endpoint = self._search_security_findings_endpoint
+ set_attribute_from_path(kwargs, "body.data.attributes.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.data.attributes.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def search_security_monitoring_histsignals(self, *, body: Union[SecurityMonitoringSignalListRequest, UnsetType]=unset, ) -> SecurityMonitoringSignalsListResponse:
+ """Search hist signals.
+
+ Search hist signals.
+
+ :type body: SecurityMonitoringSignalListRequest, optional
+ :rtype: SecurityMonitoringSignalsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_security_monitoring_histsignals_endpoint.call_with_http_info(**kwargs)
+
+ def search_security_monitoring_signals(self, *, body: Union[SecurityMonitoringSignalListRequest, UnsetType]=unset, ) -> SecurityMonitoringSignalsListResponse:
+ """Get a list of security signals.
+
+ Returns security signals that match a search query.
+ Both this endpoint and the GET endpoint can be used interchangeably for listing
+ security signals.
+
+ :type body: SecurityMonitoringSignalListRequest, optional
+ :rtype: SecurityMonitoringSignalsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_security_monitoring_signals_endpoint.call_with_http_info(**kwargs)
+
+ def search_security_monitoring_signals_with_pagination(self, *, body: Union[SecurityMonitoringSignalListRequest, UnsetType]=unset, ) -> collections.abc.Iterable[SecurityMonitoringSignal]:
+ """Get a list of security signals.
+
+ Provide a paginated version of :meth:`search_security_monitoring_signals`, returning all items.
+
+ :type body: SecurityMonitoringSignalListRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[SecurityMonitoringSignal]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.page.limit", 10)
+ endpoint = self._search_security_monitoring_signals_endpoint
+ set_attribute_from_path(kwargs, "body.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def send_security_monitoring_notification_preview(self, body: CreateNotificationRuleParameters, ) -> NotificationRulePreviewResponse:
+ """Test a notification rule.
+
+ Send a notification preview to test that a notification rule's targets are properly configured.
+
+ :type body: CreateNotificationRuleParameters
+ :rtype: NotificationRulePreviewResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._send_security_monitoring_notification_preview_endpoint.call_with_http_info(**kwargs)
+
+ def test_existing_security_monitoring_rule(self, rule_id: str, body: SecurityMonitoringRuleTestRequest, ) -> SecurityMonitoringRuleTestResponse:
+ """Test an existing rule.
+
+ Test an existing rule.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :type body: SecurityMonitoringRuleTestRequest
+ :rtype: SecurityMonitoringRuleTestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._test_existing_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def test_security_monitoring_rule(self, body: SecurityMonitoringRuleTestRequest, ) -> SecurityMonitoringRuleTestResponse:
+ """Test a rule.
+
+ Test a rule.
+
+ :type body: SecurityMonitoringRuleTestRequest
+ :rtype: SecurityMonitoringRuleTestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._test_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_custom_framework(self, handle: str, version: str, body: UpdateCustomFrameworkRequest, ) -> UpdateCustomFrameworkResponse:
+ """Update a custom framework.
+
+ Update a custom framework.
+
+ :param handle: The framework handle
+ :type handle: str
+ :param version: The framework version
+ :type version: str
+ :type body: UpdateCustomFrameworkRequest
+ :rtype: UpdateCustomFrameworkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["handle"] = handle
+
+ kwargs["version"] = version
+
+ kwargs["body"] = body
+
+ return self._update_custom_framework_endpoint.call_with_http_info(**kwargs)
+
+ def update_findings_assignee(self, body: AssigneeRequest, ) -> AssigneeResponse:
+ """Assign or unassign security findings.
+
+ Assign or unassign security findings.
+ You can assign up to 100 security findings per request. Set ``assignee_id`` to the unique identifier of the Datadog user you want to assign the findings to. Omit ``assignee_id`` (or set it to ``null`` ) to unassign the findings. Per-finding warnings and failures are returned in the response ``meta`` object.
+
+ :type body: AssigneeRequest
+ :rtype: AssigneeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_findings_assignee_endpoint.call_with_http_info(**kwargs)
+
+ def update_resource_evaluation_filters(self, body: UpdateResourceEvaluationFiltersRequest, ) -> UpdateResourceEvaluationFiltersResponse:
+ """Update resource filters.
+
+ Update resource filters.
+
+ :type body: UpdateResourceEvaluationFiltersRequest
+ :rtype: UpdateResourceEvaluationFiltersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_resource_evaluation_filters_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_filter(self, security_filter_id: str, body: SecurityFilterUpdateRequest, ) -> SecurityFilterResponse:
+ """Update a security filter.
+
+ Update a specific security filter.
+ Returns the security filter object when the request is successful.
+
+ :param security_filter_id: The ID of the security filter.
+ :type security_filter_id: str
+ :param body: New definition of the security filter.
+ :type body: SecurityFilterUpdateRequest
+ :rtype: SecurityFilterResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["security_filter_id"] = security_filter_id
+
+ kwargs["body"] = body
+
+ return self._update_security_filter_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_findings_automation_due_date_rule(self, rule_id: UUID, body: DueDateRuleUpdateRequest, ) -> DueDateRuleResponse:
+ """Update a due date rule.
+
+ Update an existing due date rule by ID.
+
+ :param rule_id: The ID of the due date rule.
+ :type rule_id: UUID
+ :type body: DueDateRuleUpdateRequest
+ :rtype: DueDateRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_security_findings_automation_due_date_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_findings_automation_mute_rule(self, rule_id: UUID, body: MuteRuleUpdateRequest, ) -> MuteRuleResponse:
+ """Update a mute rule.
+
+ Update an existing mute rule by ID.
+
+ :param rule_id: The ID of the mute rule.
+ :type rule_id: UUID
+ :type body: MuteRuleUpdateRequest
+ :rtype: MuteRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_security_findings_automation_mute_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_findings_automation_ticket_creation_rule(self, rule_id: UUID, body: TicketCreationRuleUpdateRequest, ) -> TicketCreationRuleResponse:
+ """Update a ticket creation rule.
+
+ Update an existing ticket creation rule by ID.
+
+ :param rule_id: The ID of the ticket creation rule.
+ :type rule_id: UUID
+ :type body: TicketCreationRuleUpdateRequest
+ :rtype: TicketCreationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_security_findings_automation_ticket_creation_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_monitoring_critical_asset(self, critical_asset_id: str, body: SecurityMonitoringCriticalAssetUpdateRequest, ) -> SecurityMonitoringCriticalAssetResponse:
+ """Update a critical asset.
+
+ Update a specific critical asset.
+
+ :param critical_asset_id: The ID of the critical asset.
+ :type critical_asset_id: str
+ :param body: New definition of the critical asset. Supports partial updates.
+ :type body: SecurityMonitoringCriticalAssetUpdateRequest
+ :rtype: SecurityMonitoringCriticalAssetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["critical_asset_id"] = critical_asset_id
+
+ kwargs["body"] = body
+
+ return self._update_security_monitoring_critical_asset_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_monitoring_dataset(self, dataset_id: str, body: SecurityMonitoringDatasetUpdateRequest, ) -> None:
+ """Update a dataset.
+
+ Update an existing Cloud SIEM dataset. The current version of the dataset can be
+ provided to detect concurrent modifications.
+
+ :param dataset_id: The UUID of the dataset.
+ :type dataset_id: str
+ :type body: SecurityMonitoringDatasetUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["dataset_id"] = dataset_id
+
+ kwargs["body"] = body
+
+ return self._update_security_monitoring_dataset_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_monitoring_integration_config(self, integration_config_id: str, body: SecurityMonitoringIntegrationConfigUpdateRequest, ) -> SecurityMonitoringIntegrationConfigResponse:
+ """Update an entity context sync configuration.
+
+ Update an existing entity context sync configuration. Supports partial updates; only the fields provided in the request body are modified.
+
+ :param integration_config_id: The ID of the entity context sync configuration.
+ :type integration_config_id: str
+ :param body: The fields to update on the integration configuration.
+ :type body: SecurityMonitoringIntegrationConfigUpdateRequest
+ :rtype: SecurityMonitoringIntegrationConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_config_id"] = integration_config_id
+
+ kwargs["body"] = body
+
+ return self._update_security_monitoring_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_monitoring_rule(self, rule_id: str, body: SecurityMonitoringRuleUpdatePayload, ) -> SecurityMonitoringRuleResponse:
+ """Update an existing rule.
+
+ Update an existing rule. When updating ``cases`` , ``queries`` or ``options`` , the whole field
+ must be included. For example, when modifying a query all queries must be included.
+ Default rules can only be updated to be enabled, to change notifications, or to update
+ the tags (default tags cannot be removed).
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :type body: SecurityMonitoringRuleUpdatePayload
+ :rtype: SecurityMonitoringRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_security_monitoring_suppression(self, suppression_id: str, body: SecurityMonitoringSuppressionUpdateRequest, ) -> SecurityMonitoringSuppressionResponse:
+ """Update a suppression rule.
+
+ Update a specific suppression rule.
+
+ :param suppression_id: The ID of the suppression rule
+ :type suppression_id: str
+ :param body: New definition of the suppression rule. Supports partial updates.
+ :type body: SecurityMonitoringSuppressionUpdateRequest
+ :rtype: SecurityMonitoringSuppressionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["suppression_id"] = suppression_id
+
+ kwargs["body"] = body
+
+ return self._update_security_monitoring_suppression_endpoint.call_with_http_info(**kwargs)
+
+ def validate_security_monitoring_integration_config(self, integration_config_id: str, ) -> None:
+ """Validate an entity context sync configuration.
+
+ Validate the credentials currently stored on an existing entity context sync configuration.
+ Returns a 200 status code if the credentials are still valid against the external entity source.
+
+ :param integration_config_id: The ID of the entity context sync configuration.
+ :type integration_config_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["integration_config_id"] = integration_config_id
+
+ return self._validate_security_monitoring_integration_config_endpoint.call_with_http_info(**kwargs)
+
+ def validate_security_monitoring_integration_credentials(self, body: SecurityMonitoringIntegrationCredentialsValidateRequest, ) -> None:
+ """Validate entity context sync credentials.
+
+ Validate a set of credentials against the external entity source before creating a sync configuration.
+ Returns a 200 status code if the credentials are valid.
+
+ :param body: The credentials to validate.
+ :type body: SecurityMonitoringIntegrationCredentialsValidateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_security_monitoring_integration_credentials_endpoint.call_with_http_info(**kwargs)
+
+ def validate_security_monitoring_rule(self, body: Union[SecurityMonitoringRuleValidatePayload, SecurityMonitoringStandardRulePayload, SecurityMonitoringSignalRulePayload, CloudConfigurationRulePayload], ) -> None:
+ """Validate a detection rule.
+
+ Validate a detection rule.
+
+ :type body: SecurityMonitoringRuleValidatePayload
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_security_monitoring_rule_endpoint.call_with_http_info(**kwargs)
+
+ def validate_security_monitoring_suppression(self, body: SecurityMonitoringSuppressionCreateRequest, ) -> None:
+ """Validate a suppression rule.
+
+ Validate a suppression rule.
+
+ :type body: SecurityMonitoringSuppressionCreateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._validate_security_monitoring_suppression_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/sensitive_data_scanner_api.py b/datadog_api_client/v2/api/sensitive_data_scanner_api.py
new file mode 100644
index 0000000000..4936e571fb
--- /dev/null
+++ b/datadog_api_client/v2/api/sensitive_data_scanner_api.py
@@ -0,0 +1,408 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.sensitive_data_scanner_get_config_response import SensitiveDataScannerGetConfigResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_reorder_groups_response import SensitiveDataScannerReorderGroupsResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_config_request import SensitiveDataScannerConfigRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_create_group_response import SensitiveDataScannerCreateGroupResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_group_create_request import SensitiveDataScannerGroupCreateRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_group_delete_response import SensitiveDataScannerGroupDeleteResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_group_delete_request import SensitiveDataScannerGroupDeleteRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_group_update_response import SensitiveDataScannerGroupUpdateResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_group_update_request import SensitiveDataScannerGroupUpdateRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_create_rule_response import SensitiveDataScannerCreateRuleResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_rule_create_request import SensitiveDataScannerRuleCreateRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_rule_delete_response import SensitiveDataScannerRuleDeleteResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_rule_delete_request import SensitiveDataScannerRuleDeleteRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_rule_update_response import SensitiveDataScannerRuleUpdateResponse
+from datadog_api_client.v2.model.sensitive_data_scanner_rule_update_request import SensitiveDataScannerRuleUpdateRequest
+from datadog_api_client.v2.model.sensitive_data_scanner_standard_patterns_response_data import SensitiveDataScannerStandardPatternsResponseData
+
+
+class SensitiveDataScannerApi:
+ """
+ Create, update, delete, and retrieve sensitive data scanner groups and rules. See the `Sensitive Data Scanner page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_scanning_group_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerCreateGroupResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/groups",
+ "operation_id": "create_scanning_group",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerGroupCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_scanning_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerCreateRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/rules",
+ "operation_id": "create_scanning_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerRuleCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_scanning_group_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerGroupDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/groups/{group_id}",
+ "operation_id": "delete_scanning_group",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "group_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "group_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerGroupDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_scanning_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerRuleDeleteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/rules/{rule_id}",
+ "operation_id": "delete_scanning_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerRuleDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_scanning_groups_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerGetConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config",
+ "operation_id": "list_scanning_groups",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_standard_patterns_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerStandardPatternsResponseData,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/standard-patterns",
+ "operation_id": "list_standard_patterns",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._reorder_scanning_groups_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerReorderGroupsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config",
+ "operation_id": "reorder_scanning_groups",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_scanning_group_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerGroupUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/groups/{group_id}",
+ "operation_id": "update_scanning_group",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "group_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "group_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerGroupUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_scanning_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (SensitiveDataScannerRuleUpdateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/sensitive-data-scanner/config/rules/{rule_id}",
+ "operation_id": "update_scanning_rule",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SensitiveDataScannerRuleUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_scanning_group(self, body: SensitiveDataScannerGroupCreateRequest, ) -> SensitiveDataScannerCreateGroupResponse:
+ """Create Scanning Group.
+
+ Create a scanning group.
+ The request MAY include a configuration relationship.
+ A rules relationship can be omitted entirely, but if it is included it MUST be
+ null or an empty array (rules cannot be created at the same time).
+ The new group will be ordered last within the configuration.
+
+ :type body: SensitiveDataScannerGroupCreateRequest
+ :rtype: SensitiveDataScannerCreateGroupResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_scanning_group_endpoint.call_with_http_info(**kwargs)
+
+ def create_scanning_rule(self, body: SensitiveDataScannerRuleCreateRequest, ) -> SensitiveDataScannerCreateRuleResponse:
+ """Create Scanning Rule.
+
+ Create a scanning rule in a sensitive data scanner group, ordered last.
+ The posted rule MUST include a group relationship.
+ It MUST include either a standard_pattern relationship or a regex attribute, but not both.
+ If included_attributes is empty or missing, we will scan all attributes except
+ excluded_attributes. If both are missing, we will scan the whole event.
+
+ :type body: SensitiveDataScannerRuleCreateRequest
+ :rtype: SensitiveDataScannerCreateRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_scanning_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_scanning_group(self, group_id: str, body: SensitiveDataScannerGroupDeleteRequest, ) -> SensitiveDataScannerGroupDeleteResponse:
+ """Delete Scanning Group.
+
+ Delete a given group.
+
+ :param group_id: The ID of a group of rules.
+ :type group_id: str
+ :type body: SensitiveDataScannerGroupDeleteRequest
+ :rtype: SensitiveDataScannerGroupDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["group_id"] = group_id
+
+ kwargs["body"] = body
+
+ return self._delete_scanning_group_endpoint.call_with_http_info(**kwargs)
+
+ def delete_scanning_rule(self, rule_id: str, body: SensitiveDataScannerRuleDeleteRequest, ) -> SensitiveDataScannerRuleDeleteResponse:
+ """Delete Scanning Rule.
+
+ Delete a given rule.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :type body: SensitiveDataScannerRuleDeleteRequest
+ :rtype: SensitiveDataScannerRuleDeleteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._delete_scanning_rule_endpoint.call_with_http_info(**kwargs)
+
+ def list_scanning_groups(self, ) -> SensitiveDataScannerGetConfigResponse:
+ """List Scanning Groups.
+
+ List all the Scanning groups in your organization.
+
+ :rtype: SensitiveDataScannerGetConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_scanning_groups_endpoint.call_with_http_info(**kwargs)
+
+ def list_standard_patterns(self, ) -> SensitiveDataScannerStandardPatternsResponseData:
+ """List standard patterns.
+
+ Returns all standard patterns.
+
+ :rtype: SensitiveDataScannerStandardPatternsResponseData
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_standard_patterns_endpoint.call_with_http_info(**kwargs)
+
+ def reorder_scanning_groups(self, body: SensitiveDataScannerConfigRequest, ) -> SensitiveDataScannerReorderGroupsResponse:
+ """Reorder Groups.
+
+ Reorder the list of groups.
+
+ :type body: SensitiveDataScannerConfigRequest
+ :rtype: SensitiveDataScannerReorderGroupsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._reorder_scanning_groups_endpoint.call_with_http_info(**kwargs)
+
+ def update_scanning_group(self, group_id: str, body: SensitiveDataScannerGroupUpdateRequest, ) -> SensitiveDataScannerGroupUpdateResponse:
+ """Update Scanning Group.
+
+ Update a group, including the order of the rules.
+ Rules within the group are reordered by including a rules relationship. If the rules
+ relationship is present, its data section MUST contain linkages for all of the rules
+ currently in the group, and MUST NOT contain any others.
+
+ :param group_id: The ID of a group of rules.
+ :type group_id: str
+ :type body: SensitiveDataScannerGroupUpdateRequest
+ :rtype: SensitiveDataScannerGroupUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["group_id"] = group_id
+
+ kwargs["body"] = body
+
+ return self._update_scanning_group_endpoint.call_with_http_info(**kwargs)
+
+ def update_scanning_rule(self, rule_id: str, body: SensitiveDataScannerRuleUpdateRequest, ) -> SensitiveDataScannerRuleUpdateResponse:
+ """Update Scanning Rule.
+
+ Update a scanning rule.
+ The request body MUST NOT include a standard_pattern relationship, as that relationship
+ is non-editable. Trying to edit the regex attribute of a rule with a standard_pattern
+ relationship will also result in an error.
+
+ :param rule_id: The ID of the rule.
+ :type rule_id: str
+ :type body: SensitiveDataScannerRuleUpdateRequest
+ :rtype: SensitiveDataScannerRuleUpdateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_scanning_rule_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/service_accounts_api.py b/datadog_api_client/v2/api/service_accounts_api.py
new file mode 100644
index 0000000000..960c87a813
--- /dev/null
+++ b/datadog_api_client/v2/api/service_accounts_api.py
@@ -0,0 +1,652 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.user_response import UserResponse
+from datadog_api_client.v2.model.service_account_create_request import ServiceAccountCreateRequest
+from datadog_api_client.v2.model.list_service_access_tokens_response import ListServiceAccessTokensResponse
+from datadog_api_client.v2.model.personal_access_tokens_sort import PersonalAccessTokensSort
+from datadog_api_client.v2.model.service_access_token_create_response import ServiceAccessTokenCreateResponse
+from datadog_api_client.v2.model.service_account_access_token_create_request import ServiceAccountAccessTokenCreateRequest
+from datadog_api_client.v2.model.service_access_token_response import ServiceAccessTokenResponse
+from datadog_api_client.v2.model.service_account_access_token_update_request import ServiceAccountAccessTokenUpdateRequest
+from datadog_api_client.v2.model.list_application_keys_response import ListApplicationKeysResponse
+from datadog_api_client.v2.model.application_keys_sort import ApplicationKeysSort
+from datadog_api_client.v2.model.application_key_response import ApplicationKeyResponse
+from datadog_api_client.v2.model.application_key_create_request import ApplicationKeyCreateRequest
+from datadog_api_client.v2.model.partial_application_key_response import PartialApplicationKeyResponse
+from datadog_api_client.v2.model.application_key_update_request import ApplicationKeyUpdateRequest
+
+
+class ServiceAccountsApi:
+ """
+ Create, edit, and disable service accounts. See the `Service Accounts page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_service_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts",
+ "operation_id": "create_service_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_service_account_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceAccessTokenCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/access_tokens",
+ "operation_id": "create_service_account_access_token",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceAccountAccessTokenCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_service_account_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (ApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/application_keys",
+ "operation_id": "create_service_account_application_key",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKeyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_service_account_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}",
+ "operation_id": "delete_service_account_application_key",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_service_account_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceAccessTokenResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/access_tokens/{token_id}",
+ "operation_id": "get_service_account_access_token",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "token_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_service_account_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (PartialApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}",
+ "operation_id": "get_service_account_application_key",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_account_access_tokens_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListServiceAccessTokensResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/access_tokens",
+ "operation_id": "list_service_account_access_tokens",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (PersonalAccessTokensSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_account_application_keys_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListApplicationKeysResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/application_keys",
+ "operation_id": "list_service_account_application_keys",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (ApplicationKeysSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter": {
+ "openapi_types": (str,),
+ "attribute": "filter",
+ "location": "query",
+ },
+ "filter_created_at_start": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][start]",
+ "location": "query",
+ },
+ "filter_created_at_end": {
+ "openapi_types": (str,),
+ "attribute": "filter[created_at][end]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._revoke_service_account_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/access_tokens/{token_id}",
+ "operation_id": "revoke_service_account_access_token",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "token_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_service_account_access_token_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceAccessTokenResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/access_tokens/{token_id}",
+ "operation_id": "update_service_account_access_token",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "token_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "token_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceAccountAccessTokenUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_service_account_application_key_endpoint = _Endpoint(
+ settings={
+ "response_type": (PartialApplicationKeyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}",
+ "operation_id": "update_service_account_application_key",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "service_account_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_account_id",
+ "location": "path",
+ },
+ "app_key_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "app_key_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ApplicationKeyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_service_account(self, body: ServiceAccountCreateRequest, ) -> UserResponse:
+ """Create a service account.
+
+ Create a service account for your organization.
+
+ :type body: ServiceAccountCreateRequest
+ :rtype: UserResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_service_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_service_account_access_token(self, service_account_id: str, body: ServiceAccountAccessTokenCreateRequest, ) -> ServiceAccessTokenCreateResponse:
+ """Create an access token for a service account.
+
+ Create an access token for a service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :type body: ServiceAccountAccessTokenCreateRequest
+ :rtype: ServiceAccessTokenCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["body"] = body
+
+ return self._create_service_account_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def create_service_account_application_key(self, service_account_id: str, body: ApplicationKeyCreateRequest, ) -> ApplicationKeyResponse:
+ """Create an application key for this service account.
+
+ Create an application key for this service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :type body: ApplicationKeyCreateRequest
+ :rtype: ApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["body"] = body
+
+ return self._create_service_account_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def delete_service_account_application_key(self, service_account_id: str, app_key_id: str, ) -> None:
+ """Delete an application key for this service account.
+
+ Delete an application key owned by this service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["app_key_id"] = app_key_id
+
+ return self._delete_service_account_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def get_service_account_access_token(self, service_account_id: str, token_id: str, ) -> ServiceAccessTokenResponse:
+ """Get an access token for a service account.
+
+ Get a specific access token for a service account by its ID.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param token_id: The ID of the access token.
+ :type token_id: str
+ :rtype: ServiceAccessTokenResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["token_id"] = token_id
+
+ return self._get_service_account_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def get_service_account_application_key(self, service_account_id: str, app_key_id: str, ) -> PartialApplicationKeyResponse:
+ """Get one application key for this service account.
+
+ Get an application key owned by this service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :rtype: PartialApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["app_key_id"] = app_key_id
+
+ return self._get_service_account_application_key_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_account_access_tokens(self, service_account_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[PersonalAccessTokensSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, ) -> ListServiceAccessTokensResponse:
+ """List access tokens for a service account.
+
+ List all access tokens for a specific service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Access token attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ :type sort: PersonalAccessTokensSort, optional
+ :param filter: Filter access tokens by the specified string.
+ :type filter: str, optional
+ :rtype: ListServiceAccessTokensResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ return self._list_service_account_access_tokens_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_account_application_keys(self, service_account_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[ApplicationKeysSort, UnsetType]=unset, filter: Union[str, UnsetType]=unset, filter_created_at_start: Union[str, UnsetType]=unset, filter_created_at_end: Union[str, UnsetType]=unset, ) -> ListApplicationKeysResponse:
+ """List application keys for this service account.
+
+ List all application keys available for this service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Application key attribute used to sort results. Sort order is ascending
+ by default. In order to specify a descending sort, prefix the
+ attribute with a minus sign.
+ :type sort: ApplicationKeysSort, optional
+ :param filter: Filter application keys by the specified string.
+ :type filter: str, optional
+ :param filter_created_at_start: Only include application keys created on or after the specified date.
+ :type filter_created_at_start: str, optional
+ :param filter_created_at_end: Only include application keys created on or before the specified date.
+ :type filter_created_at_end: str, optional
+ :rtype: ListApplicationKeysResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter is not unset:
+ kwargs["filter"] = filter
+
+ if filter_created_at_start is not unset:
+ kwargs["filter_created_at_start"] = filter_created_at_start
+
+ if filter_created_at_end is not unset:
+ kwargs["filter_created_at_end"] = filter_created_at_end
+
+ return self._list_service_account_application_keys_endpoint.call_with_http_info(**kwargs)
+
+ def revoke_service_account_access_token(self, service_account_id: str, token_id: str, ) -> None:
+ """Revoke an access token for a service account.
+
+ Revoke a specific access token for a service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param token_id: The ID of the access token.
+ :type token_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["token_id"] = token_id
+
+ return self._revoke_service_account_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def update_service_account_access_token(self, service_account_id: str, token_id: str, body: ServiceAccountAccessTokenUpdateRequest, ) -> ServiceAccessTokenResponse:
+ """Update an access token for a service account.
+
+ Update a specific access token for a service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param token_id: The ID of the access token.
+ :type token_id: str
+ :type body: ServiceAccountAccessTokenUpdateRequest
+ :rtype: ServiceAccessTokenResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["token_id"] = token_id
+
+ kwargs["body"] = body
+
+ return self._update_service_account_access_token_endpoint.call_with_http_info(**kwargs)
+
+ def update_service_account_application_key(self, service_account_id: str, app_key_id: str, body: ApplicationKeyUpdateRequest, ) -> PartialApplicationKeyResponse:
+ """Edit an application key for this service account.
+
+ Edit an application key owned by this service account.
+
+ :param service_account_id: The ID of the service account.
+ :type service_account_id: str
+ :param app_key_id: The ID of the application key.
+ :type app_key_id: str
+ :type body: ApplicationKeyUpdateRequest
+ :rtype: PartialApplicationKeyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_account_id"] = service_account_id
+
+ kwargs["app_key_id"] = app_key_id
+
+ kwargs["body"] = body
+
+ return self._update_service_account_application_key_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/service_definition_api.py b/datadog_api_client/v2/api/service_definition_api.py
new file mode 100644
index 0000000000..00f6c9bffc
--- /dev/null
+++ b/datadog_api_client/v2/api/service_definition_api.py
@@ -0,0 +1,258 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.service_definitions_list_response import ServiceDefinitionsListResponse
+from datadog_api_client.v2.model.service_definition_schema_versions import ServiceDefinitionSchemaVersions
+from datadog_api_client.v2.model.service_definition_data import ServiceDefinitionData
+from datadog_api_client.v2.model.service_definition_create_response import ServiceDefinitionCreateResponse
+from datadog_api_client.v2.model.service_definitions_create_request import ServiceDefinitionsCreateRequest
+from datadog_api_client.v2.model.service_definition_v2_dot2 import ServiceDefinitionV2Dot2
+from datadog_api_client.v2.model.service_definition_v2_dot1 import ServiceDefinitionV2Dot1
+from datadog_api_client.v2.model.service_definition_v2 import ServiceDefinitionV2
+from datadog_api_client.v2.model.service_definition_get_response import ServiceDefinitionGetResponse
+
+
+class ServiceDefinitionApi:
+ """
+ API to create, update, retrieve and delete service definitions.
+ Note: Service Catalog `v3.0 schema `_ has new API endpoints documented under `Software Catalog `_. Use the following Service Definition endpoints for v2.2 and earlier.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_or_update_service_definitions_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceDefinitionCreateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/services/definitions",
+ "operation_id": "create_or_update_service_definitions",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceDefinitionsCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_service_definition_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/services/definitions/{service_name}",
+ "operation_id": "delete_service_definition",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "service_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_service_definition_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceDefinitionGetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/services/definitions/{service_name}",
+ "operation_id": "get_service_definition",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "service_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service_name",
+ "location": "path",
+ },
+ "schema_version": {
+ "openapi_types": (ServiceDefinitionSchemaVersions,),
+ "attribute": "schema_version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_definitions_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceDefinitionsListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/services/definitions",
+ "operation_id": "list_service_definitions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "schema_version": {
+ "openapi_types": (ServiceDefinitionSchemaVersions,),
+ "attribute": "schema_version",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_or_update_service_definitions(self, body: Union[ServiceDefinitionsCreateRequest, ServiceDefinitionV2Dot2, ServiceDefinitionV2Dot1, ServiceDefinitionV2, str], ) -> ServiceDefinitionCreateResponse:
+ """Create or update service definition.
+
+ Create or update service definition in the Datadog Service Catalog.
+
+ :param body: Service Definition YAML/JSON.
+ :type body: ServiceDefinitionsCreateRequest
+ :rtype: ServiceDefinitionCreateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_or_update_service_definitions_endpoint.call_with_http_info(**kwargs)
+
+ def delete_service_definition(self, service_name: str, ) -> None:
+ """Delete a single service definition.
+
+ Delete a single service definition in the Datadog Service Catalog.
+
+ :param service_name: The name of the service.
+ :type service_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_name"] = service_name
+
+ return self._delete_service_definition_endpoint.call_with_http_info(**kwargs)
+
+ def get_service_definition(self, service_name: str, *, schema_version: Union[ServiceDefinitionSchemaVersions, UnsetType]=unset, ) -> ServiceDefinitionGetResponse:
+ """Get a single service definition.
+
+ Get a single service definition from the Datadog Service Catalog.
+
+ :param service_name: The name of the service.
+ :type service_name: str
+ :param schema_version: The schema version desired in the response.
+ :type schema_version: ServiceDefinitionSchemaVersions, optional
+ :rtype: ServiceDefinitionGetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["service_name"] = service_name
+
+ if schema_version is not unset:
+ kwargs["schema_version"] = schema_version
+
+ return self._get_service_definition_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_definitions(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, schema_version: Union[ServiceDefinitionSchemaVersions, UnsetType]=unset, ) -> ServiceDefinitionsListResponse:
+ """Get all service definitions.
+
+ Get a list of all service definitions from the Datadog Service Catalog.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param schema_version: The schema version desired in the response.
+ :type schema_version: ServiceDefinitionSchemaVersions, optional
+ :rtype: ServiceDefinitionsListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if schema_version is not unset:
+ kwargs["schema_version"] = schema_version
+
+ return self._list_service_definitions_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_definitions_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, schema_version: Union[ServiceDefinitionSchemaVersions, UnsetType]=unset, ) -> collections.abc.Iterable[ServiceDefinitionData]:
+ """Get all service definitions.
+
+ Provide a paginated version of :meth:`list_service_definitions`, returning all items.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param schema_version: The schema version desired in the response.
+ :type schema_version: ServiceDefinitionSchemaVersions, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[ServiceDefinitionData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if schema_version is not unset:
+ kwargs["schema_version"] = schema_version
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_service_definitions_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/service_level_objectives_api.py b/datadog_api_client/v2/api/service_level_objectives_api.py
new file mode 100644
index 0000000000..e8d0b60e0b
--- /dev/null
+++ b/datadog_api_client/v2/api/service_level_objectives_api.py
@@ -0,0 +1,228 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.slo_report_post_response import SLOReportPostResponse
+from datadog_api_client.v2.model.slo_report_create_request import SloReportCreateRequest
+from datadog_api_client.v2.model.slo_report_status_get_response import SLOReportStatusGetResponse
+from datadog_api_client.v2.model.slo_status_response import SloStatusResponse
+
+
+class ServiceLevelObjectivesApi:
+ """
+ `Service Level Objectives `_
+ (SLOs) are a key part of the site reliability engineering toolkit.
+ SLOs provide a framework for defining clear targets around application performance,
+ which ultimately help teams provide a consistent customer experience,
+ balance feature development with platform stability,
+ and improve communication with internal and external users.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_slo_report_job_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOReportPostResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/slo/report",
+ "operation_id": "create_slo_report_job",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SloReportCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_report_endpoint = _Endpoint(
+ settings={
+ "response_type": (str,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/slo/report/{report_id}/download",
+ "operation_id": "get_slo_report",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "report_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "report_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["text/csv", "application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_report_job_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (SLOReportStatusGetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/slo/report/{report_id}/status",
+ "operation_id": "get_slo_report_job_status",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "report_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "report_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_slo_status_endpoint = _Endpoint(
+ settings={
+ "response_type": (SloStatusResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/slo/{slo_id}/status",
+ "operation_id": "get_slo_status",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "slo_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "slo_id",
+ "location": "path",
+ },
+ "from_ts": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "from_ts",
+ "location": "query",
+ },
+ "to_ts": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "to_ts",
+ "location": "query",
+ },
+ "disable_corrections": {
+ "openapi_types": (bool,),
+ "attribute": "disable_corrections",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def create_slo_report_job(self, body: SloReportCreateRequest, ) -> SLOReportPostResponse:
+ """Create a new SLO report. **Deprecated**.
+
+ Create a job to generate an SLO report. The report job is processed asynchronously and eventually results in a CSV report being available for download.
+
+ Check the status of the job and download the CSV report using the returned ``report_id``.
+
+ :param body: Create SLO report job request body.
+ :type body: SloReportCreateRequest
+ :rtype: SLOReportPostResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ warnings.warn("create_slo_report_job is deprecated", DeprecationWarning, stacklevel=2)
+ return self._create_slo_report_job_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo_report(self, report_id: str, ) -> str:
+ """Get SLO report. **Deprecated**.
+
+ Download an SLO report. This can only be performed after the report job has completed.
+
+ Reports are not guaranteed to exist indefinitely. Datadog recommends that you download the report as soon as it is available.
+
+ :param report_id: The ID of the report job.
+ :type report_id: str
+ :rtype: str
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["report_id"] = report_id
+
+ warnings.warn("get_slo_report is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_slo_report_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo_report_job_status(self, report_id: str, ) -> SLOReportStatusGetResponse:
+ """Get SLO report status. **Deprecated**.
+
+ Get the status of the SLO report job.
+
+ :param report_id: The ID of the report job.
+ :type report_id: str
+ :rtype: SLOReportStatusGetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["report_id"] = report_id
+
+ warnings.warn("get_slo_report_job_status is deprecated", DeprecationWarning, stacklevel=2)
+ return self._get_slo_report_job_status_endpoint.call_with_http_info(**kwargs)
+
+ def get_slo_status(self, slo_id: str, from_ts: int, to_ts: int, *, disable_corrections: Union[bool, UnsetType]=unset, ) -> SloStatusResponse:
+ """Get SLO status.
+
+ Get the status of a Service Level Objective (SLO) for a given time period.
+
+ This endpoint returns the current SLI value, error budget remaining, and other status information for the specified SLO.
+
+ :param slo_id: The ID of the SLO.
+ :type slo_id: str
+ :param from_ts: The starting timestamp for the SLO status query in epoch seconds.
+ :type from_ts: int
+ :param to_ts: The ending timestamp for the SLO status query in epoch seconds.
+ :type to_ts: int
+ :param disable_corrections: Whether to exclude correction windows from the SLO status calculation. Defaults to false.
+ :type disable_corrections: bool, optional
+ :rtype: SloStatusResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["slo_id"] = slo_id
+
+ kwargs["from_ts"] = from_ts
+
+ kwargs["to_ts"] = to_ts
+
+ if disable_corrections is not unset:
+ kwargs["disable_corrections"] = disable_corrections
+
+ return self._get_slo_status_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/service_now_integration_api.py b/datadog_api_client/v2/api/service_now_integration_api.py
new file mode 100644
index 0000000000..3894c74bb8
--- /dev/null
+++ b/datadog_api_client/v2/api/service_now_integration_api.py
@@ -0,0 +1,361 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.service_now_assignment_groups_response import ServiceNowAssignmentGroupsResponse
+from datadog_api_client.v2.model.service_now_business_services_response import ServiceNowBusinessServicesResponse
+from datadog_api_client.v2.model.service_now_templates_response import ServiceNowTemplatesResponse
+from datadog_api_client.v2.model.service_now_template_response import ServiceNowTemplateResponse
+from datadog_api_client.v2.model.service_now_template_create_request import ServiceNowTemplateCreateRequest
+from datadog_api_client.v2.model.service_now_template_update_request import ServiceNowTemplateUpdateRequest
+from datadog_api_client.v2.model.service_now_instances_response import ServiceNowInstancesResponse
+from datadog_api_client.v2.model.service_now_users_response import ServiceNowUsersResponse
+
+
+class ServiceNowIntegrationApi:
+ """
+ Manage your ServiceNow Integration. ServiceNow is a cloud-based platform that helps organizations manage digital workflows for enterprise operations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_service_now_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/handles",
+ "operation_id": "create_service_now_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceNowTemplateCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_service_now_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/handles/{template_id}",
+ "operation_id": "delete_service_now_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_service_now_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/handles/{template_id}",
+ "operation_id": "get_service_now_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_now_assignment_groups_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowAssignmentGroupsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/assignment_groups/{instance_id}",
+ "operation_id": "list_service_now_assignment_groups",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "instance_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "instance_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_now_business_services_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowBusinessServicesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/business_services/{instance_id}",
+ "operation_id": "list_service_now_business_services",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "instance_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "instance_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_now_instances_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowInstancesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/instances",
+ "operation_id": "list_service_now_instances",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_now_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowTemplatesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/handles",
+ "operation_id": "list_service_now_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_service_now_users_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowUsersResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/users/{instance_id}",
+ "operation_id": "list_service_now_users",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "instance_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "instance_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_service_now_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (ServiceNowTemplateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/servicenow/handles/{template_id}",
+ "operation_id": "update_service_now_template",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (ServiceNowTemplateUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_service_now_template(self, body: ServiceNowTemplateCreateRequest, ) -> ServiceNowTemplateResponse:
+ """Create ServiceNow template.
+
+ Create a new ServiceNow template.
+
+ :type body: ServiceNowTemplateCreateRequest
+ :rtype: ServiceNowTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_service_now_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_service_now_template(self, template_id: UUID, ) -> None:
+ """Delete ServiceNow template.
+
+ Delete a ServiceNow template by ID.
+
+ :param template_id: The ID of the ServiceNow template to delete
+ :type template_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ return self._delete_service_now_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_service_now_template(self, template_id: UUID, ) -> ServiceNowTemplateResponse:
+ """Get ServiceNow template.
+
+ Get a ServiceNow template by ID.
+
+ :param template_id: The ID of the ServiceNow template to retrieve
+ :type template_id: UUID
+ :rtype: ServiceNowTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ return self._get_service_now_template_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_now_assignment_groups(self, instance_id: UUID, ) -> ServiceNowAssignmentGroupsResponse:
+ """List ServiceNow assignment groups.
+
+ Get all assignment groups for a ServiceNow instance.
+
+ :param instance_id: The ID of the ServiceNow instance
+ :type instance_id: UUID
+ :rtype: ServiceNowAssignmentGroupsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["instance_id"] = instance_id
+
+ return self._list_service_now_assignment_groups_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_now_business_services(self, instance_id: UUID, ) -> ServiceNowBusinessServicesResponse:
+ """List ServiceNow business services.
+
+ Get all business services for a ServiceNow instance.
+
+ :param instance_id: The ID of the ServiceNow instance
+ :type instance_id: UUID
+ :rtype: ServiceNowBusinessServicesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["instance_id"] = instance_id
+
+ return self._list_service_now_business_services_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_now_instances(self, ) -> ServiceNowInstancesResponse:
+ """List ServiceNow instances.
+
+ Get all ServiceNow instances for the organization.
+
+ :rtype: ServiceNowInstancesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_service_now_instances_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_now_templates(self, ) -> ServiceNowTemplatesResponse:
+ """List ServiceNow templates.
+
+ Get all ServiceNow templates for the organization.
+
+ :rtype: ServiceNowTemplatesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_service_now_templates_endpoint.call_with_http_info(**kwargs)
+
+ def list_service_now_users(self, instance_id: UUID, ) -> ServiceNowUsersResponse:
+ """List ServiceNow users.
+
+ Get all users for a ServiceNow instance.
+
+ :param instance_id: The ID of the ServiceNow instance
+ :type instance_id: UUID
+ :rtype: ServiceNowUsersResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["instance_id"] = instance_id
+
+ return self._list_service_now_users_endpoint.call_with_http_info(**kwargs)
+
+ def update_service_now_template(self, template_id: UUID, body: ServiceNowTemplateUpdateRequest, ) -> ServiceNowTemplateResponse:
+ """Update ServiceNow template.
+
+ Update a ServiceNow template by ID.
+
+ :param template_id: The ID of the ServiceNow template to update
+ :type template_id: UUID
+ :type body: ServiceNowTemplateUpdateRequest
+ :rtype: ServiceNowTemplateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ kwargs["body"] = body
+
+ return self._update_service_now_template_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/slack_integration_api.py b/datadog_api_client/v2/api/slack_integration_api.py
new file mode 100644
index 0000000000..03f5f7ce3e
--- /dev/null
+++ b/datadog_api_client/v2/api/slack_integration_api.py
@@ -0,0 +1,71 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.slack_user_bindings_response import SlackUserBindingsResponse
+
+
+class SlackIntegrationApi:
+ """
+ Configure your `Datadog Slack integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._list_slack_user_bindings_endpoint = _Endpoint(
+ settings={
+ "response_type": (SlackUserBindingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/slack/user-bindings",
+ "operation_id": "list_slack_user_bindings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_uuid": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "user_uuid",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def list_slack_user_bindings(self, user_uuid: UUID, ) -> SlackUserBindingsResponse:
+ """List Slack user bindings.
+
+ List all Slack user bindings for a given Datadog user from the Datadog Slack integration.
+
+ :param user_uuid: The UUID of the Datadog user to list Slack bindings for.
+ :type user_uuid: UUID
+ :rtype: SlackUserBindingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_uuid"] = user_uuid
+
+ return self._list_slack_user_bindings_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/software_catalog_api.py b/datadog_api_client/v2/api/software_catalog_api.py
new file mode 100644
index 0000000000..da64e5377f
--- /dev/null
+++ b/datadog_api_client/v2/api/software_catalog_api.py
@@ -0,0 +1,698 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.list_entity_catalog_response import ListEntityCatalogResponse
+from datadog_api_client.v2.model.relation_type import RelationType
+from datadog_api_client.v2.model.include_type import IncludeType
+from datadog_api_client.v2.model.entity_data import EntityData
+from datadog_api_client.v2.model.upsert_catalog_entity_response import UpsertCatalogEntityResponse
+from datadog_api_client.v2.model.upsert_catalog_entity_request import UpsertCatalogEntityRequest
+from datadog_api_client.v2.model.entity_v3 import EntityV3
+from datadog_api_client.v2.model.entity_response_array import EntityResponseArray
+from datadog_api_client.v2.model.list_kind_catalog_response import ListKindCatalogResponse
+from datadog_api_client.v2.model.kind_data import KindData
+from datadog_api_client.v2.model.upsert_catalog_kind_response import UpsertCatalogKindResponse
+from datadog_api_client.v2.model.upsert_catalog_kind_request import UpsertCatalogKindRequest
+from datadog_api_client.v2.model.kind_obj import KindObj
+from datadog_api_client.v2.model.list_relation_catalog_response import ListRelationCatalogResponse
+from datadog_api_client.v2.model.relation_include_type import RelationIncludeType
+from datadog_api_client.v2.model.relation_response import RelationResponse
+
+
+class SoftwareCatalogApi:
+ """
+ API to create, update, retrieve, and delete Software Catalog entities.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_catalog_entity_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/entity/{entity_id}",
+ "operation_id": "delete_catalog_entity",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "entity_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "entity_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_catalog_kind_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/kind/{kind_id}",
+ "operation_id": "delete_catalog_kind",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "kind_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "kind_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_catalog_entity_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListEntityCatalogResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/entity",
+ "operation_id": "list_catalog_entity",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ "filter_ref": {
+ "openapi_types": (str,),
+ "attribute": "filter[ref]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ "filter_kind": {
+ "openapi_types": (str,),
+ "attribute": "filter[kind]",
+ "location": "query",
+ },
+ "filter_owner": {
+ "openapi_types": (str,),
+ "attribute": "filter[owner]",
+ "location": "query",
+ },
+ "filter_relation_type": {
+ "openapi_types": (RelationType,),
+ "attribute": "filter[relation][type]",
+ "location": "query",
+ },
+ "filter_exclude_snapshot": {
+ "openapi_types": (str,),
+ "attribute": "filter[exclude_snapshot]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (IncludeType,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "include_discovered": {
+ "openapi_types": (bool,),
+ "attribute": "includeDiscovered",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_catalog_kind_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListKindCatalogResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/kind",
+ "operation_id": "list_catalog_kind",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "filter_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[id]",
+ "location": "query",
+ },
+ "filter_name": {
+ "openapi_types": (str,),
+ "attribute": "filter[name]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_catalog_relation_endpoint = _Endpoint(
+ settings={
+ "response_type": (ListRelationCatalogResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/relation",
+ "operation_id": "list_catalog_relation",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "filter_type": {
+ "openapi_types": (RelationType,),
+ "attribute": "filter[type]",
+ "location": "query",
+ },
+ "filter_from_ref": {
+ "openapi_types": (str,),
+ "attribute": "filter[from_ref]",
+ "location": "query",
+ },
+ "filter_to_ref": {
+ "openapi_types": (str,),
+ "attribute": "filter[to_ref]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (RelationIncludeType,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "include_discovered": {
+ "openapi_types": (bool,),
+ "attribute": "includeDiscovered",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._preview_catalog_entities_endpoint = _Endpoint(
+ settings={
+ "response_type": (EntityResponseArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/entity/preview",
+ "operation_id": "preview_catalog_entities",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_catalog_entity_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpsertCatalogEntityResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/entity",
+ "operation_id": "upsert_catalog_entity",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UpsertCatalogEntityRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_catalog_kind_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpsertCatalogKindResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/catalog/kind",
+ "operation_id": "upsert_catalog_kind",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UpsertCatalogKindRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_catalog_entity(self, entity_id: str, ) -> None:
+ """Delete a single entity.
+
+ Delete a single entity in Software Catalog.
+
+ :param entity_id: UUID or Entity Ref.
+ :type entity_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["entity_id"] = entity_id
+
+ return self._delete_catalog_entity_endpoint.call_with_http_info(**kwargs)
+
+ def delete_catalog_kind(self, kind_id: str, ) -> None:
+ """Delete a single kind.
+
+ Delete a single kind in Software Catalog.
+
+ :param kind_id: Entity kind.
+ :type kind_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["kind_id"] = kind_id
+
+ return self._delete_catalog_kind_endpoint.call_with_http_info(**kwargs)
+
+ def list_catalog_entity(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, filter_ref: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, filter_kind: Union[str, UnsetType]=unset, filter_owner: Union[str, UnsetType]=unset, filter_relation_type: Union[RelationType, UnsetType]=unset, filter_exclude_snapshot: Union[str, UnsetType]=unset, include: Union[IncludeType, UnsetType]=unset, include_discovered: Union[bool, UnsetType]=unset, ) -> ListEntityCatalogResponse:
+ """Get a list of entities.
+
+ Get a list of entities from Software Catalog.
+
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of entities in the response.
+ :type page_limit: int, optional
+ :param filter_id: Filter entities by UUID.
+ :type filter_id: str, optional
+ :param filter_ref: Filter entities by reference
+ :type filter_ref: str, optional
+ :param filter_name: Filter entities by name.
+ :type filter_name: str, optional
+ :param filter_kind: Filter entities by kind.
+ :type filter_kind: str, optional
+ :param filter_owner: Filter entities by owner.
+ :type filter_owner: str, optional
+ :param filter_relation_type: Filter entities by relation type.
+ :type filter_relation_type: RelationType, optional
+ :param filter_exclude_snapshot: Filter entities by excluding snapshotted entities.
+ :type filter_exclude_snapshot: str, optional
+ :param include: Include relationship data.
+ :type include: IncludeType, optional
+ :param include_discovered: If true, includes discovered services from APM and USM that do not have entity definitions.
+ :type include_discovered: bool, optional
+ :rtype: ListEntityCatalogResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_ref is not unset:
+ kwargs["filter_ref"] = filter_ref
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_kind is not unset:
+ kwargs["filter_kind"] = filter_kind
+
+ if filter_owner is not unset:
+ kwargs["filter_owner"] = filter_owner
+
+ if filter_relation_type is not unset:
+ kwargs["filter_relation_type"] = filter_relation_type
+
+ if filter_exclude_snapshot is not unset:
+ kwargs["filter_exclude_snapshot"] = filter_exclude_snapshot
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if include_discovered is not unset:
+ kwargs["include_discovered"] = include_discovered
+
+ return self._list_catalog_entity_endpoint.call_with_http_info(**kwargs)
+
+ def list_catalog_entity_with_pagination(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, filter_ref: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, filter_kind: Union[str, UnsetType]=unset, filter_owner: Union[str, UnsetType]=unset, filter_relation_type: Union[RelationType, UnsetType]=unset, filter_exclude_snapshot: Union[str, UnsetType]=unset, include: Union[IncludeType, UnsetType]=unset, include_discovered: Union[bool, UnsetType]=unset, ) -> collections.abc.Iterable[EntityData]:
+ """Get a list of entities.
+
+ Provide a paginated version of :meth:`list_catalog_entity`, returning all items.
+
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of entities in the response.
+ :type page_limit: int, optional
+ :param filter_id: Filter entities by UUID.
+ :type filter_id: str, optional
+ :param filter_ref: Filter entities by reference
+ :type filter_ref: str, optional
+ :param filter_name: Filter entities by name.
+ :type filter_name: str, optional
+ :param filter_kind: Filter entities by kind.
+ :type filter_kind: str, optional
+ :param filter_owner: Filter entities by owner.
+ :type filter_owner: str, optional
+ :param filter_relation_type: Filter entities by relation type.
+ :type filter_relation_type: RelationType, optional
+ :param filter_exclude_snapshot: Filter entities by excluding snapshotted entities.
+ :type filter_exclude_snapshot: str, optional
+ :param include: Include relationship data.
+ :type include: IncludeType, optional
+ :param include_discovered: If true, includes discovered services from APM and USM that do not have entity definitions.
+ :type include_discovered: bool, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[EntityData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_ref is not unset:
+ kwargs["filter_ref"] = filter_ref
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ if filter_kind is not unset:
+ kwargs["filter_kind"] = filter_kind
+
+ if filter_owner is not unset:
+ kwargs["filter_owner"] = filter_owner
+
+ if filter_relation_type is not unset:
+ kwargs["filter_relation_type"] = filter_relation_type
+
+ if filter_exclude_snapshot is not unset:
+ kwargs["filter_exclude_snapshot"] = filter_exclude_snapshot
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if include_discovered is not unset:
+ kwargs["include_discovered"] = include_discovered
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 100)
+ endpoint = self._list_catalog_entity_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_catalog_kind(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, ) -> ListKindCatalogResponse:
+ """Get a list of entity kinds.
+
+ Get a list of entity kinds from Software Catalog.
+
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of kinds in the response.
+ :type page_limit: int, optional
+ :param filter_id: Filter entities by UUID.
+ :type filter_id: str, optional
+ :param filter_name: Filter entities by name.
+ :type filter_name: str, optional
+ :rtype: ListKindCatalogResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ return self._list_catalog_kind_endpoint.call_with_http_info(**kwargs)
+
+ def list_catalog_kind_with_pagination(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_id: Union[str, UnsetType]=unset, filter_name: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[KindData]:
+ """Get a list of entity kinds.
+
+ Provide a paginated version of :meth:`list_catalog_kind`, returning all items.
+
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of kinds in the response.
+ :type page_limit: int, optional
+ :param filter_id: Filter entities by UUID.
+ :type filter_id: str, optional
+ :param filter_name: Filter entities by name.
+ :type filter_name: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[KindData]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_id is not unset:
+ kwargs["filter_id"] = filter_id
+
+ if filter_name is not unset:
+ kwargs["filter_name"] = filter_name
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 100)
+ endpoint = self._list_catalog_kind_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_catalog_relation(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_type: Union[RelationType, UnsetType]=unset, filter_from_ref: Union[str, UnsetType]=unset, filter_to_ref: Union[str, UnsetType]=unset, include: Union[RelationIncludeType, UnsetType]=unset, include_discovered: Union[bool, UnsetType]=unset, ) -> ListRelationCatalogResponse:
+ """Get a list of entity relations.
+
+ Get a list of entity relations from Software Catalog.
+
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of relations in the response.
+ :type page_limit: int, optional
+ :param filter_type: Filter relations by type.
+ :type filter_type: RelationType, optional
+ :param filter_from_ref: Filter relations by the reference of the first entity in the relation.
+ :type filter_from_ref: str, optional
+ :param filter_to_ref: Filter relations by the reference of the second entity in the relation.
+ :type filter_to_ref: str, optional
+ :param include: Include relationship data.
+ :type include: RelationIncludeType, optional
+ :param include_discovered: If true, includes relationships discovered by APM and USM.
+ :type include_discovered: bool, optional
+ :rtype: ListRelationCatalogResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_type is not unset:
+ kwargs["filter_type"] = filter_type
+
+ if filter_from_ref is not unset:
+ kwargs["filter_from_ref"] = filter_from_ref
+
+ if filter_to_ref is not unset:
+ kwargs["filter_to_ref"] = filter_to_ref
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if include_discovered is not unset:
+ kwargs["include_discovered"] = include_discovered
+
+ return self._list_catalog_relation_endpoint.call_with_http_info(**kwargs)
+
+ def list_catalog_relation_with_pagination(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_type: Union[RelationType, UnsetType]=unset, filter_from_ref: Union[str, UnsetType]=unset, filter_to_ref: Union[str, UnsetType]=unset, include: Union[RelationIncludeType, UnsetType]=unset, include_discovered: Union[bool, UnsetType]=unset, ) -> collections.abc.Iterable[RelationResponse]:
+ """Get a list of entity relations.
+
+ Provide a paginated version of :meth:`list_catalog_relation`, returning all items.
+
+ :param page_offset: Specific offset to use as the beginning of the returned page.
+ :type page_offset: int, optional
+ :param page_limit: Maximum number of relations in the response.
+ :type page_limit: int, optional
+ :param filter_type: Filter relations by type.
+ :type filter_type: RelationType, optional
+ :param filter_from_ref: Filter relations by the reference of the first entity in the relation.
+ :type filter_from_ref: str, optional
+ :param filter_to_ref: Filter relations by the reference of the second entity in the relation.
+ :type filter_to_ref: str, optional
+ :param include: Include relationship data.
+ :type include: RelationIncludeType, optional
+ :param include_discovered: If true, includes relationships discovered by APM and USM.
+ :type include_discovered: bool, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[RelationResponse]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_type is not unset:
+ kwargs["filter_type"] = filter_type
+
+ if filter_from_ref is not unset:
+ kwargs["filter_from_ref"] = filter_from_ref
+
+ if filter_to_ref is not unset:
+ kwargs["filter_to_ref"] = filter_to_ref
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if include_discovered is not unset:
+ kwargs["include_discovered"] = include_discovered
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 100)
+ endpoint = self._list_catalog_relation_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def preview_catalog_entities(self, ) -> EntityResponseArray:
+ """Preview catalog entities.
+
+ :rtype: EntityResponseArray
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._preview_catalog_entities_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_catalog_entity(self, body: Union[UpsertCatalogEntityRequest, EntityV3, str], ) -> UpsertCatalogEntityResponse:
+ """Create or update entities.
+
+ Create or update entities in Software Catalog.
+
+ :param body: Entity YAML or JSON.
+ :type body: UpsertCatalogEntityRequest
+ :rtype: UpsertCatalogEntityResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upsert_catalog_entity_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_catalog_kind(self, body: Union[UpsertCatalogKindRequest, KindObj, str], ) -> UpsertCatalogKindResponse:
+ """Create or update kinds.
+
+ Create or update kinds in Software Catalog.
+
+ :param body: Kind YAML or JSON.
+ :type body: UpsertCatalogKindRequest
+ :rtype: UpsertCatalogKindResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upsert_catalog_kind_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/spa_api.py b/datadog_api_client/v2/api/spa_api.py
new file mode 100644
index 0000000000..2cc3022faa
--- /dev/null
+++ b/datadog_api_client/v2/api/spa_api.py
@@ -0,0 +1,137 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.recommendation_document import RecommendationDocument
+
+
+class SpaApi:
+ """
+ SPA (Spark Pod Autosizing) API. Provides resource recommendations and cost insights to help optimize Spark job configurations.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_spa_recommendations_endpoint = _Endpoint(
+ settings={
+ "response_type": (RecommendationDocument,),
+ "auth": ["AuthZ"],
+ "endpoint_path": "/api/v2/spa/recommendations/{service}",
+ "operation_id": "get_spa_recommendations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "bypass_cache": {
+ "openapi_types": (str,),
+ "attribute": "bypass_cache",
+ "location": "query",
+ },
+ "service": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_spa_recommendations_with_shard_endpoint = _Endpoint(
+ settings={
+ "response_type": (RecommendationDocument,),
+ "auth": ["AuthZ"],
+ "endpoint_path": "/api/v2/spa/recommendations/{service}/{shard}",
+ "operation_id": "get_spa_recommendations_with_shard",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "shard": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "shard",
+ "location": "path",
+ },
+ "service": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "service",
+ "location": "path",
+ },
+ "bypass_cache": {
+ "openapi_types": (str,),
+ "attribute": "bypass_cache",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def get_spa_recommendations(self, service: str, *, bypass_cache: Union[str, UnsetType]=unset, ) -> RecommendationDocument:
+ """Get SPA Recommendations.
+
+ This endpoint is currently experimental and restricted to Datadog internal use only. Retrieve resource recommendations for a Spark job. The caller (Spark Gateway or DJM UI) provides a service name and SPA returns structured recommendations for driver and executor resources. The version with a shard should be preferred, where possible, as it gives more accurate results.
+
+ :param service: The service name for a spark job.
+ :type service: str
+ :param bypass_cache: The recommendation service should not use its metrics cache.
+ :type bypass_cache: str, optional
+ :rtype: RecommendationDocument
+ """
+ kwargs: Dict[str, Any] = {}
+ if bypass_cache is not unset:
+ kwargs["bypass_cache"] = bypass_cache
+
+ kwargs["service"] = service
+
+ return self._get_spa_recommendations_endpoint.call_with_http_info(**kwargs)
+
+ def get_spa_recommendations_with_shard(self, shard: str, service: str, *, bypass_cache: Union[str, UnsetType]=unset, ) -> RecommendationDocument:
+ """Get SPA Recommendations with a shard parameter.
+
+ This endpoint is currently experimental and restricted to Datadog internal use only. Retrieve resource recommendations for a Spark job. The caller (Spark Gateway or DJM UI) provides a service name and shard identifier, and SPA returns structured recommendations for driver and executor resources.
+
+ :param shard: The shard tag for a spark job, which differentiates jobs within the same service that have different resource needs
+ :type shard: str
+ :param service: The service name for a spark job
+ :type service: str
+ :param bypass_cache: The recommendation service should not use its metrics cache.
+ :type bypass_cache: str, optional
+ :rtype: RecommendationDocument
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["shard"] = shard
+
+ kwargs["service"] = service
+
+ if bypass_cache is not unset:
+ kwargs["bypass_cache"] = bypass_cache
+
+ return self._get_spa_recommendations_with_shard_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/spans_api.py b/datadog_api_client/v2/api/spans_api.py
new file mode 100644
index 0000000000..d01a38f493
--- /dev/null
+++ b/datadog_api_client/v2/api/spans_api.py
@@ -0,0 +1,288 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.spans_aggregate_response import SpansAggregateResponse
+from datadog_api_client.v2.model.spans_aggregate_request import SpansAggregateRequest
+from datadog_api_client.v2.model.spans_list_response import SpansListResponse
+from datadog_api_client.v2.model.spans_sort import SpansSort
+from datadog_api_client.v2.model.span import Span
+from datadog_api_client.v2.model.spans_list_request import SpansListRequest
+
+
+class SpansApi:
+ """
+ Search and aggregate your spans from your Datadog platform over HTTP.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._aggregate_spans_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansAggregateResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/spans/analytics/aggregate",
+ "operation_id": "aggregate_spans",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SpansAggregateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_spans_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/spans/events/search",
+ "operation_id": "list_spans",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SpansListRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._list_spans_get_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/spans/events",
+ "operation_id": "list_spans_get",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_query": {
+ "openapi_types": (str,),
+ "attribute": "filter[query]",
+ "location": "query",
+ },
+ "filter_from": {
+ "openapi_types": (str,),
+ "attribute": "filter[from]",
+ "location": "query",
+ },
+ "filter_to": {
+ "openapi_types": (str,),
+ "attribute": "filter[to]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (SpansSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "page_cursor": {
+ "openapi_types": (str,),
+ "attribute": "page[cursor]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 1000,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ def aggregate_spans(self, body: SpansAggregateRequest, ) -> SpansAggregateResponse:
+ """Aggregate spans.
+
+ The API endpoint to aggregate spans into buckets and compute metrics and timeseries.
+ This endpoint is rate limited to ``300`` requests per hour.
+
+ :type body: SpansAggregateRequest
+ :rtype: SpansAggregateResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._aggregate_spans_endpoint.call_with_http_info(**kwargs)
+
+ def list_spans(self, body: SpansListRequest, ) -> SpansListResponse:
+ """Search spans.
+
+ List endpoint returns spans that match a span search query.
+ `Results are paginated `_.
+
+ Use this endpoint to build complex spans filtering and search.
+ This endpoint is rate limited to ``300`` requests per hour.
+
+ :type body: SpansListRequest
+ :rtype: SpansListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._list_spans_endpoint.call_with_http_info(**kwargs)
+
+ def list_spans_with_pagination(self, body: SpansListRequest, ) -> collections.abc.Iterable[Span]:
+ """Search spans.
+
+ Provide a paginated version of :meth:`list_spans`, returning all items.
+
+ :type body: SpansListRequest
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Span]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.data.attributes.page.limit", 10)
+ endpoint = self._list_spans_endpoint
+ set_attribute_from_path(kwargs, "body.data.attributes.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.data.attributes.page.cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_spans_get(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[str, UnsetType]=unset, filter_to: Union[str, UnsetType]=unset, sort: Union[SpansSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> SpansListResponse:
+ """Get a list of spans.
+
+ List endpoint returns spans that match a span search query.
+ `Results are paginated `_.
+
+ Use this endpoint to see your latest spans.
+ This endpoint is rate limited to ``300`` requests per hour.
+
+ :param filter_query: Search query following spans syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds).
+ :type filter_from: str, optional
+ :param filter_to: Maximum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds).
+ :type filter_to: str, optional
+ :param sort: Order of spans in results.
+ :type sort: SpansSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of spans in the response.
+ :type page_limit: int, optional
+ :rtype: SpansListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_spans_get_endpoint.call_with_http_info(**kwargs)
+
+ def list_spans_get_with_pagination(self, *, filter_query: Union[str, UnsetType]=unset, filter_from: Union[str, UnsetType]=unset, filter_to: Union[str, UnsetType]=unset, sort: Union[SpansSort, UnsetType]=unset, page_cursor: Union[str, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[Span]:
+ """Get a list of spans.
+
+ Provide a paginated version of :meth:`list_spans_get`, returning all items.
+
+ :param filter_query: Search query following spans syntax.
+ :type filter_query: str, optional
+ :param filter_from: Minimum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds).
+ :type filter_from: str, optional
+ :param filter_to: Maximum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds).
+ :type filter_to: str, optional
+ :param sort: Order of spans in results.
+ :type sort: SpansSort, optional
+ :param page_cursor: List following results with a cursor provided in the previous query.
+ :type page_cursor: str, optional
+ :param page_limit: Maximum number of spans in the response.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Span]
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_query is not unset:
+ kwargs["filter_query"] = filter_query
+
+ if filter_from is not unset:
+ kwargs["filter_from"] = filter_from
+
+ if filter_to is not unset:
+ kwargs["filter_to"] = filter_to
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if page_cursor is not unset:
+ kwargs["page_cursor"] = page_cursor
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_spans_get_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "page_cursor",
+ "cursor_path": "meta.page.after",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
diff --git a/datadog_api_client/v2/api/spans_metrics_api.py b/datadog_api_client/v2/api/spans_metrics_api.py
new file mode 100644
index 0000000000..f168feb4c0
--- /dev/null
+++ b/datadog_api_client/v2/api/spans_metrics_api.py
@@ -0,0 +1,223 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.spans_metrics_response import SpansMetricsResponse
+from datadog_api_client.v2.model.spans_metric_response import SpansMetricResponse
+from datadog_api_client.v2.model.spans_metric_create_request import SpansMetricCreateRequest
+from datadog_api_client.v2.model.spans_metric_update_request import SpansMetricUpdateRequest
+
+
+class SpansMetricsApi:
+ """
+ Manage configuration of `span-based metrics `_ for your organization. See `Generate Metrics from Spans `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_spans_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/metrics",
+ "operation_id": "create_spans_metric",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SpansMetricCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_spans_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/metrics/{metric_id}",
+ "operation_id": "delete_spans_metric",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_spans_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/metrics/{metric_id}",
+ "operation_id": "get_spans_metric",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_spans_metrics_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansMetricsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/metrics",
+ "operation_id": "list_spans_metrics",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_spans_metric_endpoint = _Endpoint(
+ settings={
+ "response_type": (SpansMetricResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/apm/config/metrics/{metric_id}",
+ "operation_id": "update_spans_metric",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "metric_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "metric_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SpansMetricUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_spans_metric(self, body: SpansMetricCreateRequest, ) -> SpansMetricResponse:
+ """Create a span-based metric.
+
+ Create a metric based on your ingested spans in your organization.
+ Returns the span-based metric object from the request body when the request is successful.
+
+ :param body: The definition of the new span-based metric.
+ :type body: SpansMetricCreateRequest
+ :rtype: SpansMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_spans_metric_endpoint.call_with_http_info(**kwargs)
+
+ def delete_spans_metric(self, metric_id: str, ) -> None:
+ """Delete a span-based metric.
+
+ Delete a specific span-based metric from your organization.
+
+ :param metric_id: The name of the span-based metric.
+ :type metric_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ return self._delete_spans_metric_endpoint.call_with_http_info(**kwargs)
+
+ def get_spans_metric(self, metric_id: str, ) -> SpansMetricResponse:
+ """Get a span-based metric.
+
+ Get a specific span-based metric from your organization.
+
+ :param metric_id: The name of the span-based metric.
+ :type metric_id: str
+ :rtype: SpansMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ return self._get_spans_metric_endpoint.call_with_http_info(**kwargs)
+
+ def list_spans_metrics(self, ) -> SpansMetricsResponse:
+ """Get all span-based metrics.
+
+ Get the list of configured span-based metrics with their definitions.
+
+ :rtype: SpansMetricsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_spans_metrics_endpoint.call_with_http_info(**kwargs)
+
+ def update_spans_metric(self, metric_id: str, body: SpansMetricUpdateRequest, ) -> SpansMetricResponse:
+ """Update a span-based metric.
+
+ Update a specific span-based metric from your organization.
+ Returns the span-based metric object from the request body when the request is successful.
+
+ :param metric_id: The name of the span-based metric.
+ :type metric_id: str
+ :param body: New definition of the span-based metric.
+ :type body: SpansMetricUpdateRequest
+ :rtype: SpansMetricResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["metric_id"] = metric_id
+
+ kwargs["body"] = body
+
+ return self._update_spans_metric_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/static_analysis_api.py b/datadog_api_client/v2/api/static_analysis_api.py
new file mode 100644
index 0000000000..f81b36c1d2
--- /dev/null
+++ b/datadog_api_client/v2/api/static_analysis_api.py
@@ -0,0 +1,1513 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.sca_request import ScaRequest
+from datadog_api_client.v2.model.mcp_scan_request_response import McpScanRequestResponse
+from datadog_api_client.v2.model.mcp_scan_request import McpScanRequest
+from datadog_api_client.v2.model.scan_result_response import ScanResultResponse
+from datadog_api_client.v2.model.licenses_list_response import LicensesListResponse
+from datadog_api_client.v2.model.resolve_vulnerable_symbols_response import ResolveVulnerableSymbolsResponse
+from datadog_api_client.v2.model.resolve_vulnerable_symbols_request import ResolveVulnerableSymbolsRequest
+from datadog_api_client.v2.model.ai_memory_violation_results_response import AiMemoryViolationResultsResponse
+from datadog_api_client.v2.model.ai_memory_violation_result_request import AiMemoryViolationResultRequest
+from datadog_api_client.v2.model.ai_prompts_response import AiPromptsResponse
+from datadog_api_client.v2.model.ai_custom_rulesets_response import AiCustomRulesetsResponse
+from datadog_api_client.v2.model.ai_custom_ruleset_response import AiCustomRulesetResponse
+from datadog_api_client.v2.model.ai_custom_ruleset_request import AiCustomRulesetRequest
+from datadog_api_client.v2.model.ai_custom_ruleset_update_request import AiCustomRulesetUpdateRequest
+from datadog_api_client.v2.model.ai_custom_rule_response import AiCustomRuleResponse
+from datadog_api_client.v2.model.ai_custom_rule_request import AiCustomRuleRequest
+from datadog_api_client.v2.model.ai_custom_rule_revisions_response import AiCustomRuleRevisionsResponse
+from datadog_api_client.v2.model.ai_custom_rule_revision_response_data import AiCustomRuleRevisionResponseData
+from datadog_api_client.v2.model.ai_custom_rule_revision_request import AiCustomRuleRevisionRequest
+from datadog_api_client.v2.model.ai_custom_rule_revision_response import AiCustomRuleRevisionResponse
+from datadog_api_client.v2.model.custom_ruleset_list_response import CustomRulesetListResponse
+from datadog_api_client.v2.model.custom_ruleset_response import CustomRulesetResponse
+from datadog_api_client.v2.model.custom_ruleset_request import CustomRulesetRequest
+from datadog_api_client.v2.model.custom_rule_response import CustomRuleResponse
+from datadog_api_client.v2.model.custom_rule_request import CustomRuleRequest
+from datadog_api_client.v2.model.custom_rule_revisions_response import CustomRuleRevisionsResponse
+from datadog_api_client.v2.model.custom_rule_revision import CustomRuleRevision
+from datadog_api_client.v2.model.custom_rule_revision_request import CustomRuleRevisionRequest
+from datadog_api_client.v2.model.revert_custom_rule_revision_request import RevertCustomRuleRevisionRequest
+from datadog_api_client.v2.model.custom_rule_revision_response import CustomRuleRevisionResponse
+
+
+class StaticAnalysisApi:
+ """
+ API for static analysis
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_ai_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}/rules",
+ "operation_id": "create_ai_custom_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AiCustomRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_ai_custom_rule_revision_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}/rules/{rule_name}/revisions",
+ "operation_id": "create_ai_custom_rule_revision",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AiCustomRuleRevisionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_ai_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRulesetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets",
+ "operation_id": "create_ai_custom_ruleset",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AiCustomRulesetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_ai_memory_violation_result_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/memory",
+ "operation_id": "create_ai_memory_violation_result",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (AiMemoryViolationResultRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules",
+ "operation_id": "create_custom_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CustomRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_custom_rule_revision_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules/{rule_name}/revisions",
+ "operation_id": "create_custom_rule_revision",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CustomRuleRevisionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRulesetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets",
+ "operation_id": "create_custom_ruleset",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (CustomRulesetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_sca_resolve_vulnerable_symbols_endpoint = _Endpoint(
+ settings={
+ "response_type": (ResolveVulnerableSymbolsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis-sca/vulnerabilities/resolve-vulnerable-symbols",
+ "operation_id": "create_sca_resolve_vulnerable_symbols",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ResolveVulnerableSymbolsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_sca_result_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis-sca/dependencies",
+ "operation_id": "create_sca_result",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (ScaRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_sca_scan_endpoint = _Endpoint(
+ settings={
+ "response_type": (McpScanRequestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis-sca/dependencies/scan",
+ "operation_id": "create_sca_scan",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (McpScanRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_ai_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}/rules/{rule_name}",
+ "operation_id": "delete_ai_custom_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_ai_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}",
+ "operation_id": "delete_ai_custom_ruleset",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_ai_memory_violation_result_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/memory/{id}",
+ "operation_id": "delete_ai_memory_violation_result",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules/{rule_name}",
+ "operation_id": "delete_custom_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}",
+ "operation_id": "delete_custom_ruleset",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ai_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}/rules/{rule_name}",
+ "operation_id": "get_ai_custom_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ai_custom_rule_revision_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRuleRevisionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}/rules/{rule_name}/revisions/{id}",
+ "operation_id": "get_ai_custom_rule_revision",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_ai_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRulesetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}",
+ "operation_id": "get_ai_custom_ruleset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules/{rule_name}",
+ "operation_id": "get_custom_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_rule_revision_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRuleRevisionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules/{rule_name}/revisions/{id}",
+ "operation_id": "get_custom_rule_revision",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRulesetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}",
+ "operation_id": "get_custom_ruleset",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_sca_scan_endpoint = _Endpoint(
+ settings={
+ "response_type": (ScanResultResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis-sca/dependencies/scan/{job_id}",
+ "operation_id": "get_sca_scan",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "job_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "job_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ai_custom_rule_revisions_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRuleRevisionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}/rules/{rule_name}/revisions",
+ "operation_id": "list_ai_custom_rule_revisions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ai_custom_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiCustomRulesetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets",
+ "operation_id": "list_ai_custom_rulesets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ai_memory_violation_results_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiMemoryViolationResultsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/memory",
+ "operation_id": "list_ai_memory_violation_results",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_ai_prompts_endpoint = _Endpoint(
+ settings={
+ "response_type": (AiPromptsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/prompts",
+ "operation_id": "list_ai_prompts",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_custom_rule_revisions_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRuleRevisionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules/{rule_name}/revisions",
+ "operation_id": "list_custom_rule_revisions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_custom_rulesets_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRulesetListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets",
+ "operation_id": "list_custom_rulesets",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_sca_licenses_endpoint = _Endpoint(
+ settings={
+ "response_type": (LicensesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis-sca/licenses/list",
+ "operation_id": "list_sca_licenses",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._revert_custom_rule_revision_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}/rules/{rule_name}/revisions/revert",
+ "operation_id": "revert_custom_rule_revision",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "rule_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (RevertCustomRuleRevisionRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_ai_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/ai/rulesets/{ruleset_name}",
+ "operation_id": "update_ai_custom_ruleset",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AiCustomRulesetUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_custom_ruleset_endpoint = _Endpoint(
+ settings={
+ "response_type": (CustomRulesetResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/static-analysis/custom/rulesets/{ruleset_name}",
+ "operation_id": "update_custom_ruleset",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "ruleset_name": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "ruleset_name",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CustomRulesetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_ai_custom_rule(self, ruleset_name: str, body: AiCustomRuleRequest, ) -> AiCustomRuleResponse:
+ """Create an AI custom rule.
+
+ Create a new AI custom rule within a ruleset.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :type body: AiCustomRuleRequest
+ :rtype: AiCustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["body"] = body
+
+ return self._create_ai_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_ai_custom_rule_revision(self, ruleset_name: str, rule_name: str, body: AiCustomRuleRevisionRequest, ) -> None:
+ """Create an AI custom rule revision.
+
+ Create a new revision for an AI custom rule.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :param rule_name: The rule name.
+ :type rule_name: str
+ :type body: AiCustomRuleRevisionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ kwargs["body"] = body
+
+ return self._create_ai_custom_rule_revision_endpoint.call_with_http_info(**kwargs)
+
+ def create_ai_custom_ruleset(self, body: AiCustomRulesetRequest, ) -> AiCustomRulesetResponse:
+ """Create an AI custom ruleset.
+
+ Create a new AI custom ruleset for the authenticated organization.
+
+ :type body: AiCustomRulesetRequest
+ :rtype: AiCustomRulesetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_ai_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def create_ai_memory_violation_result(self, body: AiMemoryViolationResultRequest, ) -> None:
+ """Create an AI memory violation result.
+
+ Add a new AI memory violation result for the authenticated organization.
+
+ :type body: AiMemoryViolationResultRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_ai_memory_violation_result_endpoint.call_with_http_info(**kwargs)
+
+ def create_custom_rule(self, ruleset_name: str, body: CustomRuleRequest, ) -> CustomRuleResponse:
+ """Create Custom Rule.
+
+ Create a new custom rule within a ruleset
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :type body: CustomRuleRequest
+ :rtype: CustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["body"] = body
+
+ return self._create_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def create_custom_rule_revision(self, ruleset_name: str, rule_name: str, body: CustomRuleRevisionRequest, ) -> None:
+ """Create Custom Rule Revision.
+
+ Create a new revision for a custom rule
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :type body: CustomRuleRevisionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ kwargs["body"] = body
+
+ return self._create_custom_rule_revision_endpoint.call_with_http_info(**kwargs)
+
+ def create_custom_ruleset(self, body: CustomRulesetRequest, ) -> CustomRulesetResponse:
+ """Create Custom Ruleset.
+
+ Create a new custom ruleset for the authenticated organization.
+
+ :type body: CustomRulesetRequest
+ :rtype: CustomRulesetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def create_sca_resolve_vulnerable_symbols(self, body: ResolveVulnerableSymbolsRequest, ) -> ResolveVulnerableSymbolsResponse:
+ """POST request to resolve vulnerable symbols.
+
+ :type body: ResolveVulnerableSymbolsRequest
+ :rtype: ResolveVulnerableSymbolsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_sca_resolve_vulnerable_symbols_endpoint.call_with_http_info(**kwargs)
+
+ def create_sca_result(self, body: ScaRequest, ) -> None:
+ """Post dependencies for analysis.
+
+ :type body: ScaRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_sca_result_endpoint.call_with_http_info(**kwargs)
+
+ def create_sca_scan(self, body: McpScanRequest, ) -> McpScanRequestResponse:
+ """Submit libraries for vulnerability scanning.
+
+ :type body: McpScanRequest
+ :rtype: McpScanRequestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_sca_scan_endpoint.call_with_http_info(**kwargs)
+
+ def delete_ai_custom_rule(self, ruleset_name: str, rule_name: str, ) -> None:
+ """Delete an AI custom rule.
+
+ Delete an AI custom rule by name within a ruleset.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :param rule_name: The rule name.
+ :type rule_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ return self._delete_ai_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_ai_custom_ruleset(self, ruleset_name: str, ) -> None:
+ """Delete an AI custom ruleset.
+
+ Delete an AI custom ruleset by name.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ return self._delete_ai_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def delete_ai_memory_violation_result(self, id: str, ) -> None:
+ """Delete an AI memory violation result.
+
+ Delete an AI memory violation result by its numeric identifier.
+
+ :param id: The numeric identifier of the memory violation result.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_ai_memory_violation_result_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_rule(self, ruleset_name: str, rule_name: str, ) -> None:
+ """Delete Custom Rule.
+
+ Delete a custom rule
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ return self._delete_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_custom_ruleset(self, ruleset_name: str, ) -> None:
+ """Delete Custom Ruleset.
+
+ Delete a custom ruleset
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ return self._delete_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def get_ai_custom_rule(self, ruleset_name: str, rule_name: str, ) -> AiCustomRuleResponse:
+ """Get an AI custom rule.
+
+ Get an AI custom rule by name within a ruleset.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :param rule_name: The rule name.
+ :type rule_name: str
+ :rtype: AiCustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ return self._get_ai_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_ai_custom_rule_revision(self, ruleset_name: str, rule_name: str, id: str, ) -> AiCustomRuleRevisionResponse:
+ """Get an AI custom rule revision.
+
+ Get a specific revision of an AI custom rule.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :param rule_name: The rule name.
+ :type rule_name: str
+ :param id: The revision identifier.
+ :type id: str
+ :rtype: AiCustomRuleRevisionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ kwargs["id"] = id
+
+ return self._get_ai_custom_rule_revision_endpoint.call_with_http_info(**kwargs)
+
+ def get_ai_custom_ruleset(self, ruleset_name: str, ) -> AiCustomRulesetResponse:
+ """Get an AI custom ruleset.
+
+ Get an AI custom ruleset by name.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :rtype: AiCustomRulesetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ return self._get_ai_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_rule(self, ruleset_name: str, rule_name: str, ) -> CustomRuleResponse:
+ """Show Custom Rule.
+
+ Get a custom rule by name
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :rtype: CustomRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ return self._get_custom_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_rule_revision(self, ruleset_name: str, rule_name: str, id: str, ) -> CustomRuleRevisionResponse:
+ """Show Custom Rule Revision.
+
+ Get a specific revision of a custom rule
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :param id: The revision ID
+ :type id: str
+ :rtype: CustomRuleRevisionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ kwargs["id"] = id
+
+ return self._get_custom_rule_revision_endpoint.call_with_http_info(**kwargs)
+
+ def get_custom_ruleset(self, ruleset_name: str, ) -> CustomRulesetResponse:
+ """Show Custom Ruleset.
+
+ Get a custom ruleset by name
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :rtype: CustomRulesetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ return self._get_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def get_sca_scan(self, job_id: str, ) -> ScanResultResponse:
+ """Retrieve a dependency scan result.
+
+ :param job_id: The job identifier returned when the scan was submitted.
+ :type job_id: str
+ :rtype: ScanResultResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["job_id"] = job_id
+
+ return self._get_sca_scan_endpoint.call_with_http_info(**kwargs)
+
+ def list_ai_custom_rule_revisions(self, ruleset_name: str, rule_name: str, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> AiCustomRuleRevisionsResponse:
+ """List AI custom rule revisions.
+
+ Get all revisions for an AI custom rule.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :param rule_name: The rule name.
+ :type rule_name: str
+ :param page_offset: The offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: The maximum number of revisions to return.
+ :type page_limit: int, optional
+ :rtype: AiCustomRuleRevisionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_ai_custom_rule_revisions_endpoint.call_with_http_info(**kwargs)
+
+ def list_ai_custom_rule_revisions_with_pagination(self, ruleset_name: str, rule_name: str, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[AiCustomRuleRevisionResponseData]:
+ """List AI custom rule revisions.
+
+ Provide a paginated version of :meth:`list_ai_custom_rule_revisions`, returning all items.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :param rule_name: The rule name.
+ :type rule_name: str
+ :param page_offset: The offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: The maximum number of revisions to return.
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[AiCustomRuleRevisionResponseData]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 100)
+ endpoint = self._list_ai_custom_rule_revisions_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_ai_custom_rulesets(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> AiCustomRulesetsResponse:
+ """List AI custom rulesets.
+
+ Get all AI custom rulesets for the authenticated organization.
+
+ :param page_offset: The offset for pagination.
+ :type page_offset: int, optional
+ :param page_limit: The maximum number of rulesets to return.
+ :type page_limit: int, optional
+ :rtype: AiCustomRulesetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_ai_custom_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def list_ai_memory_violation_results(self, ) -> AiMemoryViolationResultsResponse:
+ """List AI memory violation results.
+
+ Get all AI memory violation results for the authenticated organization.
+
+ :rtype: AiMemoryViolationResultsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_ai_memory_violation_results_endpoint.call_with_http_info(**kwargs)
+
+ def list_ai_prompts(self, ) -> AiPromptsResponse:
+ """List AI prompts.
+
+ Get all AI prompts, including default prompts and custom AI rule prompts for the authenticated organization.
+
+ :rtype: AiPromptsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_ai_prompts_endpoint.call_with_http_info(**kwargs)
+
+ def list_custom_rule_revisions(self, ruleset_name: str, rule_name: str, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> CustomRuleRevisionsResponse:
+ """List Custom Rule Revisions.
+
+ Get all revisions for a custom rule
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :param page_offset: Pagination offset
+ :type page_offset: int, optional
+ :param page_limit: Pagination limit
+ :type page_limit: int, optional
+ :rtype: CustomRuleRevisionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ return self._list_custom_rule_revisions_endpoint.call_with_http_info(**kwargs)
+
+ def list_custom_rule_revisions_with_pagination(self, ruleset_name: str, rule_name: str, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, ) -> collections.abc.Iterable[CustomRuleRevision]:
+ """List Custom Rule Revisions.
+
+ Provide a paginated version of :meth:`list_custom_rule_revisions`, returning all items.
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :param page_offset: Pagination offset
+ :type page_offset: int, optional
+ :param page_limit: Pagination limit
+ :type page_limit: int, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[CustomRuleRevision]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ local_page_size = get_attribute_from_path(kwargs, "page_limit", 10)
+ endpoint = self._list_custom_rule_revisions_endpoint
+ set_attribute_from_path(kwargs, "page_limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_offset_param": "page_offset",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_custom_rulesets(self, ) -> CustomRulesetListResponse:
+ """List Custom Rulesets.
+
+ Get all custom rulesets for the authenticated organization.
+
+ :rtype: CustomRulesetListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_custom_rulesets_endpoint.call_with_http_info(**kwargs)
+
+ def list_sca_licenses(self, ) -> LicensesListResponse:
+ """Get the list of SPDX licenses.
+
+ :rtype: LicensesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_sca_licenses_endpoint.call_with_http_info(**kwargs)
+
+ def revert_custom_rule_revision(self, ruleset_name: str, rule_name: str, body: RevertCustomRuleRevisionRequest, ) -> None:
+ """Revert Custom Rule Revision.
+
+ Revert a custom rule to a previous revision
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :param rule_name: The rule name
+ :type rule_name: str
+ :type body: RevertCustomRuleRevisionRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["rule_name"] = rule_name
+
+ kwargs["body"] = body
+
+ return self._revert_custom_rule_revision_endpoint.call_with_http_info(**kwargs)
+
+ def update_ai_custom_ruleset(self, ruleset_name: str, body: AiCustomRulesetUpdateRequest, ) -> None:
+ """Update an AI custom ruleset.
+
+ Update the description of an existing AI custom ruleset.
+
+ :param ruleset_name: The ruleset name.
+ :type ruleset_name: str
+ :type body: AiCustomRulesetUpdateRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["body"] = body
+
+ return self._update_ai_custom_ruleset_endpoint.call_with_http_info(**kwargs)
+
+ def update_custom_ruleset(self, ruleset_name: str, body: CustomRulesetRequest, ) -> CustomRulesetResponse:
+ """Update Custom Ruleset.
+
+ Update an existing custom ruleset
+
+ :param ruleset_name: The ruleset name
+ :type ruleset_name: str
+ :type body: CustomRulesetRequest
+ :rtype: CustomRulesetResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["ruleset_name"] = ruleset_name
+
+ kwargs["body"] = body
+
+ return self._update_custom_ruleset_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/status_pages_api.py b/datadog_api_client/v2/api/status_pages_api.py
new file mode 100644
index 0000000000..74440719f0
--- /dev/null
+++ b/datadog_api_client/v2/api/status_pages_api.py
@@ -0,0 +1,2158 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.status_page_array import StatusPageArray
+from datadog_api_client.v2.model.status_page import StatusPage
+from datadog_api_client.v2.model.create_status_page_request import CreateStatusPageRequest
+from datadog_api_client.v2.model.degradation_array import DegradationArray
+from datadog_api_client.v2.model.maintenance_array import MaintenanceArray
+from datadog_api_client.v2.model.patch_status_page_request import PatchStatusPageRequest
+from datadog_api_client.v2.model.status_pages_component_array import StatusPagesComponentArray
+from datadog_api_client.v2.model.status_pages_component import StatusPagesComponent
+from datadog_api_client.v2.model.create_component_request import CreateComponentRequest
+from datadog_api_client.v2.model.patch_component_request import PatchComponentRequest
+from datadog_api_client.v2.model.degradation_template_array import DegradationTemplateArray
+from datadog_api_client.v2.model.degradation_template import DegradationTemplate
+from datadog_api_client.v2.model.create_degradation_template_request import CreateDegradationTemplateRequest
+from datadog_api_client.v2.model.patch_degradation_template_request import PatchDegradationTemplateRequest
+from datadog_api_client.v2.model.degradation import Degradation
+from datadog_api_client.v2.model.create_degradation_request import CreateDegradationRequest
+from datadog_api_client.v2.model.create_backfilled_degradation_request import CreateBackfilledDegradationRequest
+from datadog_api_client.v2.model.patch_degradation_request import PatchDegradationRequest
+from datadog_api_client.v2.model.degradation_update import DegradationUpdate
+from datadog_api_client.v2.model.patch_degradation_update_request import PatchDegradationUpdateRequest
+from datadog_api_client.v2.model.maintenance_template_array import MaintenanceTemplateArray
+from datadog_api_client.v2.model.maintenance_template import MaintenanceTemplate
+from datadog_api_client.v2.model.create_maintenance_template_request import CreateMaintenanceTemplateRequest
+from datadog_api_client.v2.model.patch_maintenance_template_request import PatchMaintenanceTemplateRequest
+from datadog_api_client.v2.model.maintenance import Maintenance
+from datadog_api_client.v2.model.create_maintenance_request import CreateMaintenanceRequest
+from datadog_api_client.v2.model.create_backfilled_maintenance_request import CreateBackfilledMaintenanceRequest
+from datadog_api_client.v2.model.patch_maintenance_request import PatchMaintenanceRequest
+from datadog_api_client.v2.model.maintenance_update import MaintenanceUpdate
+from datadog_api_client.v2.model.patch_maintenance_update_request import PatchMaintenanceUpdateRequest
+
+
+class StatusPagesApi:
+ """
+ Manage your status pages and communicate service disruptions to stakeholders via Datadog's API. See the `Status Pages documentation `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_backfilled_degradation_endpoint = _Endpoint(
+ settings={
+ "response_type": (Degradation,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations/backfill",
+ "operation_id": "create_backfilled_degradation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateBackfilledDegradationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_backfilled_maintenance_endpoint = _Endpoint(
+ settings={
+ "response_type": (Maintenance,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenances/backfill",
+ "operation_id": "create_backfilled_maintenance",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateBackfilledMaintenanceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_component_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPagesComponent,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/components",
+ "operation_id": "create_component",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateComponentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_degradation_endpoint = _Endpoint(
+ settings={
+ "response_type": (Degradation,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations",
+ "operation_id": "create_degradation",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "notify_subscribers": {
+ "openapi_types": (bool,),
+ "attribute": "notify_subscribers",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateDegradationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_degradation_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (DegradationTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradation_templates",
+ "operation_id": "create_degradation_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateDegradationTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_maintenance_endpoint = _Endpoint(
+ settings={
+ "response_type": (Maintenance,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenances",
+ "operation_id": "create_maintenance",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "notify_subscribers": {
+ "openapi_types": (bool,),
+ "attribute": "notify_subscribers",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateMaintenanceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_maintenance_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenance_templates",
+ "operation_id": "create_maintenance_template",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateMaintenanceTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_status_page_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPage,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages",
+ "operation_id": "create_status_page",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (CreateStatusPageRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_component_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/components/{component_id}",
+ "operation_id": "delete_component",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "component_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "component_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_degradation_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations/{degradation_id}",
+ "operation_id": "delete_degradation",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "degradation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "degradation_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_degradation_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradation_templates/{template_id}",
+ "operation_id": "delete_degradation_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_maintenance_template_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenance_templates/{template_id}",
+ "operation_id": "delete_maintenance_template",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_status_page_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}",
+ "operation_id": "delete_status_page",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._edit_degradation_update_endpoint = _Endpoint(
+ settings={
+ "response_type": (DegradationUpdate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations/{degradation_id}/updates/{update_id}",
+ "operation_id": "edit_degradation_update",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "degradation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "degradation_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "update_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "update_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchDegradationUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_component_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPagesComponent,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/components/{component_id}",
+ "operation_id": "get_component",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "component_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "component_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_degradation_endpoint = _Endpoint(
+ settings={
+ "response_type": (Degradation,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations/{degradation_id}",
+ "operation_id": "get_degradation",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "degradation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "degradation_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_degradation_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (DegradationTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradation_templates/{template_id}",
+ "operation_id": "get_degradation_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_maintenance_endpoint = _Endpoint(
+ settings={
+ "response_type": (Maintenance,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenances/{maintenance_id}",
+ "operation_id": "get_maintenance",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "maintenance_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "maintenance_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_maintenance_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenance_templates/{template_id}",
+ "operation_id": "get_maintenance_template",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_status_page_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPage,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}",
+ "operation_id": "get_status_page",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_components_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPagesComponentArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/components",
+ "operation_id": "list_components",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_degradations_endpoint = _Endpoint(
+ settings={
+ "response_type": (DegradationArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/degradations",
+ "operation_id": "list_degradations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_page_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[page_id]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (str,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_source_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[source_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_degradation_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (DegradationTemplateArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradation_templates",
+ "operation_id": "list_degradation_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_maintenances_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/maintenances",
+ "operation_id": "list_maintenances",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_page_id": {
+ "openapi_types": (str,),
+ "attribute": "filter[page_id]",
+ "location": "query",
+ },
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "filter_status": {
+ "openapi_types": (str,),
+ "attribute": "filter[status]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_maintenance_templates_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceTemplateArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenance_templates",
+ "operation_id": "list_maintenance_templates",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_status_pages_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPageArray,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages",
+ "operation_id": "list_status_pages",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_offset": {
+ "openapi_types": (int,),
+ "attribute": "page[offset]",
+ "location": "query",
+ },
+ "page_limit": {
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "filter_domain_prefix": {
+ "openapi_types": (str,),
+ "attribute": "filter[domain_prefix]",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._patch_maintenance_update_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceUpdate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenances/{maintenance_id}/updates/{update_id}",
+ "operation_id": "patch_maintenance_update",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "maintenance_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "maintenance_id",
+ "location": "path",
+ },
+ "update_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "update_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchMaintenanceUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._publish_status_page_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/publish",
+ "operation_id": "publish_status_page",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._soft_delete_degradation_update_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations/{degradation_id}/updates/{update_id}",
+ "operation_id": "soft_delete_degradation_update",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "degradation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "degradation_id",
+ "location": "path",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "update_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "update_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._unpublish_status_page_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/unpublish",
+ "operation_id": "unpublish_status_page",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_component_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPagesComponent,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/components/{component_id}",
+ "operation_id": "update_component",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "component_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "component_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchComponentRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_degradation_endpoint = _Endpoint(
+ settings={
+ "response_type": (Degradation,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradations/{degradation_id}",
+ "operation_id": "update_degradation",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "notify_subscribers": {
+ "openapi_types": (bool,),
+ "attribute": "notify_subscribers",
+ "location": "query",
+ },
+ "degradation_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "degradation_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchDegradationRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_degradation_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (DegradationTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/degradation_templates/{template_id}",
+ "operation_id": "update_degradation_template",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchDegradationTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_maintenance_endpoint = _Endpoint(
+ settings={
+ "response_type": (Maintenance,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenances/{maintenance_id}",
+ "operation_id": "update_maintenance",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "notify_subscribers": {
+ "openapi_types": (bool,),
+ "attribute": "notify_subscribers",
+ "location": "query",
+ },
+ "maintenance_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "maintenance_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchMaintenanceRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_maintenance_template_endpoint = _Endpoint(
+ settings={
+ "response_type": (MaintenanceTemplate,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}/maintenance_templates/{template_id}",
+ "operation_id": "update_maintenance_template",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "template_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "template_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchMaintenanceTemplateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_status_page_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatusPage,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/statuspages/{page_id}",
+ "operation_id": "update_status_page",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "delete_subscribers": {
+ "openapi_types": (bool,),
+ "attribute": "delete_subscribers",
+ "location": "query",
+ },
+ "page_id": {
+ "required": True,
+ "openapi_types": (UUID,),
+ "attribute": "page_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (str,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (PatchStatusPageRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_backfilled_degradation(self, page_id: UUID, body: CreateBackfilledDegradationRequest, *, include: Union[str, UnsetType]=unset, ) -> Degradation:
+ """Create backfilled degradation.
+
+ Creates a backfilled degradation with predefined updates.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateBackfilledDegradationRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Degradation
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["page_id"] = page_id
+
+ kwargs["body"] = body
+
+ return self._create_backfilled_degradation_endpoint.call_with_http_info(**kwargs)
+
+ def create_backfilled_maintenance(self, page_id: UUID, body: CreateBackfilledMaintenanceRequest, *, include: Union[str, UnsetType]=unset, ) -> Maintenance:
+ """Create backfilled maintenance.
+
+ Creates a backfilled maintenance with predefined updates.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateBackfilledMaintenanceRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Maintenance
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["page_id"] = page_id
+
+ kwargs["body"] = body
+
+ return self._create_backfilled_maintenance_endpoint.call_with_http_info(**kwargs)
+
+ def create_component(self, page_id: UUID, body: CreateComponentRequest, *, include: Union[str, UnsetType]=unset, ) -> StatusPagesComponent:
+ """Create component.
+
+ Creates a new component.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateComponentRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page, group.
+ :type include: str, optional
+ :rtype: StatusPagesComponent
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_component_endpoint.call_with_http_info(**kwargs)
+
+ def create_degradation(self, page_id: UUID, body: CreateDegradationRequest, *, notify_subscribers: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> Degradation:
+ """Create degradation.
+
+ Creates a new degradation.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateDegradationRequest
+ :param notify_subscribers: Whether to notify page subscribers of the degradation.
+ :type notify_subscribers: bool, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Degradation
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if notify_subscribers is not unset:
+ kwargs["notify_subscribers"] = notify_subscribers
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_degradation_endpoint.call_with_http_info(**kwargs)
+
+ def create_degradation_template(self, page_id: UUID, body: CreateDegradationTemplateRequest, *, include: Union[str, UnsetType]=unset, ) -> DegradationTemplate:
+ """Create degradation template.
+
+ Creates a new degradation template.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateDegradationTemplateRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: DegradationTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_degradation_template_endpoint.call_with_http_info(**kwargs)
+
+ def create_maintenance(self, page_id: UUID, body: CreateMaintenanceRequest, *, notify_subscribers: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> Maintenance:
+ """Schedule maintenance.
+
+ Schedules a new maintenance.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateMaintenanceRequest
+ :param notify_subscribers: Whether to notify page subscribers of the maintenance.
+ :type notify_subscribers: bool, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Maintenance
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if notify_subscribers is not unset:
+ kwargs["notify_subscribers"] = notify_subscribers
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_maintenance_endpoint.call_with_http_info(**kwargs)
+
+ def create_maintenance_template(self, page_id: UUID, body: CreateMaintenanceTemplateRequest, *, include: Union[str, UnsetType]=unset, ) -> MaintenanceTemplate:
+ """Create maintenance template.
+
+ Creates a new maintenance template.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: CreateMaintenanceTemplateRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: MaintenanceTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_maintenance_template_endpoint.call_with_http_info(**kwargs)
+
+ def create_status_page(self, body: CreateStatusPageRequest, *, include: Union[str, UnsetType]=unset, ) -> StatusPage:
+ """Create status page.
+
+ Creates a new status page in an unpublished state. Use the dedicated `publish <#publish-status-page>`_ status page endpoint to publish the page after creation.
+
+ :type body: CreateStatusPageRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user.
+ :type include: str, optional
+ :rtype: StatusPage
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._create_status_page_endpoint.call_with_http_info(**kwargs)
+
+ def delete_component(self, page_id: UUID, component_id: UUID, ) -> None:
+ """Delete component.
+
+ Deletes a component by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param component_id: The ID of the component.
+ :type component_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["component_id"] = component_id
+
+ return self._delete_component_endpoint.call_with_http_info(**kwargs)
+
+ def delete_degradation(self, page_id: UUID, degradation_id: UUID, ) -> None:
+ """Delete degradation.
+
+ Deletes a degradation by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param degradation_id: The ID of the degradation.
+ :type degradation_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["degradation_id"] = degradation_id
+
+ return self._delete_degradation_endpoint.call_with_http_info(**kwargs)
+
+ def delete_degradation_template(self, page_id: UUID, template_id: UUID, ) -> None:
+ """Delete degradation template.
+
+ Deletes a degradation template by its ID (soft delete).
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param template_id: The ID of the degradation or maintenance template.
+ :type template_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["template_id"] = template_id
+
+ return self._delete_degradation_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_maintenance_template(self, page_id: UUID, template_id: UUID, ) -> None:
+ """Delete maintenance template.
+
+ Deletes a maintenance template by its ID (soft delete).
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param template_id: The ID of the degradation or maintenance template.
+ :type template_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["template_id"] = template_id
+
+ return self._delete_maintenance_template_endpoint.call_with_http_info(**kwargs)
+
+ def delete_status_page(self, page_id: UUID, ) -> None:
+ """Delete status page.
+
+ Deletes a status page by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ return self._delete_status_page_endpoint.call_with_http_info(**kwargs)
+
+ def edit_degradation_update(self, degradation_id: UUID, page_id: UUID, update_id: UUID, body: PatchDegradationUpdateRequest, *, include: Union[str, UnsetType]=unset, ) -> DegradationUpdate:
+ """Edit degradation update.
+
+ Edits a specific degradation update.
+
+ :param degradation_id: The ID of the degradation.
+ :type degradation_id: UUID
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param update_id: The ID of the degradation update.
+ :type update_id: UUID
+ :type body: PatchDegradationUpdateRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, degradation, status_page.
+ :type include: str, optional
+ :rtype: DegradationUpdate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["degradation_id"] = degradation_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["page_id"] = page_id
+
+ kwargs["update_id"] = update_id
+
+ kwargs["body"] = body
+
+ return self._edit_degradation_update_endpoint.call_with_http_info(**kwargs)
+
+ def get_component(self, page_id: UUID, component_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> StatusPagesComponent:
+ """Get component.
+
+ Retrieves a specific component by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param component_id: The ID of the component.
+ :type component_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page, group.
+ :type include: str, optional
+ :rtype: StatusPagesComponent
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["component_id"] = component_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_component_endpoint.call_with_http_info(**kwargs)
+
+ def get_degradation(self, page_id: UUID, degradation_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> Degradation:
+ """Get degradation.
+
+ Retrieves a specific degradation by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param degradation_id: The ID of the degradation.
+ :type degradation_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Degradation
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["degradation_id"] = degradation_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_degradation_endpoint.call_with_http_info(**kwargs)
+
+ def get_degradation_template(self, page_id: UUID, template_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> DegradationTemplate:
+ """Get degradation template.
+
+ Retrieves a specific degradation template by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param template_id: The ID of the degradation or maintenance template.
+ :type template_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: DegradationTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["template_id"] = template_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_degradation_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_maintenance(self, page_id: UUID, maintenance_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> Maintenance:
+ """Get maintenance.
+
+ Retrieves a specific maintenance by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param maintenance_id: The ID of the maintenance.
+ :type maintenance_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Maintenance
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["maintenance_id"] = maintenance_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_maintenance_endpoint.call_with_http_info(**kwargs)
+
+ def get_maintenance_template(self, page_id: UUID, template_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> MaintenanceTemplate:
+ """Get maintenance template.
+
+ Retrieves a specific maintenance template by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param template_id: The ID of the degradation or maintenance template.
+ :type template_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: MaintenanceTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["template_id"] = template_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_maintenance_template_endpoint.call_with_http_info(**kwargs)
+
+ def get_status_page(self, page_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> StatusPage:
+ """Get status page.
+
+ Retrieves a specific status page by its ID.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user.
+ :type include: str, optional
+ :rtype: StatusPage
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._get_status_page_endpoint.call_with_http_info(**kwargs)
+
+ def list_components(self, page_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> StatusPagesComponentArray:
+ """List components.
+
+ Lists all components for a status page.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page, group.
+ :type include: str, optional
+ :rtype: StatusPagesComponentArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_components_endpoint.call_with_http_info(**kwargs)
+
+ def list_degradations(self, *, filter_page_id: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, include: Union[str, UnsetType]=unset, filter_status: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, filter_source_id: Union[str, UnsetType]=unset, ) -> DegradationArray:
+ """List degradations.
+
+ Lists all degradations for the organization. Optionally filter by status and page.
+
+ :param filter_page_id: Optional page id filter.
+ :type filter_page_id: str, optional
+ :param page_offset: Offset to use as the start of the page.
+ :type page_offset: int, optional
+ :param page_limit: The number of degradations to return per page.
+ :type page_limit: int, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :param filter_status: Optional degradation status filter. Supported values: investigating, identified, monitoring, resolved.
+ :type filter_status: str, optional
+ :param sort: Sort order. Prefix with '-' for descending. Supported values: created_at, -created_at, modified_at, -modified_at.
+ :type sort: str, optional
+ :param filter_source_id: Optional source ID filter. Returns only degradations whose source matches this ID (for example, an incident ID).
+ :type filter_source_id: str, optional
+ :rtype: DegradationArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_page_id is not unset:
+ kwargs["filter_page_id"] = filter_page_id
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_source_id is not unset:
+ kwargs["filter_source_id"] = filter_source_id
+
+ return self._list_degradations_endpoint.call_with_http_info(**kwargs)
+
+ def list_degradation_templates(self, page_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> DegradationTemplateArray:
+ """List degradation templates.
+
+ Lists all degradation templates for a status page.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: DegradationTemplateArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["page_id"] = page_id
+
+ return self._list_degradation_templates_endpoint.call_with_http_info(**kwargs)
+
+ def list_maintenances(self, *, filter_page_id: Union[str, UnsetType]=unset, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, include: Union[str, UnsetType]=unset, filter_status: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, ) -> MaintenanceArray:
+ """List maintenances.
+
+ Lists all maintenances for the organization. Optionally filter by status and page.
+
+ :param filter_page_id: Optional page id filter.
+ :type filter_page_id: str, optional
+ :param page_offset: Offset to use as the start of the page.
+ :type page_offset: int, optional
+ :param page_limit: The number of maintenances to return per page.
+ :type page_limit: int, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :param filter_status: Optional maintenance status filter. Supported values: scheduled, in_progress, completed.
+ :type filter_status: str, optional
+ :param sort: Sort order. Prefix with '-' for descending. Supported values: created_at, -created_at, start_date, -start_date.
+ :type sort: str, optional
+ :rtype: MaintenanceArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_page_id is not unset:
+ kwargs["filter_page_id"] = filter_page_id
+
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_status is not unset:
+ kwargs["filter_status"] = filter_status
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ return self._list_maintenances_endpoint.call_with_http_info(**kwargs)
+
+ def list_maintenance_templates(self, page_id: UUID, *, include: Union[str, UnsetType]=unset, ) -> MaintenanceTemplateArray:
+ """List maintenance templates.
+
+ Lists all maintenance templates for a status page.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: MaintenanceTemplateArray
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_maintenance_templates_endpoint.call_with_http_info(**kwargs)
+
+ def list_status_pages(self, *, page_offset: Union[int, UnsetType]=unset, page_limit: Union[int, UnsetType]=unset, filter_domain_prefix: Union[str, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> StatusPageArray:
+ """List status pages.
+
+ Lists all status pages for the organization.
+
+ :param page_offset: Offset to use as the start of the page.
+ :type page_offset: int, optional
+ :param page_limit: The number of status pages to return per page.
+ :type page_limit: int, optional
+ :param filter_domain_prefix: Filter status pages by exact domain prefix match. Returns at most one result.
+ :type filter_domain_prefix: str, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user.
+ :type include: str, optional
+ :rtype: StatusPageArray
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_offset is not unset:
+ kwargs["page_offset"] = page_offset
+
+ if page_limit is not unset:
+ kwargs["page_limit"] = page_limit
+
+ if filter_domain_prefix is not unset:
+ kwargs["filter_domain_prefix"] = filter_domain_prefix
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ return self._list_status_pages_endpoint.call_with_http_info(**kwargs)
+
+ def patch_maintenance_update(self, page_id: UUID, maintenance_id: UUID, update_id: UUID, body: PatchMaintenanceUpdateRequest, ) -> MaintenanceUpdate:
+ """Edit maintenance update.
+
+ Edits the message of a specific maintenance update. Editing is allowed regardless of the parent maintenance's status, including completed and canceled maintenances.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param maintenance_id: The ID of the maintenance.
+ :type maintenance_id: UUID
+ :param update_id: The ID of the maintenance update.
+ :type update_id: UUID
+ :type body: PatchMaintenanceUpdateRequest
+ :rtype: MaintenanceUpdate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["maintenance_id"] = maintenance_id
+
+ kwargs["update_id"] = update_id
+
+ kwargs["body"] = body
+
+ return self._patch_maintenance_update_endpoint.call_with_http_info(**kwargs)
+
+ def publish_status_page(self, page_id: UUID, ) -> None:
+ """Publish status page.
+
+ Publishes a status page. For pages of type ``public`` , makes the status page available on the public internet and requires the ``status_pages_public_page_publish`` permission. For pages of type ``internal`` , makes the status page available under the ``status-pages/$domain_prefix/view`` route within the Datadog organization and requires the ``status_pages_internal_page_publish`` permission. The ``status_pages_settings_write`` permission is temporarily honored as we migrate publishing functionality from the update status page endpoint to the publish status page endpoint.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ return self._publish_status_page_endpoint.call_with_http_info(**kwargs)
+
+ def soft_delete_degradation_update(self, degradation_id: UUID, page_id: UUID, update_id: UUID, ) -> None:
+ """Soft delete degradation update.
+
+ Soft-deletes a degradation update.
+
+ :param degradation_id: The ID of the degradation.
+ :type degradation_id: UUID
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param update_id: The ID of the degradation update.
+ :type update_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["degradation_id"] = degradation_id
+
+ kwargs["page_id"] = page_id
+
+ kwargs["update_id"] = update_id
+
+ return self._soft_delete_degradation_update_endpoint.call_with_http_info(**kwargs)
+
+ def unpublish_status_page(self, page_id: UUID, ) -> None:
+ """Unpublish status page.
+
+ Unpublishes a status page. For pages of type ``public`` , removes the status page from the public internet and requires the ``status_pages_public_page_publish`` permission. For pages of type ``internal`` , removes the ``status-pages/$domain_prefix/view`` route from the Datadog organization and requires the ``status_pages_internal_page_publish`` permission. The ``status_pages_settings_write`` permission is temporarily honored as we migrate unpublishing functionality from the update status page endpoint to the unpublish status page endpoint.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ return self._unpublish_status_page_endpoint.call_with_http_info(**kwargs)
+
+ def update_component(self, page_id: UUID, component_id: UUID, body: PatchComponentRequest, *, include: Union[str, UnsetType]=unset, ) -> StatusPagesComponent:
+ """Update component.
+
+ Updates an existing component's attributes.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param component_id: The ID of the component.
+ :type component_id: UUID
+ :type body: PatchComponentRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page, group.
+ :type include: str, optional
+ :rtype: StatusPagesComponent
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["component_id"] = component_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_component_endpoint.call_with_http_info(**kwargs)
+
+ def update_degradation(self, page_id: UUID, degradation_id: UUID, body: PatchDegradationRequest, *, notify_subscribers: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> Degradation:
+ """Update degradation.
+
+ Updates an existing degradation's attributes.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param degradation_id: The ID of the degradation.
+ :type degradation_id: UUID
+ :type body: PatchDegradationRequest
+ :param notify_subscribers: Whether to notify page subscribers of the degradation.
+ :type notify_subscribers: bool, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Degradation
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if notify_subscribers is not unset:
+ kwargs["notify_subscribers"] = notify_subscribers
+
+ kwargs["degradation_id"] = degradation_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_degradation_endpoint.call_with_http_info(**kwargs)
+
+ def update_degradation_template(self, template_id: UUID, page_id: UUID, body: PatchDegradationTemplateRequest, *, include: Union[str, UnsetType]=unset, ) -> DegradationTemplate:
+ """Update degradation template.
+
+ Updates an existing degradation template's attributes.
+
+ :param template_id: The ID of the degradation or maintenance template.
+ :type template_id: UUID
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: PatchDegradationTemplateRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: DegradationTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["template_id"] = template_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["page_id"] = page_id
+
+ kwargs["body"] = body
+
+ return self._update_degradation_template_endpoint.call_with_http_info(**kwargs)
+
+ def update_maintenance(self, page_id: UUID, maintenance_id: UUID, body: PatchMaintenanceRequest, *, notify_subscribers: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> Maintenance:
+ """Update maintenance.
+
+ Updates an existing maintenance's attributes.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param maintenance_id: The ID of the maintenance.
+ :type maintenance_id: UUID
+ :type body: PatchMaintenanceRequest
+ :param notify_subscribers: Whether to notify page subscribers of the maintenance.
+ :type notify_subscribers: bool, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: Maintenance
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ if notify_subscribers is not unset:
+ kwargs["notify_subscribers"] = notify_subscribers
+
+ kwargs["maintenance_id"] = maintenance_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_maintenance_endpoint.call_with_http_info(**kwargs)
+
+ def update_maintenance_template(self, page_id: UUID, template_id: UUID, body: PatchMaintenanceTemplateRequest, *, include: Union[str, UnsetType]=unset, ) -> MaintenanceTemplate:
+ """Update maintenance template.
+
+ Updates an existing maintenance template's attributes.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :param template_id: The ID of the degradation or maintenance template.
+ :type template_id: UUID
+ :type body: PatchMaintenanceTemplateRequest
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user, status_page.
+ :type include: str, optional
+ :rtype: MaintenanceTemplate
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["page_id"] = page_id
+
+ kwargs["template_id"] = template_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_maintenance_template_endpoint.call_with_http_info(**kwargs)
+
+ def update_status_page(self, page_id: UUID, body: PatchStatusPageRequest, *, delete_subscribers: Union[bool, UnsetType]=unset, include: Union[str, UnsetType]=unset, ) -> StatusPage:
+ """Update status page.
+
+ Updates an existing status page's attributes. To publish and unpublish status pages, use the dedicated `publish <#publish-status-page>`_ and `unpublish <#unpublish-status-page>`_ status page endpoints.
+
+ :param page_id: The ID of the status page.
+ :type page_id: UUID
+ :type body: PatchStatusPageRequest
+ :param delete_subscribers: Whether to delete existing subscribers when updating a status page's type.
+ :type delete_subscribers: bool, optional
+ :param include: Comma-separated list of resources to include. Supported values: created_by_user, last_modified_by_user.
+ :type include: str, optional
+ :rtype: StatusPage
+ """
+ kwargs: Dict[str, Any] = {}
+ if delete_subscribers is not unset:
+ kwargs["delete_subscribers"] = delete_subscribers
+
+ kwargs["page_id"] = page_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ kwargs["body"] = body
+
+ return self._update_status_page_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/statuspage_integration_api.py b/datadog_api_client/v2/api/statuspage_integration_api.py
new file mode 100644
index 0000000000..246fbc28e0
--- /dev/null
+++ b/datadog_api_client/v2/api/statuspage_integration_api.py
@@ -0,0 +1,317 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.statuspage_account_response import StatuspageAccountResponse
+from datadog_api_client.v2.model.statuspage_account_update_request import StatuspageAccountUpdateRequest
+from datadog_api_client.v2.model.statuspage_account_create_request import StatuspageAccountCreateRequest
+from datadog_api_client.v2.model.statuspage_url_settings_response import StatuspageUrlSettingsResponse
+from datadog_api_client.v2.model.statuspage_url_setting_response import StatuspageUrlSettingResponse
+from datadog_api_client.v2.model.statuspage_url_setting_create_request import StatuspageUrlSettingCreateRequest
+from datadog_api_client.v2.model.statuspage_url_setting_update_request import StatuspageUrlSettingUpdateRequest
+
+
+class StatuspageIntegrationApi:
+ """
+ Configure your `Datadog Statuspage integration `_
+ directly through the Datadog API.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_statuspage_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatuspageAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/account",
+ "operation_id": "create_statuspage_account",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (StatuspageAccountCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_statuspage_url_setting_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatuspageUrlSettingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/url_settings",
+ "operation_id": "create_statuspage_url_setting",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (StatuspageUrlSettingCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_statuspage_account_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/account",
+ "operation_id": "delete_statuspage_account",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_statuspage_url_setting_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/url_settings/{statuspage_url_setting_id}",
+ "operation_id": "delete_statuspage_url_setting",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "statuspage_url_setting_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "statuspage_url_setting_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_statuspage_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatuspageAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/account",
+ "operation_id": "get_statuspage_account",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_statuspage_url_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatuspageUrlSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/url_settings",
+ "operation_id": "list_statuspage_url_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_statuspage_account_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatuspageAccountResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/account",
+ "operation_id": "update_statuspage_account",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (StatuspageAccountUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_statuspage_url_setting_endpoint = _Endpoint(
+ settings={
+ "response_type": (StatuspageUrlSettingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/integration/statuspage/url_settings/{statuspage_url_setting_id}",
+ "operation_id": "update_statuspage_url_setting",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "statuspage_url_setting_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "statuspage_url_setting_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (StatuspageUrlSettingUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_statuspage_account(self, body: StatuspageAccountCreateRequest, ) -> StatuspageAccountResponse:
+ """Create the Statuspage account.
+
+ Create a Statuspage account for your organization. Only one Statuspage
+ account can be configured per organization.
+
+ :param body: Statuspage account payload.
+ :type body: StatuspageAccountCreateRequest
+ :rtype: StatuspageAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_statuspage_account_endpoint.call_with_http_info(**kwargs)
+
+ def create_statuspage_url_setting(self, body: StatuspageUrlSettingCreateRequest, ) -> StatuspageUrlSettingResponse:
+ """Create a Statuspage URL setting.
+
+ Create a Statuspage URL setting for your organization.
+
+ :param body: Statuspage URL setting payload.
+ :type body: StatuspageUrlSettingCreateRequest
+ :rtype: StatuspageUrlSettingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_statuspage_url_setting_endpoint.call_with_http_info(**kwargs)
+
+ def delete_statuspage_account(self, ) -> None:
+ """Delete the Statuspage account.
+
+ Delete the Statuspage account configured for your organization.
+
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._delete_statuspage_account_endpoint.call_with_http_info(**kwargs)
+
+ def delete_statuspage_url_setting(self, statuspage_url_setting_id: str, ) -> None:
+ """Delete a Statuspage URL setting.
+
+ Delete a single Statuspage URL setting from your organization.
+
+ :param statuspage_url_setting_id: The UUID of the Statuspage URL setting.
+ :type statuspage_url_setting_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["statuspage_url_setting_id"] = statuspage_url_setting_id
+
+ return self._delete_statuspage_url_setting_endpoint.call_with_http_info(**kwargs)
+
+ def get_statuspage_account(self, ) -> StatuspageAccountResponse:
+ """Get the Statuspage account.
+
+ Get the Statuspage account configured for your organization.
+
+ :rtype: StatuspageAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_statuspage_account_endpoint.call_with_http_info(**kwargs)
+
+ def list_statuspage_url_settings(self, ) -> StatuspageUrlSettingsResponse:
+ """Get all Statuspage URL settings.
+
+ Get all Statuspage URL settings configured for your organization.
+
+ :rtype: StatuspageUrlSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._list_statuspage_url_settings_endpoint.call_with_http_info(**kwargs)
+
+ def update_statuspage_account(self, body: StatuspageAccountUpdateRequest, ) -> StatuspageAccountResponse:
+ """Update the Statuspage account.
+
+ Update the Statuspage account configured for your organization.
+
+ :param body: Statuspage account payload.
+ :type body: StatuspageAccountUpdateRequest
+ :rtype: StatuspageAccountResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_statuspage_account_endpoint.call_with_http_info(**kwargs)
+
+ def update_statuspage_url_setting(self, statuspage_url_setting_id: str, body: StatuspageUrlSettingUpdateRequest, ) -> StatuspageUrlSettingResponse:
+ """Update a Statuspage URL setting.
+
+ Update a single Statuspage URL setting in your organization.
+
+ :param statuspage_url_setting_id: The UUID of the Statuspage URL setting.
+ :type statuspage_url_setting_id: str
+ :param body: Statuspage URL setting payload.
+ :type body: StatuspageUrlSettingUpdateRequest
+ :rtype: StatuspageUrlSettingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["statuspage_url_setting_id"] = statuspage_url_setting_id
+
+ kwargs["body"] = body
+
+ return self._update_statuspage_url_setting_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/stegadography_api.py b/datadog_api_client/v2/api/stegadography_api.py
new file mode 100644
index 0000000000..c7dc567e8a
--- /dev/null
+++ b/datadog_api_client/v2/api/stegadography_api.py
@@ -0,0 +1,75 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.stegadography_get_widgets_response import StegadographyGetWidgetsResponse
+from datadog_api_client.v2.model.stegadography_get_widgets_request import StegadographyGetWidgetsRequest
+
+
+class StegadographyApi:
+ """
+ Extract watermarks embedded in dashboard screenshots to retrieve cached widget state.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_stegadography_widgets_endpoint = _Endpoint(
+ settings={
+ "response_type": (StegadographyGetWidgetsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/stegadography/get-widgets",
+ "operation_id": "get_stegadography_widgets",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "image": {
+ "required": True,
+ "openapi_types": (file_type,),
+ "attribute": "image",
+ "location": "form",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["multipart/form-data"]
+ },
+ api_client=api_client,
+ )
+
+ def get_stegadography_widgets(self, image: file_type, ) -> StegadographyGetWidgetsResponse:
+ """Get widgets from an image.
+
+ Extracts watermarks from a PNG image and returns the cached widget data
+ associated with each watermark found. The image must be uploaded as a
+ ``multipart/form-data`` request with the file in the ``image`` field.
+ Only widgets belonging to the authenticated organization are returned.
+
+ :param image: PNG image file to scan for embedded watermarks.
+ :type image: file_type
+ :rtype: StegadographyGetWidgetsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["image"] = image
+
+ return self._get_stegadography_widgets_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/storage_management_api.py b/datadog_api_client/v2/api/storage_management_api.py
new file mode 100644
index 0000000000..9637269b9b
--- /dev/null
+++ b/datadog_api_client/v2/api/storage_management_api.py
@@ -0,0 +1,107 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.cloud_inventory_sync_config_response import CloudInventorySyncConfigResponse
+from datadog_api_client.v2.model.upsert_cloud_inventory_sync_config_request import UpsertCloudInventorySyncConfigRequest
+
+
+class StorageManagementApi:
+ """
+ Enable Storage Management for S3 buckets, GCS buckets, and Azure containers. Each configuration registers the destination that holds inventory reports for the storage being monitored.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_sync_config_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cloudinventoryservice/syncconfigs/{id}",
+ "operation_id": "delete_sync_config",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._upsert_sync_config_endpoint = _Endpoint(
+ settings={
+ "response_type": (CloudInventorySyncConfigResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/cloudinventoryservice/syncconfigs",
+ "operation_id": "upsert_sync_config",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UpsertCloudInventorySyncConfigRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_sync_config(self, id: str, ) -> None:
+ """Delete a Storage Management configuration.
+
+ Delete a Storage Management configuration by its unique identifier. Deleting a configuration stops inventory file synchronization for the associated cloud account.
+
+ :param id: Unique identifier of the Storage Management configuration.
+ :type id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._delete_sync_config_endpoint.call_with_http_info(**kwargs)
+
+ def upsert_sync_config(self, body: UpsertCloudInventorySyncConfigRequest, ) -> CloudInventorySyncConfigResponse:
+ """Enable Storage Management for a bucket.
+
+ Enable Storage Management for an S3 bucket, GCS bucket, or Azure container by registering the destination that holds its inventory reports. Set ``data.id`` to the cloud provider ( ``aws`` , ``gcp`` , or ``azure`` ) and provide the matching settings under data.attributes. Calling this endpoint with the same provider replaces the existing configuration.
+
+ :type body: UpsertCloudInventorySyncConfigRequest
+ :rtype: CloudInventorySyncConfigResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._upsert_sync_config_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/synthetics_api.py b/datadog_api_client/v2/api/synthetics_api.py
new file mode 100644
index 0000000000..354cff2615
--- /dev/null
+++ b/datadog_api_client/v2/api/synthetics_api.py
@@ -0,0 +1,1750 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.synthetics_api_multistep_subtests_response import SyntheticsApiMultistepSubtestsResponse
+from datadog_api_client.v2.model.synthetics_api_multistep_parent_tests_response import SyntheticsApiMultistepParentTestsResponse
+from datadog_api_client.v2.model.synthetics_downtimes_response import SyntheticsDowntimesResponse
+from datadog_api_client.v2.model.synthetics_downtime_response import SyntheticsDowntimeResponse
+from datadog_api_client.v2.model.synthetics_downtime_request import SyntheticsDowntimeRequest
+from datadog_api_client.v2.model.on_demand_concurrency_cap_response import OnDemandConcurrencyCapResponse
+from datadog_api_client.v2.model.on_demand_concurrency_cap_attributes import OnDemandConcurrencyCapAttributes
+from datadog_api_client.v2.model.synthetics_suite_response import SyntheticsSuiteResponse
+from datadog_api_client.v2.model.suite_create_edit_request import SuiteCreateEditRequest
+from datadog_api_client.v2.model.deleted_suites_response import DeletedSuitesResponse
+from datadog_api_client.v2.model.deleted_suites_request_delete_request import DeletedSuitesRequestDeleteRequest
+from datadog_api_client.v2.model.synthetics_suite_search_response import SyntheticsSuiteSearchResponse
+from datadog_api_client.v2.model.suite_json_patch_request import SuiteJsonPatchRequest
+from datadog_api_client.v2.model.synthetics_test_latest_results_response import SyntheticsTestLatestResultsResponse
+from datadog_api_client.v2.model.synthetics_test_result_status import SyntheticsTestResultStatus
+from datadog_api_client.v2.model.synthetics_test_result_run_type import SyntheticsTestResultRunType
+from datadog_api_client.v2.model.synthetics_test_result_response import SyntheticsTestResultResponse
+from datadog_api_client.v2.model.deleted_tests_response import DeletedTestsResponse
+from datadog_api_client.v2.model.deleted_tests_request_delete_request import DeletedTestsRequestDeleteRequest
+from datadog_api_client.v2.model.synthetics_fast_test_result import SyntheticsFastTestResult
+from datadog_api_client.v2.model.synthetics_network_test_response import SyntheticsNetworkTestResponse
+from datadog_api_client.v2.model.synthetics_network_test_edit_request import SyntheticsNetworkTestEditRequest
+from datadog_api_client.v2.model.synthetics_poll_test_results_response import SyntheticsPollTestResultsResponse
+from datadog_api_client.v2.model.synthetics_test_file_download_response import SyntheticsTestFileDownloadResponse
+from datadog_api_client.v2.model.synthetics_test_file_download_request import SyntheticsTestFileDownloadRequest
+from datadog_api_client.v2.model.synthetics_test_file_multipart_presigned_urls_response import SyntheticsTestFileMultipartPresignedUrlsResponse
+from datadog_api_client.v2.model.synthetics_test_file_multipart_presigned_urls_request import SyntheticsTestFileMultipartPresignedUrlsRequest
+from datadog_api_client.v2.model.synthetics_test_file_abort_multipart_upload_request import SyntheticsTestFileAbortMultipartUploadRequest
+from datadog_api_client.v2.model.synthetics_test_file_complete_multipart_upload_request import SyntheticsTestFileCompleteMultipartUploadRequest
+from datadog_api_client.v2.model.synthetics_test_parent_suites_response import SyntheticsTestParentSuitesResponse
+from datadog_api_client.v2.model.synthetics_test_version_history_response import SyntheticsTestVersionHistoryResponse
+from datadog_api_client.v2.model.synthetics_test_version_response import SyntheticsTestVersionResponse
+from datadog_api_client.v2.model.global_variable_response import GlobalVariableResponse
+from datadog_api_client.v2.model.global_variable_json_patch_request import GlobalVariableJsonPatchRequest
+
+
+class SyntheticsApi:
+ """
+ Synthetic tests use simulated requests and actions so you can monitor the availability and performance of systems and applications. Datadog supports the following types of synthetic tests:
+
+ * `API tests `_
+ * `Browser tests `_
+ * `Network Path tests `_
+ * `Mobile Application tests `_
+ You can use the Datadog API to create, manage, and organize tests and test suites programmatically.
+ For more information, see the `Synthetic Monitoring documentation `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._abort_test_file_multipart_upload_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/files/multipart-upload-abort",
+ "operation_id": "abort_test_file_multipart_upload",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsTestFileAbortMultipartUploadRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._add_test_to_synthetics_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes/{downtime_id}/tests/{test_id}",
+ "operation_id": "add_test_to_synthetics_downtime",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ "test_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "test_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._complete_test_file_multipart_upload_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/files/multipart-upload-complete",
+ "operation_id": "complete_test_file_multipart_upload",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsTestFileCompleteMultipartUploadRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_synthetics_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes",
+ "operation_id": "create_synthetics_downtime",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsDowntimeRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_synthetics_network_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsNetworkTestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/network",
+ "operation_id": "create_synthetics_network_test",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsNetworkTestEditRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_synthetics_suite_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsSuiteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/suites",
+ "operation_id": "create_synthetics_suite",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (SuiteCreateEditRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_synthetics_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes/{downtime_id}",
+ "operation_id": "delete_synthetics_downtime",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_synthetics_suites_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeletedSuitesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/suites/bulk-delete",
+ "operation_id": "delete_synthetics_suites",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DeletedSuitesRequestDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_synthetics_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (DeletedTestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/bulk-delete",
+ "operation_id": "delete_synthetics_tests",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (DeletedTestsRequestDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._edit_synthetics_suite_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsSuiteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/suites/{public_id}",
+ "operation_id": "edit_synthetics_suite",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SuiteCreateEditRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_multistep_subtest_parents_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsApiMultistepParentTestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/api-multistep/subtests/{public_id}/parents",
+ "operation_id": "get_api_multistep_subtest_parents",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_api_multistep_subtests_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsApiMultistepSubtestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/api-multistep/subtests/{public_id}",
+ "operation_id": "get_api_multistep_subtests",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_on_demand_concurrency_cap_endpoint = _Endpoint(
+ settings={
+ "response_type": (OnDemandConcurrencyCapResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/settings/on_demand_concurrency_cap",
+ "operation_id": "get_on_demand_concurrency_cap",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_browser_test_result_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestResultResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/browser/{public_id}/results/{result_id}",
+ "operation_id": "get_synthetics_browser_test_result",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "result_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "result_id",
+ "location": "path",
+ },
+ "event_id": {
+ "openapi_types": (str,),
+ "attribute": "event_id",
+ "location": "query",
+ },
+ "timestamp": {
+ "openapi_types": (int,),
+ "attribute": "timestamp",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes/{downtime_id}",
+ "operation_id": "get_synthetics_downtime",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_fast_test_result_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsFastTestResult,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/fast/{id}",
+ "operation_id": "get_synthetics_fast_test_result",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_network_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsNetworkTestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/network/{public_id}",
+ "operation_id": "get_synthetics_network_test",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_suite_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsSuiteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/suites/{public_id}",
+ "operation_id": "get_synthetics_suite",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_test_result_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestResultResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/results/{result_id}",
+ "operation_id": "get_synthetics_test_result",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "result_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "result_id",
+ "location": "path",
+ },
+ "event_id": {
+ "openapi_types": (str,),
+ "attribute": "event_id",
+ "location": "query",
+ },
+ "timestamp": {
+ "openapi_types": (int,),
+ "attribute": "timestamp",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_synthetics_test_version_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestVersionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/version_history/{version_number}",
+ "operation_id": "get_synthetics_test_version",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "version_number": {
+ "required": True,
+ "openapi_types": (int,),
+ "attribute": "version_number",
+ "location": "path",
+ },
+ "include_change_metadata": {
+ "openapi_types": (bool,),
+ "attribute": "include_change_metadata",
+ "location": "query",
+ },
+ "only_check_existence": {
+ "openapi_types": (bool,),
+ "attribute": "only_check_existence",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_test_file_download_url_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestFileDownloadResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/files/download",
+ "operation_id": "get_test_file_download_url",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsTestFileDownloadRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_test_file_multipart_presigned_urls_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestFileMultipartPresignedUrlsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urls",
+ "operation_id": "get_test_file_multipart_presigned_urls",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsTestFileMultipartPresignedUrlsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_test_parent_suites_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestParentSuitesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/parent-suites",
+ "operation_id": "get_test_parent_suites",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_synthetics_browser_test_latest_results_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestLatestResultsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/browser/{public_id}/results",
+ "operation_id": "list_synthetics_browser_test_latest_results",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "from_ts": {
+ "openapi_types": (int,),
+ "attribute": "from_ts",
+ "location": "query",
+ },
+ "to_ts": {
+ "openapi_types": (int,),
+ "attribute": "to_ts",
+ "location": "query",
+ },
+ "status": {
+ "openapi_types": (SyntheticsTestResultStatus,),
+ "attribute": "status",
+ "location": "query",
+ },
+ "run_type": {
+ "openapi_types": (SyntheticsTestResultRunType,),
+ "attribute": "runType",
+ "location": "query",
+ },
+ "probe_dc": {
+ "openapi_types": ([str],),
+ "attribute": "probe_dc",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "device_id": {
+ "openapi_types": ([str],),
+ "attribute": "device_id",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_synthetics_downtimes_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDowntimesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes",
+ "operation_id": "list_synthetics_downtimes",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_test_ids": {
+ "openapi_types": (str,),
+ "attribute": "filter[test_ids]",
+ "location": "query",
+ },
+ "filter_active": {
+ "openapi_types": (str,),
+ "attribute": "filter[active]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_synthetics_test_latest_results_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestLatestResultsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/results",
+ "operation_id": "list_synthetics_test_latest_results",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "from_ts": {
+ "openapi_types": (int,),
+ "attribute": "from_ts",
+ "location": "query",
+ },
+ "to_ts": {
+ "openapi_types": (int,),
+ "attribute": "to_ts",
+ "location": "query",
+ },
+ "status": {
+ "openapi_types": (SyntheticsTestResultStatus,),
+ "attribute": "status",
+ "location": "query",
+ },
+ "run_type": {
+ "openapi_types": (SyntheticsTestResultRunType,),
+ "attribute": "runType",
+ "location": "query",
+ },
+ "probe_dc": {
+ "openapi_types": ([str],),
+ "attribute": "probe_dc",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "device_id": {
+ "openapi_types": ([str],),
+ "attribute": "device_id",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_synthetics_test_versions_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsTestVersionHistoryResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/{public_id}/version_history",
+ "operation_id": "list_synthetics_test_versions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "last_version_number": {
+ "openapi_types": (int,),
+ "attribute": "last_version_number",
+ "location": "query",
+ },
+ "limit": {
+ "validation": {
+ "inclusive_maximum": 50,
+ },
+ "openapi_types": (int,),
+ "attribute": "limit",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._patch_global_variable_endpoint = _Endpoint(
+ settings={
+ "response_type": (GlobalVariableResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/variables/{variable_id}/jsonpatch",
+ "operation_id": "patch_global_variable",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "variable_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "variable_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (GlobalVariableJsonPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._patch_test_suite_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsSuiteResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/suites/{public_id}/jsonpatch",
+ "operation_id": "patch_test_suite",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SuiteJsonPatchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._poll_synthetics_test_results_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsPollTestResultsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/poll_results",
+ "operation_id": "poll_synthetics_test_results",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "result_ids": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "result_ids",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_test_from_synthetics_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes/{downtime_id}/tests/{test_id}",
+ "operation_id": "remove_test_from_synthetics_downtime",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ "test_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "test_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._search_suites_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsSuiteSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/suites/search",
+ "operation_id": "search_suites",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "query": {
+ "openapi_types": (str,),
+ "attribute": "query",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (str,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "facets_only": {
+ "openapi_types": (bool,),
+ "attribute": "facets_only",
+ "location": "query",
+ },
+ "start": {
+ "openapi_types": (int,),
+ "attribute": "start",
+ "location": "query",
+ },
+ "count": {
+ "openapi_types": (int,),
+ "attribute": "count",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._set_on_demand_concurrency_cap_endpoint = _Endpoint(
+ settings={
+ "response_type": (OnDemandConcurrencyCapResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/settings/on_demand_concurrency_cap",
+ "operation_id": "set_on_demand_concurrency_cap",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (OnDemandConcurrencyCapAttributes,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_synthetics_downtime_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsDowntimeResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/synthetics/downtimes/{downtime_id}",
+ "operation_id": "update_synthetics_downtime",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "downtime_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "downtime_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsDowntimeRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_synthetics_network_test_endpoint = _Endpoint(
+ settings={
+ "response_type": (SyntheticsNetworkTestResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/synthetics/tests/network/{public_id}",
+ "operation_id": "update_synthetics_network_test",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "public_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "public_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (SyntheticsNetworkTestEditRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def abort_test_file_multipart_upload(self, public_id: str, body: SyntheticsTestFileAbortMultipartUploadRequest, ) -> None:
+ """Abort a multipart upload of a test file.
+
+ Abort an in-progress multipart file upload for a Synthetic test. This cancels the upload
+ and releases any storage used by already-uploaded parts.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :type body: SyntheticsTestFileAbortMultipartUploadRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._abort_test_file_multipart_upload_endpoint.call_with_http_info(**kwargs)
+
+ def add_test_to_synthetics_downtime(self, downtime_id: str, test_id: str, ) -> SyntheticsDowntimeResponse:
+ """Add a test to a Synthetics downtime.
+
+ Associate a Synthetics test with a downtime.
+
+ :param downtime_id: The ID of the downtime.
+ :type downtime_id: str
+ :param test_id: The public ID of the Synthetics test to associate with the downtime.
+ :type test_id: str
+ :rtype: SyntheticsDowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ kwargs["test_id"] = test_id
+
+ return self._add_test_to_synthetics_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def complete_test_file_multipart_upload(self, public_id: str, body: SyntheticsTestFileCompleteMultipartUploadRequest, ) -> None:
+ """Complete a multipart upload of a test file.
+
+ Complete a multipart file upload for a Synthetic test. Call this endpoint after all parts
+ have been uploaded using the presigned URLs obtained from the multipart presigned URLs endpoint.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :type body: SyntheticsTestFileCompleteMultipartUploadRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._complete_test_file_multipart_upload_endpoint.call_with_http_info(**kwargs)
+
+ def create_synthetics_downtime(self, body: SyntheticsDowntimeRequest, ) -> SyntheticsDowntimeResponse:
+ """Create a Synthetics downtime.
+
+ Create a new Synthetics downtime.
+
+ :type body: SyntheticsDowntimeRequest
+ :rtype: SyntheticsDowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_synthetics_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def create_synthetics_network_test(self, body: SyntheticsNetworkTestEditRequest, ) -> SyntheticsNetworkTestResponse:
+ """Create a Network Path test.
+
+ :type body: SyntheticsNetworkTestEditRequest
+ :rtype: SyntheticsNetworkTestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_synthetics_network_test_endpoint.call_with_http_info(**kwargs)
+
+ def create_synthetics_suite(self, body: SuiteCreateEditRequest, ) -> SyntheticsSuiteResponse:
+ """Create a test suite.
+
+ :type body: SuiteCreateEditRequest
+ :rtype: SyntheticsSuiteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_synthetics_suite_endpoint.call_with_http_info(**kwargs)
+
+ def delete_synthetics_downtime(self, downtime_id: str, ) -> None:
+ """Delete a Synthetics downtime.
+
+ Delete a Synthetics downtime by its ID.
+
+ :param downtime_id: The ID of the downtime to delete.
+ :type downtime_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ return self._delete_synthetics_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def delete_synthetics_suites(self, body: DeletedSuitesRequestDeleteRequest, ) -> DeletedSuitesResponse:
+ """Bulk delete suites.
+
+ :type body: DeletedSuitesRequestDeleteRequest
+ :rtype: DeletedSuitesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_synthetics_suites_endpoint.call_with_http_info(**kwargs)
+
+ def delete_synthetics_tests(self, body: DeletedTestsRequestDeleteRequest, ) -> DeletedTestsResponse:
+ """Bulk delete tests.
+
+ :type body: DeletedTestsRequestDeleteRequest
+ :rtype: DeletedTestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_synthetics_tests_endpoint.call_with_http_info(**kwargs)
+
+ def edit_synthetics_suite(self, public_id: str, body: SuiteCreateEditRequest, ) -> SyntheticsSuiteResponse:
+ """Edit a test suite.
+
+ :param public_id: The public ID of the suite to edit.
+ :type public_id: str
+ :param body: New suite details to be saved.
+ :type body: SuiteCreateEditRequest
+ :rtype: SyntheticsSuiteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._edit_synthetics_suite_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_multistep_subtest_parents(self, public_id: str, ) -> SyntheticsApiMultistepParentTestsResponse:
+ """Get parent tests for a subtest.
+
+ Get the list of API multistep tests that include a given subtest,
+ along with their monitor status.
+
+ :param public_id: The public ID of the subtest.
+ :type public_id: str
+ :rtype: SyntheticsApiMultistepParentTestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_api_multistep_subtest_parents_endpoint.call_with_http_info(**kwargs)
+
+ def get_api_multistep_subtests(self, public_id: str, ) -> SyntheticsApiMultistepSubtestsResponse:
+ """Get available subtests for a multistep test.
+
+ Get the list of API tests that can be added as subtests to a given API multistep test.
+ The current test is excluded from the list since a test cannot be a subtest of itself.
+
+ :param public_id: The public ID of the API multistep test.
+ :type public_id: str
+ :rtype: SyntheticsApiMultistepSubtestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_api_multistep_subtests_endpoint.call_with_http_info(**kwargs)
+
+ def get_on_demand_concurrency_cap(self, ) -> OnDemandConcurrencyCapResponse:
+ """Get the on-demand concurrency cap.
+
+ Get the on-demand concurrency cap.
+
+ :rtype: OnDemandConcurrencyCapResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_on_demand_concurrency_cap_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_browser_test_result(self, public_id: str, result_id: str, *, event_id: Union[str, UnsetType]=unset, timestamp: Union[int, UnsetType]=unset, ) -> SyntheticsTestResultResponse:
+ """Get a browser test result.
+
+ Get a specific full result from a given Synthetic browser test.
+
+ :param public_id: The public ID of the Synthetic browser test to which the target result belongs.
+ :type public_id: str
+ :param result_id: The ID of the result to get.
+ :type result_id: str
+ :param event_id: The event ID used to look up the result in the event store.
+ :type event_id: str, optional
+ :param timestamp: Timestamp in seconds to look up the result.
+ :type timestamp: int, optional
+ :rtype: SyntheticsTestResultResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["result_id"] = result_id
+
+ if event_id is not unset:
+ kwargs["event_id"] = event_id
+
+ if timestamp is not unset:
+ kwargs["timestamp"] = timestamp
+
+ return self._get_synthetics_browser_test_result_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_downtime(self, downtime_id: str, ) -> SyntheticsDowntimeResponse:
+ """Get a Synthetics downtime.
+
+ Get a Synthetics downtime by its ID.
+
+ :param downtime_id: The ID of the downtime to retrieve.
+ :type downtime_id: str
+ :rtype: SyntheticsDowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ return self._get_synthetics_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_fast_test_result(self, id: str, ) -> SyntheticsFastTestResult:
+ """Get a fast test result.
+
+ :param id: The UUID of the fast test to retrieve the result for.
+ :type id: str
+ :rtype: SyntheticsFastTestResult
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["id"] = id
+
+ return self._get_synthetics_fast_test_result_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_network_test(self, public_id: str, ) -> SyntheticsNetworkTestResponse:
+ """Get a Network Path test.
+
+ :param public_id: The public ID of the Network Path test to get details from.
+ :type public_id: str
+ :rtype: SyntheticsNetworkTestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_synthetics_network_test_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_suite(self, public_id: str, ) -> SyntheticsSuiteResponse:
+ """Get a suite.
+
+ :param public_id: The public ID of the suite to get details from.
+ :type public_id: str
+ :rtype: SyntheticsSuiteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_synthetics_suite_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_test_result(self, public_id: str, result_id: str, *, event_id: Union[str, UnsetType]=unset, timestamp: Union[int, UnsetType]=unset, ) -> SyntheticsTestResultResponse:
+ """Get a test result.
+
+ Get a specific full result from a given Synthetic test.
+
+ :param public_id: The public ID of the Synthetic test to which the target result belongs.
+ :type public_id: str
+ :param result_id: The ID of the result to get.
+ :type result_id: str
+ :param event_id: The event ID used to look up the result in the event store.
+ :type event_id: str, optional
+ :param timestamp: Timestamp in seconds to look up the result.
+ :type timestamp: int, optional
+ :rtype: SyntheticsTestResultResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["result_id"] = result_id
+
+ if event_id is not unset:
+ kwargs["event_id"] = event_id
+
+ if timestamp is not unset:
+ kwargs["timestamp"] = timestamp
+
+ return self._get_synthetics_test_result_endpoint.call_with_http_info(**kwargs)
+
+ def get_synthetics_test_version(self, public_id: str, version_number: int, *, include_change_metadata: Union[bool, UnsetType]=unset, only_check_existence: Union[bool, UnsetType]=unset, ) -> SyntheticsTestVersionResponse:
+ """Get a specific version of a test.
+
+ Get a specific version of a Synthetic test by its version number.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :param version_number: The version number to retrieve.
+ :type version_number: int
+ :param include_change_metadata: If ``true`` , include change metadata in the response.
+ :type include_change_metadata: bool, optional
+ :param only_check_existence: If ``true`` , only check whether the version exists without returning its full payload.
+ Returns an empty object if the version exists, or 404 if not.
+ :type only_check_existence: bool, optional
+ :rtype: SyntheticsTestVersionResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["version_number"] = version_number
+
+ if include_change_metadata is not unset:
+ kwargs["include_change_metadata"] = include_change_metadata
+
+ if only_check_existence is not unset:
+ kwargs["only_check_existence"] = only_check_existence
+
+ return self._get_synthetics_test_version_endpoint.call_with_http_info(**kwargs)
+
+ def get_test_file_download_url(self, public_id: str, body: SyntheticsTestFileDownloadRequest, ) -> SyntheticsTestFileDownloadResponse:
+ """Get a presigned URL for downloading a test file.
+
+ Get a presigned URL to download a file attached to a Synthetic test.
+ The returned URL is temporary and expires after a short period.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :type body: SyntheticsTestFileDownloadRequest
+ :rtype: SyntheticsTestFileDownloadResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._get_test_file_download_url_endpoint.call_with_http_info(**kwargs)
+
+ def get_test_file_multipart_presigned_urls(self, public_id: str, body: SyntheticsTestFileMultipartPresignedUrlsRequest, ) -> SyntheticsTestFileMultipartPresignedUrlsResponse:
+ """Get presigned URLs for uploading a test file.
+
+ Get presigned URLs for uploading a file to a Synthetic test using multipart upload.
+ Returns the presigned URLs for each part along with the bucket key that references the file.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :type body: SyntheticsTestFileMultipartPresignedUrlsRequest
+ :rtype: SyntheticsTestFileMultipartPresignedUrlsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._get_test_file_multipart_presigned_urls_endpoint.call_with_http_info(**kwargs)
+
+ def get_test_parent_suites(self, public_id: str, ) -> SyntheticsTestParentSuitesResponse:
+ """Get parent suites for a test.
+
+ Get the list of parent suites and their status for a given Synthetic test.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :rtype: SyntheticsTestParentSuitesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ return self._get_test_parent_suites_endpoint.call_with_http_info(**kwargs)
+
+ def list_synthetics_browser_test_latest_results(self, public_id: str, *, from_ts: Union[int, UnsetType]=unset, to_ts: Union[int, UnsetType]=unset, status: Union[SyntheticsTestResultStatus, UnsetType]=unset, run_type: Union[SyntheticsTestResultRunType, UnsetType]=unset, probe_dc: Union[List[str], UnsetType]=unset, device_id: Union[List[str], UnsetType]=unset, ) -> SyntheticsTestLatestResultsResponse:
+ """Get a browser test's latest results.
+
+ Get the latest result summaries for a given Synthetic browser test.
+
+ :param public_id: The public ID of the Synthetic browser test for which to search results.
+ :type public_id: str
+ :param from_ts: Timestamp in milliseconds from which to start querying results.
+ :type from_ts: int, optional
+ :param to_ts: Timestamp in milliseconds up to which to query results.
+ :type to_ts: int, optional
+ :param status: Filter results by status.
+ :type status: SyntheticsTestResultStatus, optional
+ :param run_type: Filter results by run type.
+ :type run_type: SyntheticsTestResultRunType, optional
+ :param probe_dc: Locations for which to query results.
+ :type probe_dc: [str], optional
+ :param device_id: Device IDs for which to query results.
+ :type device_id: [str], optional
+ :rtype: SyntheticsTestLatestResultsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ if from_ts is not unset:
+ kwargs["from_ts"] = from_ts
+
+ if to_ts is not unset:
+ kwargs["to_ts"] = to_ts
+
+ if status is not unset:
+ kwargs["status"] = status
+
+ if run_type is not unset:
+ kwargs["run_type"] = run_type
+
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+
+ if device_id is not unset:
+ kwargs["device_id"] = device_id
+
+ return self._list_synthetics_browser_test_latest_results_endpoint.call_with_http_info(**kwargs)
+
+ def list_synthetics_downtimes(self, *, filter_test_ids: Union[str, UnsetType]=unset, filter_active: Union[str, UnsetType]=unset, ) -> SyntheticsDowntimesResponse:
+ """List Synthetics downtimes.
+
+ Get a list of all Synthetics downtimes for your organization.
+
+ :param filter_test_ids: Comma-separated list of Synthetics test public IDs to filter downtimes by.
+ :type filter_test_ids: str, optional
+ :param filter_active: If set to ``true`` , return only downtimes that are currently active.
+ :type filter_active: str, optional
+ :rtype: SyntheticsDowntimesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_test_ids is not unset:
+ kwargs["filter_test_ids"] = filter_test_ids
+
+ if filter_active is not unset:
+ kwargs["filter_active"] = filter_active
+
+ return self._list_synthetics_downtimes_endpoint.call_with_http_info(**kwargs)
+
+ def list_synthetics_test_latest_results(self, public_id: str, *, from_ts: Union[int, UnsetType]=unset, to_ts: Union[int, UnsetType]=unset, status: Union[SyntheticsTestResultStatus, UnsetType]=unset, run_type: Union[SyntheticsTestResultRunType, UnsetType]=unset, probe_dc: Union[List[str], UnsetType]=unset, device_id: Union[List[str], UnsetType]=unset, ) -> SyntheticsTestLatestResultsResponse:
+ """Get a test's latest results.
+
+ Get the latest result summaries for a given Synthetic test.
+
+ :param public_id: The public ID of the Synthetic test for which to search results.
+ :type public_id: str
+ :param from_ts: Timestamp in milliseconds from which to start querying results.
+ :type from_ts: int, optional
+ :param to_ts: Timestamp in milliseconds up to which to query results.
+ :type to_ts: int, optional
+ :param status: Filter results by status.
+ :type status: SyntheticsTestResultStatus, optional
+ :param run_type: Filter results by run type.
+ :type run_type: SyntheticsTestResultRunType, optional
+ :param probe_dc: Locations for which to query results.
+ :type probe_dc: [str], optional
+ :param device_id: Device IDs for which to query results.
+ :type device_id: [str], optional
+ :rtype: SyntheticsTestLatestResultsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ if from_ts is not unset:
+ kwargs["from_ts"] = from_ts
+
+ if to_ts is not unset:
+ kwargs["to_ts"] = to_ts
+
+ if status is not unset:
+ kwargs["status"] = status
+
+ if run_type is not unset:
+ kwargs["run_type"] = run_type
+
+ if probe_dc is not unset:
+ kwargs["probe_dc"] = probe_dc
+
+ if device_id is not unset:
+ kwargs["device_id"] = device_id
+
+ return self._list_synthetics_test_latest_results_endpoint.call_with_http_info(**kwargs)
+
+ def list_synthetics_test_versions(self, public_id: str, *, last_version_number: Union[int, UnsetType]=unset, limit: Union[int, UnsetType]=unset, ) -> SyntheticsTestVersionHistoryResponse:
+ """Get version history of a test.
+
+ Get the paginated version history for a Synthetic test.
+
+ :param public_id: The public ID of the Synthetic test.
+ :type public_id: str
+ :param last_version_number: The version number of the last item from the previous page. Omit to get the first page.
+ :type last_version_number: int, optional
+ :param limit: Maximum number of version records to return per page.
+ :type limit: int, optional
+ :rtype: SyntheticsTestVersionHistoryResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ if last_version_number is not unset:
+ kwargs["last_version_number"] = last_version_number
+
+ if limit is not unset:
+ kwargs["limit"] = limit
+
+ return self._list_synthetics_test_versions_endpoint.call_with_http_info(**kwargs)
+
+ def patch_global_variable(self, variable_id: str, body: GlobalVariableJsonPatchRequest, ) -> GlobalVariableResponse:
+ """Patch a global variable.
+
+ Patch a global variable using JSON Patch (RFC 6902).
+ This endpoint allows partial updates to a global variable by specifying only the fields to modify.
+
+ Common operations include:
+
+ * Replace field values: ``{"op": "replace", "path": "/name", "value": "new_name"}``
+ * Update nested values: ``{"op": "replace", "path": "/value/value", "value": "new_value"}``
+ * Add/update tags: ``{"op": "add", "path": "/tags/-", "value": "new_tag"}``
+ * Remove fields: ``{"op": "remove", "path": "/description"}``
+
+ :param variable_id: The ID of the global variable.
+ :type variable_id: str
+ :param body: JSON Patch document with operations to apply.
+ :type body: GlobalVariableJsonPatchRequest
+ :rtype: GlobalVariableResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["variable_id"] = variable_id
+
+ kwargs["body"] = body
+
+ return self._patch_global_variable_endpoint.call_with_http_info(**kwargs)
+
+ def patch_test_suite(self, public_id: str, body: SuiteJsonPatchRequest, ) -> SyntheticsSuiteResponse:
+ """Patch a test suite.
+
+ Patch a Synthetic test suite using JSON Patch (RFC 6902).
+ Use partial updates to modify only specific fields of a test suite.
+
+ Common operations include:
+
+ * Replace field values: ``{"op": "replace", "path": "/name", "value": "new_name"}``
+ * Add/update tags: ``{"op": "add", "path": "/tags/-", "value": "new_tag"}``
+ * Remove fields: ``{"op": "remove", "path": "/message"}``
+
+ :param public_id: The public ID of the Synthetic test suite to patch.
+ :type public_id: str
+ :param body: JSON Patch document with operations to apply.
+ :type body: SuiteJsonPatchRequest
+ :rtype: SyntheticsSuiteResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._patch_test_suite_endpoint.call_with_http_info(**kwargs)
+
+ def poll_synthetics_test_results(self, result_ids: str, ) -> SyntheticsPollTestResultsResponse:
+ """Poll for test results.
+
+ Poll for test results given a list of result IDs. This is typically used after
+ triggering tests with CI/CD to retrieve results once they are available.
+
+ :param result_ids: A JSON-encoded array of result IDs to poll for.
+ :type result_ids: str
+ :rtype: SyntheticsPollTestResultsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["result_ids"] = result_ids
+
+ return self._poll_synthetics_test_results_endpoint.call_with_http_info(**kwargs)
+
+ def remove_test_from_synthetics_downtime(self, downtime_id: str, test_id: str, ) -> SyntheticsDowntimeResponse:
+ """Remove a test from a Synthetics downtime.
+
+ Disassociate a Synthetics test from a downtime.
+
+ :param downtime_id: The ID of the downtime.
+ :type downtime_id: str
+ :param test_id: The public ID of the Synthetics test to disassociate from the downtime.
+ :type test_id: str
+ :rtype: SyntheticsDowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ kwargs["test_id"] = test_id
+
+ return self._remove_test_from_synthetics_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def search_suites(self, *, query: Union[str, UnsetType]=unset, sort: Union[str, UnsetType]=unset, facets_only: Union[bool, UnsetType]=unset, start: Union[int, UnsetType]=unset, count: Union[int, UnsetType]=unset, ) -> SyntheticsSuiteSearchResponse:
+ """Search test suites.
+
+ Search for test suites.
+
+ :param query: The search query.
+ :type query: str, optional
+ :param sort: The sort order for the results (e.g., ``name,asc`` or ``name,desc`` ).
+ :type sort: str, optional
+ :param facets_only: If true, return only facets instead of full test details.
+ :type facets_only: bool, optional
+ :param start: The offset from which to start returning results.
+ :type start: int, optional
+ :param count: The maximum number of results to return.
+ :type count: int, optional
+ :rtype: SyntheticsSuiteSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if query is not unset:
+ kwargs["query"] = query
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if facets_only is not unset:
+ kwargs["facets_only"] = facets_only
+
+ if start is not unset:
+ kwargs["start"] = start
+
+ if count is not unset:
+ kwargs["count"] = count
+
+ return self._search_suites_endpoint.call_with_http_info(**kwargs)
+
+ def set_on_demand_concurrency_cap(self, body: OnDemandConcurrencyCapAttributes, ) -> OnDemandConcurrencyCapResponse:
+ """Save new value for on-demand concurrency cap.
+
+ Save new value for on-demand concurrency cap.
+
+ :param body: .
+ :type body: OnDemandConcurrencyCapAttributes
+ :rtype: OnDemandConcurrencyCapResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._set_on_demand_concurrency_cap_endpoint.call_with_http_info(**kwargs)
+
+ def update_synthetics_downtime(self, downtime_id: str, body: SyntheticsDowntimeRequest, ) -> SyntheticsDowntimeResponse:
+ """Update a Synthetics downtime.
+
+ Update a Synthetics downtime by its ID.
+
+ :param downtime_id: The ID of the downtime to update.
+ :type downtime_id: str
+ :type body: SyntheticsDowntimeRequest
+ :rtype: SyntheticsDowntimeResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["downtime_id"] = downtime_id
+
+ kwargs["body"] = body
+
+ return self._update_synthetics_downtime_endpoint.call_with_http_info(**kwargs)
+
+ def update_synthetics_network_test(self, public_id: str, body: SyntheticsNetworkTestEditRequest, ) -> SyntheticsNetworkTestResponse:
+ """Edit a Network Path test.
+
+ :param public_id: The public ID of the Network Path test to edit.
+ :type public_id: str
+ :param body: New Network Path test details to be saved.
+ :type body: SyntheticsNetworkTestEditRequest
+ :rtype: SyntheticsNetworkTestResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["public_id"] = public_id
+
+ kwargs["body"] = body
+
+ return self._update_synthetics_network_test_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/tag_policies_api.py b/datadog_api_client/v2/api/tag_policies_api.py
new file mode 100644
index 0000000000..c193577fbf
--- /dev/null
+++ b/datadog_api_client/v2/api/tag_policies_api.py
@@ -0,0 +1,396 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.tag_policies_list_response import TagPoliciesListResponse
+from datadog_api_client.v2.model.tag_policy_include import TagPolicyInclude
+from datadog_api_client.v2.model.tag_policy_source import TagPolicySource
+from datadog_api_client.v2.model.tag_policy_response import TagPolicyResponse
+from datadog_api_client.v2.model.tag_policy_create_request import TagPolicyCreateRequest
+from datadog_api_client.v2.model.tag_policy_update_request import TagPolicyUpdateRequest
+from datadog_api_client.v2.model.tag_policy_score_response import TagPolicyScoreResponse
+
+
+class TagPoliciesApi:
+ """
+ Tag Policies define rules that govern which tag values are accepted for a given tag key,
+ scoped to a particular telemetry source (such as logs, spans, or metrics). Policies can be
+ ``blocking`` (data not matching the policy is rejected) or ``surfacing`` (matching data is
+ highlighted but not blocked). Each policy reports a compliance ``score`` derived from how
+ much recent telemetry adheres to the policy.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._create_tag_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/tag_policies",
+ "operation_id": "create_tag_policy",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TagPolicyCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_tag_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/tag_policies/{policy_id}",
+ "operation_id": "delete_tag_policy",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "hard_delete": {
+ "openapi_types": (bool,),
+ "attribute": "hard_delete",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tag_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/tag_policies/{policy_id}",
+ "operation_id": "get_tag_policy",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "include": {
+ "openapi_types": (TagPolicyInclude,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "ts_start": {
+ "openapi_types": (int,),
+ "attribute": "ts_start",
+ "location": "query",
+ },
+ "ts_end": {
+ "openapi_types": (int,),
+ "attribute": "ts_end",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_tag_policy_score_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagPolicyScoreResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/tag_policies/{policy_id}/score",
+ "operation_id": "get_tag_policy_score",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "ts_start": {
+ "openapi_types": (int,),
+ "attribute": "ts_start",
+ "location": "query",
+ },
+ "ts_end": {
+ "openapi_types": (int,),
+ "attribute": "ts_end",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_tag_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagPoliciesListResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/tag_policies",
+ "operation_id": "list_tag_policies",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "include_disabled": {
+ "openapi_types": (bool,),
+ "attribute": "include_disabled",
+ "location": "query",
+ },
+ "include_deleted": {
+ "openapi_types": (bool,),
+ "attribute": "include_deleted",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": (TagPolicyInclude,),
+ "attribute": "include",
+ "location": "query",
+ },
+ "filter_source": {
+ "openapi_types": (TagPolicySource,),
+ "attribute": "filter[source]",
+ "location": "query",
+ },
+ "ts_start": {
+ "openapi_types": (int,),
+ "attribute": "ts_start",
+ "location": "query",
+ },
+ "ts_end": {
+ "openapi_types": (int,),
+ "attribute": "ts_end",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._update_tag_policy_endpoint = _Endpoint(
+ settings={
+ "response_type": (TagPolicyResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth"],
+ "endpoint_path": "/api/v2/tag_policies/{policy_id}",
+ "operation_id": "update_tag_policy",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "policy_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "policy_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TagPolicyUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def create_tag_policy(self, body: TagPolicyCreateRequest, ) -> TagPolicyResponse:
+ """Create a tag policy.
+
+ Create a new tag policy for the organization. The caller's organization is derived from
+ the authenticated user; cross-organization creation is not supported. Fields such as
+ ``policy_id`` , ``version`` , and the timestamp/audit fields are assigned by the server.
+
+ :type body: TagPolicyCreateRequest
+ :rtype: TagPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_tag_policy_endpoint.call_with_http_info(**kwargs)
+
+ def delete_tag_policy(self, policy_id: str, *, hard_delete: Union[bool, UnsetType]=unset, ) -> None:
+ """Delete a tag policy.
+
+ Delete a tag policy. By default the policy is soft-deleted so it can be recovered later
+ and so that historical score data remains queryable. Pass ``hard_delete=true`` to remove
+ the policy permanently.
+
+ :param policy_id: The unique identifier of the tag policy to delete.
+ :type policy_id: str
+ :param hard_delete: Whether to permanently delete the policy instead of performing a soft delete. Defaults to ``false``.
+ :type hard_delete: bool, optional
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ if hard_delete is not unset:
+ kwargs["hard_delete"] = hard_delete
+
+ return self._delete_tag_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_tag_policy(self, policy_id: str, *, include: Union[TagPolicyInclude, UnsetType]=unset, ts_start: Union[int, UnsetType]=unset, ts_end: Union[int, UnsetType]=unset, ) -> TagPolicyResponse:
+ """Get a tag policy.
+
+ Retrieve a single tag policy by ID. Optionally include the policy's current compliance
+ score via the ``include=score`` query parameter. Policies belonging to other organizations
+ cannot be retrieved.
+
+ :param policy_id: The unique identifier of the tag policy.
+ :type policy_id: str
+ :param include: Comma-separated list of related resources to include alongside the policy. Currently the only supported value is ``score``.
+ :type include: TagPolicyInclude, optional
+ :param ts_start: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds.
+ :type ts_start: int, optional
+ :param ts_end: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than ``ts_start``.
+ :type ts_end: int, optional
+ :rtype: TagPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if ts_start is not unset:
+ kwargs["ts_start"] = ts_start
+
+ if ts_end is not unset:
+ kwargs["ts_end"] = ts_end
+
+ return self._get_tag_policy_endpoint.call_with_http_info(**kwargs)
+
+ def get_tag_policy_score(self, policy_id: str, *, ts_start: Union[int, UnsetType]=unset, ts_end: Union[int, UnsetType]=unset, ) -> TagPolicyScoreResponse:
+ """Get a tag policy compliance score.
+
+ Retrieve the compliance score for a single tag policy. The score is computed over the
+ requested time window (or a source-appropriate default) and represents the percentage of
+ telemetry within that window that conforms to the policy. A ``null`` score indicates that
+ no relevant telemetry was found.
+
+ :param policy_id: The unique identifier of the tag policy.
+ :type policy_id: str
+ :param ts_start: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds.
+ :type ts_start: int, optional
+ :param ts_end: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than ``ts_start``.
+ :type ts_end: int, optional
+ :rtype: TagPolicyScoreResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ if ts_start is not unset:
+ kwargs["ts_start"] = ts_start
+
+ if ts_end is not unset:
+ kwargs["ts_end"] = ts_end
+
+ return self._get_tag_policy_score_endpoint.call_with_http_info(**kwargs)
+
+ def list_tag_policies(self, *, include_disabled: Union[bool, UnsetType]=unset, include_deleted: Union[bool, UnsetType]=unset, include: Union[TagPolicyInclude, UnsetType]=unset, filter_source: Union[TagPolicySource, UnsetType]=unset, ts_start: Union[int, UnsetType]=unset, ts_end: Union[int, UnsetType]=unset, ) -> TagPoliciesListResponse:
+ """List tag policies.
+
+ Retrieve all tag policies for the organization. Optionally include disabled or deleted
+ policies, filter by telemetry source, and include each policy's current compliance score
+ via the ``include=score`` query parameter.
+
+ :param include_disabled: Whether to include policies that are currently disabled. Defaults to ``false``.
+ :type include_disabled: bool, optional
+ :param include_deleted: Whether to include policies that have been soft-deleted. Defaults to ``false``.
+ :type include_deleted: bool, optional
+ :param include: Comma-separated list of related resources to include alongside each policy in the response. Currently the only supported value is ``score``.
+ :type include: TagPolicyInclude, optional
+ :param filter_source: Restrict the result set to policies whose source matches the given value.
+ :type filter_source: TagPolicySource, optional
+ :param ts_start: Start of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Defaults to a recent window appropriate for the source.
+ :type ts_start: int, optional
+ :param ts_end: End of the time window used for compliance score computation, as a Unix timestamp in milliseconds. Must be in the past and greater than ``ts_start``.
+ :type ts_end: int, optional
+ :rtype: TagPoliciesListResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if include_disabled is not unset:
+ kwargs["include_disabled"] = include_disabled
+
+ if include_deleted is not unset:
+ kwargs["include_deleted"] = include_deleted
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_source is not unset:
+ kwargs["filter_source"] = filter_source
+
+ if ts_start is not unset:
+ kwargs["ts_start"] = ts_start
+
+ if ts_end is not unset:
+ kwargs["ts_end"] = ts_end
+
+ return self._list_tag_policies_endpoint.call_with_http_info(**kwargs)
+
+ def update_tag_policy(self, policy_id: str, body: TagPolicyUpdateRequest, ) -> TagPolicyResponse:
+ """Update a tag policy.
+
+ Update one or more attributes of an existing tag policy. Only the fields supplied in the
+ request body are modified; omitted fields retain their current values. The policy's
+ ``source`` cannot be changed after creation.
+
+ :param policy_id: The unique identifier of the tag policy to update.
+ :type policy_id: str
+ :type body: TagPolicyUpdateRequest
+ :rtype: TagPolicyResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["policy_id"] = policy_id
+
+ kwargs["body"] = body
+
+ return self._update_tag_policy_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/teams_api.py b/datadog_api_client/v2/api/teams_api.py
new file mode 100644
index 0000000000..5cfbb477e0
--- /dev/null
+++ b/datadog_api_client/v2/api/teams_api.py
@@ -0,0 +1,1986 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.teams_response import TeamsResponse
+from datadog_api_client.v2.model.list_teams_sort import ListTeamsSort
+from datadog_api_client.v2.model.list_teams_include import ListTeamsInclude
+from datadog_api_client.v2.model.teams_field import TeamsField
+from datadog_api_client.v2.model.team import Team
+from datadog_api_client.v2.model.team_response import TeamResponse
+from datadog_api_client.v2.model.team_create_request import TeamCreateRequest
+from datadog_api_client.v2.model.team_hierarchy_links_response import TeamHierarchyLinksResponse
+from datadog_api_client.v2.model.team_hierarchy_link import TeamHierarchyLink
+from datadog_api_client.v2.model.team_hierarchy_link_response import TeamHierarchyLinkResponse
+from datadog_api_client.v2.model.team_hierarchy_link_create_request import TeamHierarchyLinkCreateRequest
+from datadog_api_client.v2.model.team_connection_delete_request import TeamConnectionDeleteRequest
+from datadog_api_client.v2.model.team_connections_response import TeamConnectionsResponse
+from datadog_api_client.v2.model.team_connection import TeamConnection
+from datadog_api_client.v2.model.team_connection_create_request import TeamConnectionCreateRequest
+from datadog_api_client.v2.model.team_sync_response import TeamSyncResponse
+from datadog_api_client.v2.model.team_sync_attributes_source import TeamSyncAttributesSource
+from datadog_api_client.v2.model.team_sync_request import TeamSyncRequest
+from datadog_api_client.v2.model.add_member_team_request import AddMemberTeamRequest
+from datadog_api_client.v2.model.team_update_request import TeamUpdateRequest
+from datadog_api_client.v2.model.team_links_response import TeamLinksResponse
+from datadog_api_client.v2.model.team_link_response import TeamLinkResponse
+from datadog_api_client.v2.model.team_link_create_request import TeamLinkCreateRequest
+from datadog_api_client.v2.model.user_teams_response import UserTeamsResponse
+from datadog_api_client.v2.model.get_team_memberships_sort import GetTeamMembershipsSort
+from datadog_api_client.v2.model.user_team import UserTeam
+from datadog_api_client.v2.model.user_team_response import UserTeamResponse
+from datadog_api_client.v2.model.user_team_request import UserTeamRequest
+from datadog_api_client.v2.model.user_team_update_request import UserTeamUpdateRequest
+from datadog_api_client.v2.model.team_notification_rules_response import TeamNotificationRulesResponse
+from datadog_api_client.v2.model.team_notification_rule_response import TeamNotificationRuleResponse
+from datadog_api_client.v2.model.team_notification_rule_request import TeamNotificationRuleRequest
+from datadog_api_client.v2.model.team_permission_settings_response import TeamPermissionSettingsResponse
+from datadog_api_client.v2.model.team_permission_setting_response import TeamPermissionSettingResponse
+from datadog_api_client.v2.model.team_permission_setting_update_request import TeamPermissionSettingUpdateRequest
+
+
+class TeamsApi:
+ """
+ View and manage teams within Datadog. See the `Teams page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._add_member_team_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{super_team_id}/member_teams",
+ "operation_id": "add_member_team",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "super_team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "super_team_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (AddMemberTeamRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._add_team_hierarchy_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamHierarchyLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team-hierarchy-links",
+ "operation_id": "add_team_hierarchy_link",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TeamHierarchyLinkCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_team_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team",
+ "operation_id": "create_team",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TeamCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_team_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamConnectionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/connections",
+ "operation_id": "create_team_connections",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TeamConnectionCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_team_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/links",
+ "operation_id": "create_team_link",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamLinkCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_team_membership_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserTeamResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/memberships",
+ "operation_id": "create_team_membership",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UserTeamRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._create_team_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/notification-rules",
+ "operation_id": "create_team_notification_rule",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamNotificationRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_team_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}",
+ "operation_id": "delete_team",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_team_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/connections",
+ "operation_id": "delete_team_connections",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TeamConnectionDeleteRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._delete_team_link_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/links/{link_id}",
+ "operation_id": "delete_team_link",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "link_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "link_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_team_membership_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/memberships/{user_id}",
+ "operation_id": "delete_team_membership",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._delete_team_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/notification-rules/{rule_id}",
+ "operation_id": "delete_team_notification_rule",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}",
+ "operation_id": "get_team",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_hierarchy_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamHierarchyLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team-hierarchy-links/{link_id}",
+ "operation_id": "get_team_hierarchy_link",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "link_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "link_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/links/{link_id}",
+ "operation_id": "get_team_link",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "link_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "link_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_links_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamLinksResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/links",
+ "operation_id": "get_team_links",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_memberships_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserTeamsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/memberships",
+ "operation_id": "get_team_memberships",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (GetTeamMembershipsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "filter_keyword": {
+ "openapi_types": (str,),
+ "attribute": "filter[keyword]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/notification-rules/{rule_id}",
+ "operation_id": "get_team_notification_rule",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_notification_rules_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamNotificationRulesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/notification-rules",
+ "operation_id": "get_team_notification_rules",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_permission_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamPermissionSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/permission-settings",
+ "operation_id": "get_team_permission_settings",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_team_sync_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamSyncResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/sync",
+ "operation_id": "get_team_sync",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_source": {
+ "required": True,
+ "openapi_types": (TeamSyncAttributesSource,),
+ "attribute": "filter[source]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_user_memberships_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserTeamsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/users/{user_uuid}/memberships",
+ "operation_id": "get_user_memberships",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "user_uuid": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_uuid",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_member_teams_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{super_team_id}/member_teams",
+ "operation_id": "list_member_teams",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "super_team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "super_team_id",
+ "location": "path",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "fields_team": {
+ "openapi_types": ([TeamsField],),
+ "attribute": "fields[team]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_team_connections_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamConnectionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/connections",
+ "operation_id": "list_team_connections",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "filter_sources": {
+ "openapi_types": ([str],),
+ "attribute": "filter[sources]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "filter_team_ids": {
+ "openapi_types": ([str],),
+ "attribute": "filter[team_ids]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "filter_connected_team_ids": {
+ "openapi_types": ([str],),
+ "attribute": "filter[connected_team_ids]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ "filter_connection_ids": {
+ "openapi_types": ([str],),
+ "attribute": "filter[connection_ids]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_team_hierarchy_links_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamHierarchyLinksResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team-hierarchy-links",
+ "operation_id": "list_team_hierarchy_links",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "filter_parent_team": {
+ "openapi_types": (str,),
+ "attribute": "filter[parent_team]",
+ "location": "query",
+ },
+ "filter_sub_team": {
+ "openapi_types": (str,),
+ "attribute": "filter[sub_team]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._list_teams_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team",
+ "operation_id": "list_teams",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "page_number": {
+ "openapi_types": (int,),
+ "attribute": "page[number]",
+ "location": "query",
+ },
+ "page_size": {
+ "openapi_types": (int,),
+ "attribute": "page[size]",
+ "location": "query",
+ },
+ "sort": {
+ "openapi_types": (ListTeamsSort,),
+ "attribute": "sort",
+ "location": "query",
+ },
+ "include": {
+ "openapi_types": ([ListTeamsInclude],),
+ "attribute": "include",
+ "location": "query",
+ "collection_format": "multi",
+ },
+ "filter_keyword": {
+ "openapi_types": (str,),
+ "attribute": "filter[keyword]",
+ "location": "query",
+ },
+ "filter_me": {
+ "openapi_types": (bool,),
+ "attribute": "filter[me]",
+ "location": "query",
+ },
+ "fields_team": {
+ "openapi_types": ([TeamsField],),
+ "attribute": "fields[team]",
+ "location": "query",
+ "collection_format": "csv",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_member_team_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{super_team_id}/member_teams/{member_team_id}",
+ "operation_id": "remove_member_team",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "super_team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "super_team_id",
+ "location": "path",
+ },
+ "member_team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "member_team_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._remove_team_hierarchy_link_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team-hierarchy-links/{link_id}",
+ "operation_id": "remove_team_hierarchy_link",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "link_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "link_id",
+ "location": "path",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ },
+ api_client=api_client,
+ )
+
+ self._sync_teams_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/sync",
+ "operation_id": "sync_teams",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TeamSyncRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_team_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}",
+ "operation_id": "update_team",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_team_link_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamLinkResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/links/{link_id}",
+ "operation_id": "update_team_link",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "link_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "link_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamLinkCreateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_team_membership_endpoint = _Endpoint(
+ settings={
+ "response_type": (UserTeamResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/memberships/{user_id}",
+ "operation_id": "update_team_membership",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "user_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "user_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (UserTeamUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_team_notification_rule_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamNotificationRuleResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/notification-rules/{rule_id}",
+ "operation_id": "update_team_notification_rule",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "rule_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "rule_id",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamNotificationRuleRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_team_permission_setting_endpoint = _Endpoint(
+ settings={
+ "response_type": (TeamPermissionSettingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/team/{team_id}/permission-settings/{action}",
+ "operation_id": "update_team_permission_setting",
+ "http_method": "PUT",
+ "version": "v2",
+ },
+ params_map={
+ "team_id": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "team_id",
+ "location": "path",
+ },
+ "action": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "action",
+ "location": "path",
+ },
+ "body": {
+ "required": True,
+ "openapi_types": (TeamPermissionSettingUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def add_member_team(self, super_team_id: str, body: AddMemberTeamRequest, ) -> None:
+ """Add a member team. **Deprecated**.
+
+ Add a member team.
+ Adds the team given by the ``id`` in the body as a member team of the super team.
+
+ **Note** : This API is deprecated. For creating team hierarchy links, use the team hierarchy links API: ``POST /api/v2/team-hierarchy-links``.
+
+ :param super_team_id: None
+ :type super_team_id: str
+ :type body: AddMemberTeamRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["super_team_id"] = super_team_id
+
+ kwargs["body"] = body
+
+ warnings.warn("add_member_team is deprecated", DeprecationWarning, stacklevel=2)
+ return self._add_member_team_endpoint.call_with_http_info(**kwargs)
+
+ def add_team_hierarchy_link(self, body: TeamHierarchyLinkCreateRequest, ) -> TeamHierarchyLinkResponse:
+ """Create a team hierarchy link.
+
+ Create a new team hierarchy link between a parent team and a sub team.
+
+ :type body: TeamHierarchyLinkCreateRequest
+ :rtype: TeamHierarchyLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._add_team_hierarchy_link_endpoint.call_with_http_info(**kwargs)
+
+ def create_team(self, body: TeamCreateRequest, ) -> TeamResponse:
+ """Create a team.
+
+ Create a new team.
+ User IDs passed through the ``users`` relationship field are added to the team.
+
+ :type body: TeamCreateRequest
+ :rtype: TeamResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_team_endpoint.call_with_http_info(**kwargs)
+
+ def create_team_connections(self, body: TeamConnectionCreateRequest, ) -> TeamConnectionsResponse:
+ """Create team connections.
+
+ Create multiple team connections.
+
+ :type body: TeamConnectionCreateRequest
+ :rtype: TeamConnectionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._create_team_connections_endpoint.call_with_http_info(**kwargs)
+
+ def create_team_link(self, team_id: str, body: TeamLinkCreateRequest, ) -> TeamLinkResponse:
+ """Create a team link.
+
+ Add a new link to a team.
+
+ :param team_id: None
+ :type team_id: str
+ :type body: TeamLinkCreateRequest
+ :rtype: TeamLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["body"] = body
+
+ return self._create_team_link_endpoint.call_with_http_info(**kwargs)
+
+ def create_team_membership(self, team_id: str, body: UserTeamRequest, ) -> UserTeamResponse:
+ """Add a user to a team.
+
+ Add a user to a team.
+
+ **Note** : Each team has a setting that determines who is allowed to modify membership of the team. The ``user_access_manage`` permission generally grants access to modify membership of any team. To get the full picture, see `Team Membership documentation `_.
+
+ :param team_id: None
+ :type team_id: str
+ :type body: UserTeamRequest
+ :rtype: UserTeamResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["body"] = body
+
+ return self._create_team_membership_endpoint.call_with_http_info(**kwargs)
+
+ def create_team_notification_rule(self, team_id: str, body: TeamNotificationRuleRequest, ) -> TeamNotificationRuleResponse:
+ """Create team notification rule.
+
+ :param team_id: None
+ :type team_id: str
+ :type body: TeamNotificationRuleRequest
+ :rtype: TeamNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["body"] = body
+
+ return self._create_team_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def delete_team(self, team_id: str, ) -> None:
+ """Remove a team.
+
+ Remove a team using the team's ``id``.
+
+ :param team_id: None
+ :type team_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ return self._delete_team_endpoint.call_with_http_info(**kwargs)
+
+ def delete_team_connections(self, body: TeamConnectionDeleteRequest, ) -> None:
+ """Delete team connections.
+
+ Delete multiple team connections.
+
+ :type body: TeamConnectionDeleteRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_team_connections_endpoint.call_with_http_info(**kwargs)
+
+ def delete_team_link(self, team_id: str, link_id: str, ) -> None:
+ """Remove a team link.
+
+ Remove a link from a team.
+
+ :param team_id: None
+ :type team_id: str
+ :param link_id: None
+ :type link_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["link_id"] = link_id
+
+ return self._delete_team_link_endpoint.call_with_http_info(**kwargs)
+
+ def delete_team_membership(self, team_id: str, user_id: str, ) -> None:
+ """Remove a user from a team.
+
+ Remove a user from a team.
+
+ **Note** : Each team has a setting that determines who is allowed to modify membership of the team. The ``user_access_manage`` permission generally grants access to modify membership of any team. To get the full picture, see `Team Membership documentation `_.
+
+ :param team_id: None
+ :type team_id: str
+ :param user_id: None
+ :type user_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["user_id"] = user_id
+
+ return self._delete_team_membership_endpoint.call_with_http_info(**kwargs)
+
+ def delete_team_notification_rule(self, team_id: str, rule_id: str, ) -> None:
+ """Delete team notification rule.
+
+ :param team_id: None
+ :type team_id: str
+ :param rule_id: None
+ :type rule_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._delete_team_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_team(self, team_id: str, ) -> TeamResponse:
+ """Get a team.
+
+ Get a single team using the team's ``id``.
+
+ :param team_id: None
+ :type team_id: str
+ :rtype: TeamResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ return self._get_team_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_hierarchy_link(self, link_id: str, ) -> TeamHierarchyLinkResponse:
+ """Get a team hierarchy link.
+
+ Get a single team hierarchy link for the given link_id.
+
+ :param link_id: The team hierarchy link's identifier
+ :type link_id: str
+ :rtype: TeamHierarchyLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["link_id"] = link_id
+
+ return self._get_team_hierarchy_link_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_link(self, team_id: str, link_id: str, ) -> TeamLinkResponse:
+ """Get a team link.
+
+ Get a single link for a team.
+
+ :param team_id: None
+ :type team_id: str
+ :param link_id: None
+ :type link_id: str
+ :rtype: TeamLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["link_id"] = link_id
+
+ return self._get_team_link_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_links(self, team_id: str, ) -> TeamLinksResponse:
+ """Get links for a team.
+
+ Get all links for a given team.
+
+ :param team_id: None
+ :type team_id: str
+ :rtype: TeamLinksResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ return self._get_team_links_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_memberships(self, team_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[GetTeamMembershipsSort, UnsetType]=unset, filter_keyword: Union[str, UnsetType]=unset, ) -> UserTeamsResponse:
+ """Get team memberships.
+
+ Get a paginated list of members for a team
+
+ :param team_id: None
+ :type team_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Specifies the order of returned team memberships
+ :type sort: GetTeamMembershipsSort, optional
+ :param filter_keyword: Search query, can be user email or name
+ :type filter_keyword: str, optional
+ :rtype: UserTeamsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_keyword is not unset:
+ kwargs["filter_keyword"] = filter_keyword
+
+ return self._get_team_memberships_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_memberships_with_pagination(self, team_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, sort: Union[GetTeamMembershipsSort, UnsetType]=unset, filter_keyword: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[UserTeam]:
+ """Get team memberships.
+
+ Provide a paginated version of :meth:`get_team_memberships`, returning all items.
+
+ :param team_id: None
+ :type team_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param sort: Specifies the order of returned team memberships
+ :type sort: GetTeamMembershipsSort, optional
+ :param filter_keyword: Search query, can be user email or name
+ :type filter_keyword: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[UserTeam]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if filter_keyword is not unset:
+ kwargs["filter_keyword"] = filter_keyword
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._get_team_memberships_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def get_team_notification_rule(self, team_id: str, rule_id: str, ) -> TeamNotificationRuleResponse:
+ """Get team notification rule.
+
+ :param team_id: None
+ :type team_id: str
+ :param rule_id: None
+ :type rule_id: str
+ :rtype: TeamNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["rule_id"] = rule_id
+
+ return self._get_team_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_notification_rules(self, team_id: str, ) -> TeamNotificationRulesResponse:
+ """Get team notification rules.
+
+ :param team_id: None
+ :type team_id: str
+ :rtype: TeamNotificationRulesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ return self._get_team_notification_rules_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_permission_settings(self, team_id: str, ) -> TeamPermissionSettingsResponse:
+ """Get permission settings for a team.
+
+ Get all permission settings for a given team.
+
+ :param team_id: None
+ :type team_id: str
+ :rtype: TeamPermissionSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ return self._get_team_permission_settings_endpoint.call_with_http_info(**kwargs)
+
+ def get_team_sync(self, filter_source: TeamSyncAttributesSource, ) -> TeamSyncResponse:
+ """Get team sync configurations.
+
+ Get all team synchronization configurations.
+ Returns a list of configurations used for linking or provisioning teams with external sources like GitHub.
+
+ :param filter_source: Filter by the external source platform for team synchronization
+ :type filter_source: TeamSyncAttributesSource
+ :rtype: TeamSyncResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["filter_source"] = filter_source
+
+ return self._get_team_sync_endpoint.call_with_http_info(**kwargs)
+
+ def get_user_memberships(self, user_uuid: str, ) -> UserTeamsResponse:
+ """Get user memberships.
+
+ Get a list of memberships for a user
+
+ :param user_uuid: None
+ :type user_uuid: str
+ :rtype: UserTeamsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["user_uuid"] = user_uuid
+
+ return self._get_user_memberships_endpoint.call_with_http_info(**kwargs)
+
+ def list_member_teams(self, super_team_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, fields_team: Union[List[TeamsField], UnsetType]=unset, ) -> TeamsResponse:
+ """Get all member teams. **Deprecated**.
+
+ Get all member teams.
+
+ **Note** : This API is deprecated. For team hierarchy relationships (parent-child
+ teams), use the team hierarchy links API: ``GET /api/v2/team-hierarchy-links``.
+
+ :param super_team_id: None
+ :type super_team_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param fields_team: List of fields that need to be fetched.
+ :type fields_team: [TeamsField], optional
+ :rtype: TeamsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["super_team_id"] = super_team_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if fields_team is not unset:
+ kwargs["fields_team"] = fields_team
+
+ warnings.warn("list_member_teams is deprecated", DeprecationWarning, stacklevel=2)
+ return self._list_member_teams_endpoint.call_with_http_info(**kwargs)
+
+ def list_member_teams_with_pagination(self, super_team_id: str, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, fields_team: Union[List[TeamsField], UnsetType]=unset, ) -> collections.abc.Iterable[Team]:
+ """Get all member teams.
+
+ Provide a paginated version of :meth:`list_member_teams`, returning all items.
+
+ :param super_team_id: None
+ :type super_team_id: str
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param fields_team: List of fields that need to be fetched.
+ :type fields_team: [TeamsField], optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Team]
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["super_team_id"] = super_team_id
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if fields_team is not unset:
+ kwargs["fields_team"] = fields_team
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_member_teams_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_team_connections(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_sources: Union[List[str], UnsetType]=unset, filter_team_ids: Union[List[str], UnsetType]=unset, filter_connected_team_ids: Union[List[str], UnsetType]=unset, filter_connection_ids: Union[List[str], UnsetType]=unset, ) -> TeamConnectionsResponse:
+ """List team connections.
+
+ Returns all team connections.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param filter_sources: Filter team connections by external source systems.
+ :type filter_sources: [str], optional
+ :param filter_team_ids: Filter team connections by Datadog team IDs.
+ :type filter_team_ids: [str], optional
+ :param filter_connected_team_ids: Filter team connections by connected team IDs from external systems.
+ :type filter_connected_team_ids: [str], optional
+ :param filter_connection_ids: Filter team connections by connection IDs.
+ :type filter_connection_ids: [str], optional
+ :rtype: TeamConnectionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_sources is not unset:
+ kwargs["filter_sources"] = filter_sources
+
+ if filter_team_ids is not unset:
+ kwargs["filter_team_ids"] = filter_team_ids
+
+ if filter_connected_team_ids is not unset:
+ kwargs["filter_connected_team_ids"] = filter_connected_team_ids
+
+ if filter_connection_ids is not unset:
+ kwargs["filter_connection_ids"] = filter_connection_ids
+
+ return self._list_team_connections_endpoint.call_with_http_info(**kwargs)
+
+ def list_team_connections_with_pagination(self, *, page_size: Union[int, UnsetType]=unset, page_number: Union[int, UnsetType]=unset, filter_sources: Union[List[str], UnsetType]=unset, filter_team_ids: Union[List[str], UnsetType]=unset, filter_connected_team_ids: Union[List[str], UnsetType]=unset, filter_connection_ids: Union[List[str], UnsetType]=unset, ) -> collections.abc.Iterable[TeamConnection]:
+ """List team connections.
+
+ Provide a paginated version of :meth:`list_team_connections`, returning all items.
+
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param filter_sources: Filter team connections by external source systems.
+ :type filter_sources: [str], optional
+ :param filter_team_ids: Filter team connections by Datadog team IDs.
+ :type filter_team_ids: [str], optional
+ :param filter_connected_team_ids: Filter team connections by connected team IDs from external systems.
+ :type filter_connected_team_ids: [str], optional
+ :param filter_connection_ids: Filter team connections by connection IDs.
+ :type filter_connection_ids: [str], optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[TeamConnection]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if filter_sources is not unset:
+ kwargs["filter_sources"] = filter_sources
+
+ if filter_team_ids is not unset:
+ kwargs["filter_team_ids"] = filter_team_ids
+
+ if filter_connected_team_ids is not unset:
+ kwargs["filter_connected_team_ids"] = filter_connected_team_ids
+
+ if filter_connection_ids is not unset:
+ kwargs["filter_connection_ids"] = filter_connection_ids
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_team_connections_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_team_hierarchy_links(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, filter_parent_team: Union[str, UnsetType]=unset, filter_sub_team: Union[str, UnsetType]=unset, ) -> TeamHierarchyLinksResponse:
+ """Get team hierarchy links.
+
+ List all team hierarchy links that match the provided filters.
+
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param filter_parent_team: Filter by parent team ID
+ :type filter_parent_team: str, optional
+ :param filter_sub_team: Filter by sub team ID
+ :type filter_sub_team: str, optional
+ :rtype: TeamHierarchyLinksResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if filter_parent_team is not unset:
+ kwargs["filter_parent_team"] = filter_parent_team
+
+ if filter_sub_team is not unset:
+ kwargs["filter_sub_team"] = filter_sub_team
+
+ return self._list_team_hierarchy_links_endpoint.call_with_http_info(**kwargs)
+
+ def list_team_hierarchy_links_with_pagination(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, filter_parent_team: Union[str, UnsetType]=unset, filter_sub_team: Union[str, UnsetType]=unset, ) -> collections.abc.Iterable[TeamHierarchyLink]:
+ """Get team hierarchy links.
+
+ Provide a paginated version of :meth:`list_team_hierarchy_links`, returning all items.
+
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param filter_parent_team: Filter by parent team ID
+ :type filter_parent_team: str, optional
+ :param filter_sub_team: Filter by sub team ID
+ :type filter_sub_team: str, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[TeamHierarchyLink]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if filter_parent_team is not unset:
+ kwargs["filter_parent_team"] = filter_parent_team
+
+ if filter_sub_team is not unset:
+ kwargs["filter_sub_team"] = filter_sub_team
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_team_hierarchy_links_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def list_teams(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort: Union[ListTeamsSort, UnsetType]=unset, include: Union[List[ListTeamsInclude], UnsetType]=unset, filter_keyword: Union[str, UnsetType]=unset, filter_me: Union[bool, UnsetType]=unset, fields_team: Union[List[TeamsField], UnsetType]=unset, ) -> TeamsResponse:
+ """Get all teams.
+
+ Get all teams.
+ Can be used to search for teams using the ``filter[keyword]`` and ``filter[me]`` query parameters.
+
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param sort: Specifies the order of the returned teams
+ :type sort: ListTeamsSort, optional
+ :param include: Included related resources optionally requested. Allowed enum values: ``team_links, user_team_permissions``
+ :type include: [ListTeamsInclude], optional
+ :param filter_keyword: Search query. Can be team name, team handle, or email of team member
+ :type filter_keyword: str, optional
+ :param filter_me: When true, only returns teams the current user belongs to
+ :type filter_me: bool, optional
+ :param fields_team: List of fields that need to be fetched.
+ :type fields_team: [TeamsField], optional
+ :rtype: TeamsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_keyword is not unset:
+ kwargs["filter_keyword"] = filter_keyword
+
+ if filter_me is not unset:
+ kwargs["filter_me"] = filter_me
+
+ if fields_team is not unset:
+ kwargs["fields_team"] = fields_team
+
+ return self._list_teams_endpoint.call_with_http_info(**kwargs)
+
+ def list_teams_with_pagination(self, *, page_number: Union[int, UnsetType]=unset, page_size: Union[int, UnsetType]=unset, sort: Union[ListTeamsSort, UnsetType]=unset, include: Union[List[ListTeamsInclude], UnsetType]=unset, filter_keyword: Union[str, UnsetType]=unset, filter_me: Union[bool, UnsetType]=unset, fields_team: Union[List[TeamsField], UnsetType]=unset, ) -> collections.abc.Iterable[Team]:
+ """Get all teams.
+
+ Provide a paginated version of :meth:`list_teams`, returning all items.
+
+ :param page_number: Specific page number to return.
+ :type page_number: int, optional
+ :param page_size: Number of items to return per page. The maximum allowed value is 100.
+ :type page_size: int, optional
+ :param sort: Specifies the order of the returned teams
+ :type sort: ListTeamsSort, optional
+ :param include: Included related resources optionally requested. Allowed enum values: ``team_links, user_team_permissions``
+ :type include: [ListTeamsInclude], optional
+ :param filter_keyword: Search query. Can be team name, team handle, or email of team member
+ :type filter_keyword: str, optional
+ :param filter_me: When true, only returns teams the current user belongs to
+ :type filter_me: bool, optional
+ :param fields_team: List of fields that need to be fetched.
+ :type fields_team: [TeamsField], optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[Team]
+ """
+ kwargs: Dict[str, Any] = {}
+ if page_number is not unset:
+ kwargs["page_number"] = page_number
+
+ if page_size is not unset:
+ kwargs["page_size"] = page_size
+
+ if sort is not unset:
+ kwargs["sort"] = sort
+
+ if include is not unset:
+ kwargs["include"] = include
+
+ if filter_keyword is not unset:
+ kwargs["filter_keyword"] = filter_keyword
+
+ if filter_me is not unset:
+ kwargs["filter_me"] = filter_me
+
+ if fields_team is not unset:
+ kwargs["fields_team"] = fields_team
+
+ local_page_size = get_attribute_from_path(kwargs, "page_size", 10)
+ endpoint = self._list_teams_endpoint
+ set_attribute_from_path(kwargs, "page_size", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "page_param": "page_number",
+ "page_start": 0,
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def remove_member_team(self, super_team_id: str, member_team_id: str, ) -> None:
+ """Remove a member team. **Deprecated**.
+
+ Remove a super team's member team identified by ``member_team_id``.
+
+ **Note** : This API is deprecated. For deleting team hierarchy links, use the team hierarchy links API: ``DELETE /api/v2/team-hierarchy-links/{link_id}``.
+
+ :param super_team_id: None
+ :type super_team_id: str
+ :param member_team_id: None
+ :type member_team_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["super_team_id"] = super_team_id
+
+ kwargs["member_team_id"] = member_team_id
+
+ warnings.warn("remove_member_team is deprecated", DeprecationWarning, stacklevel=2)
+ return self._remove_member_team_endpoint.call_with_http_info(**kwargs)
+
+ def remove_team_hierarchy_link(self, link_id: str, ) -> None:
+ """Remove a team hierarchy link.
+
+ Remove a team hierarchy link by the given link_id.
+
+ :param link_id: The team hierarchy link's identifier
+ :type link_id: str
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["link_id"] = link_id
+
+ return self._remove_team_hierarchy_link_endpoint.call_with_http_info(**kwargs)
+
+ def sync_teams(self, body: TeamSyncRequest, ) -> None:
+ """Link Teams with GitHub Teams.
+
+ This endpoint configures synchronization between your existing Datadog teams and GitHub teams by matching their names.
+ It evaluates all current Datadog teams and compares them against teams in the GitHub organization
+ connected to your Datadog account, based on Datadog Team handle and GitHub Team slug
+ (lowercased and kebab-cased).
+
+ This operation is read-only on the GitHub side, no teams will be modified or created.
+
+ Optionally, provide ``selection_state`` to limit synchronization
+ to specific teams or organizations and their subtrees, instead
+ of syncing all teams.
+
+ `A GitHub organization must be connected to your Datadog account `_ ,
+ and the GitHub App integrated with Datadog must have the ``Members Read`` permission. Matching is performed by comparing the Datadog team handle to the GitHub team slug
+ using a normalized exact match; case is ignored and spaces are removed. No modifications are made
+ to teams in GitHub. This only creates new teams in Datadog when type is set to ``provision``.
+
+ :type body: TeamSyncRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._sync_teams_endpoint.call_with_http_info(**kwargs)
+
+ def update_team(self, team_id: str, body: TeamUpdateRequest, ) -> TeamResponse:
+ """Update a team.
+
+ Update a team using the team's ``id``.
+ If the ``team_links`` relationship is present, the associated links are updated to be in the order they appear in the array, and any existing team links not present are removed.
+
+ :param team_id: None
+ :type team_id: str
+ :type body: TeamUpdateRequest
+ :rtype: TeamResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["body"] = body
+
+ return self._update_team_endpoint.call_with_http_info(**kwargs)
+
+ def update_team_link(self, team_id: str, link_id: str, body: TeamLinkCreateRequest, ) -> TeamLinkResponse:
+ """Update a team link.
+
+ Update a team link.
+
+ :param team_id: None
+ :type team_id: str
+ :param link_id: None
+ :type link_id: str
+ :type body: TeamLinkCreateRequest
+ :rtype: TeamLinkResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["link_id"] = link_id
+
+ kwargs["body"] = body
+
+ return self._update_team_link_endpoint.call_with_http_info(**kwargs)
+
+ def update_team_membership(self, team_id: str, user_id: str, body: UserTeamUpdateRequest, ) -> UserTeamResponse:
+ """Update a user's membership attributes on a team.
+
+ Update a user's membership attributes on a team.
+
+ **Note** : Each team has a setting that determines who is allowed to modify membership of the team. The ``user_access_manage`` permission generally grants access to modify membership of any team. To get the full picture, see `Team Membership documentation `_.
+
+ :param team_id: None
+ :type team_id: str
+ :param user_id: None
+ :type user_id: str
+ :type body: UserTeamUpdateRequest
+ :rtype: UserTeamResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["user_id"] = user_id
+
+ kwargs["body"] = body
+
+ return self._update_team_membership_endpoint.call_with_http_info(**kwargs)
+
+ def update_team_notification_rule(self, team_id: str, rule_id: str, body: TeamNotificationRuleRequest, ) -> TeamNotificationRuleResponse:
+ """Update team notification rule.
+
+ :param team_id: None
+ :type team_id: str
+ :param rule_id: None
+ :type rule_id: str
+ :type body: TeamNotificationRuleRequest
+ :rtype: TeamNotificationRuleResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["rule_id"] = rule_id
+
+ kwargs["body"] = body
+
+ return self._update_team_notification_rule_endpoint.call_with_http_info(**kwargs)
+
+ def update_team_permission_setting(self, team_id: str, action: str, body: TeamPermissionSettingUpdateRequest, ) -> TeamPermissionSettingResponse:
+ """Update permission setting for team.
+
+ Update a team permission setting for a given team.
+
+ :param team_id: None
+ :type team_id: str
+ :param action: None
+ :type action: str
+ :type body: TeamPermissionSettingUpdateRequest
+ :rtype: TeamPermissionSettingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["team_id"] = team_id
+
+ kwargs["action"] = action
+
+ kwargs["body"] = body
+
+ return self._update_team_permission_setting_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/test_optimization_api.py b/datadog_api_client/v2/api/test_optimization_api.py
new file mode 100644
index 0000000000..02149e7c6a
--- /dev/null
+++ b/datadog_api_client/v2/api/test_optimization_api.py
@@ -0,0 +1,341 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.test_optimization_flaky_tests_management_policies_response import TestOptimizationFlakyTestsManagementPoliciesResponse
+from datadog_api_client.v2.model.test_optimization_flaky_tests_management_policies_update_request import TestOptimizationFlakyTestsManagementPoliciesUpdateRequest
+from datadog_api_client.v2.model.test_optimization_flaky_tests_management_policies_get_request import TestOptimizationFlakyTestsManagementPoliciesGetRequest
+from datadog_api_client.v2.model.test_optimization_delete_service_settings_request import TestOptimizationDeleteServiceSettingsRequest
+from datadog_api_client.v2.model.test_optimization_service_settings_response import TestOptimizationServiceSettingsResponse
+from datadog_api_client.v2.model.test_optimization_update_service_settings_request import TestOptimizationUpdateServiceSettingsRequest
+from datadog_api_client.v2.model.test_optimization_get_service_settings_request import TestOptimizationGetServiceSettingsRequest
+from datadog_api_client.v2.model.update_flaky_tests_response import UpdateFlakyTestsResponse
+from datadog_api_client.v2.model.update_flaky_tests_request import UpdateFlakyTestsRequest
+from datadog_api_client.v2.model.flaky_tests_search_response import FlakyTestsSearchResponse
+from datadog_api_client.v2.model.flaky_tests_search_request import FlakyTestsSearchRequest
+from datadog_api_client.v2.model.flaky_test import FlakyTest
+
+
+class TestOptimizationApi:
+ """
+ Search and manage flaky tests through Test Optimization. See the `Test Optimization page `_ for more information.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._delete_test_optimization_service_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": None,
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/test-optimization/settings/service",
+ "operation_id": "delete_test_optimization_service_settings",
+ "http_method": "DELETE",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TestOptimizationDeleteServiceSettingsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["*/*"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_flaky_tests_management_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (TestOptimizationFlakyTestsManagementPoliciesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/test-optimization/settings/policies",
+ "operation_id": "get_flaky_tests_management_policies",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TestOptimizationFlakyTestsManagementPoliciesGetRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._get_test_optimization_service_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (TestOptimizationServiceSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/test-optimization/settings/service",
+ "operation_id": "get_test_optimization_service_settings",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TestOptimizationGetServiceSettingsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._search_flaky_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (FlakyTestsSearchResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/test/flaky-test-management/tests",
+ "operation_id": "search_flaky_tests",
+ "http_method": "POST",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "openapi_types": (FlakyTestsSearchRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_flaky_tests_endpoint = _Endpoint(
+ settings={
+ "response_type": (UpdateFlakyTestsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/test/flaky-test-management/tests",
+ "operation_id": "update_flaky_tests",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (UpdateFlakyTestsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_flaky_tests_management_policies_endpoint = _Endpoint(
+ settings={
+ "response_type": (TestOptimizationFlakyTestsManagementPoliciesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/test-optimization/settings/policies",
+ "operation_id": "update_flaky_tests_management_policies",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TestOptimizationFlakyTestsManagementPoliciesUpdateRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ self._update_test_optimization_service_settings_endpoint = _Endpoint(
+ settings={
+ "response_type": (TestOptimizationServiceSettingsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/ci/test-optimization/settings/service",
+ "operation_id": "update_test_optimization_service_settings",
+ "http_method": "PATCH",
+ "version": "v2",
+ },
+ params_map={
+ "body": {
+ "required": True,
+ "openapi_types": (TestOptimizationUpdateServiceSettingsRequest,),
+ "location": "body",
+ },
+ },
+ headers_map={
+ "accept": ["application/json"],
+ "content_type": ["application/json"]
+ },
+ api_client=api_client,
+ )
+
+ def delete_test_optimization_service_settings(self, body: TestOptimizationDeleteServiceSettingsRequest, ) -> None:
+ """Delete Test Optimization service settings.
+
+ Delete Test Optimization settings for a specific service identified by repository, service name, and environment.
+
+ :type body: TestOptimizationDeleteServiceSettingsRequest
+ :rtype: None
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._delete_test_optimization_service_settings_endpoint.call_with_http_info(**kwargs)
+
+ def get_flaky_tests_management_policies(self, body: TestOptimizationFlakyTestsManagementPoliciesGetRequest, ) -> TestOptimizationFlakyTestsManagementPoliciesResponse:
+ """Get Flaky Tests Management policies.
+
+ Retrieve Flaky Tests Management repository-level policies for the given repository.
+
+ :type body: TestOptimizationFlakyTestsManagementPoliciesGetRequest
+ :rtype: TestOptimizationFlakyTestsManagementPoliciesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_flaky_tests_management_policies_endpoint.call_with_http_info(**kwargs)
+
+ def get_test_optimization_service_settings(self, body: TestOptimizationGetServiceSettingsRequest, ) -> TestOptimizationServiceSettingsResponse:
+ """Get Test Optimization service settings.
+
+ Retrieve Test Optimization settings for a specific service identified by repository, service name, and environment.
+
+ :type body: TestOptimizationGetServiceSettingsRequest
+ :rtype: TestOptimizationServiceSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._get_test_optimization_service_settings_endpoint.call_with_http_info(**kwargs)
+
+ def search_flaky_tests(self, *, body: Union[FlakyTestsSearchRequest, UnsetType]=unset, ) -> FlakyTestsSearchResponse:
+ """Search flaky tests.
+
+ List endpoint returning flaky tests from Flaky Test Management. Results are paginated.
+
+ The response includes comprehensive test information including:
+
+ * Test identification and metadata (module, suite, name)
+ * Flaky state and categorization
+ * First and last flake occurrences (timestamp, branch, commit SHA)
+ * Test execution statistics from the last 7 days (failure rate)
+ * Pipeline impact metrics (failed pipelines count, total lost time)
+ * Complete status change history (optional, ordered from most recent to oldest)
+
+ Set ``include_history`` to ``true`` in the request to receive the status change history for each test.
+ History is disabled by default for better performance.
+
+ Results support filtering by various facets including service, environment, repository, branch, and test state.
+
+ :type body: FlakyTestsSearchRequest, optional
+ :rtype: FlakyTestsSearchResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ return self._search_flaky_tests_endpoint.call_with_http_info(**kwargs)
+
+ def search_flaky_tests_with_pagination(self, *, body: Union[FlakyTestsSearchRequest, UnsetType]=unset, ) -> collections.abc.Iterable[FlakyTest]:
+ """Search flaky tests.
+
+ Provide a paginated version of :meth:`search_flaky_tests`, returning all items.
+
+ :type body: FlakyTestsSearchRequest, optional
+
+ :return: A generator of paginated results.
+ :rtype: collections.abc.Iterable[FlakyTest]
+ """
+ kwargs: Dict[str, Any] = {}
+ if body is not unset:
+ kwargs["body"] = body
+
+ local_page_size = get_attribute_from_path(kwargs, "body.data.attributes.page.limit", 10)
+ endpoint = self._search_flaky_tests_endpoint
+ set_attribute_from_path(kwargs, "body.data.attributes.page.limit", local_page_size, endpoint.params_map)
+ pagination = {
+ "limit_value": local_page_size,
+ "results_path": "data",
+ "cursor_param": "body.data.attributes.page.cursor",
+ "cursor_path": "meta.pagination.next_page",
+ "endpoint": endpoint,
+ "kwargs": kwargs,
+ }
+ return endpoint.call_with_http_info_paginated(pagination)
+
+ def update_flaky_tests(self, body: UpdateFlakyTestsRequest, ) -> UpdateFlakyTestsResponse:
+ """Update flaky test states.
+
+ Update the state of multiple flaky tests in Flaky Test Management.
+
+ :type body: UpdateFlakyTestsRequest
+ :rtype: UpdateFlakyTestsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_flaky_tests_endpoint.call_with_http_info(**kwargs)
+
+ def update_flaky_tests_management_policies(self, body: TestOptimizationFlakyTestsManagementPoliciesUpdateRequest, ) -> TestOptimizationFlakyTestsManagementPoliciesResponse:
+ """Update Flaky Tests Management policies.
+
+ Partially update Flaky Tests Management repository-level policies for the given repository.
+ Only provided policy blocks are updated; omitted blocks are left unchanged.
+
+ :type body: TestOptimizationFlakyTestsManagementPoliciesUpdateRequest
+ :rtype: TestOptimizationFlakyTestsManagementPoliciesResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_flaky_tests_management_policies_endpoint.call_with_http_info(**kwargs)
+
+ def update_test_optimization_service_settings(self, body: TestOptimizationUpdateServiceSettingsRequest, ) -> TestOptimizationServiceSettingsResponse:
+ """Update Test Optimization service settings.
+
+ Partially update Test Optimization settings for a specific service identified by repository, service name, and environment.
+ Only provided fields are updated; setting a field to ``null`` is a no-op.
+ To reset a setting to inherit from the repository level, use the corresponding ``_inherit`` field.
+ The ``pr_comments_enabled`` field is ignored as it cannot be overridden at the service level.
+
+ :type body: TestOptimizationUpdateServiceSettingsRequest
+ :rtype: TestOptimizationServiceSettingsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ kwargs["body"] = body
+
+ return self._update_test_optimization_service_settings_endpoint.call_with_http_info(**kwargs)
diff --git a/datadog_api_client/v2/api/usage_metering_api.py b/datadog_api_client/v2/api/usage_metering_api.py
new file mode 100644
index 0000000000..07baa57f8e
--- /dev/null
+++ b/datadog_api_client/v2/api/usage_metering_api.py
@@ -0,0 +1,909 @@
+# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+# This product includes software developed at Datadog (https://www.datadoghq.com/).
+# Copyright 2019-Present Datadog, Inc.
+from __future__ import annotations
+
+import collections
+from typing import Any, Dict, List, Union
+import warnings
+
+from datadog_api_client.api_client import ApiClient, Endpoint as _Endpoint
+from datadog_api_client.configuration import Configuration
+from datadog_api_client.model_utils import (
+ date,
+ datetime,
+ set_attribute_from_path,
+ get_attribute_from_path,
+ file_type,
+ none_type,
+ UnsetType,
+ unset,
+ UUID,
+)
+from datadog_api_client.v2.model.active_billing_dimensions_response import ActiveBillingDimensionsResponse
+from datadog_api_client.v2.model.monthly_cost_attribution_response import MonthlyCostAttributionResponse
+from datadog_api_client.v2.model.sort_direction import SortDirection
+from datadog_api_client.v2.model.usage_application_security_monitoring_response import UsageApplicationSecurityMonitoringResponse
+from datadog_api_client.v2.model.billing_dimensions_mapping_response import BillingDimensionsMappingResponse
+from datadog_api_client.v2.model.cost_by_org_response import CostByOrgResponse
+from datadog_api_client.v2.model.cost_aggregation_type import CostAggregationType
+from datadog_api_client.v2.model.hourly_usage_response import HourlyUsageResponse
+from datadog_api_client.v2.model.usage_lambda_traced_invocations_response import UsageLambdaTracedInvocationsResponse
+from datadog_api_client.v2.model.usage_observability_pipelines_response import UsageObservabilityPipelinesResponse
+from datadog_api_client.v2.model.projected_cost_response import ProjectedCostResponse
+from datadog_api_client.v2.model.usage_summary_available_fields_response import UsageSummaryAvailableFieldsResponse
+from datadog_api_client.v2.model.usage_attribution_types_response import UsageAttributionTypesResponse
+
+
+class UsageMeteringApi:
+ """
+ The usage metering API allows you to get hourly, daily, and
+ monthly usage across multiple facets of Datadog.
+ This API is available to all Pro and Enterprise customers.
+
+ **Note** : Usage data is delayed by up to 72 hours from when it was incurred.
+ It is retained for 15 months.
+
+ You can retrieve up to 24 hours of hourly usage data for multiple organizations,
+ and up to two months of hourly usage data for a single organization in one request.
+ Learn more on the `usage details documentation `_.
+ """
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient(Configuration())
+ self.api_client = api_client
+
+ self._get_active_billing_dimensions_endpoint = _Endpoint(
+ settings={
+ "response_type": (ActiveBillingDimensionsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost_by_tag/active_billing_dimensions",
+ "operation_id": "get_active_billing_dimensions",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_billing_dimension_mapping_endpoint = _Endpoint(
+ settings={
+ "response_type": (BillingDimensionsMappingResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/billing_dimension_mapping",
+ "operation_id": "get_billing_dimension_mapping",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_month": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[month]",
+ "location": "query",
+ },
+ "filter_view": {
+ "openapi_types": (str,),
+ "attribute": "filter[view]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_cost_by_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostByOrgResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/cost_by_org",
+ "operation_id": "get_cost_by_org",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start_month": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_month",
+ "location": "query",
+ },
+ "end_month": {
+ "openapi_types": (datetime,),
+ "attribute": "end_month",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_estimated_cost_by_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostByOrgResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/estimated_cost",
+ "operation_id": "get_estimated_cost_by_org",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "view": {
+ "openapi_types": (str,),
+ "attribute": "view",
+ "location": "query",
+ },
+ "start_month": {
+ "openapi_types": (datetime,),
+ "attribute": "start_month",
+ "location": "query",
+ },
+ "end_month": {
+ "openapi_types": (datetime,),
+ "attribute": "end_month",
+ "location": "query",
+ },
+ "start_date": {
+ "openapi_types": (datetime,),
+ "attribute": "start_date",
+ "location": "query",
+ },
+ "end_date": {
+ "openapi_types": (datetime,),
+ "attribute": "end_date",
+ "location": "query",
+ },
+ "cost_aggregation": {
+ "openapi_types": (CostAggregationType,),
+ "attribute": "cost_aggregation",
+ "location": "query",
+ },
+ "include_connected_accounts": {
+ "openapi_types": (bool,),
+ "attribute": "include_connected_accounts",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_historical_cost_by_org_endpoint = _Endpoint(
+ settings={
+ "response_type": (CostByOrgResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/historical_cost",
+ "operation_id": "get_historical_cost_by_org",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start_month": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_month",
+ "location": "query",
+ },
+ "view": {
+ "openapi_types": (str,),
+ "attribute": "view",
+ "location": "query",
+ },
+ "end_month": {
+ "openapi_types": (datetime,),
+ "attribute": "end_month",
+ "location": "query",
+ },
+ "include_connected_accounts": {
+ "openapi_types": (bool,),
+ "attribute": "include_connected_accounts",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_hourly_usage_endpoint = _Endpoint(
+ settings={
+ "response_type": (HourlyUsageResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/hourly_usage",
+ "operation_id": "get_hourly_usage",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "filter_timestamp_start": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "filter[timestamp][start]",
+ "location": "query",
+ },
+ "filter_timestamp_end": {
+ "openapi_types": (datetime,),
+ "attribute": "filter[timestamp][end]",
+ "location": "query",
+ },
+ "filter_product_families": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "filter[product_families]",
+ "location": "query",
+ },
+ "filter_include_descendants": {
+ "openapi_types": (bool,),
+ "attribute": "filter[include_descendants]",
+ "location": "query",
+ },
+ "filter_include_connected_accounts": {
+ "openapi_types": (bool,),
+ "attribute": "filter[include_connected_accounts]",
+ "location": "query",
+ },
+ "filter_include_breakdown": {
+ "openapi_types": (bool,),
+ "attribute": "filter[include_breakdown]",
+ "location": "query",
+ },
+ "filter_versions": {
+ "openapi_types": (str,),
+ "attribute": "filter[versions]",
+ "location": "query",
+ },
+ "page_limit": {
+ "validation": {
+ "inclusive_maximum": 500,
+ "inclusive_minimum": 1,
+ },
+ "openapi_types": (int,),
+ "attribute": "page[limit]",
+ "location": "query",
+ },
+ "page_next_record_id": {
+ "openapi_types": (str,),
+ "attribute": "page[next_record_id]",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_monthly_cost_attribution_endpoint = _Endpoint(
+ settings={
+ "response_type": (MonthlyCostAttributionResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/cost_by_tag/monthly_cost_attribution",
+ "operation_id": "get_monthly_cost_attribution",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start_month": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_month",
+ "location": "query",
+ },
+ "end_month": {
+ "openapi_types": (datetime,),
+ "attribute": "end_month",
+ "location": "query",
+ },
+ "fields": {
+ "required": True,
+ "openapi_types": (str,),
+ "attribute": "fields",
+ "location": "query",
+ },
+ "sort_direction": {
+ "openapi_types": (SortDirection,),
+ "attribute": "sort_direction",
+ "location": "query",
+ },
+ "sort_name": {
+ "openapi_types": (str,),
+ "attribute": "sort_name",
+ "location": "query",
+ },
+ "tag_breakdown_keys": {
+ "openapi_types": (str,),
+ "attribute": "tag_breakdown_keys",
+ "location": "query",
+ },
+ "next_record_id": {
+ "openapi_types": (str,),
+ "attribute": "next_record_id",
+ "location": "query",
+ },
+ "include_descendants": {
+ "openapi_types": (bool,),
+ "attribute": "include_descendants",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_projected_cost_endpoint = _Endpoint(
+ settings={
+ "response_type": (ProjectedCostResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/projected_cost",
+ "operation_id": "get_projected_cost",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "view": {
+ "openapi_types": (str,),
+ "attribute": "view",
+ "location": "query",
+ },
+ "include_connected_accounts": {
+ "openapi_types": (bool,),
+ "attribute": "include_connected_accounts",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_application_security_monitoring_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageApplicationSecurityMonitoringResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/application_security",
+ "operation_id": "get_usage_application_security_monitoring",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_attribution_types_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageAttributionTypesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/usage-attribution-types",
+ "operation_id": "get_usage_attribution_types",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_lambda_traced_invocations_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageLambdaTracedInvocationsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/lambda_traced_invocations",
+ "operation_id": "get_usage_lambda_traced_invocations",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_observability_pipelines_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageObservabilityPipelinesResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/observability_pipelines",
+ "operation_id": "get_usage_observability_pipelines",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ "start_hr": {
+ "required": True,
+ "openapi_types": (datetime,),
+ "attribute": "start_hr",
+ "location": "query",
+ },
+ "end_hr": {
+ "openapi_types": (datetime,),
+ "attribute": "end_hr",
+ "location": "query",
+ },
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ self._get_usage_summary_available_fields_endpoint = _Endpoint(
+ settings={
+ "response_type": (UsageSummaryAvailableFieldsResponse,),
+ "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"],
+ "endpoint_path": "/api/v2/usage/summary/available_fields",
+ "operation_id": "get_usage_summary_available_fields",
+ "http_method": "GET",
+ "version": "v2",
+ },
+ params_map={
+ },
+ headers_map={
+ "accept": ["application/json;datetime-format=rfc3339"],
+ },
+ api_client=api_client,
+ )
+
+ def get_active_billing_dimensions(self, ) -> ActiveBillingDimensionsResponse:
+ """Get active billing dimensions for cost attribution.
+
+ Get active billing dimensions for cost attribution. Cost data for a given month becomes available no later than the 19th of the following month.
+
+ :rtype: ActiveBillingDimensionsResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ return self._get_active_billing_dimensions_endpoint.call_with_http_info(**kwargs)
+
+ def get_billing_dimension_mapping(self, *, filter_month: Union[datetime, UnsetType]=unset, filter_view: Union[str, UnsetType]=unset, ) -> BillingDimensionsMappingResponse:
+ """Get billing dimension mapping for usage endpoints.
+
+ Get a mapping of billing dimensions to the corresponding keys for the supported usage metering public API endpoints.
+ Mapping data is updated on a monthly cadence.
+
+ This endpoint is only accessible to `parent-level organizations `_.
+
+ :param filter_month: Datetime in ISO-8601 format, UTC, and for mappings beginning this month. Defaults to the current month.
+ :type filter_month: datetime, optional
+ :param filter_view: String to specify whether to retrieve active billing dimension mappings for the contract or for all available mappings. Allowed views have the string ``active`` or ``all``. Defaults to ``active``.
+ :type filter_view: str, optional
+ :rtype: BillingDimensionsMappingResponse
+ """
+ kwargs: Dict[str, Any] = {}
+ if filter_month is not unset:
+ kwargs["filter_month"] = filter_month
+
+ if filter_view is not unset:
+ kwargs["filter_view"] = filter_view
+
+ return self._get_billing_dimension_mapping_endpoint.call_with_http_info(**kwargs)
+
+ def get_cost_by_org(self, start_month: datetime, *, end_month: Union[datetime, UnsetType]=unset, ) -> CostByOrgResponse:
+ """Get cost across multi-org account. **Deprecated**.
+
+ Get cost across multi-org account.
+ Cost by org data for a given month becomes available no later than the 16th of the following month.
+ **Note:** This endpoint has been deprecated. Please use the new endpoint
+ ` ``/historical_cost`` `_
+ instead.
+
+ This endpoint is only accessible for `parent-level organizations