# coding: utf-8

"""
    Zadara VPSA Object Storage REST API

    # Overview  This document outlines the methods available for administrating your VPSA&#174; Object Storage. The API supports form-encoded, JSON, and XML requests, and can return either JSON or XML responses.  ## Usage  The majority of the APIs available require authentication which requires an API token to use. You can retrieve this token through the Users section of your VPSA, or through the API using the \"Return a user's access key\" API in the Users Section below.  ## Authentication Methods  The authentication token can be passed either through the access_key parameter inside of the body of the REST API request, or through the X-Access-Key header. Alternately, you can use the username and password parameters for authentication, but we do not recommend this method for anything other than possibly retrieving an API key.  By default , all operations are allowed only to VPSA Object Storage admin. Some actions are allowed by an account admin and they will be marked on the action's header  ## Timeouts  By default, all operations that don't complete within five seconds will return a message informing you that the action may take some time to complete. When using the API, this can cause some actions, such as adding drives to storage policy, to be undesirably asynchronous. You can specify your own timeout with the timeout parameter, in seconds, and a timeout value of -1 specifies an infinite timeout.  ## Metering API  Metering information can be retrieved using the VPSA Object Storage API for the following components:  - Accounts - Users - Drives - Virtual Controllers - Load Balancer Groups - Storage Policies  Metering information returned by the API is subject to the following constraints:  - 10 seconds interval - 1 hour range - 1 minute interval - 1 day range - 1 hour interval - 30 days range  Values outside the accepted range will be returned as 0.  ## Questions  If you have any questions or need support involving the REST API, please contact for assistance.   # noqa: E501

    OpenAPI spec version: 23.03-sp1
    Contact: support@zadarastorage.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from Zios.api_client import ApiClient


class UsersApi(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 add_new_user(self, add_new_user, **kwargs):  # noqa: E501
        """add_new_user  # noqa: E501

        Adds a new user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.add_new_user(add_new_user, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param AddNewUser add_new_user: (required)
        :return: InlineResponse20042
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.add_new_user_with_http_info(add_new_user, **kwargs)  # noqa: E501
        else:
            (data) = self.add_new_user_with_http_info(add_new_user, **kwargs)  # noqa: E501
            return data

    def add_new_user_with_http_info(self, add_new_user, **kwargs):  # noqa: E501
        """add_new_user  # noqa: E501

        Adds a new user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.add_new_user_with_http_info(add_new_user, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param AddNewUser add_new_user: (required)
        :return: InlineResponse20042
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['add_new_user']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method add_new_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'add_new_user' is set
        if self.api_client.client_side_validation and ('add_new_user' not in params or
                                                       params['add_new_user'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `add_new_user` when calling `add_new_user`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20042',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def change_password(self, change_password, **kwargs):  # noqa: E501
        """change_password  # noqa: E501

        Change a user's password.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.change_password(change_password, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param ChangePassword change_password: (required)
        :return: InlineResponse20049
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.change_password_with_http_info(change_password, **kwargs)  # noqa: E501
        else:
            (data) = self.change_password_with_http_info(change_password, **kwargs)  # noqa: E501
            return data

    def change_password_with_http_info(self, change_password, **kwargs):  # noqa: E501
        """change_password  # noqa: E501

        Change a user's password.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.change_password_with_http_info(change_password, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param ChangePassword change_password: (required)
        :return: InlineResponse20049
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['change_password']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method change_password" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'change_password' is set
        if self.api_client.client_side_validation and ('change_password' not in params or
                                                       params['change_password'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `change_password` when calling `change_password`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/users/password.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20049',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def change_user_pass_by_code(self, id, change_user_pass_by_code, **kwargs):  # noqa: E501
        """change_user_pass_by_code  # noqa: E501

        Change a user's password using a temporary password code.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.change_user_pass_by_code(id, change_user_pass_by_code, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param ChangeUserPassByCode change_user_pass_by_code: (required)
        :return: InlineResponse20050
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.change_user_pass_by_code_with_http_info(id, change_user_pass_by_code, **kwargs)  # noqa: E501
        else:
            (data) = self.change_user_pass_by_code_with_http_info(id, change_user_pass_by_code, **kwargs)  # noqa: E501
            return data

    def change_user_pass_by_code_with_http_info(self, id, change_user_pass_by_code, **kwargs):  # noqa: E501
        """change_user_pass_by_code  # noqa: E501

        Change a user's password using a temporary password code.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.change_user_pass_by_code_with_http_info(id, change_user_pass_by_code, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param ChangeUserPassByCode change_user_pass_by_code: (required)
        :return: InlineResponse20050
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id', 'change_user_pass_by_code']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method change_user_pass_by_code" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `change_user_pass_by_code`")  # noqa: E501
        # verify the required parameter 'change_user_pass_by_code' is set
        if self.api_client.client_side_validation and ('change_user_pass_by_code' not in params or
                                                       params['change_user_pass_by_code'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `change_user_pass_by_code` when calling `change_user_pass_by_code`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/users/{id}/password_code.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20050',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def change_user_role(self, user_id, change_user_role, **kwargs):  # noqa: E501
        """change_user_role  # noqa: E501

        Change a VPSA Object Storage user role.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.change_user_role(user_id, change_user_role, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str user_id: (required)
        :param ChangeUserRole change_user_role: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.change_user_role_with_http_info(user_id, change_user_role, **kwargs)  # noqa: E501
        else:
            (data) = self.change_user_role_with_http_info(user_id, change_user_role, **kwargs)  # noqa: E501
            return data

    def change_user_role_with_http_info(self, user_id, change_user_role, **kwargs):  # noqa: E501
        """change_user_role  # noqa: E501

        Change a VPSA Object Storage user role.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.change_user_role_with_http_info(user_id, change_user_role, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str user_id: (required)
        :param ChangeUserRole change_user_role: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['user_id', 'change_user_role']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method change_user_role" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'user_id' is set
        if self.api_client.client_side_validation and ('user_id' not in params or
                                                       params['user_id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `user_id` when calling `change_user_role`")  # noqa: E501
        # verify the required parameter 'change_user_role' is set
        if self.api_client.client_side_validation and ('change_user_role' not in params or
                                                       params['change_user_role'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `change_user_role` when calling `change_user_role`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users/{user_id}/change_role.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20029',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_user(self, id, **kwargs):  # noqa: E501
        """delete_user  # noqa: E501

        Delete a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_user(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.delete_user_with_http_info(id, **kwargs)  # noqa: E501
        else:
            (data) = self.delete_user_with_http_info(id, **kwargs)  # noqa: E501
            return data

    def delete_user_with_http_info(self, id, **kwargs):  # noqa: E501
        """delete_user  # noqa: E501

        Delete a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_user_with_http_info(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `delete_user`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users/{id}.json', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20029',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def disable_admin_access(self, **kwargs):  # noqa: E501
        """disable_admin_access  # noqa: E501

        Disables cloud admin access.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.disable_admin_access(async_req=True)
        >>> result = thread.get()

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

    def disable_admin_access_with_http_info(self, **kwargs):  # noqa: E501
        """disable_admin_access  # noqa: E501

        Disables cloud admin access.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.disable_admin_access_with_http_info(async_req=True)
        >>> result = thread.get()

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

        all_params = []  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method disable_admin_access" % 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', 'application/xml'])  # noqa: E501

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

        return self.api_client.call_api(
            '/users/admin_access/disable.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20046',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def disable_user(self, user_id, **kwargs):  # noqa: E501
        """disable_user  # noqa: E501

        Disable a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.disable_user(user_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str user_id: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.disable_user_with_http_info(user_id, **kwargs)  # noqa: E501
        else:
            (data) = self.disable_user_with_http_info(user_id, **kwargs)  # noqa: E501
            return data

    def disable_user_with_http_info(self, user_id, **kwargs):  # noqa: E501
        """disable_user  # noqa: E501

        Disable a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.disable_user_with_http_info(user_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str user_id: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['user_id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method disable_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'user_id' is set
        if self.api_client.client_side_validation and ('user_id' not in params or
                                                       params['user_id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `user_id` when calling `disable_user`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users/{user_id}/disable.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20029',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def enable_cloud_admin_access(self, **kwargs):  # noqa: E501
        """enable_cloud_admin_access  # noqa: E501

        Enables cloud admin access.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.enable_cloud_admin_access(async_req=True)
        >>> result = thread.get()

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

    def enable_cloud_admin_access_with_http_info(self, **kwargs):  # noqa: E501
        """enable_cloud_admin_access  # noqa: E501

        Enables cloud admin access.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.enable_cloud_admin_access_with_http_info(async_req=True)
        >>> result = thread.get()

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

        all_params = []  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method enable_cloud_admin_access" % 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', 'application/xml'])  # noqa: E501

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

        return self.api_client.call_api(
            '/users/admin_access/enable.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20045',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def enable_user(self, user_id, **kwargs):  # noqa: E501
        """enable_user  # noqa: E501

        Enable a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.enable_user(user_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str user_id: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.enable_user_with_http_info(user_id, **kwargs)  # noqa: E501
        else:
            (data) = self.enable_user_with_http_info(user_id, **kwargs)  # noqa: E501
            return data

    def enable_user_with_http_info(self, user_id, **kwargs):  # noqa: E501
        """enable_user  # noqa: E501

        Enable a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.enable_user_with_http_info(user_id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str user_id: (required)
        :return: InlineResponse20029
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['user_id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method enable_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'user_id' is set
        if self.api_client.client_side_validation and ('user_id' not in params or
                                                       params['user_id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `user_id` when calling `enable_user`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users/{user_id}/enable.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20029',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_all_users(self, **kwargs):  # noqa: E501
        """get_all_users  # noqa: E501

        List all users.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_all_users(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param int start: The item number to start from. 0 starts from the beginning.
        :param int limit: The total number of records to return.
        :return: InlineResponse20041
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_all_users_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_all_users_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_all_users_with_http_info(self, **kwargs):  # noqa: E501
        """get_all_users  # noqa: E501

        List all users.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_all_users_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param int start: The item number to start from. 0 starts from the beginning.
        :param int limit: The total number of records to return.
        :return: InlineResponse20041
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['start', 'limit']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_all_users" % key
                )
            params[key] = val
        del params['kwargs']

        if self.api_client.client_side_validation and ('start' in params and params['start'] < 0):  # noqa: E501
            raise ValueError("Invalid value for parameter `start` when calling `get_all_users`, must be a value greater than or equal to `0`")  # noqa: E501
        collection_formats = {}

        path_params = {}

        query_params = []
        if 'start' in params:
            query_params.append(('start', params['start']))  # noqa: E501
        if 'limit' in params:
            query_params.append(('limit', params['limit']))  # 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', 'application/xml'])  # noqa: E501

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

        return self.api_client.call_api(
            '/zios/users.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20041',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_auth_token(self, get_auth_token, **kwargs):  # noqa: E501
        """get_auth_token  # noqa: E501

        Returns a user's authentication token.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_auth_token(get_auth_token, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param GetAuthToken get_auth_token: (required)
        :return: InlineResponse20044
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_auth_token_with_http_info(get_auth_token, **kwargs)  # noqa: E501
        else:
            (data) = self.get_auth_token_with_http_info(get_auth_token, **kwargs)  # noqa: E501
            return data

    def get_auth_token_with_http_info(self, get_auth_token, **kwargs):  # noqa: E501
        """get_auth_token  # noqa: E501

        Returns a user's authentication token.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_auth_token_with_http_info(get_auth_token, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param GetAuthToken get_auth_token: (required)
        :return: InlineResponse20044
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['get_auth_token']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_auth_token" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'get_auth_token' is set
        if self.api_client.client_side_validation and ('get_auth_token' not in params or
                                                       params['get_auth_token'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `get_auth_token` when calling `get_auth_token`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/users/authenticate.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20044',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_user(self, id, **kwargs):  # noqa: E501
        """get_user  # noqa: E501

        Show a single user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_user(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20043
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_user_with_http_info(id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_user_with_http_info(id, **kwargs)  # noqa: E501
            return data

    def get_user_with_http_info(self, id, **kwargs):  # noqa: E501
        """get_user  # noqa: E501

        Show a single user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_user_with_http_info(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20043
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `get_user`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users/{id}.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20043',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def issue_temp_code_to_mail(self, issue_temp_code_to_mail, **kwargs):  # noqa: E501
        """issue_temp_code_to_mail  # noqa: E501

        Issues a temporary password code to be sent by mail.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.issue_temp_code_to_mail(issue_temp_code_to_mail, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param IssueTempCodeToMail issue_temp_code_to_mail: (required)
        :return: InlineResponse20051
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.issue_temp_code_to_mail_with_http_info(issue_temp_code_to_mail, **kwargs)  # noqa: E501
        else:
            (data) = self.issue_temp_code_to_mail_with_http_info(issue_temp_code_to_mail, **kwargs)  # noqa: E501
            return data

    def issue_temp_code_to_mail_with_http_info(self, issue_temp_code_to_mail, **kwargs):  # noqa: E501
        """issue_temp_code_to_mail  # noqa: E501

        Issues a temporary password code to be sent by mail.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.issue_temp_code_to_mail_with_http_info(issue_temp_code_to_mail, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param IssueTempCodeToMail issue_temp_code_to_mail: (required)
        :return: InlineResponse20051
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['issue_temp_code_to_mail']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method issue_temp_code_to_mail" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'issue_temp_code_to_mail' is set
        if self.api_client.client_side_validation and ('issue_temp_code_to_mail' not in params or
                                                       params['issue_temp_code_to_mail'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `issue_temp_code_to_mail` when calling `issue_temp_code_to_mail`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/users/reset_password.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20051',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def reset_token(self, reset_token, **kwargs):  # noqa: E501
        """reset_token  # noqa: E501

        Regenerate a user's authentication token.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.reset_token(reset_token, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param ResetToken reset_token: (required)
        :return: InlineResponse20047
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.reset_token_with_http_info(reset_token, **kwargs)  # noqa: E501
        else:
            (data) = self.reset_token_with_http_info(reset_token, **kwargs)  # noqa: E501
            return data

    def reset_token_with_http_info(self, reset_token, **kwargs):  # noqa: E501
        """reset_token  # noqa: E501

        Regenerate a user's authentication token.  Permissions: account_admin, member  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.reset_token_with_http_info(reset_token, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param ResetToken reset_token: (required)
        :return: InlineResponse20047
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['reset_token']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method reset_token" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'reset_token' is set
        if self.api_client.client_side_validation and ('reset_token' not in params or
                                                       params['reset_token'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `reset_token` when calling `reset_token`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/users/reset_token.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20047',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def reset_user_s3_keys(self, reset_user_s3_keys, **kwargs):  # noqa: E501
        """reset_user_s3_keys  # noqa: E501

        Reset a user's s3 access key and secret key.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.reset_user_s3_keys(reset_user_s3_keys, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param ResetUserS3Keys reset_user_s3_keys: (required)
        :return: InlineResponse20048
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.reset_user_s3_keys_with_http_info(reset_user_s3_keys, **kwargs)  # noqa: E501
        else:
            (data) = self.reset_user_s3_keys_with_http_info(reset_user_s3_keys, **kwargs)  # noqa: E501
            return data

    def reset_user_s3_keys_with_http_info(self, reset_user_s3_keys, **kwargs):  # noqa: E501
        """reset_user_s3_keys  # noqa: E501

        Reset a user's s3 access key and secret key.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.reset_user_s3_keys_with_http_info(reset_user_s3_keys, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param ResetUserS3Keys reset_user_s3_keys: (required)
        :return: InlineResponse20048
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['reset_user_s3_keys']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method reset_user_s3_keys" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'reset_user_s3_keys' is set
        if self.api_client.client_side_validation and ('reset_user_s3_keys' not in params or
                                                       params['reset_user_s3_keys'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `reset_user_s3_keys` when calling `reset_user_s3_keys`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/zios/users/reset_s3_secret.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20048',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def show_bandwidth_throughput_metering_for_user(self, subserver, service, id, **kwargs):  # noqa: E501
        """show_bandwidth_throughput_metering_for_user  # noqa: E501

        Shows bandwidth throughput (B/s) metering for a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.show_bandwidth_throughput_metering_for_user(subserver, service, id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str subserver: e.g. object (required)
        :param str service: e.g. proxy (required)
        :param str id: (required)
        :param int interval: The interval between data points, in seconds
        :param int count: The number of data points
        :return: InlineResponse20014
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.show_bandwidth_throughput_metering_for_user_with_http_info(subserver, service, id, **kwargs)  # noqa: E501
        else:
            (data) = self.show_bandwidth_throughput_metering_for_user_with_http_info(subserver, service, id, **kwargs)  # noqa: E501
            return data

    def show_bandwidth_throughput_metering_for_user_with_http_info(self, subserver, service, id, **kwargs):  # noqa: E501
        """show_bandwidth_throughput_metering_for_user  # noqa: E501

        Shows bandwidth throughput (B/s) metering for a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.show_bandwidth_throughput_metering_for_user_with_http_info(subserver, service, id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str subserver: e.g. object (required)
        :param str service: e.g. proxy (required)
        :param str id: (required)
        :param int interval: The interval between data points, in seconds
        :param int count: The number of data points
        :return: InlineResponse20014
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['subserver', 'service', 'id', 'interval', 'count']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method show_bandwidth_throughput_metering_for_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'subserver' is set
        if self.api_client.client_side_validation and ('subserver' not in params or
                                                       params['subserver'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `subserver` when calling `show_bandwidth_throughput_metering_for_user`")  # noqa: E501
        # verify the required parameter 'service' is set
        if self.api_client.client_side_validation and ('service' not in params or
                                                       params['service'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `service` when calling `show_bandwidth_throughput_metering_for_user`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `show_bandwidth_throughput_metering_for_user`")  # noqa: E501

        if self.api_client.client_side_validation and ('interval' in params and params['interval'] < 1):  # noqa: E501
            raise ValueError("Invalid value for parameter `interval` when calling `show_bandwidth_throughput_metering_for_user`, must be a value greater than or equal to `1`")  # noqa: E501
        if self.api_client.client_side_validation and ('count' in params and params['count'] < 1):  # noqa: E501
            raise ValueError("Invalid value for parameter `count` when calling `show_bandwidth_throughput_metering_for_user`, must be a value greater than or equal to `1`")  # noqa: E501
        collection_formats = {}

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

        query_params = []
        if 'interval' in params:
            query_params.append(('interval', params['interval']))  # noqa: E501
        if 'count' in params:
            query_params.append(('count', params['count']))  # noqa: E501
        if 'subserver' in params:
            query_params.append(('subserver', params['subserver']))  # noqa: E501
        if 'service' in params:
            query_params.append(('service', params['service']))  # 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', 'application/xml'])  # noqa: E501

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

        return self.api_client.call_api(
            '/zios/users/{id}/throughput.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20014',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def show_iops_metring_of_user(self, subserver, service, id, **kwargs):  # noqa: E501
        """show_iops_metring_of_user  # noqa: E501

        Shows IOPs metering for a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.show_iops_metring_of_user(subserver, service, id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str subserver: e.g. object (required)
        :param str service: e.g. proxy (required)
        :param str id: (required)
        :param int interval: The interval between data points, in seconds
        :param int count: The number of data points
        :return: InlineResponse20012
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.show_iops_metring_of_user_with_http_info(subserver, service, id, **kwargs)  # noqa: E501
        else:
            (data) = self.show_iops_metring_of_user_with_http_info(subserver, service, id, **kwargs)  # noqa: E501
            return data

    def show_iops_metring_of_user_with_http_info(self, subserver, service, id, **kwargs):  # noqa: E501
        """show_iops_metring_of_user  # noqa: E501

        Shows IOPs metering for a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.show_iops_metring_of_user_with_http_info(subserver, service, id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str subserver: e.g. object (required)
        :param str service: e.g. proxy (required)
        :param str id: (required)
        :param int interval: The interval between data points, in seconds
        :param int count: The number of data points
        :return: InlineResponse20012
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['subserver', 'service', 'id', 'interval', 'count']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method show_iops_metring_of_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'subserver' is set
        if self.api_client.client_side_validation and ('subserver' not in params or
                                                       params['subserver'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `subserver` when calling `show_iops_metring_of_user`")  # noqa: E501
        # verify the required parameter 'service' is set
        if self.api_client.client_side_validation and ('service' not in params or
                                                       params['service'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `service` when calling `show_iops_metring_of_user`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `show_iops_metring_of_user`")  # noqa: E501

        if self.api_client.client_side_validation and ('interval' in params and params['interval'] < 1):  # noqa: E501
            raise ValueError("Invalid value for parameter `interval` when calling `show_iops_metring_of_user`, must be a value greater than or equal to `1`")  # noqa: E501
        if self.api_client.client_side_validation and ('count' in params and params['count'] < 1):  # noqa: E501
            raise ValueError("Invalid value for parameter `count` when calling `show_iops_metring_of_user`, must be a value greater than or equal to `1`")  # noqa: E501
        collection_formats = {}

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

        query_params = []
        if 'interval' in params:
            query_params.append(('interval', params['interval']))  # noqa: E501
        if 'count' in params:
            query_params.append(('count', params['count']))  # noqa: E501
        if 'subserver' in params:
            query_params.append(('subserver', params['subserver']))  # noqa: E501
        if 'service' in params:
            query_params.append(('service', params['service']))  # 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', 'application/xml'])  # noqa: E501

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

        return self.api_client.call_api(
            '/zios/users/{id}/iops.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20012',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def show_latency_metering_of_user(self, subserver, service, id, **kwargs):  # noqa: E501
        """show_latency_metering_of_user  # noqa: E501

        Shows latency (ms) metering for a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.show_latency_metering_of_user(subserver, service, id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str subserver: e.g. object (required)
        :param str service: e.g. proxy (required)
        :param str id: (required)
        :param int interval: The interval between data points, in seconds
        :param int count: The number of data points
        :return: InlineResponse20013
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.show_latency_metering_of_user_with_http_info(subserver, service, id, **kwargs)  # noqa: E501
        else:
            (data) = self.show_latency_metering_of_user_with_http_info(subserver, service, id, **kwargs)  # noqa: E501
            return data

    def show_latency_metering_of_user_with_http_info(self, subserver, service, id, **kwargs):  # noqa: E501
        """show_latency_metering_of_user  # noqa: E501

        Shows latency (ms) metering for a user.  Permissions: account_admin  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.show_latency_metering_of_user_with_http_info(subserver, service, id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str subserver: e.g. object (required)
        :param str service: e.g. proxy (required)
        :param str id: (required)
        :param int interval: The interval between data points, in seconds
        :param int count: The number of data points
        :return: InlineResponse20013
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['subserver', 'service', 'id', 'interval', 'count']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method show_latency_metering_of_user" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'subserver' is set
        if self.api_client.client_side_validation and ('subserver' not in params or
                                                       params['subserver'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `subserver` when calling `show_latency_metering_of_user`")  # noqa: E501
        # verify the required parameter 'service' is set
        if self.api_client.client_side_validation and ('service' not in params or
                                                       params['service'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `service` when calling `show_latency_metering_of_user`")  # noqa: E501
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `show_latency_metering_of_user`")  # noqa: E501

        if self.api_client.client_side_validation and ('interval' in params and params['interval'] < 1):  # noqa: E501
            raise ValueError("Invalid value for parameter `interval` when calling `show_latency_metering_of_user`, must be a value greater than or equal to `1`")  # noqa: E501
        if self.api_client.client_side_validation and ('count' in params and params['count'] < 1):  # noqa: E501
            raise ValueError("Invalid value for parameter `count` when calling `show_latency_metering_of_user`, must be a value greater than or equal to `1`")  # noqa: E501
        collection_formats = {}

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

        query_params = []
        if 'interval' in params:
            query_params.append(('interval', params['interval']))  # noqa: E501
        if 'count' in params:
            query_params.append(('count', params['count']))  # noqa: E501
        if 'subserver' in params:
            query_params.append(('subserver', params['subserver']))  # noqa: E501
        if 'service' in params:
            query_params.append(('service', params['service']))  # 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', 'application/xml'])  # noqa: E501

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

        return self.api_client.call_api(
            '/zios/users/{id}/latency.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20013',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)
