text: # coding: utf-8
  
  """
      Wavefront REST API Documentation
  
      <p>The Wavefront REST API enables you to interact with Wavefront servers using standard REST API tools. You can use the REST API to automate commonly executed operations such as automatically tagging sources.</p><p>When you make REST API calls outside the Wavefront REST API documentation you must add the header \"Authorization: Bearer &lt;&lt;API-TOKEN&gt;&gt;\" to your HTTP requests.</p>  # noqa: E501
  
      OpenAPI spec version: v2
      Contact: chitimba@wavefront.com
      Generated by: https://github.com/swagger-api/swagger-codegen.git
  """
  
  
  from __future__ import absolute_import
  
  import re  # noqa: F401
  
  # python 2 and python 3 compatibility library
  import six
  
  from wavefront_api_client.api_client import ApiClient
  
  
  class MessageApi(object):
      """NOTE: This class is auto generated by the swagger code generator program.
  
      Do not edit the class manually.
      Ref: https://github.com/swagger-api/swagger-codegen
      """
  
      def __init__(self, api_client=None):
          if api_client is None:
              api_client = ApiClient()
          self.api_client = api_client
  
      def user_get_messages(self, **kwargs):  # noqa: E501
          """Gets messages applicable to the current user, i.e. within time range and distribution scope  # noqa: E501
  
            # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.user_get_messages(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param int offset:
          :param int limit:
          :param bool unread_only:
          :return: ResponseContainerPagedMessage
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.user_get_messages_with_http_info(**kwargs)  # noqa: E501
          else:
              (data) = self.user_get_messages_with_http_info(**kwargs)  # noqa: E501
              return data
  
      def user_get_messages_with_http_info(self, **kwargs):  # noqa: E501
          """Gets messages applicable to the current user, i.e. within time range and distribution scope  # noqa: E501
  
            # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.user_get_messages_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param int offset:
          :param int limit:
          :param bool unread_only:
          :return: ResponseContainerPagedMessage
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          all_params = ['offset', 'limit', 'unread_only']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          params = locals()
          for key, val in six.iteritems(params['kwargs']):
              if key not in all_params:
                  raise TypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method user_get_messages" % key
                  )
              params[key] = val
          del params['kwargs']
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'offset' in params:
              query_params.append(('offset', params['offset']))  # noqa: E501
          if 'limit' in params:
              query_params.append(('limit', params['limit']))  # noqa: E501
          if 'unread_only' in params:
              query_params.append(('unreadOnly', params['unread_only']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['api_key']  # noqa: E501
  
          return self.api_client.call_api(
              '/api/v2/message', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='ResponseContainerPagedMessage',  # noqa: E501
              auth_settings=auth_settings,
              async_req=params.get('async_req'),
              _return_http_data_only=params.get('_return_http_data_only'),
              _preload_content=params.get('_preload_content', True),
              _request_timeout=params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def user_read_message(self, id, **kwargs):  # noqa: E501
          """Mark a specific message as read  # noqa: E501
  
            # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.user_read_message(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str id: (required)
          :return: ResponseContainerMessage
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.user_read_message_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.user_read_message_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def user_read_message_with_http_info(self, id, **kwargs):  # noqa: E501
          """Mark a specific message as read  # noqa: E501
  
            # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.user_read_message_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str id: (required)
          :return: ResponseContainerMessage
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          params = locals()
          for key, val in six.iteritems(params['kwargs']):
              if key not in all_params:
                  raise TypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method user_read_message" % key
                  )
              params[key] = val
          del params['kwargs']
          # verify the required parameter 'id' is set
          if self.api_client.client_side_validation and ('id' not in params or
                                                         params['id'] is None):  # noqa: E501
              raise ValueError("Missing the required parameter `id` when calling `user_read_message`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in params:
              path_params['id'] = params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['api_key']  # noqa: E501
  
          return self.api_client.call_api(
              '/api/v2/message/{id}/read', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='ResponseContainerMessage',  # noqa: E501
              auth_settings=auth_settings,
              async_req=params.get('async_req'),
              _return_http_data_only=params.get('_return_http_data_only'),
              _preload_content=params.get('_preload_content', True),
              _request_timeout=params.get('_request_timeout'),
              collection_formats=collection_formats)
  