text: # coding: utf-8
  
  # Unless explicitly stated otherwise all files in this repository 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 re  # noqa: F401
  import sys  # noqa: F401
  
  from datadog_api_client.v1.api_client import ApiClient, Endpoint
  from datadog_api_client.v1.model_utils import (  # noqa: F401
      check_allowed_values,
      check_validations,
      date,
      datetime,
      file_type,
      none_type,
      validate_and_convert_types
  )
  from datadog_api_client.v1.model.api_error_response import APIErrorResponse
  from datadog_api_client.v1.model.azure_account import AzureAccount
  from datadog_api_client.v1.model.azure_account_list_response import AzureAccountListResponse
  
  
  class AzureIntegrationApi(object):
      """NOTE: This class is auto generated by OpenAPI Generator
      Ref: https://openapi-generator.tech
  
      Do not edit the class manually.
      """
  
      def __init__(self, api_client=None):
          if api_client is None:
              api_client = ApiClient()
          self.api_client = api_client
  
          def __create_azure_integration(
              self,
              body,
              **kwargs
          ):
              """Create an Azure integration  # noqa: E501
  
              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.  # noqa: E501
              This method makes a synchronous HTTP request by default. To make an
              asynchronous HTTP request, please pass async_req=True
  
              >>> thread = api.create_azure_integration(body, async_req=True)
              >>> result = thread.get()
  
              Args:
                  body (AzureAccount): Create a Datadog-Azure integration for your Datadog account request body.
  
              Keyword Args:
                  _return_http_data_only (bool): response data without head status
                      code and headers. Default is True.
                  _preload_content (bool): if False, the urllib3.HTTPResponse object
                      will be returned without reading/decoding response data.
                      Default is True.
                  _request_timeout (float/tuple): 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.
                      Default is None.
                  _check_input_type (bool): specifies if type checking
                      should be done one the data sent to the server.
                      Default is True.
                  _check_return_type (bool): specifies if type checking
                      should be done one the data received from the server.
                      Default is True.
                  _host_index (int/None): specifies the index of the server
                      that we want to use.
                      Default is read from the configuration.
                  async_req (bool): execute request asynchronously
  
              Returns:
                  {str: (bool, date, datetime, dict, float, int, list, str, none_type)}
                      If the method is called asynchronously, returns the request
                      thread.
              """
              kwargs['async_req'] = kwargs.get(
                  'async_req', False
              )
              kwargs['_return_http_data_only'] = kwargs.get(
                  '_return_http_data_only', True
              )
              kwargs['_preload_content'] = kwargs.get(
                  '_preload_content', True
              )
              kwargs['_request_timeout'] = kwargs.get(
                  '_request_timeout', None
              )
              kwargs['_check_input_type'] = kwargs.get(
                  '_check_input_type', True
              )
              kwargs['_check_return_type'] = kwargs.get(
                  '_check_return_type', True
              )
              kwargs['_host_index'] = kwargs.get('_host_index')
              kwargs['body'] = \
                  body
              return self.call_with_http_info(**kwargs)
  
          self.create_azure_integration = Endpoint(
              settings={
                  'response_type': ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},),
                  'auth': [
                      'apiKeyAuth',
                      'appKeyAuth'
                  ],
                  'endpoint_path': '/api/v1/integration/azure',
                  'operation_id': 'create_azure_integration',
                  'http_method': 'POST',
                  'servers': None,
              },
              params_map={
                  'all': [
                      'body',
                  ],
                  'required': [
                      'body',
                  ],
                  'nullable': [
                  ],
                  'enum': [
                  ],
                  'validation': [
                  ]
              },
              root_map={
                  'validations': {
                  },
                  'allowed_values': {
                  },
                  'openapi_types': {
                      'body':
                          (AzureAccount,),
                  },
                  'attribute_map': {
                  },
                  'location_map': {
                      'body': 'body',
                  },
                  'collection_format_map': {
                  }
              },
              headers_map={
                  'accept': [
                      'application/json'
                  ],
                  'content_type': [
                      'application/json'
                  ]
              },
              api_client=api_client,
              callable=__create_azure_integration
          )
  
          def __delete_azure_integration(
              self,
              body,
              **kwargs
          ):
              """Delete an Azure integration  # noqa: E501
  
              Delete a given Datadog-Azure integration from your Datadog account.  # noqa: E501
              This method makes a synchronous HTTP request by default. To make an
              asynchronous HTTP request, please pass async_req=True
  
              >>> thread = api.delete_azure_integration(body, async_req=True)
              >>> result = thread.get()
  
              Args:
                  body (AzureAccount): Delete a given Datadog-Azure integration request body.
  
              Keyword Args:
                  _return_http_data_only (bool): response data without head status
                      code and headers. Default is True.
                  _preload_content (bool): if False, the urllib3.HTTPResponse object
                      will be returned without reading/decoding response data.
                      Default is True.
                  _request_timeout (float/tuple): 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.
                      Default is None.
                  _check_input_type (bool): specifies if type checking
                      should be done one the data sent to the server.
                      Default is True.
                  _check_return_type (bool): specifies if type checking
                      should be done one the data received from the server.
                      Default is True.
                  _host_index (int/None): specifies the index of the server
                      that we want to use.
                      Default is read from the configuration.
                  async_req (bool): execute request asynchronously
  
              Returns:
                  {str: (bool, date, datetime, dict, float, int, list, str, none_type)}
                      If the method is called asynchronously, returns the request
                      thread.
              """
              kwargs['async_req'] = kwargs.get(
                  'async_req', False
              )
              kwargs['_return_http_data_only'] = kwargs.get(
                  '_return_http_data_only', True
              )
              kwargs['_preload_content'] = kwargs.get(
                  '_preload_content', True
              )
              kwargs['_request_timeout'] = kwargs.get(
                  '_request_timeout', None
              )
              kwargs['_check_input_type'] = kwargs.get(
                  '_check_input_type', True
              )
              kwargs['_check_return_type'] = kwargs.get(
                  '_check_return_type', True
              )
              kwargs['_host_index'] = kwargs.get('_host_index')
              kwargs['body'] = \
                  body
              return self.call_with_http_info(**kwargs)
  
          self.delete_azure_integration = Endpoint(
              settings={
                  'response_type': ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},),
                  'auth': [
                      'apiKeyAuth',
                      'appKeyAuth'
                  ],
                  'endpoint_path': '/api/v1/integration/azure',
                  'operation_id': 'delete_azure_integration',
                  'http_method': 'DELETE',
                  'servers': None,
              },
              params_map={
                  'all': [
                      'body',
                  ],
                  'required': [
                      'body',
                  ],
                  'nullable': [
                  ],
                  'enum': [
                  ],
                  'validation': [
                  ]
              },
              root_map={
                  'validations': {
                  },
                  'allowed_values': {
                  },
                  'openapi_types': {
                      'body':
                          (AzureAccount,),
                  },
                  'attribute_map': {
                  },
                  'location_map': {
                      'body': 'body',
                  },
                  'collection_format_map': {
                  }
              },
              headers_map={
                  'accept': [
                      'application/json'
                  ],
                  'content_type': [
                      'application/json'
                  ]
              },
              api_client=api_client,
              callable=__delete_azure_integration
          )
  
          def __list_azure_integration(
              self,
              **kwargs
          ):
              """List all Azure integrations  # noqa: E501
  
              List all Datadog-Azure integrations configured in your Datadog account.  # noqa: E501
              This method makes a synchronous HTTP request by default. To make an
              asynchronous HTTP request, please pass async_req=True
  
              >>> thread = api.list_azure_integration(async_req=True)
              >>> result = thread.get()
  
  
              Keyword Args:
                  _return_http_data_only (bool): response data without head status
                      code and headers. Default is True.
                  _preload_content (bool): if False, the urllib3.HTTPResponse object
                      will be returned without reading/decoding response data.
                      Default is True.
                  _request_timeout (float/tuple): 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.
                      Default is None.
                  _check_input_type (bool): specifies if type checking
                      should be done one the data sent to the server.
                      Default is True.
                  _check_return_type (bool): specifies if type checking
                      should be done one the data received from the server.
                      Default is True.
                  _host_index (int/None): specifies the index of the server
                      that we want to use.
                      Default is read from the configuration.
                  async_req (bool): execute request asynchronously
  
              Returns:
                  AzureAccountListResponse
                      If the method is called asynchronously, returns the request
                      thread.
              """
              kwargs['async_req'] = kwargs.get(
                  'async_req', False
              )
              kwargs['_return_http_data_only'] = kwargs.get(
                  '_return_http_data_only', True
              )
              kwargs['_preload_content'] = kwargs.get(
                  '_preload_content', True
              )
              kwargs['_request_timeout'] = kwargs.get(
                  '_request_timeout', None
              )
              kwargs['_check_input_type'] = kwargs.get(
                  '_check_input_type', True
              )
              kwargs['_check_return_type'] = kwargs.get(
                  '_check_return_type', True
              )
              kwargs['_host_index'] = kwargs.get('_host_index')
              return self.call_with_http_info(**kwargs)
  
          self.list_azure_integration = Endpoint(
              settings={
                  'response_type': (AzureAccountListResponse,),
                  'auth': [
                      'apiKeyAuth',
                      'appKeyAuth'
                  ],
                  'endpoint_path': '/api/v1/integration/azure',
                  'operation_id': 'list_azure_integration',
                  'http_method': 'GET',
                  'servers': None,
              },
              params_map={
                  'all': [
                  ],
                  'required': [],
                  'nullable': [
                  ],
                  'enum': [
                  ],
                  'validation': [
                  ]
              },
              root_map={
                  'validations': {
                  },
                  'allowed_values': {
                  },
                  'openapi_types': {
                  },
                  'attribute_map': {
                  },
                  'location_map': {
                  },
                  'collection_format_map': {
                  }
              },
              headers_map={
                  'accept': [
                      'application/json'
                  ],
                  'content_type': [],
              },
              api_client=api_client,
              callable=__list_azure_integration
          )
  
          def __update_azure_host_filters(
              self,
              body,
              **kwargs
          ):
              """Update Azure integration host filters  # noqa: E501
  
              Update the defined list of host filters for a given Datadog-Azure integration.  # noqa: E501
              This method makes a synchronous HTTP request by default. To make an
              asynchronous HTTP request, please pass async_req=True
  
              >>> thread = api.update_azure_host_filters(body, async_req=True)
              >>> result = thread.get()
  
              Args:
                  body (AzureAccount): Update a Datadog-Azure integration&#39;s host filters request body.
  
              Keyword Args:
                  _return_http_data_only (bool): response data without head status
                      code and headers. Default is True.
                  _preload_content (bool): if False, the urllib3.HTTPResponse object
                      will be returned without reading/decoding response data.
                      Default is True.
                  _request_timeout (float/tuple): 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.
                      Default is None.
                  _check_input_type (bool): specifies if type checking
                      should be done one the data sent to the server.
                      Default is True.
                  _check_return_type (bool): specifies if type checking
                      should be done one the data received from the server.
                      Default is True.
                  _host_index (int/None): specifies the index of the server
                      that we want to use.
                      Default is read from the configuration.
                  async_req (bool): execute request asynchronously
  
              Returns:
                  {str: (bool, date, datetime, dict, float, int, list, str, none_type)}
                      If the method is called asynchronously, returns the request
                      thread.
              """
              kwargs['async_req'] = kwargs.get(
                  'async_req', False
              )
              kwargs['_return_http_data_only'] = kwargs.get(
                  '_return_http_data_only', True
              )
              kwargs['_preload_content'] = kwargs.get(
                  '_preload_content', True
              )
              kwargs['_request_timeout'] = kwargs.get(
                  '_request_timeout', None
              )
              kwargs['_check_input_type'] = kwargs.get(
                  '_check_input_type', True
              )
              kwargs['_check_return_type'] = kwargs.get(
                  '_check_return_type', True
              )
              kwargs['_host_index'] = kwargs.get('_host_index')
              kwargs['body'] = \
                  body
              return self.call_with_http_info(**kwargs)
  
          self.update_azure_host_filters = Endpoint(
              settings={
                  'response_type': ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},),
                  'auth': [
                      'apiKeyAuth',
                      'appKeyAuth'
                  ],
                  'endpoint_path': '/api/v1/integration/azure/host_filters',
                  'operation_id': 'update_azure_host_filters',
                  'http_method': 'POST',
                  'servers': None,
              },
              params_map={
                  'all': [
                      'body',
                  ],
                  'required': [
                      'body',
                  ],
                  'nullable': [
                  ],
                  'enum': [
                  ],
                  'validation': [
                  ]
              },
              root_map={
                  'validations': {
                  },
                  'allowed_values': {
                  },
                  'openapi_types': {
                      'body':
                          (AzureAccount,),
                  },
                  'attribute_map': {
                  },
                  'location_map': {
                      'body': 'body',
                  },
                  'collection_format_map': {
                  }
              },
              headers_map={
                  'accept': [
                      'application/json'
                  ],
                  'content_type': [
                      'application/json'
                  ]
              },
              api_client=api_client,
              callable=__update_azure_host_filters
          )
  
          def __update_azure_integration(
              self,
              body,
              **kwargs
          ):
              """Update an Azure integration  # noqa: E501
  
              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.  # noqa: E501
              This method makes a synchronous HTTP request by default. To make an
              asynchronous HTTP request, please pass async_req=True
  
              >>> thread = api.update_azure_integration(body, async_req=True)
              >>> result = thread.get()
  
              Args:
                  body (AzureAccount): Update a Datadog-Azure integration request body.
  
              Keyword Args:
                  _return_http_data_only (bool): response data without head status
                      code and headers. Default is True.
                  _preload_content (bool): if False, the urllib3.HTTPResponse object
                      will be returned without reading/decoding response data.
                      Default is True.
                  _request_timeout (float/tuple): 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.
                      Default is None.
                  _check_input_type (bool): specifies if type checking
                      should be done one the data sent to the server.
                      Default is True.
                  _check_return_type (bool): specifies if type checking
                      should be done one the data received from the server.
                      Default is True.
                  _host_index (int/None): specifies the index of the server
                      that we want to use.
                      Default is read from the configuration.
                  async_req (bool): execute request asynchronously
  
              Returns:
                  {str: (bool, date, datetime, dict, float, int, list, str, none_type)}
                      If the method is called asynchronously, returns the request
                      thread.
              """
              kwargs['async_req'] = kwargs.get(
                  'async_req', False
              )
              kwargs['_return_http_data_only'] = kwargs.get(
                  '_return_http_data_only', True
              )
              kwargs['_preload_content'] = kwargs.get(
                  '_preload_content', True
              )
              kwargs['_request_timeout'] = kwargs.get(
                  '_request_timeout', None
              )
              kwargs['_check_input_type'] = kwargs.get(
                  '_check_input_type', True
              )
              kwargs['_check_return_type'] = kwargs.get(
                  '_check_return_type', True
              )
              kwargs['_host_index'] = kwargs.get('_host_index')
              kwargs['body'] = \
                  body
              return self.call_with_http_info(**kwargs)
  
          self.update_azure_integration = Endpoint(
              settings={
                  'response_type': ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},),
                  'auth': [
                      'apiKeyAuth',
                      'appKeyAuth'
                  ],
                  'endpoint_path': '/api/v1/integration/azure',
                  'operation_id': 'update_azure_integration',
                  'http_method': 'PUT',
                  'servers': None,
              },
              params_map={
                  'all': [
                      'body',
                  ],
                  'required': [
                      'body',
                  ],
                  'nullable': [
                  ],
                  'enum': [
                  ],
                  'validation': [
                  ]
              },
              root_map={
                  'validations': {
                  },
                  'allowed_values': {
                  },
                  'openapi_types': {
                      'body':
                          (AzureAccount,),
                  },
                  'attribute_map': {
                  },
                  'location_map': {
                      'body': 'body',
                  },
                  'collection_format_map': {
                  }
              },
              headers_map={
                  'accept': [
                      'application/json'
                  ],
                  'content_type': [
                      'application/json'
                  ]
              },
              api_client=api_client,
              callable=__update_azure_integration
          )
  