# coding: utf-8

"""
    

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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


class UtilityApi(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 domains_source_domains_language_target_domains_language_get(self, source_domains_language, target_domains_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available domains in a bilingual dataset  # noqa: E501

        Returns a list of the available [domains](documentation/glossary?term=domain) for a given bilingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.domains_source_domains_language_target_domains_language_get(source_domains_language, target_domains_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_domains_language: IANA language code (required)
        :param str target_domains_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.domains_source_domains_language_target_domains_language_get_with_http_info(source_domains_language, target_domains_language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.domains_source_domains_language_target_domains_language_get_with_http_info(source_domains_language, target_domains_language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def domains_source_domains_language_target_domains_language_get_with_http_info(self, source_domains_language, target_domains_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available domains in a bilingual dataset  # noqa: E501

        Returns a list of the available [domains](documentation/glossary?term=domain) for a given bilingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.domains_source_domains_language_target_domains_language_get_with_http_info(source_domains_language, target_domains_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_domains_language: IANA language code (required)
        :param str target_domains_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/domains/{source_domains_language}/{target_domains_language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='UtilityLabels',  # 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 domains_source_language_get(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available domains in a monolingual dataset  # noqa: E501

        Returns a list of the available [domains](documentation/glossary?term=domain) for a given monolingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.domains_source_language_get(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.domains_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.domains_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def domains_source_language_get_with_http_info(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available domains in a monolingual dataset  # noqa: E501

        Returns a list of the available [domains](documentation/glossary?term=domain) for a given monolingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.domains_source_language_get_with_http_info(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/domains/{source_language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='UtilityLabels',  # 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 filters_endpoint_get(self, endpoint, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available filters for specific endpoint  # noqa: E501

        Returns a list of all the valid filters for a given endpoint to construct API calls.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.filters_endpoint_get(endpoint, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str endpoint: Name of the endpoint. (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: Filters
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.filters_endpoint_get_with_http_info(endpoint, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.filters_endpoint_get_with_http_info(endpoint, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def filters_endpoint_get_with_http_info(self, endpoint, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available filters for specific endpoint  # noqa: E501

        Returns a list of all the valid filters for a given endpoint to construct API calls.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.filters_endpoint_get_with_http_info(endpoint, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str endpoint: Name of the endpoint. (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: Filters
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/filters/{endpoint}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Filters',  # 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 filters_get(self, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available filters  # noqa: E501

        Returns a list of all the valid filters to construct API calls.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.filters_get(app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: Filters
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.filters_get_with_http_info(app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.filters_get_with_http_info(app_id, app_key, **kwargs)  # noqa: E501
            return data

    def filters_get_with_http_info(self, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available filters  # noqa: E501

        Returns a list of all the valid filters to construct API calls.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.filters_get_with_http_info(app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: Filters
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/filters', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Filters',  # 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 grammatical_features_source_language_get(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available grammatical features in a dataset  # noqa: E501

        Returns a list of the available [grammatical features](documentation/glossary?term=grammaticalfeatures) for a given language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.grammatical_features_source_language_get(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code. If provided output will be filtered by sourceLanguage. (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.grammatical_features_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.grammatical_features_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def grammatical_features_source_language_get_with_http_info(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available grammatical features in a dataset  # noqa: E501

        Returns a list of the available [grammatical features](documentation/glossary?term=grammaticalfeatures) for a given language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.grammatical_features_source_language_get_with_http_info(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code. If provided output will be filtered by sourceLanguage. (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/grammaticalFeatures/{source_language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='UtilityLabels',  # 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 languages_get(self, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available dictionaries  # noqa: E501

        Returns a list of monolingual and bilingual language datasets available in the API   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.languages_get(app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :param str source_language: IANA language code. If provided output will be filtered by sourceLanguage.
        :param str target_language: IANA language code. If provided output will be filtered by sourceLanguage.
        :return: Languages
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.languages_get_with_http_info(app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.languages_get_with_http_info(app_id, app_key, **kwargs)  # noqa: E501
            return data

    def languages_get_with_http_info(self, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available dictionaries  # noqa: E501

        Returns a list of monolingual and bilingual language datasets available in the API   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.languages_get_with_http_info(app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :param str source_language: IANA language code. If provided output will be filtered by sourceLanguage.
        :param str target_language: IANA language code. If provided output will be filtered by sourceLanguage.
        :return: Languages
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

        path_params = {}

        query_params = []
        if 'source_language' in params:
            query_params.append(('sourceLanguage', params['source_language']))  # noqa: E501
        if 'target_language' in params:
            query_params.append(('targetLanguage', params['target_language']))  # noqa: E501

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/languages', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Languages',  # 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 lexicalcategories_language_get(self, language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available lexical categories in a dataset  # noqa: E501

        Returns a list of available [lexical categories](documentation/glossary?term=lexicalcategory) for a given language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.lexicalcategories_language_get(language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.lexicalcategories_language_get_with_http_info(language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.lexicalcategories_language_get_with_http_info(language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def lexicalcategories_language_get_with_http_info(self, language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available lexical categories in a dataset  # noqa: E501

        Returns a list of available [lexical categories](documentation/glossary?term=lexicalcategory) for a given language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.lexicalcategories_language_get_with_http_info(language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/lexicalcategories/{language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='UtilityLabels',  # 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 regions_source_language_get(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available regions in a monolingual dataset  # noqa: E501

        Returns a list of the available [regions](documentation/glossary?term=regions) for a given monolingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.regions_source_language_get(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: Regions
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.regions_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.regions_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def regions_source_language_get_with_http_info(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available regions in a monolingual dataset  # noqa: E501

        Returns a list of the available [regions](documentation/glossary?term=regions) for a given monolingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.regions_source_language_get_with_http_info(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: Regions
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/regions/{source_language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='Regions',  # 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 registers_source_language_get(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available registers in a  monolingual dataset  # noqa: E501

        Returns a list of the available [registers](documentation/glossary?term=registers) for a given monolingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.registers_source_language_get(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.registers_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.registers_source_language_get_with_http_info(source_language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def registers_source_language_get_with_http_info(self, source_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available registers in a  monolingual dataset  # noqa: E501

        Returns a list of the available [registers](documentation/glossary?term=registers) for a given monolingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.registers_source_language_get_with_http_info(source_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/registers/{source_language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='UtilityLabels',  # 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 registers_source_register_language_target_register_language_get(self, source_register_language, target_register_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available registers in a bilingual dataset  # noqa: E501

        Returns a list of the available [registers](documentation/glossary?term=registers) for a given bilingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.registers_source_register_language_target_register_language_get(source_register_language, target_register_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_register_language: IANA language code (required)
        :param str target_register_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async'):
            return self.registers_source_register_language_target_register_language_get_with_http_info(source_register_language, target_register_language, app_id, app_key, **kwargs)  # noqa: E501
        else:
            (data) = self.registers_source_register_language_target_register_language_get_with_http_info(source_register_language, target_register_language, app_id, app_key, **kwargs)  # noqa: E501
            return data

    def registers_source_register_language_target_register_language_get_with_http_info(self, source_register_language, target_register_language, app_id, app_key, **kwargs):  # noqa: E501
        """Lists available registers in a bilingual dataset  # noqa: E501

        Returns a list of the available [registers](documentation/glossary?term=registers) for a given bilingual language dataset.   # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async=True
        >>> thread = api.registers_source_register_language_target_register_language_get_with_http_info(source_register_language, target_register_language, app_id, app_key, async=True)
        >>> result = thread.get()

        :param async bool
        :param str source_register_language: IANA language code (required)
        :param str target_register_language: IANA language code (required)
        :param str app_id: App ID Authentication Parameter (required)
        :param str app_key: App Key Authentication Parameter (required)
        :return: UtilityLabels
                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'app_id' in params:
            header_params['app_id'] = params['app_id']  # noqa: E501
        if 'app_key' in params:
            header_params['app_key'] = params['app_key']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # Authentication setting
        auth_settings = []  # noqa: E501

        return self.api_client.call_api(
            '/registers/{source_register_language}/{target_register_language}', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='UtilityLabels',  # 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)
