diff --git a/.invenio/.gitignore b/.invenio/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..ed8ebf583f771da9150c35db3955987b7d757904
--- /dev/null
+++ b/.invenio/.gitignore
@@ -0,0 +1 @@
+__pycache__
\ No newline at end of file
diff --git a/.invenio/api_analyse/__init__.py b/.invenio/api_analyse/__init__.py
deleted file mode 100644
index 7384e3f21e6dc5e7f1c76e86889ec52c5644269b..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-from __future__ import absolute_import
-
-# import apis into sdk package
-from api_analyse.api.analyse_endpoint_api import AnalyseEndpointApi
-from api_analyse.api.mdb_endpoint_api import MdbEndpointApi
-# import ApiClient
-from api_analyse.api_client import ApiClient
-from api_analyse.configuration import Configuration
-# import models into sdk package
-from api_analyse.models.analyse_determinepk_body import AnalyseDeterminepkBody
-from api_analyse.models.data_type_dto import DataTypeDto
-from api_analyse.models.determine_data_type_request_dto import DetermineDataTypeRequestDto
-from api_analyse.models.determine_data_type_response_dto import DetermineDataTypeResponseDto
-from api_analyse.models.determine_primary_key_dto import DeterminePrimaryKeyDto
-from api_analyse.models.error_dto import ErrorDto
-from api_analyse.models.update_column_dto import UpdateColumnDto
diff --git a/.invenio/api_analyse/__pycache__/__init__.cpython-36.pyc b/.invenio/api_analyse/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 3e65b009588ed41f1359b772b3b3fdcd5cf42278..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/__pycache__/api_client.cpython-36.pyc b/.invenio/api_analyse/__pycache__/api_client.cpython-36.pyc
deleted file mode 100644
index 49e8eba913aceb278555a44086b94e4e47ca2d0d..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/__pycache__/api_client.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/__pycache__/configuration.cpython-36.pyc b/.invenio/api_analyse/__pycache__/configuration.cpython-36.pyc
deleted file mode 100644
index a8febb7a25746fda15973b7786010b7e22b31f85..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/__pycache__/configuration.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/__pycache__/rest.cpython-36.pyc b/.invenio/api_analyse/__pycache__/rest.cpython-36.pyc
deleted file mode 100644
index f011b7442a9fdca3e83651f0d6d0696bb828462e..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/__pycache__/rest.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/api/__init__.py b/.invenio/api_analyse/api/__init__.py
deleted file mode 100644
index a69933e19a24eee546d58874a4e8e58c5dee4822..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/api/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_analyse.api.analyse_endpoint_api import AnalyseEndpointApi
-from api_analyse.api.mdb_endpoint_api import MdbEndpointApi
diff --git a/.invenio/api_analyse/api/__pycache__/__init__.cpython-36.pyc b/.invenio/api_analyse/api/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 3415a37c4a293bd8574321bf07435be43fa721e2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/api/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/api/__pycache__/analyse_endpoint_api.cpython-36.pyc b/.invenio/api_analyse/api/__pycache__/analyse_endpoint_api.cpython-36.pyc
deleted file mode 100644
index 4a7807e2149b34e473c5cb2da914739c90f98b11..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/api/__pycache__/analyse_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/api/__pycache__/mdb_endpoint_api.cpython-36.pyc b/.invenio/api_analyse/api/__pycache__/mdb_endpoint_api.cpython-36.pyc
deleted file mode 100644
index 3824088e200d62320edd94ff0931f3d5734d4462..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/api/__pycache__/mdb_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/api/analyse_endpoint_api.py b/.invenio/api_analyse/api/analyse_endpoint_api.py
deleted file mode 100644
index a7700e2699af256b78768d920307e2dd918b60f3..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/api/analyse_endpoint_api.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    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 api_analyse.api_client import ApiClient
-
-
-class AnalyseEndpointApi(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 api_analyse_determinedt_post(self, body, **kwargs):  # noqa: E501
-        """Determine datatypes  # noqa: E501
-
-        This is a simple API which returns the datatypes of a (path) csv file  # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.api_analyse_determinedt_post(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param DetermineDataTypeRequestDto body: (required)
-        :return: list[DetermineDataTypeResponseDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.api_analyse_determinedt_post_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.api_analyse_determinedt_post_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def api_analyse_determinedt_post_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Determine datatypes  # noqa: E501
-
-        This is a simple API which returns the datatypes of a (path) csv file  # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.api_analyse_determinedt_post_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param DetermineDataTypeRequestDto body: (required)
-        :return: list[DetermineDataTypeResponseDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body']  # 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 api_analyse_determinedt_post" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'body' is set
-        if ('body' not in params or
-                params['body'] is None):
-            raise ValueError("Missing the required parameter `body` when calling `api_analyse_determinedt_post`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if 'body' in params:
-            body_params = params['body']
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # HTTP header `Content-Type`
-        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/analyse/determinedt', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[DetermineDataTypeResponseDto]',  # 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 api_analyse_determinepk_post(self, body, **kwargs):  # noqa: E501
-        """Determine primary keys  # noqa: E501
-
-        This is a simple API which returns the primary keys + ranking of a (path) csv file  # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.api_analyse_determinepk_post(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param AnalyseDeterminepkBody body: (required)
-        :return: DeterminePrimaryKeyDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.api_analyse_determinepk_post_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.api_analyse_determinepk_post_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def api_analyse_determinepk_post_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Determine primary keys  # noqa: E501
-
-        This is a simple API which returns the primary keys + ranking of a (path) csv file  # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.api_analyse_determinepk_post_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param AnalyseDeterminepkBody body: (required)
-        :return: DeterminePrimaryKeyDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body']  # 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 api_analyse_determinepk_post" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'body' is set
-        if ('body' not in params or
-                params['body'] is None):
-            raise ValueError("Missing the required parameter `body` when calling `api_analyse_determinepk_post`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if 'body' in params:
-            body_params = params['body']
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # HTTP header `Content-Type`
-        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
-            ['application/json'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/analyse/determinepk', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='DeterminePrimaryKeyDto',  # 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)
diff --git a/.invenio/api_analyse/api/mdb_endpoint_api.py b/.invenio/api_analyse/api/mdb_endpoint_api.py
deleted file mode 100644
index df866e8a27b8f6bbde9e627553562e4485ba3072..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/api/mdb_endpoint_api.py
+++ /dev/null
@@ -1,132 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    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 api_analyse.api_client import ApiClient
-
-
-class MdbEndpointApi(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 api_analyse_update_mdb_col_post(self, body, **kwargs):  # noqa: E501
-        """Update entity mdb_columns from metadatabase  # noqa: E501
-
-        Updates entity mdb_columns and mdb_columns_num, mdb_columns_nom and mdb_columns_cat in metadatabase  # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.api_analyse_update_mdb_col_post(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UpdateColumnDto body: Updates entity mdb_columns attributes (datatype, ordinal_position, is_nullable) and automatically updates mdb_columns_nom (attribute max_length), mdb_columns_num (min, max, mean, sd, histogram) and mdb_columns_cat (num_cat, cat_array). The attribute 'histogram' describes a equi-width histogram with a fix number of 10 buckets. The last value in this numeric array is the width of one bucket. The attribute cat_array contains an array with the names of the categories. (required)
-        :return: UpdateColumnDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.api_analyse_update_mdb_col_post_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.api_analyse_update_mdb_col_post_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def api_analyse_update_mdb_col_post_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Update entity mdb_columns from metadatabase  # noqa: E501
-
-        Updates entity mdb_columns and mdb_columns_num, mdb_columns_nom and mdb_columns_cat in metadatabase  # noqa: E501
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.api_analyse_update_mdb_col_post_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UpdateColumnDto body: Updates entity mdb_columns attributes (datatype, ordinal_position, is_nullable) and automatically updates mdb_columns_nom (attribute max_length), mdb_columns_num (min, max, mean, sd, histogram) and mdb_columns_cat (num_cat, cat_array). The attribute 'histogram' describes a equi-width histogram with a fix number of 10 buckets. The last value in this numeric array is the width of one bucket. The attribute cat_array contains an array with the names of the categories. (required)
-        :return: UpdateColumnDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body']  # 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 api_analyse_update_mdb_col_post" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'body' is set
-        if ('body' not in params or
-                params['body'] is None):
-            raise ValueError("Missing the required parameter `body` when calling `api_analyse_update_mdb_col_post`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if 'body' in params:
-            body_params = params['body']
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # HTTP header `Content-Type`
-        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/analyse/update_mdb_col', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UpdateColumnDto',  # 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)
diff --git a/.invenio/api_analyse/api_client.py b/.invenio/api_analyse/api_client.py
deleted file mode 100644
index 6ce1186c083756c0e5bdf9ff8fd52fbe11cef1cc..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-from __future__ import absolute_import
-
-import datetime
-import json
-import mimetypes
-from multiprocessing.pool import ThreadPool
-import os
-import re
-import tempfile
-
-# python 2 and python 3 compatibility library
-import six
-from six.moves.urllib.parse import quote
-
-from api_analyse.configuration import Configuration
-import api_analyse.models
-from api_analyse import rest
-
-
-class ApiClient(object):
-    """Generic API client for Swagger client library builds.
-
-    Swagger generic API client. This client handles the client-
-    server communication, and is invariant across implementations. Specifics of
-    the methods and models for each application are generated from the Swagger
-    templates.
-
-    NOTE: This class is auto generated by the swagger code generator program.
-    Ref: https://github.com/swagger-api/swagger-codegen
-    Do not edit the class manually.
-
-    :param configuration: .Configuration object for this client
-    :param header_name: a header to pass when making calls to the API.
-    :param header_value: a header value to pass when making calls to
-        the API.
-    :param cookie: a cookie to include in the header when making calls
-        to the API
-    """
-
-    PRIMITIVE_TYPES = (float, bool, bytes, six.text_type) + six.integer_types
-    NATIVE_TYPES_MAPPING = {
-        'int': int,
-        'long': int if six.PY3 else long,  # noqa: F821
-        'float': float,
-        'str': str,
-        'bool': bool,
-        'date': datetime.date,
-        'datetime': datetime.datetime,
-        'object': object,
-    }
-
-    def __init__(self, configuration=None, header_name=None, header_value=None,
-                 cookie=None):
-        if configuration is None:
-            configuration = Configuration()
-        self.configuration = configuration
-
-        self.pool = ThreadPool()
-        self.rest_client = rest.RESTClientObject(configuration)
-        self.default_headers = {}
-        if header_name is not None:
-            self.default_headers[header_name] = header_value
-        self.cookie = cookie
-        # Set default User-Agent.
-        self.user_agent = 'Swagger-Codegen/1.0.0/python'
-
-    def __del__(self):
-        self.pool.close()
-        self.pool.join()
-
-    @property
-    def user_agent(self):
-        """User agent for this API client"""
-        return self.default_headers['User-Agent']
-
-    @user_agent.setter
-    def user_agent(self, value):
-        self.default_headers['User-Agent'] = value
-
-    def set_default_header(self, header_name, header_value):
-        self.default_headers[header_name] = header_value
-
-    def __call_api(
-            self, resource_path, method, path_params=None,
-            query_params=None, header_params=None, body=None, post_params=None,
-            files=None, response_type=None, auth_settings=None,
-            _return_http_data_only=None, collection_formats=None,
-            _preload_content=True, _request_timeout=None):
-
-        config = self.configuration
-
-        # header parameters
-        header_params = header_params or {}
-        header_params.update(self.default_headers)
-        if self.cookie:
-            header_params['Cookie'] = self.cookie
-        if header_params:
-            header_params = self.sanitize_for_serialization(header_params)
-            header_params = dict(self.parameters_to_tuples(header_params,
-                                                           collection_formats))
-
-        # path parameters
-        if path_params:
-            path_params = self.sanitize_for_serialization(path_params)
-            path_params = self.parameters_to_tuples(path_params,
-                                                    collection_formats)
-            for k, v in path_params:
-                # specified safe chars, encode everything
-                resource_path = resource_path.replace(
-                    '{%s}' % k,
-                    quote(str(v), safe=config.safe_chars_for_path_param)
-                )
-
-        # query parameters
-        if query_params:
-            query_params = self.sanitize_for_serialization(query_params)
-            query_params = self.parameters_to_tuples(query_params,
-                                                     collection_formats)
-
-        # post parameters
-        if post_params or files:
-            post_params = self.prepare_post_parameters(post_params, files)
-            post_params = self.sanitize_for_serialization(post_params)
-            post_params = self.parameters_to_tuples(post_params,
-                                                    collection_formats)
-
-        # auth setting
-        self.update_params_for_auth(header_params, query_params, auth_settings)
-
-        # body
-        if body:
-            body = self.sanitize_for_serialization(body)
-
-        # request url
-        url = self.configuration.host + resource_path
-
-        # perform request and return response
-        response_data = self.request(
-            method, url, query_params=query_params, headers=header_params,
-            post_params=post_params, body=body,
-            _preload_content=_preload_content,
-            _request_timeout=_request_timeout)
-
-        self.last_response = response_data
-
-        return_data = response_data
-        if _preload_content:
-            # deserialize response data
-            if response_type:
-                return_data = self.deserialize(response_data, response_type)
-            else:
-                return_data = None
-
-        if _return_http_data_only:
-            return (return_data)
-        else:
-            return (return_data, response_data.status,
-                    response_data.getheaders())
-
-    def sanitize_for_serialization(self, obj):
-        """Builds a JSON POST object.
-
-        If obj is None, return None.
-        If obj is str, int, long, float, bool, return directly.
-        If obj is datetime.datetime, datetime.date
-            convert to string in iso8601 format.
-        If obj is list, sanitize each element in the list.
-        If obj is dict, return the dict.
-        If obj is swagger model, return the properties dict.
-
-        :param obj: The data to serialize.
-        :return: The serialized form of data.
-        """
-        if obj is None:
-            return None
-        elif isinstance(obj, self.PRIMITIVE_TYPES):
-            return obj
-        elif isinstance(obj, list):
-            return [self.sanitize_for_serialization(sub_obj)
-                    for sub_obj in obj]
-        elif isinstance(obj, tuple):
-            return tuple(self.sanitize_for_serialization(sub_obj)
-                         for sub_obj in obj)
-        elif isinstance(obj, (datetime.datetime, datetime.date)):
-            return obj.isoformat()
-
-        if isinstance(obj, dict):
-            obj_dict = obj
-        else:
-            # Convert model obj to dict except
-            # attributes `swagger_types`, `attribute_map`
-            # and attributes which value is not None.
-            # Convert attribute name to json key in
-            # model definition for request.
-            obj_dict = {obj.attribute_map[attr]: getattr(obj, attr)
-                        for attr, _ in six.iteritems(obj.swagger_types)
-                        if getattr(obj, attr) is not None}
-
-        return {key: self.sanitize_for_serialization(val)
-                for key, val in six.iteritems(obj_dict)}
-
-    def deserialize(self, response, response_type):
-        """Deserializes response into an object.
-
-        :param response: RESTResponse object to be deserialized.
-        :param response_type: class literal for
-            deserialized object, or string of class name.
-
-        :return: deserialized object.
-        """
-        # handle file downloading
-        # save response body into a tmp file and return the instance
-        if response_type == "file":
-            return self.__deserialize_file(response)
-
-        # fetch data from response object
-        try:
-            data = json.loads(response.data)
-        except ValueError:
-            data = response.data
-
-        return self.__deserialize(data, response_type)
-
-    def __deserialize(self, data, klass):
-        """Deserializes dict, list, str into an object.
-
-        :param data: dict, list or str.
-        :param klass: class literal, or string of class name.
-
-        :return: object.
-        """
-        if data is None:
-            return None
-
-        if type(klass) == str:
-            if klass.startswith('list['):
-                sub_kls = re.match(r'list\[(.*)\]', klass).group(1)
-                return [self.__deserialize(sub_data, sub_kls)
-                        for sub_data in data]
-
-            if klass.startswith('dict('):
-                sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2)
-                return {k: self.__deserialize(v, sub_kls)
-                        for k, v in six.iteritems(data)}
-
-            # convert str to class
-            if klass in self.NATIVE_TYPES_MAPPING:
-                klass = self.NATIVE_TYPES_MAPPING[klass]
-            else:
-                klass = getattr(api_analyse.models, klass)
-
-        if klass in self.PRIMITIVE_TYPES:
-            return self.__deserialize_primitive(data, klass)
-        elif klass == object:
-            return self.__deserialize_object(data)
-        elif klass == datetime.date:
-            return self.__deserialize_date(data)
-        elif klass == datetime.datetime:
-            return self.__deserialize_datatime(data)
-        else:
-            return self.__deserialize_model(data, klass)
-
-    def call_api(self, resource_path, method,
-                 path_params=None, query_params=None, header_params=None,
-                 body=None, post_params=None, files=None,
-                 response_type=None, auth_settings=None, async_req=None,
-                 _return_http_data_only=None, collection_formats=None,
-                 _preload_content=True, _request_timeout=None):
-        """Makes the HTTP request (synchronous) and returns deserialized data.
-
-        To make an async request, set the async_req parameter.
-
-        :param resource_path: Path to method endpoint.
-        :param method: Method to call.
-        :param path_params: Path parameters in the url.
-        :param query_params: Query parameters in the url.
-        :param header_params: Header parameters to be
-            placed in the request header.
-        :param body: Request body.
-        :param post_params dict: Request post form parameters,
-            for `application/x-www-form-urlencoded`, `multipart/form-data`.
-        :param auth_settings list: Auth Settings names for the request.
-        :param response: Response data type.
-        :param files dict: key -> filename, value -> filepath,
-            for `multipart/form-data`.
-        :param async_req bool: execute request asynchronously
-        :param _return_http_data_only: response data without head status code
-                                       and headers
-        :param collection_formats: dict of collection formats for path, query,
-            header, and post parameters.
-        :param _preload_content: if False, the urllib3.HTTPResponse object will
-                                 be returned without reading/decoding response
-                                 data. Default is True.
-        :param _request_timeout: timeout setting for this request. If one
-                                 number provided, it will be total request
-                                 timeout. It can also be a pair (tuple) of
-                                 (connection, read) timeouts.
-        :return:
-            If async_req parameter is True,
-            the request will be called asynchronously.
-            The method will return the request thread.
-            If parameter async_req is False or missing,
-            then the method will return the response directly.
-        """
-        if not async_req:
-            return self.__call_api(resource_path, method,
-                                   path_params, query_params, header_params,
-                                   body, post_params, files,
-                                   response_type, auth_settings,
-                                   _return_http_data_only, collection_formats,
-                                   _preload_content, _request_timeout)
-        else:
-            thread = self.pool.apply_async(self.__call_api, (resource_path,
-                                           method, path_params, query_params,
-                                           header_params, body,
-                                           post_params, files,
-                                           response_type, auth_settings,
-                                           _return_http_data_only,
-                                           collection_formats,
-                                           _preload_content, _request_timeout))
-        return thread
-
-    def request(self, method, url, query_params=None, headers=None,
-                post_params=None, body=None, _preload_content=True,
-                _request_timeout=None):
-        """Makes the HTTP request using RESTClient."""
-        if method == "GET":
-            return self.rest_client.GET(url,
-                                        query_params=query_params,
-                                        _preload_content=_preload_content,
-                                        _request_timeout=_request_timeout,
-                                        headers=headers)
-        elif method == "HEAD":
-            return self.rest_client.HEAD(url,
-                                         query_params=query_params,
-                                         _preload_content=_preload_content,
-                                         _request_timeout=_request_timeout,
-                                         headers=headers)
-        elif method == "OPTIONS":
-            return self.rest_client.OPTIONS(url,
-                                            query_params=query_params,
-                                            headers=headers,
-                                            post_params=post_params,
-                                            _preload_content=_preload_content,
-                                            _request_timeout=_request_timeout,
-                                            body=body)
-        elif method == "POST":
-            return self.rest_client.POST(url,
-                                         query_params=query_params,
-                                         headers=headers,
-                                         post_params=post_params,
-                                         _preload_content=_preload_content,
-                                         _request_timeout=_request_timeout,
-                                         body=body)
-        elif method == "PUT":
-            return self.rest_client.PUT(url,
-                                        query_params=query_params,
-                                        headers=headers,
-                                        post_params=post_params,
-                                        _preload_content=_preload_content,
-                                        _request_timeout=_request_timeout,
-                                        body=body)
-        elif method == "PATCH":
-            return self.rest_client.PATCH(url,
-                                          query_params=query_params,
-                                          headers=headers,
-                                          post_params=post_params,
-                                          _preload_content=_preload_content,
-                                          _request_timeout=_request_timeout,
-                                          body=body)
-        elif method == "DELETE":
-            return self.rest_client.DELETE(url,
-                                           query_params=query_params,
-                                           headers=headers,
-                                           _preload_content=_preload_content,
-                                           _request_timeout=_request_timeout,
-                                           body=body)
-        else:
-            raise ValueError(
-                "http method must be `GET`, `HEAD`, `OPTIONS`,"
-                " `POST`, `PATCH`, `PUT` or `DELETE`."
-            )
-
-    def parameters_to_tuples(self, params, collection_formats):
-        """Get parameters as list of tuples, formatting collections.
-
-        :param params: Parameters as dict or list of two-tuples
-        :param dict collection_formats: Parameter collection formats
-        :return: Parameters as list of tuples, collections formatted
-        """
-        new_params = []
-        if collection_formats is None:
-            collection_formats = {}
-        for k, v in six.iteritems(params) if isinstance(params, dict) else params:  # noqa: E501
-            if k in collection_formats:
-                collection_format = collection_formats[k]
-                if collection_format == 'multi':
-                    new_params.extend((k, value) for value in v)
-                else:
-                    if collection_format == 'ssv':
-                        delimiter = ' '
-                    elif collection_format == 'tsv':
-                        delimiter = '\t'
-                    elif collection_format == 'pipes':
-                        delimiter = '|'
-                    else:  # csv is the default
-                        delimiter = ','
-                    new_params.append(
-                        (k, delimiter.join(str(value) for value in v)))
-            else:
-                new_params.append((k, v))
-        return new_params
-
-    def prepare_post_parameters(self, post_params=None, files=None):
-        """Builds form parameters.
-
-        :param post_params: Normal form parameters.
-        :param files: File parameters.
-        :return: Form parameters with files.
-        """
-        params = []
-
-        if post_params:
-            params = post_params
-
-        if files:
-            for k, v in six.iteritems(files):
-                if not v:
-                    continue
-                file_names = v if type(v) is list else [v]
-                for n in file_names:
-                    with open(n, 'rb') as f:
-                        filename = os.path.basename(f.name)
-                        filedata = f.read()
-                        mimetype = (mimetypes.guess_type(filename)[0] or
-                                    'application/octet-stream')
-                        params.append(
-                            tuple([k, tuple([filename, filedata, mimetype])]))
-
-        return params
-
-    def select_header_accept(self, accepts):
-        """Returns `Accept` based on an array of accepts provided.
-
-        :param accepts: List of headers.
-        :return: Accept (e.g. application/json).
-        """
-        if not accepts:
-            return
-
-        accepts = [x.lower() for x in accepts]
-
-        if 'application/json' in accepts:
-            return 'application/json'
-        else:
-            return ', '.join(accepts)
-
-    def select_header_content_type(self, content_types):
-        """Returns `Content-Type` based on an array of content_types provided.
-
-        :param content_types: List of content-types.
-        :return: Content-Type (e.g. application/json).
-        """
-        if not content_types:
-            return 'application/json'
-
-        content_types = [x.lower() for x in content_types]
-
-        if 'application/json' in content_types or '*/*' in content_types:
-            return 'application/json'
-        else:
-            return content_types[0]
-
-    def update_params_for_auth(self, headers, querys, auth_settings):
-        """Updates header and query params based on authentication setting.
-
-        :param headers: Header parameters dict to be updated.
-        :param querys: Query parameters tuple list to be updated.
-        :param auth_settings: Authentication setting identifiers list.
-        """
-        if not auth_settings:
-            return
-
-        for auth in auth_settings:
-            auth_setting = self.configuration.auth_settings().get(auth)
-            if auth_setting:
-                if not auth_setting['value']:
-                    continue
-                elif auth_setting['in'] == 'header':
-                    headers[auth_setting['key']] = auth_setting['value']
-                elif auth_setting['in'] == 'query':
-                    querys.append((auth_setting['key'], auth_setting['value']))
-                else:
-                    raise ValueError(
-                        'Authentication token must be in `query` or `header`'
-                    )
-
-    def __deserialize_file(self, response):
-        """Deserializes body to file
-
-        Saves response body into a file in a temporary folder,
-        using the filename from the `Content-Disposition` header if provided.
-
-        :param response:  RESTResponse.
-        :return: file path.
-        """
-        fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
-        os.close(fd)
-        os.remove(path)
-
-        content_disposition = response.getheader("Content-Disposition")
-        if content_disposition:
-            filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?',
-                                 content_disposition).group(1)
-            path = os.path.join(os.path.dirname(path), filename)
-            response_data = response.data
-            with open(path, "wb") as f:
-                if isinstance(response_data, str):
-                    # change str to bytes so we can write it
-                    response_data = response_data.encode('utf-8')
-                    f.write(response_data)
-                else:
-                    f.write(response_data)
-        return path
-
-    def __deserialize_primitive(self, data, klass):
-        """Deserializes string to primitive type.
-
-        :param data: str.
-        :param klass: class literal.
-
-        :return: int, long, float, str, bool.
-        """
-        try:
-            return klass(data)
-        except UnicodeEncodeError:
-            return six.text_type(data)
-        except TypeError:
-            return data
-
-    def __deserialize_object(self, value):
-        """Return a original value.
-
-        :return: object.
-        """
-        return value
-
-    def __deserialize_date(self, string):
-        """Deserializes string to date.
-
-        :param string: str.
-        :return: date.
-        """
-        try:
-            from dateutil.parser import parse
-            return parse(string).date()
-        except ImportError:
-            return string
-        except ValueError:
-            raise rest.ApiException(
-                status=0,
-                reason="Failed to parse `{0}` as date object".format(string)
-            )
-
-    def __deserialize_datatime(self, string):
-        """Deserializes string to datetime.
-
-        The string should be in iso8601 datetime format.
-
-        :param string: str.
-        :return: datetime.
-        """
-        try:
-            from dateutil.parser import parse
-            return parse(string)
-        except ImportError:
-            return string
-        except ValueError:
-            raise rest.ApiException(
-                status=0,
-                reason=(
-                    "Failed to parse `{0}` as datetime object"
-                    .format(string)
-                )
-            )
-
-    def __hasattr(self, object, name):
-            return name in object.__class__.__dict__
-
-    def __deserialize_model(self, data, klass):
-        """Deserializes list or dict to model.
-
-        :param data: dict, list.
-        :param klass: class literal.
-        :return: model object.
-        """
-
-        if not klass.swagger_types and not self.__hasattr(klass, 'get_real_child_model'):
-            return data
-
-        kwargs = {}
-        if klass.swagger_types is not None:
-            for attr, attr_type in six.iteritems(klass.swagger_types):
-                if (data is not None and
-                        klass.attribute_map[attr] in data and
-                        isinstance(data, (list, dict))):
-                    value = data[klass.attribute_map[attr]]
-                    kwargs[attr] = self.__deserialize(value, attr_type)
-
-        instance = klass(**kwargs)
-
-        if (isinstance(instance, dict) and
-                klass.swagger_types is not None and
-                isinstance(data, dict)):
-            for key, value in data.items():
-                if key not in klass.swagger_types:
-                    instance[key] = value
-        if self.__hasattr(instance, 'get_real_child_model'):
-            klass_name = instance.get_real_child_model(data)
-            if klass_name:
-                instance = self.__deserialize(data, klass_name)
-        return instance
diff --git a/.invenio/api_analyse/configuration.py b/.invenio/api_analyse/configuration.py
deleted file mode 100644
index e6935e12c374ee1f56ba172b75813c108812cf05..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-from __future__ import absolute_import
-
-import copy
-import logging
-import multiprocessing
-import sys
-import urllib3
-
-import six
-from six.moves import http_client as httplib
-
-
-class TypeWithDefault(type):
-    def __init__(cls, name, bases, dct):
-        super(TypeWithDefault, cls).__init__(name, bases, dct)
-        cls._default = None
-
-    def __call__(cls):
-        if cls._default is None:
-            cls._default = type.__call__(cls)
-        return copy.copy(cls._default)
-
-    def set_default(cls, default):
-        cls._default = copy.copy(default)
-
-
-class Configuration(six.with_metaclass(TypeWithDefault, object)):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Ref: https://github.com/swagger-api/swagger-codegen
-    Do not edit the class manually.
-    """
-
-    def __init__(self):
-        """Constructor"""
-        # Default Base url
-        self.host = "https://virtserver.swaggerhub.com/mweise/dbrepo-debug/1.1.0-alpha"
-        # Temp file folder for downloading files
-        self.temp_folder_path = None
-
-        # Authentication Settings
-        # dict to store API key(s)
-        self.api_key = {}
-        # dict to store API prefix (e.g. Bearer)
-        self.api_key_prefix = {}
-        # function to refresh API key if expired
-        self.refresh_api_key_hook = None
-        # Username for HTTP basic authentication
-        self.username = ""
-        # Password for HTTP basic authentication
-        self.password = ""
-        # Logging Settings
-        self.logger = {}
-        self.logger["package_logger"] = logging.getLogger("api_analyse")
-        self.logger["urllib3_logger"] = logging.getLogger("urllib3")
-        # Log format
-        self.logger_format = '%(asctime)s %(levelname)s %(message)s'
-        # Log stream handler
-        self.logger_stream_handler = None
-        # Log file handler
-        self.logger_file_handler = None
-        # Debug file location
-        self.logger_file = None
-        # Debug switch
-        self.debug = False
-
-        # SSL/TLS verification
-        # Set this to false to skip verifying SSL certificate when calling API
-        # from https server.
-        self.verify_ssl = True
-        # Set this to customize the certificate file to verify the peer.
-        self.ssl_ca_cert = None
-        # client certificate file
-        self.cert_file = None
-        # client key file
-        self.key_file = None
-        # Set this to True/False to enable/disable SSL hostname verification.
-        self.assert_hostname = None
-
-        # urllib3 connection pool's maximum number of connections saved
-        # per pool. urllib3 uses 1 connection as default value, but this is
-        # not the best value when you are making a lot of possibly parallel
-        # requests to the same host, which is often the case here.
-        # cpu_count * 5 is used as default value to increase performance.
-        self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
-
-        # Proxy URL
-        self.proxy = None
-        # Safe chars for path_param
-        self.safe_chars_for_path_param = ''
-
-    @property
-    def logger_file(self):
-        """The logger file.
-
-        If the logger_file is None, then add stream handler and remove file
-        handler. Otherwise, add file handler and remove stream handler.
-
-        :param value: The logger_file path.
-        :type: str
-        """
-        return self.__logger_file
-
-    @logger_file.setter
-    def logger_file(self, value):
-        """The logger file.
-
-        If the logger_file is None, then add stream handler and remove file
-        handler. Otherwise, add file handler and remove stream handler.
-
-        :param value: The logger_file path.
-        :type: str
-        """
-        self.__logger_file = value
-        if self.__logger_file:
-            # If set logging file,
-            # then add file handler and remove stream handler.
-            self.logger_file_handler = logging.FileHandler(self.__logger_file)
-            self.logger_file_handler.setFormatter(self.logger_formatter)
-            for _, logger in six.iteritems(self.logger):
-                logger.addHandler(self.logger_file_handler)
-                if self.logger_stream_handler:
-                    logger.removeHandler(self.logger_stream_handler)
-        else:
-            # If not set logging file,
-            # then add stream handler and remove file handler.
-            self.logger_stream_handler = logging.StreamHandler()
-            self.logger_stream_handler.setFormatter(self.logger_formatter)
-            for _, logger in six.iteritems(self.logger):
-                logger.addHandler(self.logger_stream_handler)
-                if self.logger_file_handler:
-                    logger.removeHandler(self.logger_file_handler)
-
-    @property
-    def debug(self):
-        """Debug status
-
-        :param value: The debug status, True or False.
-        :type: bool
-        """
-        return self.__debug
-
-    @debug.setter
-    def debug(self, value):
-        """Debug status
-
-        :param value: The debug status, True or False.
-        :type: bool
-        """
-        self.__debug = value
-        if self.__debug:
-            # if debug status is True, turn on debug logging
-            for _, logger in six.iteritems(self.logger):
-                logger.setLevel(logging.DEBUG)
-            # turn on httplib debug
-            httplib.HTTPConnection.debuglevel = 1
-        else:
-            # if debug status is False, turn off debug logging,
-            # setting log level to default `logging.WARNING`
-            for _, logger in six.iteritems(self.logger):
-                logger.setLevel(logging.WARNING)
-            # turn off httplib debug
-            httplib.HTTPConnection.debuglevel = 0
-
-    @property
-    def logger_format(self):
-        """The logger format.
-
-        The logger_formatter will be updated when sets logger_format.
-
-        :param value: The format string.
-        :type: str
-        """
-        return self.__logger_format
-
-    @logger_format.setter
-    def logger_format(self, value):
-        """The logger format.
-
-        The logger_formatter will be updated when sets logger_format.
-
-        :param value: The format string.
-        :type: str
-        """
-        self.__logger_format = value
-        self.logger_formatter = logging.Formatter(self.__logger_format)
-
-    def get_api_key_with_prefix(self, identifier):
-        """Gets API key (with prefix if set).
-
-        :param identifier: The identifier of apiKey.
-        :return: The token for api key authentication.
-        """
-        if self.refresh_api_key_hook:
-            self.refresh_api_key_hook(self)
-
-        key = self.api_key.get(identifier)
-        if key:
-            prefix = self.api_key_prefix.get(identifier)
-            if prefix:
-                return "%s %s" % (prefix, key)
-            else:
-                return key
-
-    def get_basic_auth_token(self):
-        """Gets HTTP basic authentication header (string).
-
-        :return: The token for basic HTTP authentication.
-        """
-        return urllib3.util.make_headers(
-            basic_auth=self.username + ':' + self.password
-        ).get('authorization')
-
-    def auth_settings(self):
-        """Gets Auth Settings dict for api client.
-
-        :return: The Auth Settings information dict.
-        """
-        return {
-        }
-
-    def to_debug_report(self):
-        """Gets the essential information for debugging.
-
-        :return: The report for debugging.
-        """
-        return "Python SDK Debug Report:\n"\
-               "OS: {env}\n"\
-               "Python Version: {pyversion}\n"\
-               "Version of the API: 1.1.0-alpha\n"\
-               "SDK Package Version: 1.0.0".\
-               format(env=sys.platform, pyversion=sys.version)
diff --git a/.invenio/api_analyse/models/__init__.py b/.invenio/api_analyse/models/__init__.py
deleted file mode 100644
index 78953e7f5a00b254e20f3f39e3d47fff2246dd23..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/__init__.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-from __future__ import absolute_import
-
-# import models into model package
-from api_analyse.models.analyse_determinepk_body import AnalyseDeterminepkBody
-from api_analyse.models.data_type_dto import DataTypeDto
-from api_analyse.models.determine_data_type_request_dto import DetermineDataTypeRequestDto
-from api_analyse.models.determine_data_type_response_dto import DetermineDataTypeResponseDto
-from api_analyse.models.determine_primary_key_dto import DeterminePrimaryKeyDto
-from api_analyse.models.error_dto import ErrorDto
-from api_analyse.models.update_column_dto import UpdateColumnDto
diff --git a/.invenio/api_analyse/models/__pycache__/__init__.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 0c46d3b3c296e2529109ca7ee6f14e733f5c0b70..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/analyse_determinepk_body.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/analyse_determinepk_body.cpython-36.pyc
deleted file mode 100644
index 3876ff5324846828ce19973b415524da7255f95e..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/analyse_determinepk_body.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/data_type_dto.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/data_type_dto.cpython-36.pyc
deleted file mode 100644
index 698602c93509943cef952f966ab1db96ca8dfe4e..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/data_type_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/determine_data_type_request_dto.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/determine_data_type_request_dto.cpython-36.pyc
deleted file mode 100644
index 4a11a7da0fcd3fa79ac477abfff5c9e29fab93f2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/determine_data_type_request_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/determine_data_type_response_dto.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/determine_data_type_response_dto.cpython-36.pyc
deleted file mode 100644
index 56062176892d47958878443010673017e5c8943c..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/determine_data_type_response_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/determine_primary_key_dto.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/determine_primary_key_dto.cpython-36.pyc
deleted file mode 100644
index 895a60edf2b731dcc200080b900e59483dbd516a..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/determine_primary_key_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/error_dto.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/error_dto.cpython-36.pyc
deleted file mode 100644
index 0a51e537dfe4d600148ca7540529708ba6944312..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/error_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/__pycache__/update_column_dto.cpython-36.pyc b/.invenio/api_analyse/models/__pycache__/update_column_dto.cpython-36.pyc
deleted file mode 100644
index ed1411bbb38298fd482506e639c03ad0f473ebae..0000000000000000000000000000000000000000
Binary files a/.invenio/api_analyse/models/__pycache__/update_column_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_analyse/models/analyse_determinedt_body.py b/.invenio/api_analyse/models/analyse_determinedt_body.py
deleted file mode 100644
index e34fed775293474d42c6f44b59d2ad1c7a2db413..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/analyse_determinedt_body.py
+++ /dev/null
@@ -1,188 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class AnalyseDeterminedtBody(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'filepath': 'str',
-        'enum': 'bool',
-        'enum_tol': 'object',
-        'separator': 'str'
-    }
-
-    attribute_map = {
-        'filepath': 'filepath',
-        'enum': 'enum',
-        'enum_tol': 'enum_tol',
-        'separator': 'separator'
-    }
-
-    def __init__(self, filepath=None, enum=None, enum_tol=None, separator=None):  # noqa: E501
-        """AnalyseDeterminedtBody - a model defined in Swagger"""  # noqa: E501
-        self._filepath = None
-        self._enum = None
-        self._enum_tol = None
-        self._separator = None
-        self.discriminator = None
-        if filepath is not None:
-            self.filepath = filepath
-        if enum is not None:
-            self.enum = enum
-        if enum_tol is not None:
-            self.enum_tol = enum_tol
-        if separator is not None:
-            self.separator = separator
-
-    @property
-    def filepath(self):
-        """Gets the filepath of this AnalyseDeterminedtBody.  # noqa: E501
-
-
-        :return: The filepath of this AnalyseDeterminedtBody.  # noqa: E501
-        :rtype: str
-        """
-        return self._filepath
-
-    @filepath.setter
-    def filepath(self, filepath):
-        """Sets the filepath of this AnalyseDeterminedtBody.
-
-
-        :param filepath: The filepath of this AnalyseDeterminedtBody.  # noqa: E501
-        :type: str
-        """
-
-        self._filepath = filepath
-
-    @property
-    def enum(self):
-        """Gets the enum of this AnalyseDeterminedtBody.  # noqa: E501
-
-
-        :return: The enum of this AnalyseDeterminedtBody.  # noqa: E501
-        :rtype: bool
-        """
-        return self._enum
-
-    @enum.setter
-    def enum(self, enum):
-        """Sets the enum of this AnalyseDeterminedtBody.
-
-
-        :param enum: The enum of this AnalyseDeterminedtBody.  # noqa: E501
-        :type: bool
-        """
-
-        self._enum = enum
-
-    @property
-    def enum_tol(self):
-        """Gets the enum_tol of this AnalyseDeterminedtBody.  # noqa: E501
-
-
-        :return: The enum_tol of this AnalyseDeterminedtBody.  # noqa: E501
-        :rtype: object
-        """
-        return self._enum_tol
-
-    @enum_tol.setter
-    def enum_tol(self, enum_tol):
-        """Sets the enum_tol of this AnalyseDeterminedtBody.
-
-
-        :param enum_tol: The enum_tol of this AnalyseDeterminedtBody.  # noqa: E501
-        :type: object
-        """
-
-        self._enum_tol = enum_tol
-
-    @property
-    def separator(self):
-        """Gets the separator of this AnalyseDeterminedtBody.  # noqa: E501
-
-
-        :return: The separator of this AnalyseDeterminedtBody.  # noqa: E501
-        :rtype: str
-        """
-        return self._separator
-
-    @separator.setter
-    def separator(self, separator):
-        """Sets the separator of this AnalyseDeterminedtBody.
-
-
-        :param separator: The separator of this AnalyseDeterminedtBody.  # noqa: E501
-        :type: str
-        """
-
-        self._separator = separator
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(AnalyseDeterminedtBody, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, AnalyseDeterminedtBody):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/analyse_determinepk_body.py b/.invenio/api_analyse/models/analyse_determinepk_body.py
deleted file mode 100644
index 658952ec1ba8295233c1152f50247bc284ea50f9..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/analyse_determinepk_body.py
+++ /dev/null
@@ -1,136 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class AnalyseDeterminepkBody(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'filepath': 'str',
-        'seperator': 'str'
-    }
-
-    attribute_map = {
-        'filepath': 'filepath',
-        'seperator': 'seperator'
-    }
-
-    def __init__(self, filepath=None, seperator=None):  # noqa: E501
-        """AnalyseDeterminepkBody - a model defined in Swagger"""  # noqa: E501
-        self._filepath = None
-        self._seperator = None
-        self.discriminator = None
-        if filepath is not None:
-            self.filepath = filepath
-        if seperator is not None:
-            self.seperator = seperator
-
-    @property
-    def filepath(self):
-        """Gets the filepath of this AnalyseDeterminepkBody.  # noqa: E501
-
-
-        :return: The filepath of this AnalyseDeterminepkBody.  # noqa: E501
-        :rtype: str
-        """
-        return self._filepath
-
-    @filepath.setter
-    def filepath(self, filepath):
-        """Sets the filepath of this AnalyseDeterminepkBody.
-
-
-        :param filepath: The filepath of this AnalyseDeterminepkBody.  # noqa: E501
-        :type: str
-        """
-
-        self._filepath = filepath
-
-    @property
-    def seperator(self):
-        """Gets the seperator of this AnalyseDeterminepkBody.  # noqa: E501
-
-
-        :return: The seperator of this AnalyseDeterminepkBody.  # noqa: E501
-        :rtype: str
-        """
-        return self._seperator
-
-    @seperator.setter
-    def seperator(self, seperator):
-        """Sets the seperator of this AnalyseDeterminepkBody.
-
-
-        :param seperator: The seperator of this AnalyseDeterminepkBody.  # noqa: E501
-        :type: str
-        """
-
-        self._seperator = seperator
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(AnalyseDeterminepkBody, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, AnalyseDeterminepkBody):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/analyse_update_mdb_col_body.py b/.invenio/api_analyse/models/analyse_update_mdb_col_body.py
deleted file mode 100644
index 1f4d4ad7198c248a796ba347d2bebee9dbd6486c..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/analyse_update_mdb_col_body.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class AnalyseUpdateMdbColBody(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'dbid': 'int',
-        'tid': 'int',
-        'cid': 'int'
-    }
-
-    attribute_map = {
-        'dbid': 'dbid',
-        'tid': 'tid',
-        'cid': 'cid'
-    }
-
-    def __init__(self, dbid=None, tid=None, cid=None):  # noqa: E501
-        """AnalyseUpdateMdbColBody - a model defined in Swagger"""  # noqa: E501
-        self._dbid = None
-        self._tid = None
-        self._cid = None
-        self.discriminator = None
-        if dbid is not None:
-            self.dbid = dbid
-        if tid is not None:
-            self.tid = tid
-        if cid is not None:
-            self.cid = cid
-
-    @property
-    def dbid(self):
-        """Gets the dbid of this AnalyseUpdateMdbColBody.  # noqa: E501
-
-
-        :return: The dbid of this AnalyseUpdateMdbColBody.  # noqa: E501
-        :rtype: int
-        """
-        return self._dbid
-
-    @dbid.setter
-    def dbid(self, dbid):
-        """Sets the dbid of this AnalyseUpdateMdbColBody.
-
-
-        :param dbid: The dbid of this AnalyseUpdateMdbColBody.  # noqa: E501
-        :type: int
-        """
-
-        self._dbid = dbid
-
-    @property
-    def tid(self):
-        """Gets the tid of this AnalyseUpdateMdbColBody.  # noqa: E501
-
-
-        :return: The tid of this AnalyseUpdateMdbColBody.  # noqa: E501
-        :rtype: int
-        """
-        return self._tid
-
-    @tid.setter
-    def tid(self, tid):
-        """Sets the tid of this AnalyseUpdateMdbColBody.
-
-
-        :param tid: The tid of this AnalyseUpdateMdbColBody.  # noqa: E501
-        :type: int
-        """
-
-        self._tid = tid
-
-    @property
-    def cid(self):
-        """Gets the cid of this AnalyseUpdateMdbColBody.  # noqa: E501
-
-
-        :return: The cid of this AnalyseUpdateMdbColBody.  # noqa: E501
-        :rtype: int
-        """
-        return self._cid
-
-    @cid.setter
-    def cid(self, cid):
-        """Sets the cid of this AnalyseUpdateMdbColBody.
-
-
-        :param cid: The cid of this AnalyseUpdateMdbColBody.  # noqa: E501
-        :type: int
-        """
-
-        self._cid = cid
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(AnalyseUpdateMdbColBody, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, AnalyseUpdateMdbColBody):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/data_type_dto.py b/.invenio/api_analyse/models/data_type_dto.py
deleted file mode 100644
index 610ccfe1653ed7ac326f0b33594b87d654750db2..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/data_type_dto.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class DataTypeDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-    }
-
-    attribute_map = {
-    }
-
-    def __init__(self):  # noqa: E501
-        """DataTypeDto - a model defined in Swagger"""  # noqa: E501
-        self.discriminator = None
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(DataTypeDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, DataTypeDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/determine_data_type_dto.py b/.invenio/api_analyse/models/determine_data_type_dto.py
deleted file mode 100644
index 32ac968bb71850e3f3f2c4f0ea2661f29ccbe02b..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/determine_data_type_dto.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class DetermineDataTypeDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'filepath': 'str',
-        'enum': 'bool',
-        'enum_tol': 'object',
-        'separator': 'str'
-    }
-
-    attribute_map = {
-        'filepath': 'filepath',
-        'enum': 'enum',
-        'enum_tol': 'enum_tol',
-        'separator': 'separator'
-    }
-
-    def __init__(self, filepath=None, enum=None, enum_tol=None, separator=None):  # noqa: E501
-        """DetermineDataTypeDto - a model defined in Swagger"""  # noqa: E501
-        self._filepath = None
-        self._enum = None
-        self._enum_tol = None
-        self._separator = None
-        self.discriminator = None
-        self.filepath = filepath
-        if enum is not None:
-            self.enum = enum
-        if enum_tol is not None:
-            self.enum_tol = enum_tol
-        if separator is not None:
-            self.separator = separator
-
-    @property
-    def filepath(self):
-        """Gets the filepath of this DetermineDataTypeDto.  # noqa: E501
-
-
-        :return: The filepath of this DetermineDataTypeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._filepath
-
-    @filepath.setter
-    def filepath(self, filepath):
-        """Sets the filepath of this DetermineDataTypeDto.
-
-
-        :param filepath: The filepath of this DetermineDataTypeDto.  # noqa: E501
-        :type: str
-        """
-        if filepath is None:
-            raise ValueError("Invalid value for `filepath`, must not be `None`")  # noqa: E501
-
-        self._filepath = filepath
-
-    @property
-    def enum(self):
-        """Gets the enum of this DetermineDataTypeDto.  # noqa: E501
-
-
-        :return: The enum of this DetermineDataTypeDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._enum
-
-    @enum.setter
-    def enum(self, enum):
-        """Sets the enum of this DetermineDataTypeDto.
-
-
-        :param enum: The enum of this DetermineDataTypeDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._enum = enum
-
-    @property
-    def enum_tol(self):
-        """Gets the enum_tol of this DetermineDataTypeDto.  # noqa: E501
-
-
-        :return: The enum_tol of this DetermineDataTypeDto.  # noqa: E501
-        :rtype: object
-        """
-        return self._enum_tol
-
-    @enum_tol.setter
-    def enum_tol(self, enum_tol):
-        """Sets the enum_tol of this DetermineDataTypeDto.
-
-
-        :param enum_tol: The enum_tol of this DetermineDataTypeDto.  # noqa: E501
-        :type: object
-        """
-
-        self._enum_tol = enum_tol
-
-    @property
-    def separator(self):
-        """Gets the separator of this DetermineDataTypeDto.  # noqa: E501
-
-
-        :return: The separator of this DetermineDataTypeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._separator
-
-    @separator.setter
-    def separator(self, separator):
-        """Sets the separator of this DetermineDataTypeDto.
-
-
-        :param separator: The separator of this DetermineDataTypeDto.  # noqa: E501
-        :type: str
-        """
-
-        self._separator = separator
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(DetermineDataTypeDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, DetermineDataTypeDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/determine_data_type_request_dto.py b/.invenio/api_analyse/models/determine_data_type_request_dto.py
deleted file mode 100644
index 8d642ac5430571011f9a4d87fc7ee18637bac6fc..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/determine_data_type_request_dto.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class DetermineDataTypeRequestDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'filepath': 'str',
-        'enum': 'bool',
-        'enum_tol': 'object',
-        'separator': 'str'
-    }
-
-    attribute_map = {
-        'filepath': 'filepath',
-        'enum': 'enum',
-        'enum_tol': 'enum_tol',
-        'separator': 'separator'
-    }
-
-    def __init__(self, filepath=None, enum=None, enum_tol=None, separator=None):  # noqa: E501
-        """DetermineDataTypeRequestDto - a model defined in Swagger"""  # noqa: E501
-        self._filepath = None
-        self._enum = None
-        self._enum_tol = None
-        self._separator = None
-        self.discriminator = None
-        self.filepath = filepath
-        if enum is not None:
-            self.enum = enum
-        if enum_tol is not None:
-            self.enum_tol = enum_tol
-        if separator is not None:
-            self.separator = separator
-
-    @property
-    def filepath(self):
-        """Gets the filepath of this DetermineDataTypeRequestDto.  # noqa: E501
-
-
-        :return: The filepath of this DetermineDataTypeRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._filepath
-
-    @filepath.setter
-    def filepath(self, filepath):
-        """Sets the filepath of this DetermineDataTypeRequestDto.
-
-
-        :param filepath: The filepath of this DetermineDataTypeRequestDto.  # noqa: E501
-        :type: str
-        """
-        if filepath is None:
-            raise ValueError("Invalid value for `filepath`, must not be `None`")  # noqa: E501
-
-        self._filepath = filepath
-
-    @property
-    def enum(self):
-        """Gets the enum of this DetermineDataTypeRequestDto.  # noqa: E501
-
-
-        :return: The enum of this DetermineDataTypeRequestDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._enum
-
-    @enum.setter
-    def enum(self, enum):
-        """Sets the enum of this DetermineDataTypeRequestDto.
-
-
-        :param enum: The enum of this DetermineDataTypeRequestDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._enum = enum
-
-    @property
-    def enum_tol(self):
-        """Gets the enum_tol of this DetermineDataTypeRequestDto.  # noqa: E501
-
-
-        :return: The enum_tol of this DetermineDataTypeRequestDto.  # noqa: E501
-        :rtype: object
-        """
-        return self._enum_tol
-
-    @enum_tol.setter
-    def enum_tol(self, enum_tol):
-        """Sets the enum_tol of this DetermineDataTypeRequestDto.
-
-
-        :param enum_tol: The enum_tol of this DetermineDataTypeRequestDto.  # noqa: E501
-        :type: object
-        """
-
-        self._enum_tol = enum_tol
-
-    @property
-    def separator(self):
-        """Gets the separator of this DetermineDataTypeRequestDto.  # noqa: E501
-
-
-        :return: The separator of this DetermineDataTypeRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._separator
-
-    @separator.setter
-    def separator(self, separator):
-        """Sets the separator of this DetermineDataTypeRequestDto.
-
-
-        :param separator: The separator of this DetermineDataTypeRequestDto.  # noqa: E501
-        :type: str
-        """
-
-        self._separator = separator
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(DetermineDataTypeRequestDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, DetermineDataTypeRequestDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/determine_data_type_response_dto.py b/.invenio/api_analyse/models/determine_data_type_response_dto.py
deleted file mode 100644
index 3e22371063fe9a1b5d3f3974fca691c8000fe87c..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/determine_data_type_response_dto.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class DetermineDataTypeResponseDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'columns': 'list[DataTypeDto]',
-        'separator': 'str'
-    }
-
-    attribute_map = {
-        'columns': 'columns',
-        'separator': 'separator'
-    }
-
-    def __init__(self, columns=None, separator=None):  # noqa: E501
-        """DetermineDataTypeResponseDto - a model defined in Swagger"""  # noqa: E501
-        self._columns = None
-        self._separator = None
-        self.discriminator = None
-        self.columns = columns
-        self.separator = separator
-
-    @property
-    def columns(self):
-        """Gets the columns of this DetermineDataTypeResponseDto.  # noqa: E501
-
-
-        :return: The columns of this DetermineDataTypeResponseDto.  # noqa: E501
-        :rtype: list[DataTypeDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this DetermineDataTypeResponseDto.
-
-
-        :param columns: The columns of this DetermineDataTypeResponseDto.  # noqa: E501
-        :type: list[DataTypeDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    @property
-    def separator(self):
-        """Gets the separator of this DetermineDataTypeResponseDto.  # noqa: E501
-
-
-        :return: The separator of this DetermineDataTypeResponseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._separator
-
-    @separator.setter
-    def separator(self, separator):
-        """Sets the separator of this DetermineDataTypeResponseDto.
-
-
-        :param separator: The separator of this DetermineDataTypeResponseDto.  # noqa: E501
-        :type: str
-        """
-        if separator is None:
-            raise ValueError("Invalid value for `separator`, must not be `None`")  # noqa: E501
-
-        self._separator = separator
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(DetermineDataTypeResponseDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, DetermineDataTypeResponseDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/determine_primary_key_dto.py b/.invenio/api_analyse/models/determine_primary_key_dto.py
deleted file mode 100644
index c93d535b2bb3456eab2371d10859820b097e6efc..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/determine_primary_key_dto.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class DeterminePrimaryKeyDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'filepath': 'str',
-        'seperator': 'str'
-    }
-
-    attribute_map = {
-        'filepath': 'filepath',
-        'seperator': 'seperator'
-    }
-
-    def __init__(self, filepath=None, seperator=None):  # noqa: E501
-        """DeterminePrimaryKeyDto - a model defined in Swagger"""  # noqa: E501
-        self._filepath = None
-        self._seperator = None
-        self.discriminator = None
-        self.filepath = filepath
-        if seperator is not None:
-            self.seperator = seperator
-
-    @property
-    def filepath(self):
-        """Gets the filepath of this DeterminePrimaryKeyDto.  # noqa: E501
-
-
-        :return: The filepath of this DeterminePrimaryKeyDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._filepath
-
-    @filepath.setter
-    def filepath(self, filepath):
-        """Sets the filepath of this DeterminePrimaryKeyDto.
-
-
-        :param filepath: The filepath of this DeterminePrimaryKeyDto.  # noqa: E501
-        :type: str
-        """
-        if filepath is None:
-            raise ValueError("Invalid value for `filepath`, must not be `None`")  # noqa: E501
-
-        self._filepath = filepath
-
-    @property
-    def seperator(self):
-        """Gets the seperator of this DeterminePrimaryKeyDto.  # noqa: E501
-
-
-        :return: The seperator of this DeterminePrimaryKeyDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._seperator
-
-    @seperator.setter
-    def seperator(self, seperator):
-        """Sets the seperator of this DeterminePrimaryKeyDto.
-
-
-        :param seperator: The seperator of this DeterminePrimaryKeyDto.  # noqa: E501
-        :type: str
-        """
-
-        self._seperator = seperator
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(DeterminePrimaryKeyDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, DeterminePrimaryKeyDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/error_dto.py b/.invenio/api_analyse/models/error_dto.py
deleted file mode 100644
index 4ac5fa13f22b21574566d9adbfeee1426ea633de..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/error_dto.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class ErrorDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'success': 'bool',
-        'message': 'str'
-    }
-
-    attribute_map = {
-        'success': 'success',
-        'message': 'message'
-    }
-
-    def __init__(self, success=None, message=None):  # noqa: E501
-        """ErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._success = None
-        self._message = None
-        self.discriminator = None
-        self.success = success
-        if message is not None:
-            self.message = message
-
-    @property
-    def success(self):
-        """Gets the success of this ErrorDto.  # noqa: E501
-
-
-        :return: The success of this ErrorDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._success
-
-    @success.setter
-    def success(self, success):
-        """Sets the success of this ErrorDto.
-
-
-        :param success: The success of this ErrorDto.  # noqa: E501
-        :type: bool
-        """
-        if success is None:
-            raise ValueError("Invalid value for `success`, must not be `None`")  # noqa: E501
-
-        self._success = success
-
-    @property
-    def message(self):
-        """Gets the message of this ErrorDto.  # noqa: E501
-
-
-        :return: The message of this ErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ErrorDto.
-
-
-        :param message: The message of this ErrorDto.  # noqa: E501
-        :type: str
-        """
-
-        self._message = message
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(ErrorDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, ErrorDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/models/update_column_dto.py b/.invenio/api_analyse/models/update_column_dto.py
deleted file mode 100644
index 62c971fcf6ad158444b304e3311c9c8217423e8b..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/models/update_column_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-import pprint
-import re  # noqa: F401
-
-import six
-
-class UpdateColumnDto(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    """
-    """
-    Attributes:
-      swagger_types (dict): The key is attribute name
-                            and the value is attribute type.
-      attribute_map (dict): The key is attribute name
-                            and the value is json key in definition.
-    """
-    swagger_types = {
-        'dbid': 'int',
-        'tid': 'int',
-        'cid': 'int'
-    }
-
-    attribute_map = {
-        'dbid': 'dbid',
-        'tid': 'tid',
-        'cid': 'cid'
-    }
-
-    def __init__(self, dbid=None, tid=None, cid=None):  # noqa: E501
-        """UpdateColumnDto - a model defined in Swagger"""  # noqa: E501
-        self._dbid = None
-        self._tid = None
-        self._cid = None
-        self.discriminator = None
-        self.dbid = dbid
-        self.tid = tid
-        self.cid = cid
-
-    @property
-    def dbid(self):
-        """Gets the dbid of this UpdateColumnDto.  # noqa: E501
-
-
-        :return: The dbid of this UpdateColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._dbid
-
-    @dbid.setter
-    def dbid(self, dbid):
-        """Sets the dbid of this UpdateColumnDto.
-
-
-        :param dbid: The dbid of this UpdateColumnDto.  # noqa: E501
-        :type: int
-        """
-        if dbid is None:
-            raise ValueError("Invalid value for `dbid`, must not be `None`")  # noqa: E501
-
-        self._dbid = dbid
-
-    @property
-    def tid(self):
-        """Gets the tid of this UpdateColumnDto.  # noqa: E501
-
-
-        :return: The tid of this UpdateColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._tid
-
-    @tid.setter
-    def tid(self, tid):
-        """Sets the tid of this UpdateColumnDto.
-
-
-        :param tid: The tid of this UpdateColumnDto.  # noqa: E501
-        :type: int
-        """
-        if tid is None:
-            raise ValueError("Invalid value for `tid`, must not be `None`")  # noqa: E501
-
-        self._tid = tid
-
-    @property
-    def cid(self):
-        """Gets the cid of this UpdateColumnDto.  # noqa: E501
-
-
-        :return: The cid of this UpdateColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._cid
-
-    @cid.setter
-    def cid(self, cid):
-        """Sets the cid of this UpdateColumnDto.
-
-
-        :param cid: The cid of this UpdateColumnDto.  # noqa: E501
-        :type: int
-        """
-        if cid is None:
-            raise ValueError("Invalid value for `cid`, must not be `None`")  # noqa: E501
-
-        self._cid = cid
-
-    def to_dict(self):
-        """Returns the model properties as a dict"""
-        result = {}
-
-        for attr, _ in six.iteritems(self.swagger_types):
-            value = getattr(self, attr)
-            if isinstance(value, list):
-                result[attr] = list(map(
-                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
-                    value
-                ))
-            elif hasattr(value, "to_dict"):
-                result[attr] = value.to_dict()
-            elif isinstance(value, dict):
-                result[attr] = dict(map(
-                    lambda item: (item[0], item[1].to_dict())
-                    if hasattr(item[1], "to_dict") else item,
-                    value.items()
-                ))
-            else:
-                result[attr] = value
-        if issubclass(UpdateColumnDto, dict):
-            for key, value in self.items():
-                result[key] = value
-
-        return result
-
-    def to_str(self):
-        """Returns the string representation of the model"""
-        return pprint.pformat(self.to_dict())
-
-    def __repr__(self):
-        """For `print` and `pprint`"""
-        return self.to_str()
-
-    def __eq__(self, other):
-        """Returns true if both objects are equal"""
-        if not isinstance(other, UpdateColumnDto):
-            return False
-
-        return self.__dict__ == other.__dict__
-
-    def __ne__(self, other):
-        """Returns true if both objects are not equal"""
-        return not self == other
diff --git a/.invenio/api_analyse/rest.py b/.invenio/api_analyse/rest.py
deleted file mode 100644
index 8a9e516e2ddebd4789ced5a59967ad16d4b96450..0000000000000000000000000000000000000000
--- a/.invenio/api_analyse/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Analyse Service API
-
-    Service that manages the analysis  # noqa: E501
-
-    OpenAPI spec version: 1.1.0-alpha
-    Contact: andreas.rauber@tuwien.ac.at
-    Generated by: https://github.com/swagger-api/swagger-codegen.git
-"""
-
-from __future__ import absolute_import
-
-import io
-import json
-import logging
-import re
-import ssl
-
-import certifi
-# python 2 and python 3 compatibility library
-import six
-from six.moves.urllib.parse import urlencode
-
-try:
-    import urllib3
-except ImportError:
-    raise ImportError('Swagger python client requires urllib3.')
-
-
-logger = logging.getLogger(__name__)
-
-
-class RESTResponse(io.IOBase):
-
-    def __init__(self, resp):
-        self.urllib3_response = resp
-        self.status = resp.status
-        self.reason = resp.reason
-        self.data = resp.data
-
-    def getheaders(self):
-        """Returns a dictionary of the response headers."""
-        return self.urllib3_response.getheaders()
-
-    def getheader(self, name, default=None):
-        """Returns a given response header."""
-        return self.urllib3_response.getheader(name, default)
-
-
-class RESTClientObject(object):
-
-    def __init__(self, configuration, pools_size=4, maxsize=None):
-        # urllib3.PoolManager will pass all kw parameters to connectionpool
-        # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75  # noqa: E501
-        # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680  # noqa: E501
-        # maxsize is the number of requests to host that are allowed in parallel  # noqa: E501
-        # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html  # noqa: E501
-
-        # cert_reqs
-        if configuration.verify_ssl:
-            cert_reqs = ssl.CERT_REQUIRED
-        else:
-            cert_reqs = ssl.CERT_NONE
-
-        # ca_certs
-        if configuration.ssl_ca_cert:
-            ca_certs = configuration.ssl_ca_cert
-        else:
-            # if not set certificate file, use Mozilla's root certificates.
-            ca_certs = certifi.where()
-
-        addition_pool_args = {}
-        if configuration.assert_hostname is not None:
-            addition_pool_args['assert_hostname'] = configuration.assert_hostname  # noqa: E501
-
-        if maxsize is None:
-            if configuration.connection_pool_maxsize is not None:
-                maxsize = configuration.connection_pool_maxsize
-            else:
-                maxsize = 4
-
-        # https pool manager
-        if configuration.proxy:
-            self.pool_manager = urllib3.ProxyManager(
-                num_pools=pools_size,
-                maxsize=maxsize,
-                cert_reqs=cert_reqs,
-                ca_certs=ca_certs,
-                cert_file=configuration.cert_file,
-                key_file=configuration.key_file,
-                proxy_url=configuration.proxy,
-                **addition_pool_args
-            )
-        else:
-            self.pool_manager = urllib3.PoolManager(
-                num_pools=pools_size,
-                maxsize=maxsize,
-                cert_reqs=cert_reqs,
-                ca_certs=ca_certs,
-                cert_file=configuration.cert_file,
-                key_file=configuration.key_file,
-                **addition_pool_args
-            )
-
-    def request(self, method, url, query_params=None, headers=None,
-                body=None, post_params=None, _preload_content=True,
-                _request_timeout=None):
-        """Perform requests.
-
-        :param method: http request method
-        :param url: http request url
-        :param query_params: query parameters in the url
-        :param headers: http request headers
-        :param body: request json body, for `application/json`
-        :param post_params: request post parameters,
-                            `application/x-www-form-urlencoded`
-                            and `multipart/form-data`
-        :param _preload_content: if False, the urllib3.HTTPResponse object will
-                                 be returned without reading/decoding response
-                                 data. Default is True.
-        :param _request_timeout: timeout setting for this request. If one
-                                 number provided, it will be total request
-                                 timeout. It can also be a pair (tuple) of
-                                 (connection, read) timeouts.
-        """
-        method = method.upper()
-        assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
-                          'PATCH', 'OPTIONS']
-
-        if post_params and body:
-            raise ValueError(
-                "body parameter cannot be used with post_params parameter."
-            )
-
-        post_params = post_params or {}
-        headers = headers or {}
-
-        timeout = None
-        if _request_timeout:
-            if isinstance(_request_timeout, (int, ) if six.PY3 else (int, long)):  # noqa: E501,F821
-                timeout = urllib3.Timeout(total=_request_timeout)
-            elif (isinstance(_request_timeout, tuple) and
-                  len(_request_timeout) == 2):
-                timeout = urllib3.Timeout(
-                    connect=_request_timeout[0], read=_request_timeout[1])
-
-        if 'Content-Type' not in headers:
-            headers['Content-Type'] = 'application/json'
-
-        try:
-            # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
-            if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
-                if query_params:
-                    url += '?' + urlencode(query_params)
-                if re.search('json', headers['Content-Type'], re.IGNORECASE):
-                    request_body = '{}'
-                    if body is not None:
-                        request_body = json.dumps(body)
-                    r = self.pool_manager.request(
-                        method, url,
-                        body=request_body,
-                        preload_content=_preload_content,
-                        timeout=timeout,
-                        headers=headers)
-                elif headers['Content-Type'] == 'application/x-www-form-urlencoded':  # noqa: E501
-                    r = self.pool_manager.request(
-                        method, url,
-                        fields=post_params,
-                        encode_multipart=False,
-                        preload_content=_preload_content,
-                        timeout=timeout,
-                        headers=headers)
-                elif headers['Content-Type'] == 'multipart/form-data':
-                    # must del headers['Content-Type'], or the correct
-                    # Content-Type which generated by urllib3 will be
-                    # overwritten.
-                    del headers['Content-Type']
-                    r = self.pool_manager.request(
-                        method, url,
-                        fields=post_params,
-                        encode_multipart=True,
-                        preload_content=_preload_content,
-                        timeout=timeout,
-                        headers=headers)
-                # Pass a `string` parameter directly in the body to support
-                # other content types than Json when `body` argument is
-                # provided in serialized form
-                elif isinstance(body, str):
-                    request_body = body
-                    r = self.pool_manager.request(
-                        method, url,
-                        body=request_body,
-                        preload_content=_preload_content,
-                        timeout=timeout,
-                        headers=headers)
-                else:
-                    # Cannot generate the request from given parameters
-                    msg = """Cannot prepare a request message for provided
-                             arguments. Please check that your arguments match
-                             declared content type."""
-                    raise ApiException(status=0, reason=msg)
-            # For `GET`, `HEAD`
-            else:
-                r = self.pool_manager.request(method, url,
-                                              fields=query_params,
-                                              preload_content=_preload_content,
-                                              timeout=timeout,
-                                              headers=headers)
-        except urllib3.exceptions.SSLError as e:
-            msg = "{0}\n{1}".format(type(e).__name__, str(e))
-            raise ApiException(status=0, reason=msg)
-
-        if _preload_content:
-            r = RESTResponse(r)
-
-            # log response body
-            logger.debug("response body: %s", r.data)
-
-        if not 200 <= r.status <= 299:
-            raise ApiException(http_resp=r)
-
-        return r
-
-    def GET(self, url, headers=None, query_params=None, _preload_content=True,
-            _request_timeout=None):
-        return self.request("GET", url,
-                            headers=headers,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            query_params=query_params)
-
-    def HEAD(self, url, headers=None, query_params=None, _preload_content=True,
-             _request_timeout=None):
-        return self.request("HEAD", url,
-                            headers=headers,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            query_params=query_params)
-
-    def OPTIONS(self, url, headers=None, query_params=None, post_params=None,
-                body=None, _preload_content=True, _request_timeout=None):
-        return self.request("OPTIONS", url,
-                            headers=headers,
-                            query_params=query_params,
-                            post_params=post_params,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            body=body)
-
-    def DELETE(self, url, headers=None, query_params=None, body=None,
-               _preload_content=True, _request_timeout=None):
-        return self.request("DELETE", url,
-                            headers=headers,
-                            query_params=query_params,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            body=body)
-
-    def POST(self, url, headers=None, query_params=None, post_params=None,
-             body=None, _preload_content=True, _request_timeout=None):
-        return self.request("POST", url,
-                            headers=headers,
-                            query_params=query_params,
-                            post_params=post_params,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            body=body)
-
-    def PUT(self, url, headers=None, query_params=None, post_params=None,
-            body=None, _preload_content=True, _request_timeout=None):
-        return self.request("PUT", url,
-                            headers=headers,
-                            query_params=query_params,
-                            post_params=post_params,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            body=body)
-
-    def PATCH(self, url, headers=None, query_params=None, post_params=None,
-              body=None, _preload_content=True, _request_timeout=None):
-        return self.request("PATCH", url,
-                            headers=headers,
-                            query_params=query_params,
-                            post_params=post_params,
-                            _preload_content=_preload_content,
-                            _request_timeout=_request_timeout,
-                            body=body)
-
-
-class ApiException(Exception):
-
-    def __init__(self, status=None, reason=None, http_resp=None):
-        if http_resp:
-            self.status = http_resp.status
-            self.reason = http_resp.reason
-            self.body = http_resp.data
-            self.headers = http_resp.getheaders()
-        else:
-            self.status = status
-            self.reason = reason
-            self.body = None
-            self.headers = None
-
-    def __str__(self):
-        """Custom error messages for exception"""
-        error_message = "({0})\n"\
-                        "Reason: {1}\n".format(self.status, self.reason)
-        if self.headers:
-            error_message += "HTTP response headers: {0}\n".format(
-                self.headers)
-
-        if self.body:
-            error_message += "HTTP response body: {0}\n".format(self.body)
-
-        return error_message
diff --git a/.invenio/api_authentication/__pycache__/__init__.cpython-36.pyc b/.invenio/api_authentication/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 3e6aed91d2832ab319a0bacf1677edd0547b1634..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/__pycache__/api_client.cpython-36.pyc b/.invenio/api_authentication/__pycache__/api_client.cpython-36.pyc
deleted file mode 100644
index 80129a48e19c5a6f6da1648d21f980774fedc668..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/__pycache__/api_client.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/__pycache__/configuration.cpython-36.pyc b/.invenio/api_authentication/__pycache__/configuration.cpython-36.pyc
deleted file mode 100644
index 055ff73a8a2e3e7176ee4b221f0dc79e0a23c63e..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/__pycache__/configuration.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/__pycache__/rest.cpython-36.pyc b/.invenio/api_authentication/__pycache__/rest.cpython-36.pyc
deleted file mode 100644
index 1e9f7d6d897c058990123a8827083504f5e0713a..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/__pycache__/rest.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/api/__pycache__/__init__.cpython-36.pyc b/.invenio/api_authentication/api/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 508773ae293347f72e765eec9bf28b5c9d384e46..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/api/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/api/__pycache__/authentication_endpoint_api.cpython-36.pyc b/.invenio/api_authentication/api/__pycache__/authentication_endpoint_api.cpython-36.pyc
deleted file mode 100644
index 85e9f4b705713513c603c9521ae3f53d3de8f804..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/api/__pycache__/authentication_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/api/__pycache__/user_endpoint_api.cpython-36.pyc b/.invenio/api_authentication/api/__pycache__/user_endpoint_api.cpython-36.pyc
deleted file mode 100644
index c840ae64587ece19903b94624850162a505cdd51..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/api/__pycache__/user_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/__init__.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 0a7aca01c4351a2a77732d89b4eb7196e7979bae..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/api_error_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/api_error_dto.cpython-36.pyc
deleted file mode 100644
index 7f1ee6358425cf1bba1b30afbcf3360fa3fffb84..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/api_error_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/column_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/column_dto.cpython-36.pyc
deleted file mode 100644
index bf2f0783f82fcd2b2414cdb85a686a747c729b74..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/column_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/concept_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/concept_dto.cpython-36.pyc
deleted file mode 100644
index 5b3730011a844c7464faaae9409716228f1c20a2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/concept_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/container_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/container_dto.cpython-36.pyc
deleted file mode 100644
index 57d989eb87e59031de9a72176814f44a68e9da49..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/container_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/database_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/database_dto.cpython-36.pyc
deleted file mode 100644
index 68d56dcad56318500af676bbf24b14f1f2a26ae2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/database_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/granted_authority_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/granted_authority_dto.cpython-36.pyc
deleted file mode 100644
index f26c4601892126d63128681b407c23d0a115929a..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/granted_authority_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/image_date_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/image_date_dto.cpython-36.pyc
deleted file mode 100644
index 67804985d911576569c94375c247f09732a5e142..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/image_date_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/image_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/image_dto.cpython-36.pyc
deleted file mode 100644
index d140b783c931b158904d7f0e5bfdf07707fa234b..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/image_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/image_env_item_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/image_env_item_dto.cpython-36.pyc
deleted file mode 100644
index ae36fc30d5742df43741771d519b4781af26dbee..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/image_env_item_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/jwt_response_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/jwt_response_dto.cpython-36.pyc
deleted file mode 100644
index 030c3e051907c88f8efe79bed92d9cef28e8e9ee..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/jwt_response_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/login_request_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/login_request_dto.cpython-36.pyc
deleted file mode 100644
index 47f4c5b5d1cbc38c2600b3c2869d6701aa9f68c7..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/login_request_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/signup_request_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/signup_request_dto.cpython-36.pyc
deleted file mode 100644
index f927307d13e6eb15a53714bae42722cbbf5a7e5e..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/signup_request_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/table_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/table_dto.cpython-36.pyc
deleted file mode 100644
index 202455cd62d0cf75b1e83134990954866bee7521..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/table_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_authentication/models/__pycache__/user_dto.cpython-36.pyc b/.invenio/api_authentication/models/__pycache__/user_dto.cpython-36.pyc
deleted file mode 100644
index c2d2bd18d3cef971ce59b6d7ecd7a9d1ff5afc52..0000000000000000000000000000000000000000
Binary files a/.invenio/api_authentication/models/__pycache__/user_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/__pycache__/__init__.cpython-36.pyc b/.invenio/api_container/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index af4d155349db8edc52cc00d6d70ac0c1be0e31db..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/__pycache__/api_client.cpython-36.pyc b/.invenio/api_container/__pycache__/api_client.cpython-36.pyc
deleted file mode 100644
index e929601822d09258018790c0d6c2108fff120336..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/__pycache__/api_client.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/__pycache__/configuration.cpython-36.pyc b/.invenio/api_container/__pycache__/configuration.cpython-36.pyc
deleted file mode 100644
index 81334c420e3fbe281de92983b240d6286109abbf..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/__pycache__/configuration.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/__pycache__/rest.cpython-36.pyc b/.invenio/api_container/__pycache__/rest.cpython-36.pyc
deleted file mode 100644
index 0907e4da4210299e82ffdd84654a4ac1dc31aaa7..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/__pycache__/rest.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/api/__pycache__/__init__.cpython-36.pyc b/.invenio/api_container/api/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index c74d9250eb499a9d46034163740fea60bdec111b..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/api/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/api/__pycache__/container_endpoint_api.cpython-36.pyc b/.invenio/api_container/api/__pycache__/container_endpoint_api.cpython-36.pyc
deleted file mode 100644
index 887615e6a86b690fc39d771d5b283db935f38097..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/api/__pycache__/container_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/api/__pycache__/image_endpoint_api.cpython-36.pyc b/.invenio/api_container/api/__pycache__/image_endpoint_api.cpython-36.pyc
deleted file mode 100644
index c46c74a445f300e4faedb0926524ca175526ac06..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/api/__pycache__/image_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/__init__.cpython-36.pyc b/.invenio/api_container/models/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 3b6c24811e64c655d59b83458089d48486c91086..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/api_error_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/api_error_dto.cpython-36.pyc
deleted file mode 100644
index 9aa552719ee0c54439af696b7fa8a39b393f9c38..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/api_error_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/column_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/column_dto.cpython-36.pyc
deleted file mode 100644
index 0d18b56b53c6a2f235ee67c01e7f85fc6a83b9ae..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/column_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/concept_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/concept_dto.cpython-36.pyc
deleted file mode 100644
index 3d85b31d3f6cdd8a6d389e2e6f62f0818c279d88..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/concept_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/container_brief_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/container_brief_dto.cpython-36.pyc
deleted file mode 100644
index adc9c0734f4ef66f435d5c8f8e812f27e0110c3b..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/container_brief_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/container_change_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/container_change_dto.cpython-36.pyc
deleted file mode 100644
index 808d046642efbfc5520ce50f5d4fd255e9ba7491..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/container_change_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/container_create_request_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/container_create_request_dto.cpython-36.pyc
deleted file mode 100644
index 26872dc31008b794862bfe8584b1db76976de714..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/container_create_request_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/container_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/container_dto.cpython-36.pyc
deleted file mode 100644
index 9925a21aaef55b9220f6696f82b6919bf9efaee9..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/container_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/database_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/database_dto.cpython-36.pyc
deleted file mode 100644
index 478abb4616c696ea8cc55ed0ec55869b1916e532..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/database_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/granted_authority_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/granted_authority_dto.cpython-36.pyc
deleted file mode 100644
index 99f9134ac258de228d33ad40942f8d00e3669216..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/granted_authority_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/image_brief_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/image_brief_dto.cpython-36.pyc
deleted file mode 100644
index 25f8843e24fee945e49e42ecb1bf2f136e6b4912..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/image_brief_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/image_change_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/image_change_dto.cpython-36.pyc
deleted file mode 100644
index 4364ecc6951261f91175df3da643e1750f6bbb17..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/image_change_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/image_create_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/image_create_dto.cpython-36.pyc
deleted file mode 100644
index e9434e63f16f9196b937c4a202df447709963eb7..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/image_create_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/image_date_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/image_date_dto.cpython-36.pyc
deleted file mode 100644
index aed2e69805660c6d73dfebc97f300e20c1eaa8e2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/image_date_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/image_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/image_dto.cpython-36.pyc
deleted file mode 100644
index d8aa5a6fb79863ae0496a3164ae35298fc38cfe2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/image_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/image_env_item_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/image_env_item_dto.cpython-36.pyc
deleted file mode 100644
index 89b17a682f968b5ea7f8d8280a450049538c5b69..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/image_env_item_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/table_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/table_dto.cpython-36.pyc
deleted file mode 100644
index c77b516f0bf6abea32fe7ea785c0b6603718b5b5..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/table_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_container/models/__pycache__/user_dto.cpython-36.pyc b/.invenio/api_container/models/__pycache__/user_dto.cpython-36.pyc
deleted file mode 100644
index 3205e48bc886ef46e0b985b1af98f9c9359eb1d0..0000000000000000000000000000000000000000
Binary files a/.invenio/api_container/models/__pycache__/user_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/__pycache__/__init__.cpython-36.pyc b/.invenio/api_database/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index c4f0a4a2e087fb71cf04140feae06844ae278844..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/__pycache__/api_client.cpython-36.pyc b/.invenio/api_database/__pycache__/api_client.cpython-36.pyc
deleted file mode 100644
index bc30cf2f823757af2e325d604180abbb11089e79..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/__pycache__/api_client.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/__pycache__/configuration.cpython-36.pyc b/.invenio/api_database/__pycache__/configuration.cpython-36.pyc
deleted file mode 100644
index fa61e51d90354745f2088e26de043c2fbb2d2fde..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/__pycache__/configuration.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/__pycache__/rest.cpython-36.pyc b/.invenio/api_database/__pycache__/rest.cpython-36.pyc
deleted file mode 100644
index 967602515661026e471cdc27287675daeacfe8d8..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/__pycache__/rest.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/api/__pycache__/__init__.cpython-36.pyc b/.invenio/api_database/api/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index ba4c91508bac26f68e82f4fa155ff52c453ed71f..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/api/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/api/__pycache__/container_database_endpoint_api.cpython-36.pyc b/.invenio/api_database/api/__pycache__/container_database_endpoint_api.cpython-36.pyc
deleted file mode 100644
index 07f4600ca705da5b49520f635ffe63b27b08004f..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/api/__pycache__/container_database_endpoint_api.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/__init__.cpython-36.pyc b/.invenio/api_database/models/__pycache__/__init__.cpython-36.pyc
deleted file mode 100644
index 3102e9c8ea6b2ac33b8dc58e58194374de8835ac..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/__init__.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/api_error_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/api_error_dto.cpython-36.pyc
deleted file mode 100644
index 99797643c8a47710dcc80723364dc34af5118d06..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/api_error_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/column_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/column_dto.cpython-36.pyc
deleted file mode 100644
index 962766d80f7debe4e7143315d54a77dfedc2627f..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/column_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/concept_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/concept_dto.cpython-36.pyc
deleted file mode 100644
index 52f48a35ec1322adfbbf173b3ad4ba603f4631e2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/concept_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/container_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/container_dto.cpython-36.pyc
deleted file mode 100644
index e3fbe5ae975fd382aad8ee44e2d4476d9f132815..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/container_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/database_brief_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/database_brief_dto.cpython-36.pyc
deleted file mode 100644
index e005f9acbbb5e53fb95cd00d57991586b01ac8df..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/database_brief_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/database_create_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/database_create_dto.cpython-36.pyc
deleted file mode 100644
index d4e8d4595abd44123ad9ee5404d2f0f0cca6b293..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/database_create_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/database_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/database_dto.cpython-36.pyc
deleted file mode 100644
index 2808f73f3c01a9020c63f6b373cbe190258ef688..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/database_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/database_modify_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/database_modify_dto.cpython-36.pyc
deleted file mode 100644
index 2c8b58f59fec063a235c16e407e5f9e5ceba4a74..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/database_modify_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/granted_authority_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/granted_authority_dto.cpython-36.pyc
deleted file mode 100644
index 48cb16946fda8e565595de70cdaafcbe3aa82fb0..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/granted_authority_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/image_date_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/image_date_dto.cpython-36.pyc
deleted file mode 100644
index b00784ece3fc7ec4dc0104e2ffb007d5715bd206..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/image_date_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/image_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/image_dto.cpython-36.pyc
deleted file mode 100644
index 699dd4e72670ce08210fe75d47a8e9f0ae6bb5f2..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/image_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/image_env_item_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/image_env_item_dto.cpython-36.pyc
deleted file mode 100644
index 6ccbdc6b67a6b43b78e0ead3bd4181b9b010b37a..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/image_env_item_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/table_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/table_dto.cpython-36.pyc
deleted file mode 100644
index d8fee7e9c6133d5ab8450c4311ba8a1ae9a455c8..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/table_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/api_database/models/__pycache__/user_dto.cpython-36.pyc b/.invenio/api_database/models/__pycache__/user_dto.cpython-36.pyc
deleted file mode 100644
index 474621b1a4267c3bde8683b64904f5107ea92c22..0000000000000000000000000000000000000000
Binary files a/.invenio/api_database/models/__pycache__/user_dto.cpython-36.pyc and /dev/null differ
diff --git a/.invenio/dev.py b/.invenio/dev.py
index 7e5ce3998b8e42177184eaf1595018b813d56342..aa0cb1af32c8d6baf25176689b9de61bc2186f00 100644
--- a/.invenio/dev.py
+++ b/.invenio/dev.py
@@ -1,18 +1,17 @@
 #!/usr/bin/env python3
-import time
-import uuid
+import json
+
+import requests
 
 from api_authentication.api.authentication_endpoint_api import AuthenticationEndpointApi
 from api_authentication.api.user_endpoint_api import UserEndpointApi
 from api_container.api.container_endpoint_api import ContainerEndpointApi
 from api_database.api.container_database_endpoint_api import ContainerDatabaseEndpointApi
-from api_analyse.api.analyse_endpoint_api import AnalyseEndpointApi
 
 authentication = AuthenticationEndpointApi()
 user = UserEndpointApi()
 container = ContainerEndpointApi()
 database = ContainerDatabaseEndpointApi()
-analyse = AnalyseEndpointApi()
 
 # # Create account
 # response = user.register({
@@ -21,19 +20,19 @@ analyse = AnalyseEndpointApi()
 #     'email': 'martin.weise@tuwien.ac.at'
 # })
 # print('Created account with username %s' % response.username)
-
-# Create authentication
-response = authentication.authenticate_user1({
-    'username': 'mweise',
-    'password': 'fda'
-})
-container.api_client.default_headers = {
-    'Authorization': 'Bearer ' + response.token
-}
-database.api_client.default_headers = {
-    'Authorization': 'Bearer ' + response.token
-}
-
+#
+# # Create authentication
+# response = authentication.authenticate_user1({
+#     'username': 'mweise',
+#     'password': 'fda'
+# })
+# container.api_client.default_headers = {
+#     'Authorization': 'Bearer ' + response.token
+# }
+# database.api_client.default_headers = {
+#     'Authorization': 'Bearer ' + response.token
+# }
+#
 # # Create container
 # response = container.create1({
 #     'name': 'MIR ' + str(uuid.uuid1()),
@@ -60,8 +59,9 @@ database.api_client.default_headers = {
 # print('Created database with id %d' % dbid)
 
 # Analyse Table
-response = analyse.api_analyse_determinedt_post({
+response = requests.post('http://localhost:5000/api/analyse/determinedt', json={
     'filepath': '/tmp/test.csv',
 })
+data = json.loads(response.content)
 print('Determined data types')
 print(response)
diff --git a/.invenio/requirements.txt b/.invenio/requirements.txt
index 30592e4db752302cf970bf075c037af3e59a50e4..47f78a7d8881dd86110db66b62b8dbe2d9f2332c 100644
--- a/.invenio/requirements.txt
+++ b/.invenio/requirements.txt
@@ -1 +1,2 @@
-invenio-client==0.1.0
\ No newline at end of file
+invenio-client==0.1.0
+six==1.16.0
\ No newline at end of file
diff --git a/fda-analyse-service/.gitignore b/fda-analyse-service/.gitignore
index ed8ebf583f771da9150c35db3955987b7d757904..ad0f142b44b0fc998ad4db00b7003dbac9ed3a7d 100644
--- a/fda-analyse-service/.gitignore
+++ b/fda-analyse-service/.gitignore
@@ -1 +1,27 @@
-__pycache__
\ No newline at end of file
+__pycache__
+
+.DS_Store
+.env
+.flaskenv
+*.pyc
+*.pyo
+env/
+venv/
+.venv/
+env*
+dist/
+build/
+*.egg
+*.egg-info/
+.tox/
+.cache/
+.pytest_cache/
+.idea/
+docs/_build/
+.vscode
+
+# Coverage reports
+htmlcov/
+.coverage
+.coverage.*
+*,cover
\ No newline at end of file
diff --git a/fda-analyse-service/Dockerfile b/fda-analyse-service/Dockerfile
index 7fca5435b2e8cb4ba598dfdca835d3b6feff36b7..17907126151ec085e3c5e48ee4e662a81442a259 100644
--- a/fda-analyse-service/Dockerfile
+++ b/fda-analyse-service/Dockerfile
@@ -14,7 +14,7 @@ RUN pip install -r requirements.txt > /dev/null
 
 HEALTHCHECK --interval=10s --timeout=5s --retries=12 CMD ./service_ready
 
-COPY ./as-yml ./
+COPY ./as-yml/ ./as-yml/
 COPY ./*.py ./
 COPY ./service_ready ./
 
diff --git a/fda-analyse-service/app.py b/fda-analyse-service/app.py
index af71535067b687a4c6b7a5c47c61646740899fed..539b21737cdb4a98e00ba416e86134ff23591993 100644
--- a/fda-analyse-service/app.py
+++ b/fda-analyse-service/app.py
@@ -42,19 +42,12 @@ swagger_config = {
     "headers": [],
     "specs": [
         {
-            "title": "Database Repository Analyse Service API",
-            "openapi": "3.0.1",
-            "description": "Service that analyses data structures",
-            "version": " 1.1.0-alpha",
             "endpoint": "api-analyze",
             "route": "/api-analyze.json",
             "rule_filter": lambda rule: rule.endpoint.startswith('analyze'),
             "model_filter": lambda tag: True,  # all in
         },
         {
-            "title": "MDB operations",
-            "openapi": "3.0.1",
-            "description": "Service that managed the metadata database",
             "endpoint": "api-mdb",
             "route": "/api-mdb.json",
             "rule_filter": lambda rule: rule.endpoint.startswith('mdb'),
@@ -66,9 +59,26 @@ swagger_config = {
     "specs_route": "/swagger-ui/",
 }
 
-template = dict(
-    swaggerUiPrefix=LazyString(lambda: request.environ.get("HTTP_X_SCRIPT_NAME", ""))
-)
+template = {
+    "openapi": "3.0.0",
+    "info": {
+        "title": "Database Repository Analyse Service API",
+        "description": "Service that analyses data structures",
+        "version": "1.1.0-alpha",
+        "contact": {
+            "name": "Prof. Andreas Rauber",
+            "email": "andreas.rauber@tuwien.ac.at"
+        },
+        "license": {
+            "name": "Apache 2.0",
+            "url": "https://www.apache.org/licenses/LICENSE-2.0"
+        }
+    },
+    "servers": [{
+       "url": "http://localhost:5000",
+       "description": "Generated server url"
+    }]
+}
 
 app.json_encoder = LazyJSONEncoder
 swagger = Swagger(app, config=swagger_config, template=template)
@@ -92,11 +102,11 @@ def determinedt():
             separator = str(input_json['separator'])
         res = determine_datatypes(filepath,enum,enum_tol,separator)
         logging.info('Determined datatypes successfully: %s',res)
-        return jsonify(res), 200
+        return Response(res, mimetype="application/json"), 200
     except Exception as e:
         logging.error(e)
         res = {"success": False, "message": str(e)}
-        return jsonify(res), 500
+        return Response(res, mimetype="application/json"), 500
 
 @app.route('/api/analyse/determinepk', methods=["POST"], endpoint='analyze_determinepk')
 @swag_from('as-yml/determinepk.yml')
@@ -109,11 +119,11 @@ def determinepk():
             seperator = str(input_json['seperator'])
         res = determine_pk(filepath,seperator)
         logging.info('Determined list of primary keys: %s', res)
-        return jsonify(res), 200
+        return Response(res, mimetype="application/json"), 200
     except Exception as e:
         logging.error(e)
         res = {"success": False, "message": str(e)}
-        return jsonify(res), 500
+        return Response(res, mimetype="application/json"), 500
 
 @app.route('/api/analyse/update_mdb_col', methods=["POST"], endpoint='mdb_update_col')
 @swag_from('as-yml/updatecol.yml')
@@ -125,11 +135,11 @@ def updatecol():
         cid=int(input_json['cid'])
         res = update_mdb_col(dbid,tid,cid)
         logging.info('Update metadata database entity mdb_columns')
-        return jsonify(res), 200
+        return Response(res, mimetype="application/json"), 200
     except Exception as e:
         logging.error(e)
         res = {"success": False, "message": "Unknown error"}
-        return jsonify(res), 500
+        return Response(res, mimetype="application/json"), 500
 
 rest_server_port = 5000
 eureka_client.init(eureka_server=os.getenv('EUREKA_SERVER', 'http://localhost:9090/eureka/'),
diff --git a/fda-analyse-service/requirements.txt b/fda-analyse-service/requirements.txt
index 343415c676d12eacbb55a53e872a2a081b01fbfa..08560767f10e4cf6457fb8dc3223f000365ac0d9 100644
--- a/fda-analyse-service/requirements.txt
+++ b/fda-analyse-service/requirements.txt
@@ -1,12 +1,12 @@
 messytables==0.15.2
-pandas==1.4.3
+pandas==1.2.3
 flask==2.1.2
 flasgger==0.9.5
-psycopg2-binary==2.9.3
-py-eureka-client==0.11.3
-docker==5.0.3
-sqlalchemy==1.4.39
-requests==2.28.0
-gevent==21.12.0
-markupsafe==2.1.1
+psycopg2-binary==2.8.6
+py-eureka-client==0.9.1
+docker==5.0.0
+sqlalchemy==1.4.15
+requests==2.26.0
+gevent==21.8.0
+markupsafe===2.0.1