<reponame>bombbomb/bombbomb-python-openapi
# coding: utf-8

"""
    BombBomb

    We make it easy to build relationships using simple videos.  # noqa: E501

    OpenAPI spec version: 2.0.831
    
    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 bombbomb.api_client import ApiClient


class EmailsApi(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 create_printing_press_email(self, template_id, content, **kwargs):  # noqa: E501
        """Create an Email with Printing Press  # noqa: E501

        Prints an email using the template id and content to the users account.If a video id is included, it will replace any video placeholders with that video.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.create_printing_press_email(template_id, content, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The template id to be printed. (required)
        :param str content: The content of the email. (required)
        :param str email_id: The email id to be printed to.
        :param str video_id: A video to replace video place holders with.
        :param str subject_line: The subject line to be printed.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.create_printing_press_email_with_http_info(template_id, content, **kwargs)  # noqa: E501
        else:
            (data) = self.create_printing_press_email_with_http_info(template_id, content, **kwargs)  # noqa: E501
            return data

    def create_printing_press_email_with_http_info(self, template_id, content, **kwargs):  # noqa: E501
        """Create an Email with Printing Press  # noqa: E501

        Prints an email using the template id and content to the users account.If a video id is included, it will replace any video placeholders with that video.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.create_printing_press_email_with_http_info(template_id, content, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The template id to be printed. (required)
        :param str content: The content of the email. (required)
        :param str email_id: The email id to be printed to.
        :param str video_id: A video to replace video place holders with.
        :param str subject_line: The subject line to be printed.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['template_id', 'content', 'email_id', 'video_id', 'subject_line']  # noqa: E501
        all_params.append('async')
        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 create_printing_press_email" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'template_id' is set
        if ('template_id' not in params or
                params['template_id'] is None):
            raise ValueError("Missing the required parameter `template_id` when calling `create_printing_press_email`")  # noqa: E501
        # verify the required parameter 'content' is set
        if ('content' not in params or
                params['content'] is None):
            raise ValueError("Missing the required parameter `content` when calling `create_printing_press_email`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'template_id' in params:
            form_params.append(('templateId', params['template_id']))  # noqa: E501
        if 'content' in params:
            form_params.append(('content', params['content']))  # noqa: E501
        if 'email_id' in params:
            form_params.append(('emailId', params['email_id']))  # noqa: E501
        if 'video_id' in params:
            form_params.append(('videoId', params['video_id']))  # noqa: E501
        if 'subject_line' in params:
            form_params.append(('subjectLine', params['subject_line']))  # noqa: E501

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/print', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_all_templates_for_current_user(self, **kwargs):  # noqa: E501
        """Get all user templates  # noqa: E501

        Get all templates accessible to the current user  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_all_templates_for_current_user(async=True)
        >>> result = thread.get()

        :param async bool
        :param bool quick_send_only: Whether to return only quick send templates.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_all_templates_for_current_user_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_all_templates_for_current_user_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_all_templates_for_current_user_with_http_info(self, **kwargs):  # noqa: E501
        """Get all user templates  # noqa: E501

        Get all templates accessible to the current user  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_all_templates_for_current_user_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param bool quick_send_only: Whether to return only quick send templates.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['quick_send_only']  # noqa: E501
        all_params.append('async')
        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 get_all_templates_for_current_user" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'quick_send_only' in params:
            query_params.append(('quickSendOnly', params['quick_send_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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/templates', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_email_tracking(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking  # noqa: E501

        Get Tracking data for all sends of an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
            return data

    def get_email_tracking_with_http_info(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking  # noqa: E501

        Get Tracking data for all sends of an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking_with_http_info(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['email_id', 'job_id']  # noqa: E501
        all_params.append('async')
        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 get_email_tracking" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'email_id' is set
        if ('email_id' not in params or
                params['email_id'] is None):
            raise ValueError("Missing the required parameter `email_id` when calling `get_email_tracking`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'email_id' in params:
            path_params['emailId'] = params['email_id']  # noqa: E501

        query_params = []
        if 'job_id' in params:
            query_params.append(('jobId', params['job_id']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/{emailId}/tracking', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_email_tracking_interactions(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking Interactions  # noqa: E501

        Get Contact detail interactions for an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking_interactions(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to order and filter by
        :param str search_term: Search term to filer by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_email_tracking_interactions_with_http_info(email_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_email_tracking_interactions_with_http_info(email_id, **kwargs)  # noqa: E501
            return data

    def get_email_tracking_interactions_with_http_info(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking Interactions  # noqa: E501

        Get Contact detail interactions for an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking_interactions_with_http_info(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to order and filter by
        :param str search_term: Search term to filer by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['email_id', 'job_id', 'interaction_type', 'search_term']  # noqa: E501
        all_params.append('async')
        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 get_email_tracking_interactions" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'email_id' is set
        if ('email_id' not in params or
                params['email_id'] is None):
            raise ValueError("Missing the required parameter `email_id` when calling `get_email_tracking_interactions`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'email_id' in params:
            path_params['emailId'] = params['email_id']  # noqa: E501

        query_params = []
        if 'job_id' in params:
            query_params.append(('jobId', params['job_id']))  # noqa: E501
        if 'interaction_type' in params:
            query_params.append(('interactionType', params['interaction_type']))  # noqa: E501
        if 'search_term' in params:
            query_params.append(('searchTerm', params['search_term']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/{emailId}/tracking/interactions', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_hourly_email_tracking(self, email_id, **kwargs):  # noqa: E501
        """Get Hourly Email Tracking  # noqa: E501

        Get Tracking data for an Email,             broken down by the hour and filterable by an Interaction type  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_hourly_email_tracking(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to filter by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_hourly_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_hourly_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
            return data

    def get_hourly_email_tracking_with_http_info(self, email_id, **kwargs):  # noqa: E501
        """Get Hourly Email Tracking  # noqa: E501

        Get Tracking data for an Email,             broken down by the hour and filterable by an Interaction type  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_hourly_email_tracking_with_http_info(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to filter by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['email_id', 'job_id', 'interaction_type']  # noqa: E501
        all_params.append('async')
        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 get_hourly_email_tracking" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'email_id' is set
        if ('email_id' not in params or
                params['email_id'] is None):
            raise ValueError("Missing the required parameter `email_id` when calling `get_hourly_email_tracking`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'email_id' in params:
            path_params['emailId'] = params['email_id']  # noqa: E501

        query_params = []
        if 'job_id' in params:
            query_params.append(('jobId', params['job_id']))  # noqa: E501
        if 'interaction_type' in params:
            query_params.append(('interactionType', params['interaction_type']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/{emailId}/tracking/hourly', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_live_fire_data(self, **kwargs):  # noqa: E501
        """Get livefire feed data  # noqa: E501

        Get the user data for the live fire feed emails  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_live_fire_data(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_live_fire_data_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_live_fire_data_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_live_fire_data_with_http_info(self, **kwargs):  # noqa: E501
        """Get livefire feed data  # noqa: E501

        Get the user data for the live fire feed emails  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_live_fire_data_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = []  # noqa: E501
        all_params.append('async')
        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 get_live_fire_data" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/livefire', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_quick_send_templates(self, **kwargs):  # noqa: E501
        """Get all quicksend templates  # noqa: E501

        Get all quicksend templates accessible to the user.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_quick_send_templates(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_quick_send_templates_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_quick_send_templates_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_quick_send_templates_with_http_info(self, **kwargs):  # noqa: E501
        """Get all quicksend templates  # noqa: E501

        Get all quicksend templates accessible to the user.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_quick_send_templates_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = []  # noqa: E501
        all_params.append('async')
        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 get_quick_send_templates" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend/templates', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_template_html_for_template_id(self, template_id, **kwargs):  # noqa: E501
        """Get the HTML for a given template  # noqa: E501

        Get the HTML for a given template, with or without rendered variables  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_template_html_for_template_id(template_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The id of the template. (required)
        :param str render_variables: Whether to render profile variables in the returned HTML.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_template_html_for_template_id_with_http_info(template_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_template_html_for_template_id_with_http_info(template_id, **kwargs)  # noqa: E501
            return data

    def get_template_html_for_template_id_with_http_info(self, template_id, **kwargs):  # noqa: E501
        """Get the HTML for a given template  # noqa: E501

        Get the HTML for a given template, with or without rendered variables  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_template_html_for_template_id_with_http_info(template_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The id of the template. (required)
        :param str render_variables: Whether to render profile variables in the returned HTML.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['template_id', 'render_variables']  # noqa: E501
        all_params.append('async')
        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 get_template_html_for_template_id" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'template_id' is set
        if ('template_id' not in params or
                params['template_id'] is None):
            raise ValueError("Missing the required parameter `template_id` when calling `get_template_html_for_template_id`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'template_id' in params:
            path_params['templateId'] = params['template_id']  # noqa: E501

        query_params = []
        if 'render_variables' in params:
            query_params.append(('renderVariables', params['render_variables']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/templates/{templateId}/html', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_video_quick_sender_data(self, **kwargs):  # noqa: E501
        """Get quicksend data  # noqa: E501

        Get the user data for quicksender, including templates and lists.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_video_quick_sender_data(async=True)
        >>> result = thread.get()

        :param async bool
        :param str message: A message for the video content.
        :param str subject: A subject for the video content.
        :param str video_id: A video ID.
        :param str template_id: A template ID.
        :param str comma_delim_emails: Comma delimited emails
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_video_quick_sender_data_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_video_quick_sender_data_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_video_quick_sender_data_with_http_info(self, **kwargs):  # noqa: E501
        """Get quicksend data  # noqa: E501

        Get the user data for quicksender, including templates and lists.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_video_quick_sender_data_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param str message: A message for the video content.
        :param str subject: A subject for the video content.
        :param str video_id: A video ID.
        :param str template_id: A template ID.
        :param str comma_delim_emails: Comma delimited emails
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['message', 'subject', 'video_id', 'template_id', 'comma_delim_emails']  # noqa: E501
        all_params.append('async')
        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 get_video_quick_sender_data" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'message' in params:
            query_params.append(('message', params['message']))  # noqa: E501
        if 'subject' in params:
            query_params.append(('subject', params['subject']))  # noqa: E501
        if 'video_id' in params:
            query_params.append(('videoId', params['video_id']))  # noqa: E501
        if 'template_id' in params:
            query_params.append(('templateId', params['template_id']))  # noqa: E501
        if 'comma_delim_emails' in params:
            query_params.append(('commaDelimEmails', params['comma_delim_emails']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 save_quick_sender_settings(self, **kwargs):  # noqa: E501
        """Save quicksender settings  # noqa: E501

        Save the quicksender notification and default template settings  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.save_quick_sender_settings(async=True)
        >>> result = thread.get()

        :param async bool
        :param str alert_on_play: A preference setting for whether or not to notify user on quicksend email video plays.
        :param str alert_on_open: A preference setting for whether or not to notify user on quicksend email opens.
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.save_quick_sender_settings_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.save_quick_sender_settings_with_http_info(**kwargs)  # noqa: E501
            return data

    def save_quick_sender_settings_with_http_info(self, **kwargs):  # noqa: E501
        """Save quicksender settings  # noqa: E501

        Save the quicksender notification and default template settings  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.save_quick_sender_settings_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param str alert_on_play: A preference setting for whether or not to notify user on quicksend email video plays.
        :param str alert_on_open: A preference setting for whether or not to notify user on quicksend email opens.
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['alert_on_play', 'alert_on_open', 'template_id']  # noqa: E501
        all_params.append('async')
        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 save_quick_sender_settings" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'alert_on_play' in params:
            form_params.append(('alertOnPlay', params['alert_on_play']))  # noqa: E501
        if 'alert_on_open' in params:
            form_params.append(('alertOnOpen', params['alert_on_open']))  # noqa: E501
        if 'template_id' in params:
            form_params.append(('templateId', params['template_id']))  # noqa: E501

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend/settings', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 video_quick_sender(self, **kwargs):  # noqa: E501
        """Send a quicksend email  # noqa: E501

        Send a quicksend video email to the list or users provided.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.video_quick_sender(async=True)
        >>> result = thread.get()

        :param async bool
        :param str video_id: A guid id for the video.
        :param str email_addresses: A semi-colon separated list of email addresses to send to.
        :param str subject: Subject line for the email.
        :param str message: Message for the body of the email.
        :param str list_ids: An array of list ids
        :param int scheduled_send_timestamp: When to schedule the send (seconds since epoch). null value means send immediately.
        :param str extended_properties: Bool value that when checked will send back both emailId as well as extra properties
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :param str strip_html: remove HTML elements
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.video_quick_sender_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.video_quick_sender_with_http_info(**kwargs)  # noqa: E501
            return data

    def video_quick_sender_with_http_info(self, **kwargs):  # noqa: E501
        """Send a quicksend email  # noqa: E501

        Send a quicksend video email to the list or users provided.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.video_quick_sender_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param str video_id: A guid id for the video.
        :param str email_addresses: A semi-colon separated list of email addresses to send to.
        :param str subject: Subject line for the email.
        :param str message: Message for the body of the email.
        :param str list_ids: An array of list ids
        :param int scheduled_send_timestamp: When to schedule the send (seconds since epoch). null value means send immediately.
        :param str extended_properties: Bool value that when checked will send back both emailId as well as extra properties
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :param str strip_html: remove HTML elements
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['video_id', 'email_addresses', 'subject', 'message', 'list_ids', 'scheduled_send_timestamp', 'extended_properties', 'template_id', 'strip_html']  # noqa: E501
        all_params.append('async')
        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 video_quick_sender" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'video_id' in params:
            form_params.append(('videoId', params['video_id']))  # noqa: E501
        if 'email_addresses' in params:
            form_params.append(('emailAddresses', params['email_addresses']))  # noqa: E501
        if 'subject' in params:
            form_params.append(('subject', params['subject']))  # noqa: E501
        if 'message' in params:
            form_params.append(('message', params['message']))  # noqa: E501
        if 'list_ids' in params:
            form_params.append(('listIds', params['list_ids']))  # noqa: E501
        if 'scheduled_send_timestamp' in params:
            form_params.append(('scheduledSendTimestamp', params['scheduled_send_timestamp']))  # noqa: E501
        if 'extended_properties' in params:
            form_params.append(('extendedProperties', params['extended_properties']))  # noqa: E501
        if 'template_id' in params:
            form_params.append(('templateId', params['template_id']))  # noqa: E501
        if 'strip_html' in params:
            form_params.append(('stripHTML', params['strip_html']))  # noqa: E501

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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)

# coding: utf-8

"""
    BombBomb

    We make it easy to build relationships using simple videos.  # noqa: E501

    OpenAPI spec version: 2.0.831
    
    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 bombbomb.api_client import ApiClient


class EmailsApi(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 create_printing_press_email(self, template_id, content, **kwargs):  # noqa: E501
        """Create an Email with Printing Press  # noqa: E501

        Prints an email using the template id and content to the users account.If a video id is included, it will replace any video placeholders with that video.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.create_printing_press_email(template_id, content, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The template id to be printed. (required)
        :param str content: The content of the email. (required)
        :param str email_id: The email id to be printed to.
        :param str video_id: A video to replace video place holders with.
        :param str subject_line: The subject line to be printed.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.create_printing_press_email_with_http_info(template_id, content, **kwargs)  # noqa: E501
        else:
            (data) = self.create_printing_press_email_with_http_info(template_id, content, **kwargs)  # noqa: E501
            return data

    def create_printing_press_email_with_http_info(self, template_id, content, **kwargs):  # noqa: E501
        """Create an Email with Printing Press  # noqa: E501

        Prints an email using the template id and content to the users account.If a video id is included, it will replace any video placeholders with that video.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.create_printing_press_email_with_http_info(template_id, content, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The template id to be printed. (required)
        :param str content: The content of the email. (required)
        :param str email_id: The email id to be printed to.
        :param str video_id: A video to replace video place holders with.
        :param str subject_line: The subject line to be printed.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['template_id', 'content', 'email_id', 'video_id', 'subject_line']  # noqa: E501
        all_params.append('async')
        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 create_printing_press_email" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'template_id' is set
        if ('template_id' not in params or
                params['template_id'] is None):
            raise ValueError("Missing the required parameter `template_id` when calling `create_printing_press_email`")  # noqa: E501
        # verify the required parameter 'content' is set
        if ('content' not in params or
                params['content'] is None):
            raise ValueError("Missing the required parameter `content` when calling `create_printing_press_email`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'template_id' in params:
            form_params.append(('templateId', params['template_id']))  # noqa: E501
        if 'content' in params:
            form_params.append(('content', params['content']))  # noqa: E501
        if 'email_id' in params:
            form_params.append(('emailId', params['email_id']))  # noqa: E501
        if 'video_id' in params:
            form_params.append(('videoId', params['video_id']))  # noqa: E501
        if 'subject_line' in params:
            form_params.append(('subjectLine', params['subject_line']))  # noqa: E501

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/print', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_all_templates_for_current_user(self, **kwargs):  # noqa: E501
        """Get all user templates  # noqa: E501

        Get all templates accessible to the current user  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_all_templates_for_current_user(async=True)
        >>> result = thread.get()

        :param async bool
        :param bool quick_send_only: Whether to return only quick send templates.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_all_templates_for_current_user_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_all_templates_for_current_user_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_all_templates_for_current_user_with_http_info(self, **kwargs):  # noqa: E501
        """Get all user templates  # noqa: E501

        Get all templates accessible to the current user  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_all_templates_for_current_user_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param bool quick_send_only: Whether to return only quick send templates.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['quick_send_only']  # noqa: E501
        all_params.append('async')
        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 get_all_templates_for_current_user" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'quick_send_only' in params:
            query_params.append(('quickSendOnly', params['quick_send_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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/templates', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_email_tracking(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking  # noqa: E501

        Get Tracking data for all sends of an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
            return data

    def get_email_tracking_with_http_info(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking  # noqa: E501

        Get Tracking data for all sends of an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking_with_http_info(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['email_id', 'job_id']  # noqa: E501
        all_params.append('async')
        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 get_email_tracking" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'email_id' is set
        if ('email_id' not in params or
                params['email_id'] is None):
            raise ValueError("Missing the required parameter `email_id` when calling `get_email_tracking`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'email_id' in params:
            path_params['emailId'] = params['email_id']  # noqa: E501

        query_params = []
        if 'job_id' in params:
            query_params.append(('jobId', params['job_id']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/{emailId}/tracking', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_email_tracking_interactions(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking Interactions  # noqa: E501

        Get Contact detail interactions for an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking_interactions(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to order and filter by
        :param str search_term: Search term to filer by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_email_tracking_interactions_with_http_info(email_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_email_tracking_interactions_with_http_info(email_id, **kwargs)  # noqa: E501
            return data

    def get_email_tracking_interactions_with_http_info(self, email_id, **kwargs):  # noqa: E501
        """Get Email Tracking Interactions  # noqa: E501

        Get Contact detail interactions for an Email  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_email_tracking_interactions_with_http_info(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to order and filter by
        :param str search_term: Search term to filer by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['email_id', 'job_id', 'interaction_type', 'search_term']  # noqa: E501
        all_params.append('async')
        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 get_email_tracking_interactions" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'email_id' is set
        if ('email_id' not in params or
                params['email_id'] is None):
            raise ValueError("Missing the required parameter `email_id` when calling `get_email_tracking_interactions`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'email_id' in params:
            path_params['emailId'] = params['email_id']  # noqa: E501

        query_params = []
        if 'job_id' in params:
            query_params.append(('jobId', params['job_id']))  # noqa: E501
        if 'interaction_type' in params:
            query_params.append(('interactionType', params['interaction_type']))  # noqa: E501
        if 'search_term' in params:
            query_params.append(('searchTerm', params['search_term']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/{emailId}/tracking/interactions', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_hourly_email_tracking(self, email_id, **kwargs):  # noqa: E501
        """Get Hourly Email Tracking  # noqa: E501

        Get Tracking data for an Email,             broken down by the hour and filterable by an Interaction type  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_hourly_email_tracking(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to filter by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_hourly_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_hourly_email_tracking_with_http_info(email_id, **kwargs)  # noqa: E501
            return data

    def get_hourly_email_tracking_with_http_info(self, email_id, **kwargs):  # noqa: E501
        """Get Hourly Email Tracking  # noqa: E501

        Get Tracking data for an Email,             broken down by the hour and filterable by an Interaction type  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_hourly_email_tracking_with_http_info(email_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str email_id: ID of the email (required)
        :param str job_id: ID of the Job (or null for all jobs)
        :param str interaction_type: Interaction type to filter by
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['email_id', 'job_id', 'interaction_type']  # noqa: E501
        all_params.append('async')
        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 get_hourly_email_tracking" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'email_id' is set
        if ('email_id' not in params or
                params['email_id'] is None):
            raise ValueError("Missing the required parameter `email_id` when calling `get_hourly_email_tracking`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'email_id' in params:
            path_params['emailId'] = params['email_id']  # noqa: E501

        query_params = []
        if 'job_id' in params:
            query_params.append(('jobId', params['job_id']))  # noqa: E501
        if 'interaction_type' in params:
            query_params.append(('interactionType', params['interaction_type']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/{emailId}/tracking/hourly', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_live_fire_data(self, **kwargs):  # noqa: E501
        """Get livefire feed data  # noqa: E501

        Get the user data for the live fire feed emails  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_live_fire_data(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_live_fire_data_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_live_fire_data_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_live_fire_data_with_http_info(self, **kwargs):  # noqa: E501
        """Get livefire feed data  # noqa: E501

        Get the user data for the live fire feed emails  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_live_fire_data_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = []  # noqa: E501
        all_params.append('async')
        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 get_live_fire_data" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/livefire', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_quick_send_templates(self, **kwargs):  # noqa: E501
        """Get all quicksend templates  # noqa: E501

        Get all quicksend templates accessible to the user.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_quick_send_templates(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_quick_send_templates_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_quick_send_templates_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_quick_send_templates_with_http_info(self, **kwargs):  # noqa: E501
        """Get all quicksend templates  # noqa: E501

        Get all quicksend templates accessible to the user.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_quick_send_templates_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = []  # noqa: E501
        all_params.append('async')
        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 get_quick_send_templates" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend/templates', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_template_html_for_template_id(self, template_id, **kwargs):  # noqa: E501
        """Get the HTML for a given template  # noqa: E501

        Get the HTML for a given template, with or without rendered variables  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_template_html_for_template_id(template_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The id of the template. (required)
        :param str render_variables: Whether to render profile variables in the returned HTML.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_template_html_for_template_id_with_http_info(template_id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_template_html_for_template_id_with_http_info(template_id, **kwargs)  # noqa: E501
            return data

    def get_template_html_for_template_id_with_http_info(self, template_id, **kwargs):  # noqa: E501
        """Get the HTML for a given template  # noqa: E501

        Get the HTML for a given template, with or without rendered variables  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_template_html_for_template_id_with_http_info(template_id, async=True)
        >>> result = thread.get()

        :param async bool
        :param str template_id: The id of the template. (required)
        :param str render_variables: Whether to render profile variables in the returned HTML.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['template_id', 'render_variables']  # noqa: E501
        all_params.append('async')
        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 get_template_html_for_template_id" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'template_id' is set
        if ('template_id' not in params or
                params['template_id'] is None):
            raise ValueError("Missing the required parameter `template_id` when calling `get_template_html_for_template_id`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'template_id' in params:
            path_params['templateId'] = params['template_id']  # noqa: E501

        query_params = []
        if 'render_variables' in params:
            query_params.append(('renderVariables', params['render_variables']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/templates/{templateId}/html', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 get_video_quick_sender_data(self, **kwargs):  # noqa: E501
        """Get quicksend data  # noqa: E501

        Get the user data for quicksender, including templates and lists.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_video_quick_sender_data(async=True)
        >>> result = thread.get()

        :param async bool
        :param str message: A message for the video content.
        :param str subject: A subject for the video content.
        :param str video_id: A video ID.
        :param str template_id: A template ID.
        :param str comma_delim_emails: Comma delimited emails
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.get_video_quick_sender_data_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_video_quick_sender_data_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_video_quick_sender_data_with_http_info(self, **kwargs):  # noqa: E501
        """Get quicksend data  # noqa: E501

        Get the user data for quicksender, including templates and lists.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.get_video_quick_sender_data_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param str message: A message for the video content.
        :param str subject: A subject for the video content.
        :param str video_id: A video ID.
        :param str template_id: A template ID.
        :param str comma_delim_emails: Comma delimited emails
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['message', 'subject', 'video_id', 'template_id', 'comma_delim_emails']  # noqa: E501
        all_params.append('async')
        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 get_video_quick_sender_data" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'message' in params:
            query_params.append(('message', params['message']))  # noqa: E501
        if 'subject' in params:
            query_params.append(('subject', params['subject']))  # noqa: E501
        if 'video_id' in params:
            query_params.append(('videoId', params['video_id']))  # noqa: E501
        if 'template_id' in params:
            query_params.append(('templateId', params['template_id']))  # noqa: E501
        if 'comma_delim_emails' in params:
            query_params.append(('commaDelimEmails', params['comma_delim_emails']))  # 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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 save_quick_sender_settings(self, **kwargs):  # noqa: E501
        """Save quicksender settings  # noqa: E501

        Save the quicksender notification and default template settings  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.save_quick_sender_settings(async=True)
        >>> result = thread.get()

        :param async bool
        :param str alert_on_play: A preference setting for whether or not to notify user on quicksend email video plays.
        :param str alert_on_open: A preference setting for whether or not to notify user on quicksend email opens.
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.save_quick_sender_settings_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.save_quick_sender_settings_with_http_info(**kwargs)  # noqa: E501
            return data

    def save_quick_sender_settings_with_http_info(self, **kwargs):  # noqa: E501
        """Save quicksender settings  # noqa: E501

        Save the quicksender notification and default template settings  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.save_quick_sender_settings_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param str alert_on_play: A preference setting for whether or not to notify user on quicksend email video plays.
        :param str alert_on_open: A preference setting for whether or not to notify user on quicksend email opens.
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['alert_on_play', 'alert_on_open', 'template_id']  # noqa: E501
        all_params.append('async')
        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 save_quick_sender_settings" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'alert_on_play' in params:
            form_params.append(('alertOnPlay', params['alert_on_play']))  # noqa: E501
        if 'alert_on_open' in params:
            form_params.append(('alertOnOpen', params['alert_on_open']))  # noqa: E501
        if 'template_id' in params:
            form_params.append(('templateId', params['template_id']))  # noqa: E501

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend/settings', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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 video_quick_sender(self, **kwargs):  # noqa: E501
        """Send a quicksend email  # noqa: E501

        Send a quicksend video email to the list or users provided.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.video_quick_sender(async=True)
        >>> result = thread.get()

        :param async bool
        :param str video_id: A guid id for the video.
        :param str email_addresses: A semi-colon separated list of email addresses to send to.
        :param str subject: Subject line for the email.
        :param str message: Message for the body of the email.
        :param str list_ids: An array of list ids
        :param int scheduled_send_timestamp: When to schedule the send (seconds since epoch). null value means send immediately.
        :param str extended_properties: Bool value that when checked will send back both emailId as well as extra properties
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :param str strip_html: remove HTML elements
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.video_quick_sender_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.video_quick_sender_with_http_info(**kwargs)  # noqa: E501
            return data

    def video_quick_sender_with_http_info(self, **kwargs):  # noqa: E501
        """Send a quicksend email  # noqa: E501

        Send a quicksend video email to the list or users provided.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.video_quick_sender_with_http_info(async=True)
        >>> result = thread.get()

        :param async bool
        :param str video_id: A guid id for the video.
        :param str email_addresses: A semi-colon separated list of email addresses to send to.
        :param str subject: Subject line for the email.
        :param str message: Message for the body of the email.
        :param str list_ids: An array of list ids
        :param int scheduled_send_timestamp: When to schedule the send (seconds since epoch). null value means send immediately.
        :param str extended_properties: Bool value that when checked will send back both emailId as well as extra properties
        :param str template_id: Id of a template to use for this send. A null value means use the default for this user.
        :param str strip_html: remove HTML elements
        :return: None
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['video_id', 'email_addresses', 'subject', 'message', 'list_ids', 'scheduled_send_timestamp', 'extended_properties', 'template_id', 'strip_html']  # noqa: E501
        all_params.append('async')
        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 video_quick_sender" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}
        if 'video_id' in params:
            form_params.append(('videoId', params['video_id']))  # noqa: E501
        if 'email_addresses' in params:
            form_params.append(('emailAddresses', params['email_addresses']))  # noqa: E501
        if 'subject' in params:
            form_params.append(('subject', params['subject']))  # noqa: E501
        if 'message' in params:
            form_params.append(('message', params['message']))  # noqa: E501
        if 'list_ids' in params:
            form_params.append(('listIds', params['list_ids']))  # noqa: E501
        if 'scheduled_send_timestamp' in params:
            form_params.append(('scheduledSendTimestamp', params['scheduled_send_timestamp']))  # noqa: E501
        if 'extended_properties' in params:
            form_params.append(('extendedProperties', params['extended_properties']))  # noqa: E501
        if 'template_id' in params:
            form_params.append(('templateId', params['template_id']))  # noqa: E501
        if 'strip_html' in params:
            form_params.append(('stripHTML', params['strip_html']))  # noqa: E501

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json'])  # noqa: E501

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/x-www-form-urlencoded'])  # noqa: E501

        # Authentication setting
        auth_settings = ['BBOAuth2']  # noqa: E501

        return self.api_client.call_api(
            '/emails/quicksend', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type=None,  # noqa: E501
            auth_settings=auth_settings,
            async=params.get('async'),
            _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)
# coding: utf-8 BombBomb      We make it easy to build relationships using simple videos.  # noqa: E501      OpenAPI spec version: 2.0.831          Generated by: https://github.com/swagger-api/swagger-codegen.git # noqa: F401 # python 2 and python 3 compatibility library 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 # noqa: E501 Create an Email with Printing Press  # noqa: E501          Prints an email using the template id and content to the users account.If a video id is included, it will replace any video placeholders with that video.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.create_printing_press_email(template_id, content, async=True)         >>> result = thread.get()          :param async bool         :param str template_id: The template id to be printed. (required)         :param str content: The content of the email. (required)         :param str email_id: The email id to be printed to.         :param str video_id: A video to replace video place holders with.         :param str subject_line: The subject line to be printed.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Create an Email with Printing Press  # noqa: E501          Prints an email using the template id and content to the users account.If a video id is included, it will replace any video placeholders with that video.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.create_printing_press_email_with_http_info(template_id, content, async=True)         >>> result = thread.get()          :param async bool         :param str template_id: The template id to be printed. (required)         :param str content: The content of the email. (required)         :param str email_id: The email id to be printed to.         :param str video_id: A video to replace video place holders with.         :param str subject_line: The subject line to be printed.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # verify the required parameter 'template_id' is set # noqa: E501 # verify the required parameter 'content' is set # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get all user templates  # noqa: E501          Get all templates accessible to the current user  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_all_templates_for_current_user(async=True)         >>> result = thread.get()          :param async bool         :param bool quick_send_only: Whether to return only quick send templates.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get all user templates  # noqa: E501          Get all templates accessible to the current user  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_all_templates_for_current_user_with_http_info(async=True)         >>> result = thread.get()          :param async bool         :param bool quick_send_only: Whether to return only quick send templates.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get Email Tracking  # noqa: E501          Get Tracking data for all sends of an Email  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_email_tracking(email_id, async=True)         >>> result = thread.get()          :param async bool         :param str email_id: ID of the email (required)         :param str job_id: ID of the Job (or null for all jobs)         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get Email Tracking  # noqa: E501          Get Tracking data for all sends of an Email  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_email_tracking_with_http_info(email_id, async=True)         >>> result = thread.get()          :param async bool         :param str email_id: ID of the email (required)         :param str job_id: ID of the Job (or null for all jobs)         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # verify the required parameter 'email_id' is set # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get Email Tracking Interactions  # noqa: E501          Get Contact detail interactions for an Email  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_email_tracking_interactions(email_id, async=True)         >>> result = thread.get()          :param async bool         :param str email_id: ID of the email (required)         :param str job_id: ID of the Job (or null for all jobs)         :param str interaction_type: Interaction type to order and filter by         :param str search_term: Search term to filer by         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get Email Tracking Interactions  # noqa: E501          Get Contact detail interactions for an Email  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_email_tracking_interactions_with_http_info(email_id, async=True)         >>> result = thread.get()          :param async bool         :param str email_id: ID of the email (required)         :param str job_id: ID of the Job (or null for all jobs)         :param str interaction_type: Interaction type to order and filter by         :param str search_term: Search term to filer by         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # verify the required parameter 'email_id' is set # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get Hourly Email Tracking  # noqa: E501          Get Tracking data for an Email,             broken down by the hour and filterable by an Interaction type  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_hourly_email_tracking(email_id, async=True)         >>> result = thread.get()          :param async bool         :param str email_id: ID of the email (required)         :param str job_id: ID of the Job (or null for all jobs)         :param str interaction_type: Interaction type to filter by         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get Hourly Email Tracking  # noqa: E501          Get Tracking data for an Email,             broken down by the hour and filterable by an Interaction type  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_hourly_email_tracking_with_http_info(email_id, async=True)         >>> result = thread.get()          :param async bool         :param str email_id: ID of the email (required)         :param str job_id: ID of the Job (or null for all jobs)         :param str interaction_type: Interaction type to filter by         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # verify the required parameter 'email_id' is set # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get livefire feed data  # noqa: E501          Get the user data for the live fire feed emails  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_live_fire_data(async=True)         >>> result = thread.get()          :param async bool         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get livefire feed data  # noqa: E501          Get the user data for the live fire feed emails  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_live_fire_data_with_http_info(async=True)         >>> result = thread.get()          :param async bool         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get all quicksend templates  # noqa: E501          Get all quicksend templates accessible to the user.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_quick_send_templates(async=True)         >>> result = thread.get()          :param async bool         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get all quicksend templates  # noqa: E501          Get all quicksend templates accessible to the user.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_quick_send_templates_with_http_info(async=True)         >>> result = thread.get()          :param async bool         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get the HTML for a given template  # noqa: E501          Get the HTML for a given template, with or without rendered variables  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_template_html_for_template_id(template_id, async=True)         >>> result = thread.get()          :param async bool         :param str template_id: The id of the template. (required)         :param str render_variables: Whether to render profile variables in the returned HTML.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get the HTML for a given template  # noqa: E501          Get the HTML for a given template, with or without rendered variables  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_template_html_for_template_id_with_http_info(template_id, async=True)         >>> result = thread.get()          :param async bool         :param str template_id: The id of the template. (required)         :param str render_variables: Whether to render profile variables in the returned HTML.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # verify the required parameter 'template_id' is set # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Get quicksend data  # noqa: E501          Get the user data for quicksender, including templates and lists.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_video_quick_sender_data(async=True)         >>> result = thread.get()          :param async bool         :param str message: A message for the video content.         :param str subject: A subject for the video content.         :param str video_id: A video ID.         :param str template_id: A template ID.         :param str comma_delim_emails: Comma delimited emails         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Get quicksend data  # noqa: E501          Get the user data for quicksender, including templates and lists.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.get_video_quick_sender_data_with_http_info(async=True)         >>> result = thread.get()          :param async bool         :param str message: A message for the video content.         :param str subject: A subject for the video content.         :param str video_id: A video ID.         :param str template_id: A template ID.         :param str comma_delim_emails: Comma delimited emails         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Save quicksender settings  # noqa: E501          Save the quicksender notification and default template settings  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.save_quick_sender_settings(async=True)         >>> result = thread.get()          :param async bool         :param str alert_on_play: A preference setting for whether or not to notify user on quicksend email video plays.         :param str alert_on_open: A preference setting for whether or not to notify user on quicksend email opens.         :param str template_id: Id of a template to use for this send. A null value means use the default for this user.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Save quicksender settings  # noqa: E501          Save the quicksender notification and default template settings  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.save_quick_sender_settings_with_http_info(async=True)         >>> result = thread.get()          :param async bool         :param str alert_on_play: A preference setting for whether or not to notify user on quicksend email video plays.         :param str alert_on_open: A preference setting for whether or not to notify user on quicksend email opens.         :param str template_id: Id of a template to use for this send. A null value means use the default for this user.         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501 # noqa: E501 Send a quicksend email  # noqa: E501          Send a quicksend video email to the list or users provided.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.video_quick_sender(async=True)         >>> result = thread.get()          :param async bool         :param str video_id: A guid id for the video.         :param str email_addresses: A semi-colon separated list of email addresses to send to.         :param str subject: Subject line for the email.         :param str message: Message for the body of the email.         :param str list_ids: An array of list ids         :param int scheduled_send_timestamp: When to schedule the send (seconds since epoch). null value means send immediately.         :param str extended_properties: Bool value that when checked will send back both emailId as well as extra properties         :param str template_id: Id of a template to use for this send. A null value means use the default for this user.         :param str strip_html: remove HTML elements         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 Send a quicksend email  # noqa: E501          Send a quicksend video email to the list or users provided.  # noqa: E501         This method makes a synchronous HTTP request by default. To make an         asynchronous HTTP request, please pass async=True         >>> thread = api.video_quick_sender_with_http_info(async=True)         >>> result = thread.get()          :param async bool         :param str video_id: A guid id for the video.         :param str email_addresses: A semi-colon separated list of email addresses to send to.         :param str subject: Subject line for the email.         :param str message: Message for the body of the email.         :param str list_ids: An array of list ids         :param int scheduled_send_timestamp: When to schedule the send (seconds since epoch). null value means send immediately.         :param str extended_properties: Bool value that when checked will send back both emailId as well as extra properties         :param str template_id: Id of a template to use for this send. A null value means use the default for this user.         :param str strip_html: remove HTML elements         :return: None                  If the method is called asynchronously,                  returns the request thread. # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # noqa: E501 # HTTP header `Accept` # noqa: E501 # HTTP header `Content-Type` # noqa: E501 # noqa: E501 # Authentication setting # noqa: E501 # noqa: E501