diff --git a/.env.example b/.env.example
index b8994459cdcc9e5772b28b349bb735d6ceb441dd..07b55ef6f66ca64ec2ef25586915c7dc0692a982 100644
--- a/.env.example
+++ b/.env.example
@@ -7,6 +7,10 @@ WEBSITE=http://example.com
 MAIL_FROM=Database Repository <noreply@example.com>
 MAIL_REPLY_TO=Admin <somebody@example.com>
 MAIL_VERIFY=true
+SMTP_HOST=
+SMTP_PORT=
+SMTP_USERNAME=
+SMTP_PASSWORD=
 JWT_ISSUER=dbrepo
 JWT_SECRET=secret
 JWT_EXPIRATION=86400000
diff --git a/.fda-deployment/fda-ui/install_cert b/.fda-deployment/fda-ui/install_cert
index d733f7ff986bdfc1b517311da32bfde059524ee1..92553123718052ab77978aea4d8ad3a699c0c816 100755
--- a/.fda-deployment/fda-ui/install_cert
+++ b/.fda-deployment/fda-ui/install_cert
@@ -1,13 +1,12 @@
 #!/bin/bash
 CA_PATH="/etc/letsencrypt/live/dbrepo.ossdip.at"
 
-sudo certbot certonly --standalone --preferred-challenges http -d dbrepo.ossdip.at \
-                -m martin.weise@tuwien.ac.at --agree-tos --keep-until-expiring
+sudo certbot certonly --standalone --preferred-challenges http -d dbrepo.ossdip.at --agree-tos --keep-until-expiring
 
 KEY=$(sudo sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' "${CA_PATH}/privkey.pem")
 CERT=$(sudo sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' "${CA_PATH}/cert.pem")
 
-cat << EOF > .env
+cat << EOF
 UI_KEY="${KEY}"
 UI_CERT="${CERT}"
 EOF
\ No newline at end of file
diff --git a/.fda-deployment/teardown b/.fda-deployment/teardown
index 0f2d62c193f1ad589d5b2d012f67c24ed1b1ba33..a743c93ede24a08612a028fc1381bebbaa380068 100755
--- a/.fda-deployment/teardown
+++ b/.fda-deployment/teardown
@@ -4,10 +4,10 @@ docker container stop $(docker container ls -aq -f name=^/dbrepo-.*) || true
 echo "=== [ Removing dbrepo-* ] ==="
 docker container rm $(docker container ls -aq -f name=^/dbrepo-.*) || true
 docker volume rm $(docker volume ls -q -f name=^dbrepo-.*) || true
-docker network rm $(docker network ls -q -f name=^/dbrepo-.*) || true
+docker network rm $(docker network ls -q -f name=^dbrepo-.*) || true
 echo "=== [ Stopping fda-* ] ==="
 docker container stop $(docker container ls -aq -f name=^/fda-.*) || true
 echo "=== [ Removing fda-* ] ==="
 docker container rm $(docker container ls -aq -f name=^/fda-.*) || true
 docker volume rm $(docker volume ls -q -f name=^fda-.*) || true
-docker network rm $(docker network ls -q -f name=^/fda-.*) || true
\ No newline at end of file
+docker network rm $(docker network ls -q -f name=^fda-.*) || true
\ No newline at end of file
diff --git a/.jupyter/.gitignore b/.jupyter/.gitignore
index 9e1853c3a0f82f337665c55557c10fe408581984..4da7d714ec15b1625e404b2958fffb0906fa97e8 100644
--- a/.jupyter/.gitignore
+++ b/.jupyter/.gitignore
@@ -1,4 +1,6 @@
 __pycache__
 venv/
 
+publish.py
+
 ./swagger-codegen-cli.jar
\ No newline at end of file
diff --git a/.jupyter/api_authentication/__init__.py b/.jupyter/api_authentication/__init__.py
deleted file mode 100644
index c20f434f5ee3610077bb2fd6ec91f8a21f5ca08a..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/__init__.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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_authentication.api.authentication_endpoint_api import AuthenticationEndpointApi
-from api_authentication.api.token_endpoint_api import TokenEndpointApi
-from api_authentication.api.user_endpoint_api import UserEndpointApi
-# import ApiClient
-from api_authentication.api_client import ApiClient
-from api_authentication.configuration import Configuration
-# import models into sdk package
-from api_authentication.models.api_error_dto import ApiErrorDto
-from api_authentication.models.container_dto import ContainerDto
-from api_authentication.models.database_dto import DatabaseDto
-from api_authentication.models.granted_authority_dto import GrantedAuthorityDto
-from api_authentication.models.image_brief_dto import ImageBriefDto
-from api_authentication.models.image_date_dto import ImageDateDto
-from api_authentication.models.image_dto import ImageDto
-from api_authentication.models.image_env_item_dto import ImageEnvItemDto
-from api_authentication.models.jwt_response_dto import JwtResponseDto
-from api_authentication.models.license_dto import LicenseDto
-from api_authentication.models.login_request_dto import LoginRequestDto
-from api_authentication.models.signup_request_dto import SignupRequestDto
-from api_authentication.models.table_brief_dto import TableBriefDto
-from api_authentication.models.user_brief_dto import UserBriefDto
-from api_authentication.models.user_dto import UserDto
-from api_authentication.models.user_email_dto import UserEmailDto
-from api_authentication.models.user_forgot_dto import UserForgotDto
-from api_authentication.models.user_password_dto import UserPasswordDto
-from api_authentication.models.user_reset_dto import UserResetDto
-from api_authentication.models.user_roles_dto import UserRolesDto
-from api_authentication.models.user_theme_set_dto import UserThemeSetDto
-from api_authentication.models.user_update_dto import UserUpdateDto
diff --git a/.jupyter/api_authentication/api/__init__.py b/.jupyter/api_authentication/api/__init__.py
deleted file mode 100644
index 9643d433a897d442036202f72e292b7b4cf0c6d5..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/api/__init__.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_authentication.api.authentication_endpoint_api import AuthenticationEndpointApi
-from api_authentication.api.token_endpoint_api import TokenEndpointApi
-from api_authentication.api.user_endpoint_api import UserEndpointApi
diff --git a/.jupyter/api_authentication/api/authentication_endpoint_api.py b/.jupyter/api_authentication/api/authentication_endpoint_api.py
deleted file mode 100644
index 93d09fe07770eca0410a7e84df665ee639805114..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/api/authentication_endpoint_api.py
+++ /dev/null
@@ -1,300 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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_authentication.api_client import ApiClient
-
-
-class AuthenticationEndpointApi(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 authenticate_user(self, **kwargs):  # noqa: E501
-        """Validate token  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.authenticate_user(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.authenticate_user_with_http_info(**kwargs)  # noqa: E501
-        else:
-            (data) = self.authenticate_user_with_http_info(**kwargs)  # noqa: E501
-            return data
-
-    def authenticate_user_with_http_info(self, **kwargs):  # noqa: E501
-        """Validate token  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.authenticate_user_with_http_info(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = []  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method authenticate_user" % key
-                )
-            params[key] = val
-        del params['kwargs']
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/auth', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 authenticate_user1(self, body, **kwargs):  # noqa: E501
-        """Create token  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.authenticate_user1(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param LoginRequestDto body: (required)
-        :return: JwtResponseDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.authenticate_user1_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.authenticate_user1_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def authenticate_user1_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Create token  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.authenticate_user1_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param LoginRequestDto body: (required)
-        :return: JwtResponseDto
-                 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 authenticate_user1" % 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 `authenticate_user1`")  # 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/auth', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='JwtResponseDto',  # 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 re_authenticate_user(self, **kwargs):  # noqa: E501
-        """Renew token  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.re_authenticate_user(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: JwtResponseDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.re_authenticate_user_with_http_info(**kwargs)  # noqa: E501
-        else:
-            (data) = self.re_authenticate_user_with_http_info(**kwargs)  # noqa: E501
-            return data
-
-    def re_authenticate_user_with_http_info(self, **kwargs):  # noqa: E501
-        """Renew token  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.re_authenticate_user_with_http_info(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: JwtResponseDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = []  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method re_authenticate_user" % key
-                )
-            params[key] = val
-        del params['kwargs']
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/auth/renew', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='JwtResponseDto',  # 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/.jupyter/api_authentication/api/user_endpoint_api.py b/.jupyter/api_authentication/api/user_endpoint_api.py
deleted file mode 100644
index 40ba9632a02912ec9fd5d6167d27b8b14ebe7760..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/api/user_endpoint_api.py
+++ /dev/null
@@ -1,1027 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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_authentication.api_client import ApiClient
-
-
-class UserEndpointApi(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 find(self, id, **kwargs):  # noqa: E501
-        """Find some user  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_with_http_info(id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_with_http_info(id, **kwargs)  # noqa: E501
-            return data
-
-    def find_with_http_info(self, id, **kwargs):  # noqa: E501
-        """Find some user  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_with_http_info(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user/{id}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 forgot(self, body, **kwargs):  # noqa: E501
-        """Forgot user information  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.forgot(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserForgotDto body: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.forgot_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.forgot_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def forgot_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Forgot user information  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.forgot_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserForgotDto body: (required)
-        :return: UserDto
-                 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 forgot" % 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 `forgot`")  # 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/user', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 list(self, **kwargs):  # noqa: E501
-        """List users  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.list(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: list[UserDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.list_with_http_info(**kwargs)  # noqa: E501
-        else:
-            (data) = self.list_with_http_info(**kwargs)  # noqa: E501
-            return data
-
-    def list_with_http_info(self, **kwargs):  # noqa: E501
-        """List users  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.list_with_http_info(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: list[UserDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = []  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method list" % key
-                )
-            params[key] = val
-        del params['kwargs']
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[UserDto]',  # 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 register(self, body, **kwargs):  # noqa: E501
-        """Create user  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.register(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param SignupRequestDto body: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.register_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.register_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def register_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Create user  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.register_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param SignupRequestDto body: (required)
-        :return: UserDto
-                 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 register" % 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 `register`")  # 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/user', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=params.get('async_req'),
-            _return_http_data_only=params.get('_return_http_data_only'),
-            _preload_content=params.get('_preload_content', True),
-            _request_timeout=params.get('_request_timeout'),
-            collection_formats=collection_formats)
-
-    def reset(self, body, **kwargs):  # noqa: E501
-        """Reset user information  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.reset(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserResetDto body: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.reset_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.reset_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def reset_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Reset user information  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.reset_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserResetDto body: (required)
-        :return: None
-                 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 reset" % 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 `reset`")  # 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/user/reset', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_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 update(self, body, id, **kwargs):  # noqa: E501
-        """Update user  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserUpdateDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def update_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Update user  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserUpdateDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update" % 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 `update`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user/{id}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 update_email(self, body, id, **kwargs):  # noqa: E501
-        """Update user email  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_email(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserEmailDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_email_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_email_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def update_email_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Update user email  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_email_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserEmailDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update_email" % 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 `update_email`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update_email`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user/{id}/email', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 update_password(self, body, id, **kwargs):  # noqa: E501
-        """Update user password  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_password(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserPasswordDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_password_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_password_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def update_password_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Update user password  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_password_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserPasswordDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update_password" % 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 `update_password`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update_password`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user/{id}/password', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 update_roles(self, body, id, **kwargs):  # noqa: E501
-        """Update user roles  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_roles(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserRolesDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_roles_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_roles_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def update_roles_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Update user roles  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_roles_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserRolesDto body: (required)
-        :param int id: (required)
-        :return: UserDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update_roles" % 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 `update_roles`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update_roles`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user/{id}/roles', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='UserDto',  # 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 update_theme(self, body, id, **kwargs):  # noqa: E501
-        """Update user theme  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_theme(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserThemeSetDto body: (required)
-        :param int id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_theme_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_theme_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def update_theme_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Update user theme  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_theme_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param UserThemeSetDto body: (required)
-        :param int id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update_theme" % 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 `update_theme`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update_theme`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/user/{id}/theme', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_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/.jupyter/api_authentication/api_client.py b/.jupyter/api_authentication/api_client.py
deleted file mode 100644
index de8d2dd6db1dc84a9044893e899af33dd63fda4a..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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_authentication.configuration import Configuration
-import api_authentication.models
-from api_authentication 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_authentication.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/.jupyter/api_authentication/configuration.py b/.jupyter/api_authentication/configuration.py
deleted file mode 100644
index 2638b5e36f20bba23c9228abf90fd54e7d31fd14..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 = "http://localhost:9095"
-        # 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_authentication")
-        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/.jupyter/api_authentication/models/__init__.py b/.jupyter/api_authentication/models/__init__.py
deleted file mode 100644
index fc192aa3f48fc29eb41b993849da77e1a52b8001..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/__init__.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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_authentication.models.api_error_dto import ApiErrorDto
-from api_authentication.models.container_dto import ContainerDto
-from api_authentication.models.database_dto import DatabaseDto
-from api_authentication.models.granted_authority_dto import GrantedAuthorityDto
-from api_authentication.models.image_brief_dto import ImageBriefDto
-from api_authentication.models.image_date_dto import ImageDateDto
-from api_authentication.models.image_dto import ImageDto
-from api_authentication.models.image_env_item_dto import ImageEnvItemDto
-from api_authentication.models.jwt_response_dto import JwtResponseDto
-from api_authentication.models.license_dto import LicenseDto
-from api_authentication.models.login_request_dto import LoginRequestDto
-from api_authentication.models.signup_request_dto import SignupRequestDto
-from api_authentication.models.table_brief_dto import TableBriefDto
-from api_authentication.models.user_brief_dto import UserBriefDto
-from api_authentication.models.user_dto import UserDto
-from api_authentication.models.user_email_dto import UserEmailDto
-from api_authentication.models.user_forgot_dto import UserForgotDto
-from api_authentication.models.user_password_dto import UserPasswordDto
-from api_authentication.models.user_reset_dto import UserResetDto
-from api_authentication.models.user_roles_dto import UserRolesDto
-from api_authentication.models.user_theme_set_dto import UserThemeSetDto
-from api_authentication.models.user_update_dto import UserUpdateDto
diff --git a/.jupyter/api_authentication/models/api_error_dto.py b/.jupyter/api_authentication/models/api_error_dto.py
deleted file mode 100644
index ec3987847430c4d71f515142d6ed2dcf1678e3c2..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/api_error_dto.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ApiErrorDto(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 = {
-        'status': 'str',
-        'message': 'str',
-        'code': 'str'
-    }
-
-    attribute_map = {
-        'status': 'status',
-        'message': 'message',
-        'code': 'code'
-    }
-
-    def __init__(self, status=None, message=None, code=None):  # noqa: E501
-        """ApiErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._status = None
-        self._message = None
-        self._code = None
-        self.discriminator = None
-        self.status = status
-        self.message = message
-        self.code = code
-
-    @property
-    def status(self):
-        """Gets the status of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The status of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._status
-
-    @status.setter
-    def status(self, status):
-        """Sets the status of this ApiErrorDto.
-
-
-        :param status: The status of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if status is None:
-            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
-        allowed_values = ["100 CONTINUE", "101 SWITCHING_PROTOCOLS", "102 PROCESSING", "103 CHECKPOINT", "200 OK", "201 CREATED", "202 ACCEPTED", "203 NON_AUTHORITATIVE_INFORMATION", "204 NO_CONTENT", "205 RESET_CONTENT", "206 PARTIAL_CONTENT", "207 MULTI_STATUS", "208 ALREADY_REPORTED", "226 IM_USED", "300 MULTIPLE_CHOICES", "301 MOVED_PERMANENTLY", "302 FOUND", "302 MOVED_TEMPORARILY", "303 SEE_OTHER", "304 NOT_MODIFIED", "305 USE_PROXY", "307 TEMPORARY_REDIRECT", "308 PERMANENT_REDIRECT", "400 BAD_REQUEST", "401 UNAUTHORIZED", "402 PAYMENT_REQUIRED", "403 FORBIDDEN", "404 NOT_FOUND", "405 METHOD_NOT_ALLOWED", "406 NOT_ACCEPTABLE", "407 PROXY_AUTHENTICATION_REQUIRED", "408 REQUEST_TIMEOUT", "409 CONFLICT", "410 GONE", "411 LENGTH_REQUIRED", "412 PRECONDITION_FAILED", "413 PAYLOAD_TOO_LARGE", "413 REQUEST_ENTITY_TOO_LARGE", "414 URI_TOO_LONG", "414 REQUEST_URI_TOO_LONG", "415 UNSUPPORTED_MEDIA_TYPE", "416 REQUESTED_RANGE_NOT_SATISFIABLE", "417 EXPECTATION_FAILED", "418 I_AM_A_TEAPOT", "419 INSUFFICIENT_SPACE_ON_RESOURCE", "420 METHOD_FAILURE", "421 DESTINATION_LOCKED", "422 UNPROCESSABLE_ENTITY", "423 LOCKED", "424 FAILED_DEPENDENCY", "425 TOO_EARLY", "426 UPGRADE_REQUIRED", "428 PRECONDITION_REQUIRED", "429 TOO_MANY_REQUESTS", "431 REQUEST_HEADER_FIELDS_TOO_LARGE", "451 UNAVAILABLE_FOR_LEGAL_REASONS", "500 INTERNAL_SERVER_ERROR", "501 NOT_IMPLEMENTED", "502 BAD_GATEWAY", "503 SERVICE_UNAVAILABLE", "504 GATEWAY_TIMEOUT", "505 HTTP_VERSION_NOT_SUPPORTED", "506 VARIANT_ALSO_NEGOTIATES", "507 INSUFFICIENT_STORAGE", "508 LOOP_DETECTED", "509 BANDWIDTH_LIMIT_EXCEEDED", "510 NOT_EXTENDED", "511 NETWORK_AUTHENTICATION_REQUIRED"]  # noqa: E501
-        if status not in allowed_values:
-            raise ValueError(
-                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
-                .format(status, allowed_values)
-            )
-
-        self._status = status
-
-    @property
-    def message(self):
-        """Gets the message of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The message of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ApiErrorDto.
-
-
-        :param message: The message of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if message is None:
-            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501
-
-        self._message = message
-
-    @property
-    def code(self):
-        """Gets the code of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The code of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._code
-
-    @code.setter
-    def code(self, code):
-        """Sets the code of this ApiErrorDto.
-
-
-        :param code: The code of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if code is None:
-            raise ValueError("Invalid value for `code`, must not be `None`")  # noqa: E501
-
-        self._code = code
-
-    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(ApiErrorDto, 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, ApiErrorDto):
-            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/.jupyter/api_authentication/models/column_dto.py b/.jupyter/api_authentication/models/column_dto.py
deleted file mode 100644
index 04d7b1abfcfd9e184e3f24cc68e72b0d725e0beb..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/column_dto.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ColumnDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'unique': 'bool',
-        'references': 'str',
-        'internal_name': 'str',
-        'date_format': 'ImageDateDto',
-        'auto_generated': 'bool',
-        'is_primary_key': 'bool',
-        'column_type': 'str',
-        'column_concept': 'ConceptDto',
-        'decimal_digits_before': 'int',
-        'decimal_digits_after': 'int',
-        'is_null_allowed': 'bool',
-        'check_expression': 'str',
-        'foreign_key': 'str',
-        'enum_values': 'list[str]'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'unique': 'unique',
-        'references': 'references',
-        'internal_name': 'internal_name',
-        'date_format': 'date_format',
-        'auto_generated': 'auto_generated',
-        'is_primary_key': 'is_primary_key',
-        'column_type': 'column_type',
-        'column_concept': 'column_concept',
-        'decimal_digits_before': 'decimal_digits_before',
-        'decimal_digits_after': 'decimal_digits_after',
-        'is_null_allowed': 'is_null_allowed',
-        'check_expression': 'check_expression',
-        'foreign_key': 'foreign_key',
-        'enum_values': 'enum_values'
-    }
-
-    def __init__(self, id=None, name=None, unique=None, references=None, internal_name=None, date_format=None, auto_generated=None, is_primary_key=None, column_type=None, column_concept=None, decimal_digits_before=None, decimal_digits_after=None, is_null_allowed=None, check_expression=None, foreign_key=None, enum_values=None):  # noqa: E501
-        """ColumnDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._unique = None
-        self._references = None
-        self._internal_name = None
-        self._date_format = None
-        self._auto_generated = None
-        self._is_primary_key = None
-        self._column_type = None
-        self._column_concept = None
-        self._decimal_digits_before = None
-        self._decimal_digits_after = None
-        self._is_null_allowed = None
-        self._check_expression = None
-        self._foreign_key = None
-        self._enum_values = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.unique = unique
-        if references is not None:
-            self.references = references
-        self.internal_name = internal_name
-        if date_format is not None:
-            self.date_format = date_format
-        self.auto_generated = auto_generated
-        self.is_primary_key = is_primary_key
-        self.column_type = column_type
-        if column_concept is not None:
-            self.column_concept = column_concept
-        if decimal_digits_before is not None:
-            self.decimal_digits_before = decimal_digits_before
-        if decimal_digits_after is not None:
-            self.decimal_digits_after = decimal_digits_after
-        self.is_null_allowed = is_null_allowed
-        if check_expression is not None:
-            self.check_expression = check_expression
-        if foreign_key is not None:
-            self.foreign_key = foreign_key
-        if enum_values is not None:
-            self.enum_values = enum_values
-
-    @property
-    def id(self):
-        """Gets the id of this ColumnDto.  # noqa: E501
-
-
-        :return: The id of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ColumnDto.
-
-
-        :param id: The id of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this ColumnDto.  # noqa: E501
-
-
-        :return: The name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ColumnDto.
-
-
-        :param name: The name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def unique(self):
-        """Gets the unique of this ColumnDto.  # noqa: E501
-
-
-        :return: The unique of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._unique
-
-    @unique.setter
-    def unique(self, unique):
-        """Sets the unique of this ColumnDto.
-
-
-        :param unique: The unique of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if unique is None:
-            raise ValueError("Invalid value for `unique`, must not be `None`")  # noqa: E501
-
-        self._unique = unique
-
-    @property
-    def references(self):
-        """Gets the references of this ColumnDto.  # noqa: E501
-
-
-        :return: The references of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._references
-
-    @references.setter
-    def references(self, references):
-        """Sets the references of this ColumnDto.
-
-
-        :param references: The references of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._references = references
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ColumnDto.  # noqa: E501
-
-
-        :return: The internal_name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ColumnDto.
-
-
-        :param internal_name: The internal_name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def date_format(self):
-        """Gets the date_format of this ColumnDto.  # noqa: E501
-
-
-        :return: The date_format of this ColumnDto.  # noqa: E501
-        :rtype: ImageDateDto
-        """
-        return self._date_format
-
-    @date_format.setter
-    def date_format(self, date_format):
-        """Sets the date_format of this ColumnDto.
-
-
-        :param date_format: The date_format of this ColumnDto.  # noqa: E501
-        :type: ImageDateDto
-        """
-
-        self._date_format = date_format
-
-    @property
-    def auto_generated(self):
-        """Gets the auto_generated of this ColumnDto.  # noqa: E501
-
-
-        :return: The auto_generated of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._auto_generated
-
-    @auto_generated.setter
-    def auto_generated(self, auto_generated):
-        """Sets the auto_generated of this ColumnDto.
-
-
-        :param auto_generated: The auto_generated of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if auto_generated is None:
-            raise ValueError("Invalid value for `auto_generated`, must not be `None`")  # noqa: E501
-
-        self._auto_generated = auto_generated
-
-    @property
-    def is_primary_key(self):
-        """Gets the is_primary_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_primary_key of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_primary_key
-
-    @is_primary_key.setter
-    def is_primary_key(self, is_primary_key):
-        """Sets the is_primary_key of this ColumnDto.
-
-
-        :param is_primary_key: The is_primary_key of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_primary_key is None:
-            raise ValueError("Invalid value for `is_primary_key`, must not be `None`")  # noqa: E501
-
-        self._is_primary_key = is_primary_key
-
-    @property
-    def column_type(self):
-        """Gets the column_type of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_type of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._column_type
-
-    @column_type.setter
-    def column_type(self, column_type):
-        """Sets the column_type of this ColumnDto.
-
-
-        :param column_type: The column_type of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if column_type is None:
-            raise ValueError("Invalid value for `column_type`, must not be `None`")  # noqa: E501
-        allowed_values = ["enum", "number", "decimal", "string", "text", "boolean", "date", "timestamp", "blob"]  # noqa: E501
-        if column_type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `column_type` ({0}), must be one of {1}"  # noqa: E501
-                .format(column_type, allowed_values)
-            )
-
-        self._column_type = column_type
-
-    @property
-    def column_concept(self):
-        """Gets the column_concept of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_concept of this ColumnDto.  # noqa: E501
-        :rtype: ConceptDto
-        """
-        return self._column_concept
-
-    @column_concept.setter
-    def column_concept(self, column_concept):
-        """Sets the column_concept of this ColumnDto.
-
-
-        :param column_concept: The column_concept of this ColumnDto.  # noqa: E501
-        :type: ConceptDto
-        """
-
-        self._column_concept = column_concept
-
-    @property
-    def decimal_digits_before(self):
-        """Gets the decimal_digits_before of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_before
-
-    @decimal_digits_before.setter
-    def decimal_digits_before(self, decimal_digits_before):
-        """Sets the decimal_digits_before of this ColumnDto.
-
-
-        :param decimal_digits_before: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_before = decimal_digits_before
-
-    @property
-    def decimal_digits_after(self):
-        """Gets the decimal_digits_after of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_after
-
-    @decimal_digits_after.setter
-    def decimal_digits_after(self, decimal_digits_after):
-        """Sets the decimal_digits_after of this ColumnDto.
-
-
-        :param decimal_digits_after: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_after = decimal_digits_after
-
-    @property
-    def is_null_allowed(self):
-        """Gets the is_null_allowed of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_null_allowed
-
-    @is_null_allowed.setter
-    def is_null_allowed(self, is_null_allowed):
-        """Sets the is_null_allowed of this ColumnDto.
-
-
-        :param is_null_allowed: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_null_allowed is None:
-            raise ValueError("Invalid value for `is_null_allowed`, must not be `None`")  # noqa: E501
-
-        self._is_null_allowed = is_null_allowed
-
-    @property
-    def check_expression(self):
-        """Gets the check_expression of this ColumnDto.  # noqa: E501
-
-
-        :return: The check_expression of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._check_expression
-
-    @check_expression.setter
-    def check_expression(self, check_expression):
-        """Sets the check_expression of this ColumnDto.
-
-
-        :param check_expression: The check_expression of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._check_expression = check_expression
-
-    @property
-    def foreign_key(self):
-        """Gets the foreign_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The foreign_key of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._foreign_key
-
-    @foreign_key.setter
-    def foreign_key(self, foreign_key):
-        """Sets the foreign_key of this ColumnDto.
-
-
-        :param foreign_key: The foreign_key of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._foreign_key = foreign_key
-
-    @property
-    def enum_values(self):
-        """Gets the enum_values of this ColumnDto.  # noqa: E501
-
-
-        :return: The enum_values of this ColumnDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._enum_values
-
-    @enum_values.setter
-    def enum_values(self, enum_values):
-        """Sets the enum_values of this ColumnDto.
-
-
-        :param enum_values: The enum_values of this ColumnDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._enum_values = enum_values
-
-    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(ColumnDto, 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, ColumnDto):
-            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/.jupyter/api_authentication/models/concept_dto.py b/.jupyter/api_authentication/models/concept_dto.py
deleted file mode 100644
index 3bc88694251fce5435205b067e18ce4e26c9b566..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/concept_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ConceptDto(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 = {
-        'uri': 'str',
-        'name': 'str',
-        'created': 'datetime'
-    }
-
-    attribute_map = {
-        'uri': 'uri',
-        'name': 'name',
-        'created': 'created'
-    }
-
-    def __init__(self, uri=None, name=None, created=None):  # noqa: E501
-        """ConceptDto - a model defined in Swagger"""  # noqa: E501
-        self._uri = None
-        self._name = None
-        self._created = None
-        self.discriminator = None
-        self.uri = uri
-        self.name = name
-        self.created = created
-
-    @property
-    def uri(self):
-        """Gets the uri of this ConceptDto.  # noqa: E501
-
-
-        :return: The uri of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._uri
-
-    @uri.setter
-    def uri(self, uri):
-        """Sets the uri of this ConceptDto.
-
-
-        :param uri: The uri of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if uri is None:
-            raise ValueError("Invalid value for `uri`, must not be `None`")  # noqa: E501
-
-        self._uri = uri
-
-    @property
-    def name(self):
-        """Gets the name of this ConceptDto.  # noqa: E501
-
-
-        :return: The name of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ConceptDto.
-
-
-        :param name: The name of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def created(self):
-        """Gets the created of this ConceptDto.  # noqa: E501
-
-
-        :return: The created of this ConceptDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ConceptDto.
-
-
-        :param created: The created of this ConceptDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    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(ConceptDto, 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, ConceptDto):
-            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/.jupyter/api_authentication/models/container_dto.py b/.jupyter/api_authentication/models/container_dto.py
deleted file mode 100644
index 71a769288040f3fb38230ef7e08120681a04c8c2..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/container_dto.py
+++ /dev/null
@@ -1,381 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ContainerDto(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 = {
-        'id': 'int',
-        'hash': 'str',
-        'name': 'str',
-        'state': 'str',
-        'databases': 'list[DatabaseDto]',
-        'image': 'ImageBriefDto',
-        'port': 'int',
-        'created': 'datetime',
-        'internal_name': 'str',
-        'ip_address': 'str',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'hash': 'hash',
-        'name': 'name',
-        'state': 'state',
-        'databases': 'databases',
-        'image': 'image',
-        'port': 'port',
-        'created': 'created',
-        'internal_name': 'internal_name',
-        'ip_address': 'ip_address',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, hash=None, name=None, state=None, databases=None, image=None, port=None, created=None, internal_name=None, ip_address=None, is_public=None):  # noqa: E501
-        """ContainerDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._hash = None
-        self._name = None
-        self._state = None
-        self._databases = None
-        self._image = None
-        self._port = None
-        self._created = None
-        self._internal_name = None
-        self._ip_address = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.hash = hash
-        self.name = name
-        if state is not None:
-            self.state = state
-        if databases is not None:
-            self.databases = databases
-        if image is not None:
-            self.image = image
-        if port is not None:
-            self.port = port
-        self.created = created
-        self.internal_name = internal_name
-        if ip_address is not None:
-            self.ip_address = ip_address
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this ContainerDto.  # noqa: E501
-
-
-        :return: The id of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ContainerDto.
-
-
-        :param id: The id of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def hash(self):
-        """Gets the hash of this ContainerDto.  # noqa: E501
-
-
-        :return: The hash of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ContainerDto.
-
-
-        :param hash: The hash of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if hash is None:
-            raise ValueError("Invalid value for `hash`, must not be `None`")  # noqa: E501
-
-        self._hash = hash
-
-    @property
-    def name(self):
-        """Gets the name of this ContainerDto.  # noqa: E501
-
-
-        :return: The name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ContainerDto.
-
-
-        :param name: The name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def state(self):
-        """Gets the state of this ContainerDto.  # noqa: E501
-
-
-        :return: The state of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._state
-
-    @state.setter
-    def state(self, state):
-        """Sets the state of this ContainerDto.
-
-
-        :param state: The state of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ContainerStateDto.CREATED", "ContainerStateDto.RESTARTING", "ContainerStateDto.RUNNING", "ContainerStateDto.PAUSED", "ContainerStateDto.EXITED", "ContainerStateDto.DEAD"]  # noqa: E501
-        if state not in allowed_values:
-            raise ValueError(
-                "Invalid value for `state` ({0}), must be one of {1}"  # noqa: E501
-                .format(state, allowed_values)
-            )
-
-        self._state = state
-
-    @property
-    def databases(self):
-        """Gets the databases of this ContainerDto.  # noqa: E501
-
-
-        :return: The databases of this ContainerDto.  # noqa: E501
-        :rtype: list[DatabaseDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this ContainerDto.
-
-
-        :param databases: The databases of this ContainerDto.  # noqa: E501
-        :type: list[DatabaseDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def image(self):
-        """Gets the image of this ContainerDto.  # noqa: E501
-
-
-        :return: The image of this ContainerDto.  # noqa: E501
-        :rtype: ImageBriefDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this ContainerDto.
-
-
-        :param image: The image of this ContainerDto.  # noqa: E501
-        :type: ImageBriefDto
-        """
-
-        self._image = image
-
-    @property
-    def port(self):
-        """Gets the port of this ContainerDto.  # noqa: E501
-
-
-        :return: The port of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._port
-
-    @port.setter
-    def port(self, port):
-        """Sets the port of this ContainerDto.
-
-
-        :param port: The port of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-
-        self._port = port
-
-    @property
-    def created(self):
-        """Gets the created of this ContainerDto.  # noqa: E501
-
-
-        :return: The created of this ContainerDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ContainerDto.
-
-
-        :param created: The created of this ContainerDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ContainerDto.  # noqa: E501
-
-
-        :return: The internal_name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ContainerDto.
-
-
-        :param internal_name: The internal_name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def ip_address(self):
-        """Gets the ip_address of this ContainerDto.  # noqa: E501
-
-
-        :return: The ip_address of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._ip_address
-
-    @ip_address.setter
-    def ip_address(self, ip_address):
-        """Sets the ip_address of this ContainerDto.
-
-
-        :param ip_address: The ip_address of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-
-        self._ip_address = ip_address
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this ContainerDto.  # noqa: E501
-
-
-        :return: The is_public of this ContainerDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this ContainerDto.
-
-
-        :param is_public: The is_public of this ContainerDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(ContainerDto, 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, ContainerDto):
-            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/.jupyter/api_authentication/models/database_dto.py b/.jupyter/api_authentication/models/database_dto.py
deleted file mode 100644
index baeaf0e46fa9a534e439e687533e6e6e86300d83..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/database_dto.py
+++ /dev/null
@@ -1,564 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 DatabaseDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'exchange': 'str',
-        'creator': 'UserBriefDto',
-        'subjects': 'list[str]',
-        'language': 'str',
-        'license': 'LicenseDto',
-        'description': 'str',
-        'publisher': 'str',
-        'contact': 'UserDto',
-        'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
-        'container': 'ContainerDto',
-        'created': 'datetime',
-        'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
-        'tables': 'tables',
-        'image': 'image',
-        'container': 'container',
-        'created': 'created',
-        'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, name=None, exchange=None, creator=None, subjects=None, language=None, license=None, description=None, publisher=None, contact=None, tables=None, image=None, container=None, created=None, deleted=None, internal_name=None, publication_year=None, is_public=None):  # noqa: E501
-        """DatabaseDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._exchange = None
-        self._creator = None
-        self._subjects = None
-        self._language = None
-        self._license = None
-        self._description = None
-        self._publisher = None
-        self._contact = None
-        self._tables = None
-        self._image = None
-        self._container = None
-        self._created = None
-        self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.exchange = exchange
-        self.creator = creator
-        if subjects is not None:
-            self.subjects = subjects
-        if language is not None:
-            self.language = language
-        if license is not None:
-            self.license = license
-        if description is not None:
-            self.description = description
-        if publisher is not None:
-            self.publisher = publisher
-        if contact is not None:
-            self.contact = contact
-        if tables is not None:
-            self.tables = tables
-        if image is not None:
-            self.image = image
-        if container is not None:
-            self.container = container
-        if created is not None:
-            self.created = created
-        if deleted is not None:
-            self.deleted = deleted
-        self.internal_name = internal_name
-        self.publication_year = publication_year
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
-
-
-        :return: The id of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
-
-
-        :param id: The id of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
-
-
-        :param name: The name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
-
-
-        :return: The exchange of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._exchange
-
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
-
-
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
-
-        self._exchange = exchange
-
-    @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
-
-
-        :return: The creator of this DatabaseDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
-
-
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
-
-
-        :return: The subjects of this DatabaseDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._subjects
-
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
-
-
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._subjects = subjects
-
-    @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
-
-
-        :return: The language of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._language
-
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
-
-
-        :param language: The language of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ab", "aa", "af", "ak", "sq", "am", "ar", "an", "hy", "as", "av", "ae", "ay", "az", "bm", "ba", "eu", "be", "bn", "bh", "bi", "bs", "br", "bg", "my", "ca", "km", "ch", "ce", "ny", "zh", "cu", "cv", "kw", "co", "cr", "hr", "cs", "da", "dv", "nl", "dz", "en", "eo", "et", "ee", "fo", "fj", "fi", "fr", "ff", "gd", "gl", "lg", "ka", "de", "ki", "el", "kl", "gn", "gu", "ht", "ha", "he", "hz", "hi", "ho", "hu", "is", "io", "ig", "id", "ia", "ie", "iu", "ik", "ga", "it", "ja", "jv", "kn", "kr", "ks", "kk", "rw", "kv", "kg", "ko", "kj", "ku", "ky", "lo", "la", "lv", "lb", "li", "ln", "lt", "lu", "mk", "mg", "ms", "ml", "mt", "gv", "mi", "mr", "mh", "ro", "mn", "na", "nv", "nd", "ng", "ne", "se", "no", "nb", "nn", "ii", "oc", "oj", "or", "om", "os", "pi", "pa", "ps", "fa", "pl", "pt", "qu", "rm", "rn", "ru", "sm", "sg", "sa", "sc", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "nr", "es", "su", "sw", "ss", "sv", "tl", "ty", "tg", "ta", "tt", "te", "th", "bo", "ti", "to", "ts", "tn", "tr", "tk", "tw", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "cy", "fy", "wo", "xh", "yi", "yo", "za", "zu"]  # noqa: E501
-        if language not in allowed_values:
-            raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
-            )
-
-        self._language = language
-
-    @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
-
-
-        :return: The license of this DatabaseDto.  # noqa: E501
-        :rtype: LicenseDto
-        """
-        return self._license
-
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
-
-
-        :param license: The license of this DatabaseDto.  # noqa: E501
-        :type: LicenseDto
-        """
-
-        self._license = license
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
-
-
-        :param description: The description of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._description = description
-
-    @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publisher of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._publisher
-
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
-
-
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._publisher = publisher
-
-    @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
-
-
-        :return: The contact of this DatabaseDto.  # noqa: E501
-        :rtype: UserDto
-        """
-        return self._contact
-
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
-
-
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
-        :type: UserDto
-        """
-
-        self._contact = contact
-
-    @property
-    def tables(self):
-        """Gets the tables of this DatabaseDto.  # noqa: E501
-
-
-        :return: The tables of this DatabaseDto.  # noqa: E501
-        :rtype: list[TableBriefDto]
-        """
-        return self._tables
-
-    @tables.setter
-    def tables(self, tables):
-        """Sets the tables of this DatabaseDto.
-
-
-        :param tables: The tables of this DatabaseDto.  # noqa: E501
-        :type: list[TableBriefDto]
-        """
-
-        self._tables = tables
-
-    @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
-
-
-        :return: The image of this DatabaseDto.  # noqa: E501
-        :rtype: ImageDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
-
-
-        :param image: The image of this DatabaseDto.  # noqa: E501
-        :type: ImageDto
-        """
-
-        self._image = image
-
-    @property
-    def container(self):
-        """Gets the container of this DatabaseDto.  # noqa: E501
-
-
-        :return: The container of this DatabaseDto.  # noqa: E501
-        :rtype: ContainerDto
-        """
-        return self._container
-
-    @container.setter
-    def container(self, container):
-        """Sets the container of this DatabaseDto.
-
-
-        :param container: The container of this DatabaseDto.  # noqa: E501
-        :type: ContainerDto
-        """
-
-        self._container = container
-
-    @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
-
-
-        :return: The created of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
-
-
-        :param created: The created of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def deleted(self):
-        """Gets the deleted of this DatabaseDto.  # noqa: E501
-
-
-        :return: The deleted of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._deleted
-
-    @deleted.setter
-    def deleted(self, deleted):
-        """Sets the deleted of this DatabaseDto.
-
-
-        :param deleted: The deleted of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._deleted = deleted
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
-
-
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_year
-
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
-
-
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if publication_year is None:
-            raise ValueError("Invalid value for `publication_year`, must not be `None`")  # noqa: E501
-
-        self._publication_year = publication_year
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
-
-
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(DatabaseDto, 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, DatabaseDto):
-            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/.jupyter/api_authentication/models/granted_authority_dto.py b/.jupyter/api_authentication/models/granted_authority_dto.py
deleted file mode 100644
index 27fb59540a7ea4ac0bd308116678bf19638a94f1..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/granted_authority_dto.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 GrantedAuthorityDto(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 = {
-        'authority': 'str'
-    }
-
-    attribute_map = {
-        'authority': 'authority'
-    }
-
-    def __init__(self, authority=None):  # noqa: E501
-        """GrantedAuthorityDto - a model defined in Swagger"""  # noqa: E501
-        self._authority = None
-        self.discriminator = None
-        if authority is not None:
-            self.authority = authority
-
-    @property
-    def authority(self):
-        """Gets the authority of this GrantedAuthorityDto.  # noqa: E501
-
-
-        :return: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._authority
-
-    @authority.setter
-    def authority(self, authority):
-        """Sets the authority of this GrantedAuthorityDto.
-
-
-        :param authority: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :type: str
-        """
-
-        self._authority = authority
-
-    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(GrantedAuthorityDto, 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, GrantedAuthorityDto):
-            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/.jupyter/api_authentication/models/image_date_dto.py b/.jupyter/api_authentication/models/image_date_dto.py
deleted file mode 100644
index b8f379e2acac1198492fcad960a9961f27566b04..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/image_date_dto.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ImageDateDto(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 = {
-        'id': 'int',
-        'example': 'str',
-        'database_format': 'str',
-        'unix_format': 'str',
-        'has_time': 'bool',
-        'created_at': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'example': 'example',
-        'database_format': 'database_format',
-        'unix_format': 'unix_format',
-        'has_time': 'has_time',
-        'created_at': 'created_at'
-    }
-
-    def __init__(self, id=None, example=None, database_format=None, unix_format=None, has_time=None, created_at=None):  # noqa: E501
-        """ImageDateDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._example = None
-        self._database_format = None
-        self._unix_format = None
-        self._has_time = None
-        self._created_at = None
-        self.discriminator = None
-        self.id = id
-        self.example = example
-        self.database_format = database_format
-        self.unix_format = unix_format
-        self.has_time = has_time
-        if created_at is not None:
-            self.created_at = created_at
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDateDto.  # noqa: E501
-
-
-        :return: The id of this ImageDateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDateDto.
-
-
-        :param id: The id of this ImageDateDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def example(self):
-        """Gets the example of this ImageDateDto.  # noqa: E501
-
-
-        :return: The example of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._example
-
-    @example.setter
-    def example(self, example):
-        """Sets the example of this ImageDateDto.
-
-
-        :param example: The example of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if example is None:
-            raise ValueError("Invalid value for `example`, must not be `None`")  # noqa: E501
-
-        self._example = example
-
-    @property
-    def database_format(self):
-        """Gets the database_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The database_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._database_format
-
-    @database_format.setter
-    def database_format(self, database_format):
-        """Sets the database_format of this ImageDateDto.
-
-
-        :param database_format: The database_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if database_format is None:
-            raise ValueError("Invalid value for `database_format`, must not be `None`")  # noqa: E501
-
-        self._database_format = database_format
-
-    @property
-    def unix_format(self):
-        """Gets the unix_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The unix_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._unix_format
-
-    @unix_format.setter
-    def unix_format(self, unix_format):
-        """Sets the unix_format of this ImageDateDto.
-
-
-        :param unix_format: The unix_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if unix_format is None:
-            raise ValueError("Invalid value for `unix_format`, must not be `None`")  # noqa: E501
-
-        self._unix_format = unix_format
-
-    @property
-    def has_time(self):
-        """Gets the has_time of this ImageDateDto.  # noqa: E501
-
-
-        :return: The has_time of this ImageDateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._has_time
-
-    @has_time.setter
-    def has_time(self, has_time):
-        """Sets the has_time of this ImageDateDto.
-
-
-        :param has_time: The has_time of this ImageDateDto.  # noqa: E501
-        :type: bool
-        """
-        if has_time is None:
-            raise ValueError("Invalid value for `has_time`, must not be `None`")  # noqa: E501
-
-        self._has_time = has_time
-
-    @property
-    def created_at(self):
-        """Gets the created_at of this ImageDateDto.  # noqa: E501
-
-
-        :return: The created_at of this ImageDateDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created_at
-
-    @created_at.setter
-    def created_at(self, created_at):
-        """Sets the created_at of this ImageDateDto.
-
-
-        :param created_at: The created_at of this ImageDateDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created_at = created_at
-
-    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(ImageDateDto, 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, ImageDateDto):
-            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/.jupyter/api_authentication/models/image_dto.py b/.jupyter/api_authentication/models/image_dto.py
deleted file mode 100644
index 25e5ad1ebce7468da464c057dd93a4de391042bf..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/image_dto.py
+++ /dev/null
@@ -1,404 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ImageDto(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 = {
-        'id': 'int',
-        'repository': 'str',
-        'tag': 'str',
-        'dialect': 'str',
-        'hash': 'str',
-        'compiled': 'datetime',
-        'size': 'int',
-        'environment': 'list[ImageEnvItemDto]',
-        'driver_class': 'str',
-        'date_formats': 'list[ImageDateDto]',
-        'jdbc_method': 'str',
-        'default_port': 'int'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'repository': 'repository',
-        'tag': 'tag',
-        'dialect': 'dialect',
-        'hash': 'hash',
-        'compiled': 'compiled',
-        'size': 'size',
-        'environment': 'environment',
-        'driver_class': 'driver_class',
-        'date_formats': 'date_formats',
-        'jdbc_method': 'jdbc_method',
-        'default_port': 'default_port'
-    }
-
-    def __init__(self, id=None, repository=None, tag=None, dialect=None, hash=None, compiled=None, size=None, environment=None, driver_class=None, date_formats=None, jdbc_method=None, default_port=None):  # noqa: E501
-        """ImageDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._repository = None
-        self._tag = None
-        self._dialect = None
-        self._hash = None
-        self._compiled = None
-        self._size = None
-        self._environment = None
-        self._driver_class = None
-        self._date_formats = None
-        self._jdbc_method = None
-        self._default_port = None
-        self.discriminator = None
-        self.id = id
-        self.repository = repository
-        self.tag = tag
-        self.dialect = dialect
-        if hash is not None:
-            self.hash = hash
-        if compiled is not None:
-            self.compiled = compiled
-        if size is not None:
-            self.size = size
-        self.environment = environment
-        self.driver_class = driver_class
-        if date_formats is not None:
-            self.date_formats = date_formats
-        self.jdbc_method = jdbc_method
-        self.default_port = default_port
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDto.  # noqa: E501
-
-
-        :return: The id of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDto.
-
-
-        :param id: The id of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def repository(self):
-        """Gets the repository of this ImageDto.  # noqa: E501
-
-
-        :return: The repository of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ImageDto.
-
-
-        :param repository: The repository of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ImageDto.  # noqa: E501
-
-
-        :return: The tag of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ImageDto.
-
-
-        :param tag: The tag of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    @property
-    def dialect(self):
-        """Gets the dialect of this ImageDto.  # noqa: E501
-
-
-        :return: The dialect of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._dialect
-
-    @dialect.setter
-    def dialect(self, dialect):
-        """Sets the dialect of this ImageDto.
-
-
-        :param dialect: The dialect of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if dialect is None:
-            raise ValueError("Invalid value for `dialect`, must not be `None`")  # noqa: E501
-
-        self._dialect = dialect
-
-    @property
-    def hash(self):
-        """Gets the hash of this ImageDto.  # noqa: E501
-
-
-        :return: The hash of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ImageDto.
-
-
-        :param hash: The hash of this ImageDto.  # noqa: E501
-        :type: str
-        """
-
-        self._hash = hash
-
-    @property
-    def compiled(self):
-        """Gets the compiled of this ImageDto.  # noqa: E501
-
-
-        :return: The compiled of this ImageDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._compiled
-
-    @compiled.setter
-    def compiled(self, compiled):
-        """Sets the compiled of this ImageDto.
-
-
-        :param compiled: The compiled of this ImageDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._compiled = compiled
-
-    @property
-    def size(self):
-        """Gets the size of this ImageDto.  # noqa: E501
-
-
-        :return: The size of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._size
-
-    @size.setter
-    def size(self, size):
-        """Sets the size of this ImageDto.
-
-
-        :param size: The size of this ImageDto.  # noqa: E501
-        :type: int
-        """
-
-        self._size = size
-
-    @property
-    def environment(self):
-        """Gets the environment of this ImageDto.  # noqa: E501
-
-
-        :return: The environment of this ImageDto.  # noqa: E501
-        :rtype: list[ImageEnvItemDto]
-        """
-        return self._environment
-
-    @environment.setter
-    def environment(self, environment):
-        """Sets the environment of this ImageDto.
-
-
-        :param environment: The environment of this ImageDto.  # noqa: E501
-        :type: list[ImageEnvItemDto]
-        """
-        if environment is None:
-            raise ValueError("Invalid value for `environment`, must not be `None`")  # noqa: E501
-
-        self._environment = environment
-
-    @property
-    def driver_class(self):
-        """Gets the driver_class of this ImageDto.  # noqa: E501
-
-
-        :return: The driver_class of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._driver_class
-
-    @driver_class.setter
-    def driver_class(self, driver_class):
-        """Sets the driver_class of this ImageDto.
-
-
-        :param driver_class: The driver_class of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if driver_class is None:
-            raise ValueError("Invalid value for `driver_class`, must not be `None`")  # noqa: E501
-
-        self._driver_class = driver_class
-
-    @property
-    def date_formats(self):
-        """Gets the date_formats of this ImageDto.  # noqa: E501
-
-
-        :return: The date_formats of this ImageDto.  # noqa: E501
-        :rtype: list[ImageDateDto]
-        """
-        return self._date_formats
-
-    @date_formats.setter
-    def date_formats(self, date_formats):
-        """Sets the date_formats of this ImageDto.
-
-
-        :param date_formats: The date_formats of this ImageDto.  # noqa: E501
-        :type: list[ImageDateDto]
-        """
-
-        self._date_formats = date_formats
-
-    @property
-    def jdbc_method(self):
-        """Gets the jdbc_method of this ImageDto.  # noqa: E501
-
-
-        :return: The jdbc_method of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._jdbc_method
-
-    @jdbc_method.setter
-    def jdbc_method(self, jdbc_method):
-        """Sets the jdbc_method of this ImageDto.
-
-
-        :param jdbc_method: The jdbc_method of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if jdbc_method is None:
-            raise ValueError("Invalid value for `jdbc_method`, must not be `None`")  # noqa: E501
-
-        self._jdbc_method = jdbc_method
-
-    @property
-    def default_port(self):
-        """Gets the default_port of this ImageDto.  # noqa: E501
-
-
-        :return: The default_port of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._default_port
-
-    @default_port.setter
-    def default_port(self, default_port):
-        """Sets the default_port of this ImageDto.
-
-
-        :param default_port: The default_port of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if default_port is None:
-            raise ValueError("Invalid value for `default_port`, must not be `None`")  # noqa: E501
-
-        self._default_port = default_port
-
-    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(ImageDto, 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, ImageDto):
-            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/.jupyter/api_authentication/models/image_env_item_dto.py b/.jupyter/api_authentication/models/image_env_item_dto.py
deleted file mode 100644
index 30cae17883057e0e928cc721ade694a2bc7988af..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/image_env_item_dto.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 ImageEnvItemDto(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 = {
-        'iid': 'int',
-        'key': 'str',
-        'value': 'str',
-        'type': 'str'
-    }
-
-    attribute_map = {
-        'iid': 'iid',
-        'key': 'key',
-        'value': 'value',
-        'type': 'type'
-    }
-
-    def __init__(self, iid=None, key=None, value=None, type=None):  # noqa: E501
-        """ImageEnvItemDto - a model defined in Swagger"""  # noqa: E501
-        self._iid = None
-        self._key = None
-        self._value = None
-        self._type = None
-        self.discriminator = None
-        self.iid = iid
-        self.key = key
-        self.value = value
-        if type is not None:
-            self.type = type
-
-    @property
-    def iid(self):
-        """Gets the iid of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The iid of this ImageEnvItemDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._iid
-
-    @iid.setter
-    def iid(self, iid):
-        """Sets the iid of this ImageEnvItemDto.
-
-
-        :param iid: The iid of this ImageEnvItemDto.  # noqa: E501
-        :type: int
-        """
-        if iid is None:
-            raise ValueError("Invalid value for `iid`, must not be `None`")  # noqa: E501
-
-        self._iid = iid
-
-    @property
-    def key(self):
-        """Gets the key of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The key of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._key
-
-    @key.setter
-    def key(self, key):
-        """Sets the key of this ImageEnvItemDto.
-
-
-        :param key: The key of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if key is None:
-            raise ValueError("Invalid value for `key`, must not be `None`")  # noqa: E501
-
-        self._key = key
-
-    @property
-    def value(self):
-        """Gets the value of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The value of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._value
-
-    @value.setter
-    def value(self, value):
-        """Sets the value of this ImageEnvItemDto.
-
-
-        :param value: The value of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if value is None:
-            raise ValueError("Invalid value for `value`, must not be `None`")  # noqa: E501
-
-        self._value = value
-
-    @property
-    def type(self):
-        """Gets the type of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The type of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._type
-
-    @type.setter
-    def type(self, type):
-        """Sets the type of this ImageEnvItemDto.
-
-
-        :param type: The type of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["USERNAME", "PASSWORD", "PRIVILEGED_USERNAME", "PRIVILEGED_PASSWORD"]  # noqa: E501
-        if type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `type` ({0}), must be one of {1}"  # noqa: E501
-                .format(type, allowed_values)
-            )
-
-        self._type = type
-
-    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(ImageEnvItemDto, 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, ImageEnvItemDto):
-            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/.jupyter/api_authentication/models/jwt_response_dto.py b/.jupyter/api_authentication/models/jwt_response_dto.py
deleted file mode 100644
index 1ec439618bdd7247873e016e6e00e310e2d74e24..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/jwt_response_dto.py
+++ /dev/null
@@ -1,241 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 JwtResponseDto(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 = {
-        'token': 'str',
-        'type': 'str',
-        'id': 'int',
-        'username': 'str',
-        'email': 'str',
-        'roles': 'list[str]'
-    }
-
-    attribute_map = {
-        'token': 'token',
-        'type': 'type',
-        'id': 'id',
-        'username': 'username',
-        'email': 'email',
-        'roles': 'roles'
-    }
-
-    def __init__(self, token=None, type=None, id=None, username=None, email=None, roles=None):  # noqa: E501
-        """JwtResponseDto - a model defined in Swagger"""  # noqa: E501
-        self._token = None
-        self._type = None
-        self._id = None
-        self._username = None
-        self._email = None
-        self._roles = None
-        self.discriminator = None
-        self.token = token
-        if type is not None:
-            self.type = type
-        if id is not None:
-            self.id = id
-        if username is not None:
-            self.username = username
-        if email is not None:
-            self.email = email
-        if roles is not None:
-            self.roles = roles
-
-    @property
-    def token(self):
-        """Gets the token of this JwtResponseDto.  # noqa: E501
-
-
-        :return: The token of this JwtResponseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._token
-
-    @token.setter
-    def token(self, token):
-        """Sets the token of this JwtResponseDto.
-
-
-        :param token: The token of this JwtResponseDto.  # noqa: E501
-        :type: str
-        """
-        if token is None:
-            raise ValueError("Invalid value for `token`, must not be `None`")  # noqa: E501
-
-        self._token = token
-
-    @property
-    def type(self):
-        """Gets the type of this JwtResponseDto.  # noqa: E501
-
-
-        :return: The type of this JwtResponseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._type
-
-    @type.setter
-    def type(self, type):
-        """Sets the type of this JwtResponseDto.
-
-
-        :param type: The type of this JwtResponseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._type = type
-
-    @property
-    def id(self):
-        """Gets the id of this JwtResponseDto.  # noqa: E501
-
-
-        :return: The id of this JwtResponseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this JwtResponseDto.
-
-
-        :param id: The id of this JwtResponseDto.  # noqa: E501
-        :type: int
-        """
-
-        self._id = id
-
-    @property
-    def username(self):
-        """Gets the username of this JwtResponseDto.  # noqa: E501
-
-
-        :return: The username of this JwtResponseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this JwtResponseDto.
-
-
-        :param username: The username of this JwtResponseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._username = username
-
-    @property
-    def email(self):
-        """Gets the email of this JwtResponseDto.  # noqa: E501
-
-
-        :return: The email of this JwtResponseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        """Sets the email of this JwtResponseDto.
-
-
-        :param email: The email of this JwtResponseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._email = email
-
-    @property
-    def roles(self):
-        """Gets the roles of this JwtResponseDto.  # noqa: E501
-
-
-        :return: The roles of this JwtResponseDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._roles
-
-    @roles.setter
-    def roles(self, roles):
-        """Sets the roles of this JwtResponseDto.
-
-
-        :param roles: The roles of this JwtResponseDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._roles = roles
-
-    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(JwtResponseDto, 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, JwtResponseDto):
-            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/.jupyter/api_authentication/models/login_request_dto.py b/.jupyter/api_authentication/models/login_request_dto.py
deleted file mode 100644
index ffebe690dd07f94409efb3ecbf3e1a4a286b5323..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/login_request_dto.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 LoginRequestDto(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 = {
-        'username': 'str',
-        'password': 'str'
-    }
-
-    attribute_map = {
-        'username': 'username',
-        'password': 'password'
-    }
-
-    def __init__(self, username=None, password=None):  # noqa: E501
-        """LoginRequestDto - a model defined in Swagger"""  # noqa: E501
-        self._username = None
-        self._password = None
-        self.discriminator = None
-        self.username = username
-        self.password = password
-
-    @property
-    def username(self):
-        """Gets the username of this LoginRequestDto.  # noqa: E501
-
-
-        :return: The username of this LoginRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this LoginRequestDto.
-
-
-        :param username: The username of this LoginRequestDto.  # noqa: E501
-        :type: str
-        """
-        if username is None:
-            raise ValueError("Invalid value for `username`, must not be `None`")  # noqa: E501
-
-        self._username = username
-
-    @property
-    def password(self):
-        """Gets the password of this LoginRequestDto.  # noqa: E501
-
-
-        :return: The password of this LoginRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._password
-
-    @password.setter
-    def password(self, password):
-        """Sets the password of this LoginRequestDto.
-
-
-        :param password: The password of this LoginRequestDto.  # noqa: E501
-        :type: str
-        """
-        if password is None:
-            raise ValueError("Invalid value for `password`, must not be `None`")  # noqa: E501
-
-        self._password = password
-
-    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(LoginRequestDto, 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, LoginRequestDto):
-            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/.jupyter/api_authentication/models/signup_request_dto.py b/.jupyter/api_authentication/models/signup_request_dto.py
deleted file mode 100644
index e4583703ccabdc602ba73297658b3b96dfe27948..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/signup_request_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 SignupRequestDto(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 = {
-        'username': 'str',
-        'email': 'str',
-        'password': 'str'
-    }
-
-    attribute_map = {
-        'username': 'username',
-        'email': 'email',
-        'password': 'password'
-    }
-
-    def __init__(self, username=None, email=None, password=None):  # noqa: E501
-        """SignupRequestDto - a model defined in Swagger"""  # noqa: E501
-        self._username = None
-        self._email = None
-        self._password = None
-        self.discriminator = None
-        self.username = username
-        self.email = email
-        self.password = password
-
-    @property
-    def username(self):
-        """Gets the username of this SignupRequestDto.  # noqa: E501
-
-
-        :return: The username of this SignupRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this SignupRequestDto.
-
-
-        :param username: The username of this SignupRequestDto.  # noqa: E501
-        :type: str
-        """
-        if username is None:
-            raise ValueError("Invalid value for `username`, must not be `None`")  # noqa: E501
-
-        self._username = username
-
-    @property
-    def email(self):
-        """Gets the email of this SignupRequestDto.  # noqa: E501
-
-
-        :return: The email of this SignupRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        """Sets the email of this SignupRequestDto.
-
-
-        :param email: The email of this SignupRequestDto.  # noqa: E501
-        :type: str
-        """
-        if email is None:
-            raise ValueError("Invalid value for `email`, must not be `None`")  # noqa: E501
-
-        self._email = email
-
-    @property
-    def password(self):
-        """Gets the password of this SignupRequestDto.  # noqa: E501
-
-
-        :return: The password of this SignupRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._password
-
-    @password.setter
-    def password(self, password):
-        """Sets the password of this SignupRequestDto.
-
-
-        :param password: The password of this SignupRequestDto.  # noqa: E501
-        :type: str
-        """
-        if password is None:
-            raise ValueError("Invalid value for `password`, must not be `None`")  # noqa: E501
-
-        self._password = password
-
-    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(SignupRequestDto, 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, SignupRequestDto):
-            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/.jupyter/api_authentication/models/table_dto.py b/.jupyter/api_authentication/models/table_dto.py
deleted file mode 100644
index 9eceddcfc49f5bcd0031bde0c00cf5e2434fa072..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/table_dto.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 TableDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'topic': 'str',
-        'description': 'str',
-        'created': 'datetime',
-        'columns': 'list[ColumnDto]',
-        'internal_name': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'topic': 'topic',
-        'description': 'description',
-        'created': 'created',
-        'columns': 'columns',
-        'internal_name': 'internal_name'
-    }
-
-    def __init__(self, id=None, name=None, topic=None, description=None, created=None, columns=None, internal_name=None):  # noqa: E501
-        """TableDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._topic = None
-        self._description = None
-        self._created = None
-        self._columns = None
-        self._internal_name = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.topic = topic
-        self.description = description
-        if created is not None:
-            self.created = created
-        self.columns = columns
-        self.internal_name = internal_name
-
-    @property
-    def id(self):
-        """Gets the id of this TableDto.  # noqa: E501
-
-
-        :return: The id of this TableDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this TableDto.
-
-
-        :param id: The id of this TableDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this TableDto.  # noqa: E501
-
-
-        :return: The name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableDto.
-
-
-        :param name: The name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def topic(self):
-        """Gets the topic of this TableDto.  # noqa: E501
-
-
-        :return: The topic of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._topic
-
-    @topic.setter
-    def topic(self, topic):
-        """Sets the topic of this TableDto.
-
-
-        :param topic: The topic of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if topic is None:
-            raise ValueError("Invalid value for `topic`, must not be `None`")  # noqa: E501
-
-        self._topic = topic
-
-    @property
-    def description(self):
-        """Gets the description of this TableDto.  # noqa: E501
-
-
-        :return: The description of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this TableDto.
-
-
-        :param description: The description of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def created(self):
-        """Gets the created of this TableDto.  # noqa: E501
-
-
-        :return: The created of this TableDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this TableDto.
-
-
-        :param created: The created of this TableDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def columns(self):
-        """Gets the columns of this TableDto.  # noqa: E501
-
-
-        :return: The columns of this TableDto.  # noqa: E501
-        :rtype: list[ColumnDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this TableDto.
-
-
-        :param columns: The columns of this TableDto.  # noqa: E501
-        :type: list[ColumnDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this TableDto.  # noqa: E501
-
-
-        :return: The internal_name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this TableDto.
-
-
-        :param internal_name: The internal_name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    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(TableDto, 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, TableDto):
-            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/.jupyter/api_authentication/models/user_dto.py b/.jupyter/api_authentication/models/user_dto.py
deleted file mode 100644
index aeaa5c73af87bc9be364275e5f0e22cb7a5fa0b5..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/models/user_dto.py
+++ /dev/null
@@ -1,478 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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 UserDto(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 = {
-        'id': 'int',
-        'authorities': 'list[GrantedAuthorityDto]',
-        'username': 'str',
-        'firstname': 'str',
-        'lastname': 'str',
-        'affiliation': 'str',
-        'orcid': 'str',
-        'containers': 'list[ContainerDto]',
-        'databases': 'list[ContainerDto]',
-        'identifiers': 'list[ContainerDto]',
-        'email': 'str',
-        'titles_before': 'str',
-        'titles_after': 'str',
-        'theme_dark': 'bool',
-        'email_verified': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'authorities': 'authorities',
-        'username': 'username',
-        'firstname': 'firstname',
-        'lastname': 'lastname',
-        'affiliation': 'affiliation',
-        'orcid': 'orcid',
-        'containers': 'containers',
-        'databases': 'databases',
-        'identifiers': 'identifiers',
-        'email': 'email',
-        'titles_before': 'titles_before',
-        'titles_after': 'titles_after',
-        'theme_dark': 'theme_dark',
-        'email_verified': 'email_verified'
-    }
-
-    def __init__(self, id=None, authorities=None, username=None, firstname=None, lastname=None, affiliation=None, orcid=None, containers=None, databases=None, identifiers=None, email=None, titles_before=None, titles_after=None, theme_dark=None, email_verified=None):  # noqa: E501
-        """UserDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._authorities = None
-        self._username = None
-        self._firstname = None
-        self._lastname = None
-        self._affiliation = None
-        self._orcid = None
-        self._containers = None
-        self._databases = None
-        self._identifiers = None
-        self._email = None
-        self._titles_before = None
-        self._titles_after = None
-        self._theme_dark = None
-        self._email_verified = None
-        self.discriminator = None
-        self.id = id
-        if authorities is not None:
-            self.authorities = authorities
-        self.username = username
-        if firstname is not None:
-            self.firstname = firstname
-        if lastname is not None:
-            self.lastname = lastname
-        if affiliation is not None:
-            self.affiliation = affiliation
-        if orcid is not None:
-            self.orcid = orcid
-        if containers is not None:
-            self.containers = containers
-        if databases is not None:
-            self.databases = databases
-        if identifiers is not None:
-            self.identifiers = identifiers
-        self.email = email
-        if titles_before is not None:
-            self.titles_before = titles_before
-        if titles_after is not None:
-            self.titles_after = titles_after
-        self.theme_dark = theme_dark
-        if email_verified is not None:
-            self.email_verified = email_verified
-
-    @property
-    def id(self):
-        """Gets the id of this UserDto.  # noqa: E501
-
-
-        :return: The id of this UserDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this UserDto.
-
-
-        :param id: The id of this UserDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def authorities(self):
-        """Gets the authorities of this UserDto.  # noqa: E501
-
-
-        :return: The authorities of this UserDto.  # noqa: E501
-        :rtype: list[GrantedAuthorityDto]
-        """
-        return self._authorities
-
-    @authorities.setter
-    def authorities(self, authorities):
-        """Sets the authorities of this UserDto.
-
-
-        :param authorities: The authorities of this UserDto.  # noqa: E501
-        :type: list[GrantedAuthorityDto]
-        """
-
-        self._authorities = authorities
-
-    @property
-    def username(self):
-        """Gets the username of this UserDto.  # noqa: E501
-
-
-        :return: The username of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this UserDto.
-
-
-        :param username: The username of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if username is None:
-            raise ValueError("Invalid value for `username`, must not be `None`")  # noqa: E501
-
-        self._username = username
-
-    @property
-    def firstname(self):
-        """Gets the firstname of this UserDto.  # noqa: E501
-
-
-        :return: The firstname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._firstname
-
-    @firstname.setter
-    def firstname(self, firstname):
-        """Sets the firstname of this UserDto.
-
-
-        :param firstname: The firstname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._firstname = firstname
-
-    @property
-    def lastname(self):
-        """Gets the lastname of this UserDto.  # noqa: E501
-
-
-        :return: The lastname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._lastname
-
-    @lastname.setter
-    def lastname(self, lastname):
-        """Sets the lastname of this UserDto.
-
-
-        :param lastname: The lastname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._lastname = lastname
-
-    @property
-    def affiliation(self):
-        """Gets the affiliation of this UserDto.  # noqa: E501
-
-
-        :return: The affiliation of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._affiliation
-
-    @affiliation.setter
-    def affiliation(self, affiliation):
-        """Sets the affiliation of this UserDto.
-
-
-        :param affiliation: The affiliation of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._affiliation = affiliation
-
-    @property
-    def orcid(self):
-        """Gets the orcid of this UserDto.  # noqa: E501
-
-
-        :return: The orcid of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._orcid
-
-    @orcid.setter
-    def orcid(self, orcid):
-        """Sets the orcid of this UserDto.
-
-
-        :param orcid: The orcid of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._orcid = orcid
-
-    @property
-    def containers(self):
-        """Gets the containers of this UserDto.  # noqa: E501
-
-
-        :return: The containers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._containers
-
-    @containers.setter
-    def containers(self, containers):
-        """Sets the containers of this UserDto.
-
-
-        :param containers: The containers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._containers = containers
-
-    @property
-    def databases(self):
-        """Gets the databases of this UserDto.  # noqa: E501
-
-
-        :return: The databases of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this UserDto.
-
-
-        :param databases: The databases of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def identifiers(self):
-        """Gets the identifiers of this UserDto.  # noqa: E501
-
-
-        :return: The identifiers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._identifiers
-
-    @identifiers.setter
-    def identifiers(self, identifiers):
-        """Sets the identifiers of this UserDto.
-
-
-        :param identifiers: The identifiers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._identifiers = identifiers
-
-    @property
-    def email(self):
-        """Gets the email of this UserDto.  # noqa: E501
-
-
-        :return: The email of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        """Sets the email of this UserDto.
-
-
-        :param email: The email of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if email is None:
-            raise ValueError("Invalid value for `email`, must not be `None`")  # noqa: E501
-
-        self._email = email
-
-    @property
-    def titles_before(self):
-        """Gets the titles_before of this UserDto.  # noqa: E501
-
-
-        :return: The titles_before of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_before
-
-    @titles_before.setter
-    def titles_before(self, titles_before):
-        """Sets the titles_before of this UserDto.
-
-
-        :param titles_before: The titles_before of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_before = titles_before
-
-    @property
-    def titles_after(self):
-        """Gets the titles_after of this UserDto.  # noqa: E501
-
-
-        :return: The titles_after of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_after
-
-    @titles_after.setter
-    def titles_after(self, titles_after):
-        """Sets the titles_after of this UserDto.
-
-
-        :param titles_after: The titles_after of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_after = titles_after
-
-    @property
-    def theme_dark(self):
-        """Gets the theme_dark of this UserDto.  # noqa: E501
-
-
-        :return: The theme_dark of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._theme_dark
-
-    @theme_dark.setter
-    def theme_dark(self, theme_dark):
-        """Sets the theme_dark of this UserDto.
-
-
-        :param theme_dark: The theme_dark of this UserDto.  # noqa: E501
-        :type: bool
-        """
-        if theme_dark is None:
-            raise ValueError("Invalid value for `theme_dark`, must not be `None`")  # noqa: E501
-
-        self._theme_dark = theme_dark
-
-    @property
-    def email_verified(self):
-        """Gets the email_verified of this UserDto.  # noqa: E501
-
-
-        :return: The email_verified of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._email_verified
-
-    @email_verified.setter
-    def email_verified(self, email_verified):
-        """Sets the email_verified of this UserDto.
-
-
-        :param email_verified: The email_verified of this UserDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._email_verified = email_verified
-
-    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(UserDto, 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, UserDto):
-            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/.jupyter/api_authentication/rest.py b/.jupyter/api_authentication/rest.py
deleted file mode 100644
index fc46df7c0293982201996d273d0d234057f987f0..0000000000000000000000000000000000000000
--- a/.jupyter/api_authentication/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Authentication Service API
-
-    Service that manages the authentication  # 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/.jupyter/api_broker/BrokerServiceClient.py b/.jupyter/api_broker/BrokerServiceClient.py
deleted file mode 100644
index 484837109103a5d287cd3e8c7cd41db95e8274e2..0000000000000000000000000000000000000000
--- a/.jupyter/api_broker/BrokerServiceClient.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/env python3
-import pika
-import json
-
-
-class BrokerServiceClient:
-
-    def __init__(self, exchange=None, routing_key=None, host=None, username=None, password=None):
-        self.exchange = exchange
-        self.routing_key = routing_key
-        self.host = host
-        self.username = username
-        self.password = password
-
-    def send(self, data):
-        creds = pika.credentials.PlainCredentials(self.username, self.password)
-        connection = pika.BlockingConnection(pika.ConnectionParameters(host=self.host, credentials=creds))
-        channel = connection.channel()
-        dump = json.dumps(data)
-        channel.basic_publish(exchange=self.exchange,
-                              routing_key=self.routing_key,
-                              body=bytes(json.dumps(data), encoding='utf8'))
-        method, properties, body = channel.basic_get(queue=self.routing_key)
-        connection.close()
-        if method is not None:
-            return False
-        else:
-            return True
diff --git a/.jupyter/api_container/__init__.py b/.jupyter/api_container/__init__.py
deleted file mode 100644
index e8c65699a9aec6d7e0fb978d8754509fb3ea5b55..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/__init__.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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_container.api.container_endpoint_api import ContainerEndpointApi
-from api_container.api.image_endpoint_api import ImageEndpointApi
-# import ApiClient
-from api_container.api_client import ApiClient
-from api_container.configuration import Configuration
-# import models into sdk package
-from api_container.models.api_error_dto import ApiErrorDto
-from api_container.models.container_brief_dto import ContainerBriefDto
-from api_container.models.container_change_dto import ContainerChangeDto
-from api_container.models.container_create_request_dto import ContainerCreateRequestDto
-from api_container.models.container_dto import ContainerDto
-from api_container.models.database_dto import DatabaseDto
-from api_container.models.granted_authority_dto import GrantedAuthorityDto
-from api_container.models.image_brief_dto import ImageBriefDto
-from api_container.models.image_change_dto import ImageChangeDto
-from api_container.models.image_create_dto import ImageCreateDto
-from api_container.models.image_date_dto import ImageDateDto
-from api_container.models.image_dto import ImageDto
-from api_container.models.image_env_item_dto import ImageEnvItemDto
-from api_container.models.license_dto import LicenseDto
-from api_container.models.table_brief_dto import TableBriefDto
-from api_container.models.user_brief_dto import UserBriefDto
-from api_container.models.user_dto import UserDto
diff --git a/.jupyter/api_container/api/__init__.py b/.jupyter/api_container/api/__init__.py
deleted file mode 100644
index d903cb3dd5087e37881f6992daaea4d79590eef6..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/api/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_container.api.container_endpoint_api import ContainerEndpointApi
-from api_container.api.image_endpoint_api import ImageEndpointApi
diff --git a/.jupyter/api_container/api/container_endpoint_api.py b/.jupyter/api_container/api/container_endpoint_api.py
deleted file mode 100644
index 07eabb2287cafb8bfa40752852399db22125ed23..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/api/container_endpoint_api.py
+++ /dev/null
@@ -1,506 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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_container.api_client import ApiClient
-
-
-class ContainerEndpointApi(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 create1(self, body, **kwargs):  # noqa: E501
-        """Create container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create1(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ContainerCreateRequestDto body: (required)
-        :return: ContainerBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.create1_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.create1_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def create1_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Create container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create1_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ContainerCreateRequestDto body: (required)
-        :return: ContainerBriefDto
-                 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 create1" % 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 `create1`")  # 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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='ContainerBriefDto',  # 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 delete1(self, id, **kwargs):  # noqa: E501
-        """Delete some container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete1(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.delete1_with_http_info(id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.delete1_with_http_info(id, **kwargs)  # noqa: E501
-            return data
-
-    def delete1_with_http_info(self, id, **kwargs):  # noqa: E501
-        """Delete some container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete1_with_http_info(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method delete1" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `delete1`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}', 'DELETE',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='object',  # 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 find_all1(self, **kwargs):  # noqa: E501
-        """Find all containers  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all1(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: list[ContainerBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_all1_with_http_info(**kwargs)  # noqa: E501
-        else:
-            (data) = self.find_all1_with_http_info(**kwargs)  # noqa: E501
-            return data
-
-    def find_all1_with_http_info(self, **kwargs):  # noqa: E501
-        """Find all containers  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all1_with_http_info(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: list[ContainerBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = []  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_all1" % key
-                )
-            params[key] = val
-        del params['kwargs']
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[ContainerBriefDto]',  # 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 find_by_id1(self, id, **kwargs):  # noqa: E501
-        """Find some container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id1(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: ContainerDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_by_id1_with_http_info(id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_by_id1_with_http_info(id, **kwargs)  # noqa: E501
-            return data
-
-    def find_by_id1_with_http_info(self, id, **kwargs):  # noqa: E501
-        """Find some container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id1_with_http_info(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: ContainerDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_by_id1" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_by_id1`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='ContainerDto',  # 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 modify(self, body, id, **kwargs):  # noqa: E501
-        """Modify some container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.modify(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ContainerChangeDto body: (required)
-        :param int id: (required)
-        :return: ContainerBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.modify_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.modify_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def modify_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Modify some container  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.modify_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ContainerChangeDto body: (required)
-        :param int id: (required)
-        :return: ContainerBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method modify" % 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 `modify`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `modify`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='ContainerBriefDto',  # 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/.jupyter/api_container/api/image_endpoint_api.py b/.jupyter/api_container/api/image_endpoint_api.py
deleted file mode 100644
index d85d81adc68c8a7c4a81de4732f59f0213112424..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/api/image_endpoint_api.py
+++ /dev/null
@@ -1,506 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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_container.api_client import ApiClient
-
-
-class ImageEndpointApi(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    Ref: https://github.com/swagger-api/swagger-codegen
-    """
-
-    def __init__(self, api_client=None):
-        if api_client is None:
-            api_client = ApiClient()
-        self.api_client = api_client
-
-    def create(self, body, **kwargs):  # noqa: E501
-        """Create image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ImageCreateDto body: (required)
-        :return: ImageDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.create_with_http_info(body, **kwargs)  # noqa: E501
-        else:
-            (data) = self.create_with_http_info(body, **kwargs)  # noqa: E501
-            return data
-
-    def create_with_http_info(self, body, **kwargs):  # noqa: E501
-        """Create image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create_with_http_info(body, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ImageCreateDto body: (required)
-        :return: ImageDto
-                 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 create" % 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 `create`")  # 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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/image', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='ImageDto',  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=params.get('async_req'),
-            _return_http_data_only=params.get('_return_http_data_only'),
-            _preload_content=params.get('_preload_content', True),
-            _request_timeout=params.get('_request_timeout'),
-            collection_formats=collection_formats)
-
-    def delete(self, id, **kwargs):  # noqa: E501
-        """Delete some image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.delete_with_http_info(id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.delete_with_http_info(id, **kwargs)  # noqa: E501
-            return data
-
-    def delete_with_http_info(self, id, **kwargs):  # noqa: E501
-        """Delete some image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete_with_http_info(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method delete" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `delete`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/image/{id}', 'DELETE',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='object',  # 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 find_all(self, **kwargs):  # noqa: E501
-        """Find all images  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: list[ImageBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_all_with_http_info(**kwargs)  # noqa: E501
-        else:
-            (data) = self.find_all_with_http_info(**kwargs)  # noqa: E501
-            return data
-
-    def find_all_with_http_info(self, **kwargs):  # noqa: E501
-        """Find all images  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all_with_http_info(async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :return: list[ImageBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = []  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_all" % key
-                )
-            params[key] = val
-        del params['kwargs']
-
-        collection_formats = {}
-
-        path_params = {}
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/image', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[ImageBriefDto]',  # 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 find_by_id(self, id, **kwargs):  # noqa: E501
-        """Find some image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: ImageDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_by_id_with_http_info(id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_by_id_with_http_info(id, **kwargs)  # noqa: E501
-            return data
-
-    def find_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
-        """Find some image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id_with_http_info(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: ImageDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_by_id" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_by_id`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/image/{id}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='ImageDto',  # 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 update(self, body, id, **kwargs):  # noqa: E501
-        """Update some image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ImageChangeDto body: (required)
-        :param int id: (required)
-        :return: ImageDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def update_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Update some image  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ImageChangeDto body: (required)
-        :param int id: (required)
-        :return: ImageDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update" % 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 `update`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/image/{id}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='ImageDto',  # 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/.jupyter/api_container/api_client.py b/.jupyter/api_container/api_client.py
deleted file mode 100644
index 9a90db60ab22d3cf8b2ec0ea953b9939b231fb6f..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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_container.configuration import Configuration
-import api_container.models
-from api_container 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_container.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/.jupyter/api_container/configuration.py b/.jupyter/api_container/configuration.py
deleted file mode 100644
index 23d21b83810a226c542b2172f81bcb8fc607ce8b..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 = "http://localhost:9095"
-        # 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_container")
-        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/.jupyter/api_container/models/__init__.py b/.jupyter/api_container/models/__init__.py
deleted file mode 100644
index 563386400df8bac3bf6baa005dffcc98e331ee88..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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_container.models.api_error_dto import ApiErrorDto
-from api_container.models.container_brief_dto import ContainerBriefDto
-from api_container.models.container_change_dto import ContainerChangeDto
-from api_container.models.container_create_request_dto import ContainerCreateRequestDto
-from api_container.models.container_dto import ContainerDto
-from api_container.models.database_dto import DatabaseDto
-from api_container.models.granted_authority_dto import GrantedAuthorityDto
-from api_container.models.image_brief_dto import ImageBriefDto
-from api_container.models.image_change_dto import ImageChangeDto
-from api_container.models.image_create_dto import ImageCreateDto
-from api_container.models.image_date_dto import ImageDateDto
-from api_container.models.image_dto import ImageDto
-from api_container.models.image_env_item_dto import ImageEnvItemDto
-from api_container.models.license_dto import LicenseDto
-from api_container.models.table_brief_dto import TableBriefDto
-from api_container.models.user_brief_dto import UserBriefDto
-from api_container.models.user_dto import UserDto
diff --git a/.jupyter/api_container/models/api_error_dto.py b/.jupyter/api_container/models/api_error_dto.py
deleted file mode 100644
index 4f8067fdcbc2e833c0b9a5e769be8a09cf5a9ffa..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/api_error_dto.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ApiErrorDto(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 = {
-        'status': 'str',
-        'message': 'str',
-        'code': 'str'
-    }
-
-    attribute_map = {
-        'status': 'status',
-        'message': 'message',
-        'code': 'code'
-    }
-
-    def __init__(self, status=None, message=None, code=None):  # noqa: E501
-        """ApiErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._status = None
-        self._message = None
-        self._code = None
-        self.discriminator = None
-        self.status = status
-        self.message = message
-        self.code = code
-
-    @property
-    def status(self):
-        """Gets the status of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The status of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._status
-
-    @status.setter
-    def status(self, status):
-        """Sets the status of this ApiErrorDto.
-
-
-        :param status: The status of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if status is None:
-            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
-        allowed_values = ["100 CONTINUE", "101 SWITCHING_PROTOCOLS", "102 PROCESSING", "103 CHECKPOINT", "200 OK", "201 CREATED", "202 ACCEPTED", "203 NON_AUTHORITATIVE_INFORMATION", "204 NO_CONTENT", "205 RESET_CONTENT", "206 PARTIAL_CONTENT", "207 MULTI_STATUS", "208 ALREADY_REPORTED", "226 IM_USED", "300 MULTIPLE_CHOICES", "301 MOVED_PERMANENTLY", "302 FOUND", "302 MOVED_TEMPORARILY", "303 SEE_OTHER", "304 NOT_MODIFIED", "305 USE_PROXY", "307 TEMPORARY_REDIRECT", "308 PERMANENT_REDIRECT", "400 BAD_REQUEST", "401 UNAUTHORIZED", "402 PAYMENT_REQUIRED", "403 FORBIDDEN", "404 NOT_FOUND", "405 METHOD_NOT_ALLOWED", "406 NOT_ACCEPTABLE", "407 PROXY_AUTHENTICATION_REQUIRED", "408 REQUEST_TIMEOUT", "409 CONFLICT", "410 GONE", "411 LENGTH_REQUIRED", "412 PRECONDITION_FAILED", "413 PAYLOAD_TOO_LARGE", "413 REQUEST_ENTITY_TOO_LARGE", "414 URI_TOO_LONG", "414 REQUEST_URI_TOO_LONG", "415 UNSUPPORTED_MEDIA_TYPE", "416 REQUESTED_RANGE_NOT_SATISFIABLE", "417 EXPECTATION_FAILED", "418 I_AM_A_TEAPOT", "419 INSUFFICIENT_SPACE_ON_RESOURCE", "420 METHOD_FAILURE", "421 DESTINATION_LOCKED", "422 UNPROCESSABLE_ENTITY", "423 LOCKED", "424 FAILED_DEPENDENCY", "425 TOO_EARLY", "426 UPGRADE_REQUIRED", "428 PRECONDITION_REQUIRED", "429 TOO_MANY_REQUESTS", "431 REQUEST_HEADER_FIELDS_TOO_LARGE", "451 UNAVAILABLE_FOR_LEGAL_REASONS", "500 INTERNAL_SERVER_ERROR", "501 NOT_IMPLEMENTED", "502 BAD_GATEWAY", "503 SERVICE_UNAVAILABLE", "504 GATEWAY_TIMEOUT", "505 HTTP_VERSION_NOT_SUPPORTED", "506 VARIANT_ALSO_NEGOTIATES", "507 INSUFFICIENT_STORAGE", "508 LOOP_DETECTED", "509 BANDWIDTH_LIMIT_EXCEEDED", "510 NOT_EXTENDED", "511 NETWORK_AUTHENTICATION_REQUIRED"]  # noqa: E501
-        if status not in allowed_values:
-            raise ValueError(
-                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
-                .format(status, allowed_values)
-            )
-
-        self._status = status
-
-    @property
-    def message(self):
-        """Gets the message of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The message of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ApiErrorDto.
-
-
-        :param message: The message of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if message is None:
-            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501
-
-        self._message = message
-
-    @property
-    def code(self):
-        """Gets the code of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The code of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._code
-
-    @code.setter
-    def code(self, code):
-        """Sets the code of this ApiErrorDto.
-
-
-        :param code: The code of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if code is None:
-            raise ValueError("Invalid value for `code`, must not be `None`")  # noqa: E501
-
-        self._code = code
-
-    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(ApiErrorDto, 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, ApiErrorDto):
-            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/.jupyter/api_container/models/column_dto.py b/.jupyter/api_container/models/column_dto.py
deleted file mode 100644
index 96e26927200e62d98f54e2ea8f231a0262f6955c..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/column_dto.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ColumnDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'unique': 'bool',
-        'references': 'str',
-        'internal_name': 'str',
-        'date_format': 'ImageDateDto',
-        'auto_generated': 'bool',
-        'is_primary_key': 'bool',
-        'column_type': 'str',
-        'column_concept': 'ConceptDto',
-        'decimal_digits_before': 'int',
-        'decimal_digits_after': 'int',
-        'is_null_allowed': 'bool',
-        'check_expression': 'str',
-        'foreign_key': 'str',
-        'enum_values': 'list[str]'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'unique': 'unique',
-        'references': 'references',
-        'internal_name': 'internal_name',
-        'date_format': 'date_format',
-        'auto_generated': 'auto_generated',
-        'is_primary_key': 'is_primary_key',
-        'column_type': 'column_type',
-        'column_concept': 'column_concept',
-        'decimal_digits_before': 'decimal_digits_before',
-        'decimal_digits_after': 'decimal_digits_after',
-        'is_null_allowed': 'is_null_allowed',
-        'check_expression': 'check_expression',
-        'foreign_key': 'foreign_key',
-        'enum_values': 'enum_values'
-    }
-
-    def __init__(self, id=None, name=None, unique=None, references=None, internal_name=None, date_format=None, auto_generated=None, is_primary_key=None, column_type=None, column_concept=None, decimal_digits_before=None, decimal_digits_after=None, is_null_allowed=None, check_expression=None, foreign_key=None, enum_values=None):  # noqa: E501
-        """ColumnDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._unique = None
-        self._references = None
-        self._internal_name = None
-        self._date_format = None
-        self._auto_generated = None
-        self._is_primary_key = None
-        self._column_type = None
-        self._column_concept = None
-        self._decimal_digits_before = None
-        self._decimal_digits_after = None
-        self._is_null_allowed = None
-        self._check_expression = None
-        self._foreign_key = None
-        self._enum_values = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.unique = unique
-        if references is not None:
-            self.references = references
-        self.internal_name = internal_name
-        if date_format is not None:
-            self.date_format = date_format
-        self.auto_generated = auto_generated
-        self.is_primary_key = is_primary_key
-        self.column_type = column_type
-        if column_concept is not None:
-            self.column_concept = column_concept
-        if decimal_digits_before is not None:
-            self.decimal_digits_before = decimal_digits_before
-        if decimal_digits_after is not None:
-            self.decimal_digits_after = decimal_digits_after
-        self.is_null_allowed = is_null_allowed
-        if check_expression is not None:
-            self.check_expression = check_expression
-        if foreign_key is not None:
-            self.foreign_key = foreign_key
-        if enum_values is not None:
-            self.enum_values = enum_values
-
-    @property
-    def id(self):
-        """Gets the id of this ColumnDto.  # noqa: E501
-
-
-        :return: The id of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ColumnDto.
-
-
-        :param id: The id of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this ColumnDto.  # noqa: E501
-
-
-        :return: The name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ColumnDto.
-
-
-        :param name: The name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def unique(self):
-        """Gets the unique of this ColumnDto.  # noqa: E501
-
-
-        :return: The unique of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._unique
-
-    @unique.setter
-    def unique(self, unique):
-        """Sets the unique of this ColumnDto.
-
-
-        :param unique: The unique of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if unique is None:
-            raise ValueError("Invalid value for `unique`, must not be `None`")  # noqa: E501
-
-        self._unique = unique
-
-    @property
-    def references(self):
-        """Gets the references of this ColumnDto.  # noqa: E501
-
-
-        :return: The references of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._references
-
-    @references.setter
-    def references(self, references):
-        """Sets the references of this ColumnDto.
-
-
-        :param references: The references of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._references = references
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ColumnDto.  # noqa: E501
-
-
-        :return: The internal_name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ColumnDto.
-
-
-        :param internal_name: The internal_name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def date_format(self):
-        """Gets the date_format of this ColumnDto.  # noqa: E501
-
-
-        :return: The date_format of this ColumnDto.  # noqa: E501
-        :rtype: ImageDateDto
-        """
-        return self._date_format
-
-    @date_format.setter
-    def date_format(self, date_format):
-        """Sets the date_format of this ColumnDto.
-
-
-        :param date_format: The date_format of this ColumnDto.  # noqa: E501
-        :type: ImageDateDto
-        """
-
-        self._date_format = date_format
-
-    @property
-    def auto_generated(self):
-        """Gets the auto_generated of this ColumnDto.  # noqa: E501
-
-
-        :return: The auto_generated of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._auto_generated
-
-    @auto_generated.setter
-    def auto_generated(self, auto_generated):
-        """Sets the auto_generated of this ColumnDto.
-
-
-        :param auto_generated: The auto_generated of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if auto_generated is None:
-            raise ValueError("Invalid value for `auto_generated`, must not be `None`")  # noqa: E501
-
-        self._auto_generated = auto_generated
-
-    @property
-    def is_primary_key(self):
-        """Gets the is_primary_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_primary_key of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_primary_key
-
-    @is_primary_key.setter
-    def is_primary_key(self, is_primary_key):
-        """Sets the is_primary_key of this ColumnDto.
-
-
-        :param is_primary_key: The is_primary_key of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_primary_key is None:
-            raise ValueError("Invalid value for `is_primary_key`, must not be `None`")  # noqa: E501
-
-        self._is_primary_key = is_primary_key
-
-    @property
-    def column_type(self):
-        """Gets the column_type of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_type of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._column_type
-
-    @column_type.setter
-    def column_type(self, column_type):
-        """Sets the column_type of this ColumnDto.
-
-
-        :param column_type: The column_type of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if column_type is None:
-            raise ValueError("Invalid value for `column_type`, must not be `None`")  # noqa: E501
-        allowed_values = ["enum", "number", "decimal", "string", "text", "boolean", "date", "timestamp", "blob"]  # noqa: E501
-        if column_type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `column_type` ({0}), must be one of {1}"  # noqa: E501
-                .format(column_type, allowed_values)
-            )
-
-        self._column_type = column_type
-
-    @property
-    def column_concept(self):
-        """Gets the column_concept of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_concept of this ColumnDto.  # noqa: E501
-        :rtype: ConceptDto
-        """
-        return self._column_concept
-
-    @column_concept.setter
-    def column_concept(self, column_concept):
-        """Sets the column_concept of this ColumnDto.
-
-
-        :param column_concept: The column_concept of this ColumnDto.  # noqa: E501
-        :type: ConceptDto
-        """
-
-        self._column_concept = column_concept
-
-    @property
-    def decimal_digits_before(self):
-        """Gets the decimal_digits_before of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_before
-
-    @decimal_digits_before.setter
-    def decimal_digits_before(self, decimal_digits_before):
-        """Sets the decimal_digits_before of this ColumnDto.
-
-
-        :param decimal_digits_before: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_before = decimal_digits_before
-
-    @property
-    def decimal_digits_after(self):
-        """Gets the decimal_digits_after of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_after
-
-    @decimal_digits_after.setter
-    def decimal_digits_after(self, decimal_digits_after):
-        """Sets the decimal_digits_after of this ColumnDto.
-
-
-        :param decimal_digits_after: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_after = decimal_digits_after
-
-    @property
-    def is_null_allowed(self):
-        """Gets the is_null_allowed of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_null_allowed
-
-    @is_null_allowed.setter
-    def is_null_allowed(self, is_null_allowed):
-        """Sets the is_null_allowed of this ColumnDto.
-
-
-        :param is_null_allowed: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_null_allowed is None:
-            raise ValueError("Invalid value for `is_null_allowed`, must not be `None`")  # noqa: E501
-
-        self._is_null_allowed = is_null_allowed
-
-    @property
-    def check_expression(self):
-        """Gets the check_expression of this ColumnDto.  # noqa: E501
-
-
-        :return: The check_expression of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._check_expression
-
-    @check_expression.setter
-    def check_expression(self, check_expression):
-        """Sets the check_expression of this ColumnDto.
-
-
-        :param check_expression: The check_expression of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._check_expression = check_expression
-
-    @property
-    def foreign_key(self):
-        """Gets the foreign_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The foreign_key of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._foreign_key
-
-    @foreign_key.setter
-    def foreign_key(self, foreign_key):
-        """Sets the foreign_key of this ColumnDto.
-
-
-        :param foreign_key: The foreign_key of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._foreign_key = foreign_key
-
-    @property
-    def enum_values(self):
-        """Gets the enum_values of this ColumnDto.  # noqa: E501
-
-
-        :return: The enum_values of this ColumnDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._enum_values
-
-    @enum_values.setter
-    def enum_values(self, enum_values):
-        """Sets the enum_values of this ColumnDto.
-
-
-        :param enum_values: The enum_values of this ColumnDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._enum_values = enum_values
-
-    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(ColumnDto, 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, ColumnDto):
-            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/.jupyter/api_container/models/concept_dto.py b/.jupyter/api_container/models/concept_dto.py
deleted file mode 100644
index fb84f8162eefe1e337201edcf46d36fcde988341..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/concept_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ConceptDto(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 = {
-        'uri': 'str',
-        'name': 'str',
-        'created': 'datetime'
-    }
-
-    attribute_map = {
-        'uri': 'uri',
-        'name': 'name',
-        'created': 'created'
-    }
-
-    def __init__(self, uri=None, name=None, created=None):  # noqa: E501
-        """ConceptDto - a model defined in Swagger"""  # noqa: E501
-        self._uri = None
-        self._name = None
-        self._created = None
-        self.discriminator = None
-        self.uri = uri
-        self.name = name
-        self.created = created
-
-    @property
-    def uri(self):
-        """Gets the uri of this ConceptDto.  # noqa: E501
-
-
-        :return: The uri of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._uri
-
-    @uri.setter
-    def uri(self, uri):
-        """Sets the uri of this ConceptDto.
-
-
-        :param uri: The uri of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if uri is None:
-            raise ValueError("Invalid value for `uri`, must not be `None`")  # noqa: E501
-
-        self._uri = uri
-
-    @property
-    def name(self):
-        """Gets the name of this ConceptDto.  # noqa: E501
-
-
-        :return: The name of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ConceptDto.
-
-
-        :param name: The name of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def created(self):
-        """Gets the created of this ConceptDto.  # noqa: E501
-
-
-        :return: The created of this ConceptDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ConceptDto.
-
-
-        :param created: The created of this ConceptDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    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(ConceptDto, 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, ConceptDto):
-            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/.jupyter/api_container/models/container_brief_dto.py b/.jupyter/api_container/models/container_brief_dto.py
deleted file mode 100644
index 658135d4891a777ee6738fc40c0f529de057cb4d..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/container_brief_dto.py
+++ /dev/null
@@ -1,270 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ContainerBriefDto(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 = {
-        'id': 'int',
-        'hash': 'str',
-        'name': 'str',
-        'creator': 'UserBriefDto',
-        'created': 'datetime',
-        'internal_name': 'str',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'hash': 'hash',
-        'name': 'name',
-        'creator': 'creator',
-        'created': 'created',
-        'internal_name': 'internal_name',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, hash=None, name=None, creator=None, created=None, internal_name=None, is_public=None):  # noqa: E501
-        """ContainerBriefDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._hash = None
-        self._name = None
-        self._creator = None
-        self._created = None
-        self._internal_name = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.hash = hash
-        self.name = name
-        if creator is not None:
-            self.creator = creator
-        if created is not None:
-            self.created = created
-        self.internal_name = internal_name
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The id of this ContainerBriefDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ContainerBriefDto.
-
-
-        :param id: The id of this ContainerBriefDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def hash(self):
-        """Gets the hash of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The hash of this ContainerBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ContainerBriefDto.
-
-
-        :param hash: The hash of this ContainerBriefDto.  # noqa: E501
-        :type: str
-        """
-        if hash is None:
-            raise ValueError("Invalid value for `hash`, must not be `None`")  # noqa: E501
-
-        self._hash = hash
-
-    @property
-    def name(self):
-        """Gets the name of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The name of this ContainerBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ContainerBriefDto.
-
-
-        :param name: The name of this ContainerBriefDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def creator(self):
-        """Gets the creator of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The creator of this ContainerBriefDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this ContainerBriefDto.
-
-
-        :param creator: The creator of this ContainerBriefDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-
-        self._creator = creator
-
-    @property
-    def created(self):
-        """Gets the created of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The created of this ContainerBriefDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ContainerBriefDto.
-
-
-        :param created: The created of this ContainerBriefDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The internal_name of this ContainerBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ContainerBriefDto.
-
-
-        :param internal_name: The internal_name of this ContainerBriefDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this ContainerBriefDto.  # noqa: E501
-
-
-        :return: The is_public of this ContainerBriefDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this ContainerBriefDto.
-
-
-        :param is_public: The is_public of this ContainerBriefDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(ContainerBriefDto, 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, ContainerBriefDto):
-            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/.jupyter/api_container/models/container_change_dto.py b/.jupyter/api_container/models/container_change_dto.py
deleted file mode 100644
index 53972bef23d532a251b205821058e9a1dc73cb15..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/container_change_dto.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ContainerChangeDto(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 = {
-        'action': 'str'
-    }
-
-    attribute_map = {
-        'action': 'action'
-    }
-
-    def __init__(self, action=None):  # noqa: E501
-        """ContainerChangeDto - a model defined in Swagger"""  # noqa: E501
-        self._action = None
-        self.discriminator = None
-        self.action = action
-
-    @property
-    def action(self):
-        """Gets the action of this ContainerChangeDto.  # noqa: E501
-
-
-        :return: The action of this ContainerChangeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._action
-
-    @action.setter
-    def action(self, action):
-        """Sets the action of this ContainerChangeDto.
-
-
-        :param action: The action of this ContainerChangeDto.  # noqa: E501
-        :type: str
-        """
-        if action is None:
-            raise ValueError("Invalid value for `action`, must not be `None`")  # noqa: E501
-        allowed_values = ["start", "stop"]  # noqa: E501
-        if action not in allowed_values:
-            raise ValueError(
-                "Invalid value for `action` ({0}), must be one of {1}"  # noqa: E501
-                .format(action, allowed_values)
-            )
-
-        self._action = action
-
-    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(ContainerChangeDto, 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, ContainerChangeDto):
-            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/.jupyter/api_container/models/container_create_request_dto.py b/.jupyter/api_container/models/container_create_request_dto.py
deleted file mode 100644
index 6ada3a3be16a350bddeed0e447b0d300ff0d0f3f..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/container_create_request_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ContainerCreateRequestDto(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 = {
-        'name': 'str',
-        'repository': 'str',
-        'tag': 'str'
-    }
-
-    attribute_map = {
-        'name': 'name',
-        'repository': 'repository',
-        'tag': 'tag'
-    }
-
-    def __init__(self, name=None, repository=None, tag=None):  # noqa: E501
-        """ContainerCreateRequestDto - a model defined in Swagger"""  # noqa: E501
-        self._name = None
-        self._repository = None
-        self._tag = None
-        self.discriminator = None
-        self.name = name
-        self.repository = repository
-        self.tag = tag
-
-    @property
-    def name(self):
-        """Gets the name of this ContainerCreateRequestDto.  # noqa: E501
-
-
-        :return: The name of this ContainerCreateRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ContainerCreateRequestDto.
-
-
-        :param name: The name of this ContainerCreateRequestDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def repository(self):
-        """Gets the repository of this ContainerCreateRequestDto.  # noqa: E501
-
-
-        :return: The repository of this ContainerCreateRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ContainerCreateRequestDto.
-
-
-        :param repository: The repository of this ContainerCreateRequestDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ContainerCreateRequestDto.  # noqa: E501
-
-
-        :return: The tag of this ContainerCreateRequestDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ContainerCreateRequestDto.
-
-
-        :param tag: The tag of this ContainerCreateRequestDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    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(ContainerCreateRequestDto, 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, ContainerCreateRequestDto):
-            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/.jupyter/api_container/models/container_dto.py b/.jupyter/api_container/models/container_dto.py
deleted file mode 100644
index b0c0216b6a882d95b2a8b9524e3ac2f21fea122f..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/container_dto.py
+++ /dev/null
@@ -1,381 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ContainerDto(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 = {
-        'id': 'int',
-        'hash': 'str',
-        'name': 'str',
-        'state': 'str',
-        'databases': 'list[DatabaseDto]',
-        'image': 'ImageBriefDto',
-        'port': 'int',
-        'created': 'datetime',
-        'internal_name': 'str',
-        'ip_address': 'str',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'hash': 'hash',
-        'name': 'name',
-        'state': 'state',
-        'databases': 'databases',
-        'image': 'image',
-        'port': 'port',
-        'created': 'created',
-        'internal_name': 'internal_name',
-        'ip_address': 'ip_address',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, hash=None, name=None, state=None, databases=None, image=None, port=None, created=None, internal_name=None, ip_address=None, is_public=None):  # noqa: E501
-        """ContainerDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._hash = None
-        self._name = None
-        self._state = None
-        self._databases = None
-        self._image = None
-        self._port = None
-        self._created = None
-        self._internal_name = None
-        self._ip_address = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.hash = hash
-        self.name = name
-        if state is not None:
-            self.state = state
-        if databases is not None:
-            self.databases = databases
-        if image is not None:
-            self.image = image
-        if port is not None:
-            self.port = port
-        self.created = created
-        self.internal_name = internal_name
-        if ip_address is not None:
-            self.ip_address = ip_address
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this ContainerDto.  # noqa: E501
-
-
-        :return: The id of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ContainerDto.
-
-
-        :param id: The id of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def hash(self):
-        """Gets the hash of this ContainerDto.  # noqa: E501
-
-
-        :return: The hash of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ContainerDto.
-
-
-        :param hash: The hash of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if hash is None:
-            raise ValueError("Invalid value for `hash`, must not be `None`")  # noqa: E501
-
-        self._hash = hash
-
-    @property
-    def name(self):
-        """Gets the name of this ContainerDto.  # noqa: E501
-
-
-        :return: The name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ContainerDto.
-
-
-        :param name: The name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def state(self):
-        """Gets the state of this ContainerDto.  # noqa: E501
-
-
-        :return: The state of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._state
-
-    @state.setter
-    def state(self, state):
-        """Sets the state of this ContainerDto.
-
-
-        :param state: The state of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ContainerStateDto.CREATED", "ContainerStateDto.RESTARTING", "ContainerStateDto.RUNNING", "ContainerStateDto.PAUSED", "ContainerStateDto.EXITED", "ContainerStateDto.DEAD"]  # noqa: E501
-        if state not in allowed_values:
-            raise ValueError(
-                "Invalid value for `state` ({0}), must be one of {1}"  # noqa: E501
-                .format(state, allowed_values)
-            )
-
-        self._state = state
-
-    @property
-    def databases(self):
-        """Gets the databases of this ContainerDto.  # noqa: E501
-
-
-        :return: The databases of this ContainerDto.  # noqa: E501
-        :rtype: list[DatabaseDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this ContainerDto.
-
-
-        :param databases: The databases of this ContainerDto.  # noqa: E501
-        :type: list[DatabaseDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def image(self):
-        """Gets the image of this ContainerDto.  # noqa: E501
-
-
-        :return: The image of this ContainerDto.  # noqa: E501
-        :rtype: ImageBriefDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this ContainerDto.
-
-
-        :param image: The image of this ContainerDto.  # noqa: E501
-        :type: ImageBriefDto
-        """
-
-        self._image = image
-
-    @property
-    def port(self):
-        """Gets the port of this ContainerDto.  # noqa: E501
-
-
-        :return: The port of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._port
-
-    @port.setter
-    def port(self, port):
-        """Sets the port of this ContainerDto.
-
-
-        :param port: The port of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-
-        self._port = port
-
-    @property
-    def created(self):
-        """Gets the created of this ContainerDto.  # noqa: E501
-
-
-        :return: The created of this ContainerDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ContainerDto.
-
-
-        :param created: The created of this ContainerDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ContainerDto.  # noqa: E501
-
-
-        :return: The internal_name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ContainerDto.
-
-
-        :param internal_name: The internal_name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def ip_address(self):
-        """Gets the ip_address of this ContainerDto.  # noqa: E501
-
-
-        :return: The ip_address of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._ip_address
-
-    @ip_address.setter
-    def ip_address(self, ip_address):
-        """Sets the ip_address of this ContainerDto.
-
-
-        :param ip_address: The ip_address of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-
-        self._ip_address = ip_address
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this ContainerDto.  # noqa: E501
-
-
-        :return: The is_public of this ContainerDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this ContainerDto.
-
-
-        :param is_public: The is_public of this ContainerDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(ContainerDto, 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, ContainerDto):
-            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/.jupyter/api_container/models/database_dto.py b/.jupyter/api_container/models/database_dto.py
deleted file mode 100644
index 0aa1b92b3db1bf2fd768ccff07f61361a4a56f21..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/database_dto.py
+++ /dev/null
@@ -1,564 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 DatabaseDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'exchange': 'str',
-        'creator': 'UserBriefDto',
-        'subjects': 'list[str]',
-        'language': 'str',
-        'license': 'LicenseDto',
-        'description': 'str',
-        'publisher': 'str',
-        'contact': 'UserDto',
-        'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
-        'container': 'ContainerDto',
-        'created': 'datetime',
-        'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
-        'tables': 'tables',
-        'image': 'image',
-        'container': 'container',
-        'created': 'created',
-        'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, name=None, exchange=None, creator=None, subjects=None, language=None, license=None, description=None, publisher=None, contact=None, tables=None, image=None, container=None, created=None, deleted=None, internal_name=None, publication_year=None, is_public=None):  # noqa: E501
-        """DatabaseDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._exchange = None
-        self._creator = None
-        self._subjects = None
-        self._language = None
-        self._license = None
-        self._description = None
-        self._publisher = None
-        self._contact = None
-        self._tables = None
-        self._image = None
-        self._container = None
-        self._created = None
-        self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.exchange = exchange
-        self.creator = creator
-        if subjects is not None:
-            self.subjects = subjects
-        if language is not None:
-            self.language = language
-        if license is not None:
-            self.license = license
-        if description is not None:
-            self.description = description
-        if publisher is not None:
-            self.publisher = publisher
-        if contact is not None:
-            self.contact = contact
-        if tables is not None:
-            self.tables = tables
-        if image is not None:
-            self.image = image
-        if container is not None:
-            self.container = container
-        if created is not None:
-            self.created = created
-        if deleted is not None:
-            self.deleted = deleted
-        self.internal_name = internal_name
-        self.publication_year = publication_year
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
-
-
-        :return: The id of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
-
-
-        :param id: The id of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
-
-
-        :param name: The name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
-
-
-        :return: The exchange of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._exchange
-
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
-
-
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
-
-        self._exchange = exchange
-
-    @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
-
-
-        :return: The creator of this DatabaseDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
-
-
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
-
-
-        :return: The subjects of this DatabaseDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._subjects
-
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
-
-
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._subjects = subjects
-
-    @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
-
-
-        :return: The language of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._language
-
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
-
-
-        :param language: The language of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ab", "aa", "af", "ak", "sq", "am", "ar", "an", "hy", "as", "av", "ae", "ay", "az", "bm", "ba", "eu", "be", "bn", "bh", "bi", "bs", "br", "bg", "my", "ca", "km", "ch", "ce", "ny", "zh", "cu", "cv", "kw", "co", "cr", "hr", "cs", "da", "dv", "nl", "dz", "en", "eo", "et", "ee", "fo", "fj", "fi", "fr", "ff", "gd", "gl", "lg", "ka", "de", "ki", "el", "kl", "gn", "gu", "ht", "ha", "he", "hz", "hi", "ho", "hu", "is", "io", "ig", "id", "ia", "ie", "iu", "ik", "ga", "it", "ja", "jv", "kn", "kr", "ks", "kk", "rw", "kv", "kg", "ko", "kj", "ku", "ky", "lo", "la", "lv", "lb", "li", "ln", "lt", "lu", "mk", "mg", "ms", "ml", "mt", "gv", "mi", "mr", "mh", "ro", "mn", "na", "nv", "nd", "ng", "ne", "se", "no", "nb", "nn", "ii", "oc", "oj", "or", "om", "os", "pi", "pa", "ps", "fa", "pl", "pt", "qu", "rm", "rn", "ru", "sm", "sg", "sa", "sc", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "nr", "es", "su", "sw", "ss", "sv", "tl", "ty", "tg", "ta", "tt", "te", "th", "bo", "ti", "to", "ts", "tn", "tr", "tk", "tw", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "cy", "fy", "wo", "xh", "yi", "yo", "za", "zu"]  # noqa: E501
-        if language not in allowed_values:
-            raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
-            )
-
-        self._language = language
-
-    @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
-
-
-        :return: The license of this DatabaseDto.  # noqa: E501
-        :rtype: LicenseDto
-        """
-        return self._license
-
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
-
-
-        :param license: The license of this DatabaseDto.  # noqa: E501
-        :type: LicenseDto
-        """
-
-        self._license = license
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
-
-
-        :param description: The description of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._description = description
-
-    @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publisher of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._publisher
-
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
-
-
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._publisher = publisher
-
-    @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
-
-
-        :return: The contact of this DatabaseDto.  # noqa: E501
-        :rtype: UserDto
-        """
-        return self._contact
-
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
-
-
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
-        :type: UserDto
-        """
-
-        self._contact = contact
-
-    @property
-    def tables(self):
-        """Gets the tables of this DatabaseDto.  # noqa: E501
-
-
-        :return: The tables of this DatabaseDto.  # noqa: E501
-        :rtype: list[TableBriefDto]
-        """
-        return self._tables
-
-    @tables.setter
-    def tables(self, tables):
-        """Sets the tables of this DatabaseDto.
-
-
-        :param tables: The tables of this DatabaseDto.  # noqa: E501
-        :type: list[TableBriefDto]
-        """
-
-        self._tables = tables
-
-    @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
-
-
-        :return: The image of this DatabaseDto.  # noqa: E501
-        :rtype: ImageDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
-
-
-        :param image: The image of this DatabaseDto.  # noqa: E501
-        :type: ImageDto
-        """
-
-        self._image = image
-
-    @property
-    def container(self):
-        """Gets the container of this DatabaseDto.  # noqa: E501
-
-
-        :return: The container of this DatabaseDto.  # noqa: E501
-        :rtype: ContainerDto
-        """
-        return self._container
-
-    @container.setter
-    def container(self, container):
-        """Sets the container of this DatabaseDto.
-
-
-        :param container: The container of this DatabaseDto.  # noqa: E501
-        :type: ContainerDto
-        """
-
-        self._container = container
-
-    @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
-
-
-        :return: The created of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
-
-
-        :param created: The created of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def deleted(self):
-        """Gets the deleted of this DatabaseDto.  # noqa: E501
-
-
-        :return: The deleted of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._deleted
-
-    @deleted.setter
-    def deleted(self, deleted):
-        """Sets the deleted of this DatabaseDto.
-
-
-        :param deleted: The deleted of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._deleted = deleted
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
-
-
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_year
-
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
-
-
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if publication_year is None:
-            raise ValueError("Invalid value for `publication_year`, must not be `None`")  # noqa: E501
-
-        self._publication_year = publication_year
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
-
-
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(DatabaseDto, 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, DatabaseDto):
-            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/.jupyter/api_container/models/granted_authority_dto.py b/.jupyter/api_container/models/granted_authority_dto.py
deleted file mode 100644
index 90e4f275324e10027d0498536655ae32339007c0..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/granted_authority_dto.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 GrantedAuthorityDto(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 = {
-        'authority': 'str'
-    }
-
-    attribute_map = {
-        'authority': 'authority'
-    }
-
-    def __init__(self, authority=None):  # noqa: E501
-        """GrantedAuthorityDto - a model defined in Swagger"""  # noqa: E501
-        self._authority = None
-        self.discriminator = None
-        if authority is not None:
-            self.authority = authority
-
-    @property
-    def authority(self):
-        """Gets the authority of this GrantedAuthorityDto.  # noqa: E501
-
-
-        :return: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._authority
-
-    @authority.setter
-    def authority(self, authority):
-        """Sets the authority of this GrantedAuthorityDto.
-
-
-        :param authority: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :type: str
-        """
-
-        self._authority = authority
-
-    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(GrantedAuthorityDto, 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, GrantedAuthorityDto):
-            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/.jupyter/api_container/models/image_brief_dto.py b/.jupyter/api_container/models/image_brief_dto.py
deleted file mode 100644
index 9b88ef6b4d7bf368e5af67dee1dbca0a49431379..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/image_brief_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ImageBriefDto(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 = {
-        'id': 'int',
-        'repository': 'str',
-        'tag': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'repository': 'repository',
-        'tag': 'tag'
-    }
-
-    def __init__(self, id=None, repository=None, tag=None):  # noqa: E501
-        """ImageBriefDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._repository = None
-        self._tag = None
-        self.discriminator = None
-        self.id = id
-        self.repository = repository
-        self.tag = tag
-
-    @property
-    def id(self):
-        """Gets the id of this ImageBriefDto.  # noqa: E501
-
-
-        :return: The id of this ImageBriefDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageBriefDto.
-
-
-        :param id: The id of this ImageBriefDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def repository(self):
-        """Gets the repository of this ImageBriefDto.  # noqa: E501
-
-
-        :return: The repository of this ImageBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ImageBriefDto.
-
-
-        :param repository: The repository of this ImageBriefDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ImageBriefDto.  # noqa: E501
-
-
-        :return: The tag of this ImageBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ImageBriefDto.
-
-
-        :param tag: The tag of this ImageBriefDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    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(ImageBriefDto, 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, ImageBriefDto):
-            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/.jupyter/api_container/models/image_change_dto.py b/.jupyter/api_container/models/image_change_dto.py
deleted file mode 100644
index 8f8670d98a2be17539b7125ac0f7ba72d08f4c15..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/image_change_dto.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ImageChangeDto(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 = {
-        'default_port': 'int',
-        'environment': 'list[ImageEnvItemDto]',
-        'logo': 'str',
-        'dialect': 'str',
-        'driver_class': 'str',
-        'jdbc_method': 'str'
-    }
-
-    attribute_map = {
-        'default_port': 'defaultPort',
-        'environment': 'environment',
-        'logo': 'logo',
-        'dialect': 'dialect',
-        'driver_class': 'driver_class',
-        'jdbc_method': 'jdbc_method'
-    }
-
-    def __init__(self, default_port=None, environment=None, logo=None, dialect=None, driver_class=None, jdbc_method=None):  # noqa: E501
-        """ImageChangeDto - a model defined in Swagger"""  # noqa: E501
-        self._default_port = None
-        self._environment = None
-        self._logo = None
-        self._dialect = None
-        self._driver_class = None
-        self._jdbc_method = None
-        self.discriminator = None
-        if default_port is not None:
-            self.default_port = default_port
-        if environment is not None:
-            self.environment = environment
-        self.logo = logo
-        self.dialect = dialect
-        self.driver_class = driver_class
-        self.jdbc_method = jdbc_method
-
-    @property
-    def default_port(self):
-        """Gets the default_port of this ImageChangeDto.  # noqa: E501
-
-
-        :return: The default_port of this ImageChangeDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._default_port
-
-    @default_port.setter
-    def default_port(self, default_port):
-        """Sets the default_port of this ImageChangeDto.
-
-
-        :param default_port: The default_port of this ImageChangeDto.  # noqa: E501
-        :type: int
-        """
-
-        self._default_port = default_port
-
-    @property
-    def environment(self):
-        """Gets the environment of this ImageChangeDto.  # noqa: E501
-
-
-        :return: The environment of this ImageChangeDto.  # noqa: E501
-        :rtype: list[ImageEnvItemDto]
-        """
-        return self._environment
-
-    @environment.setter
-    def environment(self, environment):
-        """Sets the environment of this ImageChangeDto.
-
-
-        :param environment: The environment of this ImageChangeDto.  # noqa: E501
-        :type: list[ImageEnvItemDto]
-        """
-
-        self._environment = environment
-
-    @property
-    def logo(self):
-        """Gets the logo of this ImageChangeDto.  # noqa: E501
-
-
-        :return: The logo of this ImageChangeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._logo
-
-    @logo.setter
-    def logo(self, logo):
-        """Sets the logo of this ImageChangeDto.
-
-
-        :param logo: The logo of this ImageChangeDto.  # noqa: E501
-        :type: str
-        """
-        if logo is None:
-            raise ValueError("Invalid value for `logo`, must not be `None`")  # noqa: E501
-
-        self._logo = logo
-
-    @property
-    def dialect(self):
-        """Gets the dialect of this ImageChangeDto.  # noqa: E501
-
-
-        :return: The dialect of this ImageChangeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._dialect
-
-    @dialect.setter
-    def dialect(self, dialect):
-        """Sets the dialect of this ImageChangeDto.
-
-
-        :param dialect: The dialect of this ImageChangeDto.  # noqa: E501
-        :type: str
-        """
-        if dialect is None:
-            raise ValueError("Invalid value for `dialect`, must not be `None`")  # noqa: E501
-
-        self._dialect = dialect
-
-    @property
-    def driver_class(self):
-        """Gets the driver_class of this ImageChangeDto.  # noqa: E501
-
-
-        :return: The driver_class of this ImageChangeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._driver_class
-
-    @driver_class.setter
-    def driver_class(self, driver_class):
-        """Sets the driver_class of this ImageChangeDto.
-
-
-        :param driver_class: The driver_class of this ImageChangeDto.  # noqa: E501
-        :type: str
-        """
-        if driver_class is None:
-            raise ValueError("Invalid value for `driver_class`, must not be `None`")  # noqa: E501
-
-        self._driver_class = driver_class
-
-    @property
-    def jdbc_method(self):
-        """Gets the jdbc_method of this ImageChangeDto.  # noqa: E501
-
-
-        :return: The jdbc_method of this ImageChangeDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._jdbc_method
-
-    @jdbc_method.setter
-    def jdbc_method(self, jdbc_method):
-        """Sets the jdbc_method of this ImageChangeDto.
-
-
-        :param jdbc_method: The jdbc_method of this ImageChangeDto.  # noqa: E501
-        :type: str
-        """
-        if jdbc_method is None:
-            raise ValueError("Invalid value for `jdbc_method`, must not be `None`")  # noqa: E501
-
-        self._jdbc_method = jdbc_method
-
-    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(ImageChangeDto, 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, ImageChangeDto):
-            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/.jupyter/api_container/models/image_create_dto.py b/.jupyter/api_container/models/image_create_dto.py
deleted file mode 100644
index 4327dc7534112d9ef634a8bd223f140c38315c1e..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/image_create_dto.py
+++ /dev/null
@@ -1,326 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ImageCreateDto(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 = {
-        'repository': 'str',
-        'tag': 'str',
-        'dialect': 'str',
-        'logo': 'str',
-        'local': 'bool',
-        'environment': 'list[ImageEnvItemDto]',
-        'driver_class': 'str',
-        'jdbc_method': 'str',
-        'default_port': 'int'
-    }
-
-    attribute_map = {
-        'repository': 'repository',
-        'tag': 'tag',
-        'dialect': 'dialect',
-        'logo': 'logo',
-        'local': 'local',
-        'environment': 'environment',
-        'driver_class': 'driver_class',
-        'jdbc_method': 'jdbc_method',
-        'default_port': 'default_port'
-    }
-
-    def __init__(self, repository=None, tag=None, dialect=None, logo=None, local=None, environment=None, driver_class=None, jdbc_method=None, default_port=None):  # noqa: E501
-        """ImageCreateDto - a model defined in Swagger"""  # noqa: E501
-        self._repository = None
-        self._tag = None
-        self._dialect = None
-        self._logo = None
-        self._local = None
-        self._environment = None
-        self._driver_class = None
-        self._jdbc_method = None
-        self._default_port = None
-        self.discriminator = None
-        self.repository = repository
-        self.tag = tag
-        self.dialect = dialect
-        self.logo = logo
-        self.local = local
-        if environment is not None:
-            self.environment = environment
-        self.driver_class = driver_class
-        self.jdbc_method = jdbc_method
-        self.default_port = default_port
-
-    @property
-    def repository(self):
-        """Gets the repository of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The repository of this ImageCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ImageCreateDto.
-
-
-        :param repository: The repository of this ImageCreateDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The tag of this ImageCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ImageCreateDto.
-
-
-        :param tag: The tag of this ImageCreateDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    @property
-    def dialect(self):
-        """Gets the dialect of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The dialect of this ImageCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._dialect
-
-    @dialect.setter
-    def dialect(self, dialect):
-        """Sets the dialect of this ImageCreateDto.
-
-
-        :param dialect: The dialect of this ImageCreateDto.  # noqa: E501
-        :type: str
-        """
-        if dialect is None:
-            raise ValueError("Invalid value for `dialect`, must not be `None`")  # noqa: E501
-
-        self._dialect = dialect
-
-    @property
-    def logo(self):
-        """Gets the logo of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The logo of this ImageCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._logo
-
-    @logo.setter
-    def logo(self, logo):
-        """Sets the logo of this ImageCreateDto.
-
-
-        :param logo: The logo of this ImageCreateDto.  # noqa: E501
-        :type: str
-        """
-        if logo is None:
-            raise ValueError("Invalid value for `logo`, must not be `None`")  # noqa: E501
-
-        self._logo = logo
-
-    @property
-    def local(self):
-        """Gets the local of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The local of this ImageCreateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._local
-
-    @local.setter
-    def local(self, local):
-        """Sets the local of this ImageCreateDto.
-
-
-        :param local: The local of this ImageCreateDto.  # noqa: E501
-        :type: bool
-        """
-        if local is None:
-            raise ValueError("Invalid value for `local`, must not be `None`")  # noqa: E501
-
-        self._local = local
-
-    @property
-    def environment(self):
-        """Gets the environment of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The environment of this ImageCreateDto.  # noqa: E501
-        :rtype: list[ImageEnvItemDto]
-        """
-        return self._environment
-
-    @environment.setter
-    def environment(self, environment):
-        """Sets the environment of this ImageCreateDto.
-
-
-        :param environment: The environment of this ImageCreateDto.  # noqa: E501
-        :type: list[ImageEnvItemDto]
-        """
-
-        self._environment = environment
-
-    @property
-    def driver_class(self):
-        """Gets the driver_class of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The driver_class of this ImageCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._driver_class
-
-    @driver_class.setter
-    def driver_class(self, driver_class):
-        """Sets the driver_class of this ImageCreateDto.
-
-
-        :param driver_class: The driver_class of this ImageCreateDto.  # noqa: E501
-        :type: str
-        """
-        if driver_class is None:
-            raise ValueError("Invalid value for `driver_class`, must not be `None`")  # noqa: E501
-
-        self._driver_class = driver_class
-
-    @property
-    def jdbc_method(self):
-        """Gets the jdbc_method of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The jdbc_method of this ImageCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._jdbc_method
-
-    @jdbc_method.setter
-    def jdbc_method(self, jdbc_method):
-        """Sets the jdbc_method of this ImageCreateDto.
-
-
-        :param jdbc_method: The jdbc_method of this ImageCreateDto.  # noqa: E501
-        :type: str
-        """
-        if jdbc_method is None:
-            raise ValueError("Invalid value for `jdbc_method`, must not be `None`")  # noqa: E501
-
-        self._jdbc_method = jdbc_method
-
-    @property
-    def default_port(self):
-        """Gets the default_port of this ImageCreateDto.  # noqa: E501
-
-
-        :return: The default_port of this ImageCreateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._default_port
-
-    @default_port.setter
-    def default_port(self, default_port):
-        """Sets the default_port of this ImageCreateDto.
-
-
-        :param default_port: The default_port of this ImageCreateDto.  # noqa: E501
-        :type: int
-        """
-        if default_port is None:
-            raise ValueError("Invalid value for `default_port`, must not be `None`")  # noqa: E501
-
-        self._default_port = default_port
-
-    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(ImageCreateDto, 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, ImageCreateDto):
-            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/.jupyter/api_container/models/image_date_dto.py b/.jupyter/api_container/models/image_date_dto.py
deleted file mode 100644
index dfee1f2a7d933f03a4bf99fc0f168a95df944329..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/image_date_dto.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ImageDateDto(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 = {
-        'id': 'int',
-        'example': 'str',
-        'database_format': 'str',
-        'unix_format': 'str',
-        'has_time': 'bool',
-        'created_at': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'example': 'example',
-        'database_format': 'database_format',
-        'unix_format': 'unix_format',
-        'has_time': 'has_time',
-        'created_at': 'created_at'
-    }
-
-    def __init__(self, id=None, example=None, database_format=None, unix_format=None, has_time=None, created_at=None):  # noqa: E501
-        """ImageDateDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._example = None
-        self._database_format = None
-        self._unix_format = None
-        self._has_time = None
-        self._created_at = None
-        self.discriminator = None
-        self.id = id
-        self.example = example
-        self.database_format = database_format
-        self.unix_format = unix_format
-        self.has_time = has_time
-        if created_at is not None:
-            self.created_at = created_at
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDateDto.  # noqa: E501
-
-
-        :return: The id of this ImageDateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDateDto.
-
-
-        :param id: The id of this ImageDateDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def example(self):
-        """Gets the example of this ImageDateDto.  # noqa: E501
-
-
-        :return: The example of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._example
-
-    @example.setter
-    def example(self, example):
-        """Sets the example of this ImageDateDto.
-
-
-        :param example: The example of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if example is None:
-            raise ValueError("Invalid value for `example`, must not be `None`")  # noqa: E501
-
-        self._example = example
-
-    @property
-    def database_format(self):
-        """Gets the database_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The database_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._database_format
-
-    @database_format.setter
-    def database_format(self, database_format):
-        """Sets the database_format of this ImageDateDto.
-
-
-        :param database_format: The database_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if database_format is None:
-            raise ValueError("Invalid value for `database_format`, must not be `None`")  # noqa: E501
-
-        self._database_format = database_format
-
-    @property
-    def unix_format(self):
-        """Gets the unix_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The unix_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._unix_format
-
-    @unix_format.setter
-    def unix_format(self, unix_format):
-        """Sets the unix_format of this ImageDateDto.
-
-
-        :param unix_format: The unix_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if unix_format is None:
-            raise ValueError("Invalid value for `unix_format`, must not be `None`")  # noqa: E501
-
-        self._unix_format = unix_format
-
-    @property
-    def has_time(self):
-        """Gets the has_time of this ImageDateDto.  # noqa: E501
-
-
-        :return: The has_time of this ImageDateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._has_time
-
-    @has_time.setter
-    def has_time(self, has_time):
-        """Sets the has_time of this ImageDateDto.
-
-
-        :param has_time: The has_time of this ImageDateDto.  # noqa: E501
-        :type: bool
-        """
-        if has_time is None:
-            raise ValueError("Invalid value for `has_time`, must not be `None`")  # noqa: E501
-
-        self._has_time = has_time
-
-    @property
-    def created_at(self):
-        """Gets the created_at of this ImageDateDto.  # noqa: E501
-
-
-        :return: The created_at of this ImageDateDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created_at
-
-    @created_at.setter
-    def created_at(self, created_at):
-        """Sets the created_at of this ImageDateDto.
-
-
-        :param created_at: The created_at of this ImageDateDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created_at = created_at
-
-    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(ImageDateDto, 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, ImageDateDto):
-            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/.jupyter/api_container/models/image_dto.py b/.jupyter/api_container/models/image_dto.py
deleted file mode 100644
index 405fe0625622c2df139734e16d38f080d738becd..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/image_dto.py
+++ /dev/null
@@ -1,404 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ImageDto(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 = {
-        'id': 'int',
-        'repository': 'str',
-        'tag': 'str',
-        'dialect': 'str',
-        'hash': 'str',
-        'compiled': 'datetime',
-        'size': 'int',
-        'environment': 'list[ImageEnvItemDto]',
-        'driver_class': 'str',
-        'date_formats': 'list[ImageDateDto]',
-        'jdbc_method': 'str',
-        'default_port': 'int'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'repository': 'repository',
-        'tag': 'tag',
-        'dialect': 'dialect',
-        'hash': 'hash',
-        'compiled': 'compiled',
-        'size': 'size',
-        'environment': 'environment',
-        'driver_class': 'driver_class',
-        'date_formats': 'date_formats',
-        'jdbc_method': 'jdbc_method',
-        'default_port': 'default_port'
-    }
-
-    def __init__(self, id=None, repository=None, tag=None, dialect=None, hash=None, compiled=None, size=None, environment=None, driver_class=None, date_formats=None, jdbc_method=None, default_port=None):  # noqa: E501
-        """ImageDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._repository = None
-        self._tag = None
-        self._dialect = None
-        self._hash = None
-        self._compiled = None
-        self._size = None
-        self._environment = None
-        self._driver_class = None
-        self._date_formats = None
-        self._jdbc_method = None
-        self._default_port = None
-        self.discriminator = None
-        self.id = id
-        self.repository = repository
-        self.tag = tag
-        self.dialect = dialect
-        if hash is not None:
-            self.hash = hash
-        if compiled is not None:
-            self.compiled = compiled
-        if size is not None:
-            self.size = size
-        self.environment = environment
-        self.driver_class = driver_class
-        if date_formats is not None:
-            self.date_formats = date_formats
-        self.jdbc_method = jdbc_method
-        self.default_port = default_port
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDto.  # noqa: E501
-
-
-        :return: The id of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDto.
-
-
-        :param id: The id of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def repository(self):
-        """Gets the repository of this ImageDto.  # noqa: E501
-
-
-        :return: The repository of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ImageDto.
-
-
-        :param repository: The repository of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ImageDto.  # noqa: E501
-
-
-        :return: The tag of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ImageDto.
-
-
-        :param tag: The tag of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    @property
-    def dialect(self):
-        """Gets the dialect of this ImageDto.  # noqa: E501
-
-
-        :return: The dialect of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._dialect
-
-    @dialect.setter
-    def dialect(self, dialect):
-        """Sets the dialect of this ImageDto.
-
-
-        :param dialect: The dialect of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if dialect is None:
-            raise ValueError("Invalid value for `dialect`, must not be `None`")  # noqa: E501
-
-        self._dialect = dialect
-
-    @property
-    def hash(self):
-        """Gets the hash of this ImageDto.  # noqa: E501
-
-
-        :return: The hash of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ImageDto.
-
-
-        :param hash: The hash of this ImageDto.  # noqa: E501
-        :type: str
-        """
-
-        self._hash = hash
-
-    @property
-    def compiled(self):
-        """Gets the compiled of this ImageDto.  # noqa: E501
-
-
-        :return: The compiled of this ImageDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._compiled
-
-    @compiled.setter
-    def compiled(self, compiled):
-        """Sets the compiled of this ImageDto.
-
-
-        :param compiled: The compiled of this ImageDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._compiled = compiled
-
-    @property
-    def size(self):
-        """Gets the size of this ImageDto.  # noqa: E501
-
-
-        :return: The size of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._size
-
-    @size.setter
-    def size(self, size):
-        """Sets the size of this ImageDto.
-
-
-        :param size: The size of this ImageDto.  # noqa: E501
-        :type: int
-        """
-
-        self._size = size
-
-    @property
-    def environment(self):
-        """Gets the environment of this ImageDto.  # noqa: E501
-
-
-        :return: The environment of this ImageDto.  # noqa: E501
-        :rtype: list[ImageEnvItemDto]
-        """
-        return self._environment
-
-    @environment.setter
-    def environment(self, environment):
-        """Sets the environment of this ImageDto.
-
-
-        :param environment: The environment of this ImageDto.  # noqa: E501
-        :type: list[ImageEnvItemDto]
-        """
-        if environment is None:
-            raise ValueError("Invalid value for `environment`, must not be `None`")  # noqa: E501
-
-        self._environment = environment
-
-    @property
-    def driver_class(self):
-        """Gets the driver_class of this ImageDto.  # noqa: E501
-
-
-        :return: The driver_class of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._driver_class
-
-    @driver_class.setter
-    def driver_class(self, driver_class):
-        """Sets the driver_class of this ImageDto.
-
-
-        :param driver_class: The driver_class of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if driver_class is None:
-            raise ValueError("Invalid value for `driver_class`, must not be `None`")  # noqa: E501
-
-        self._driver_class = driver_class
-
-    @property
-    def date_formats(self):
-        """Gets the date_formats of this ImageDto.  # noqa: E501
-
-
-        :return: The date_formats of this ImageDto.  # noqa: E501
-        :rtype: list[ImageDateDto]
-        """
-        return self._date_formats
-
-    @date_formats.setter
-    def date_formats(self, date_formats):
-        """Sets the date_formats of this ImageDto.
-
-
-        :param date_formats: The date_formats of this ImageDto.  # noqa: E501
-        :type: list[ImageDateDto]
-        """
-
-        self._date_formats = date_formats
-
-    @property
-    def jdbc_method(self):
-        """Gets the jdbc_method of this ImageDto.  # noqa: E501
-
-
-        :return: The jdbc_method of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._jdbc_method
-
-    @jdbc_method.setter
-    def jdbc_method(self, jdbc_method):
-        """Sets the jdbc_method of this ImageDto.
-
-
-        :param jdbc_method: The jdbc_method of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if jdbc_method is None:
-            raise ValueError("Invalid value for `jdbc_method`, must not be `None`")  # noqa: E501
-
-        self._jdbc_method = jdbc_method
-
-    @property
-    def default_port(self):
-        """Gets the default_port of this ImageDto.  # noqa: E501
-
-
-        :return: The default_port of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._default_port
-
-    @default_port.setter
-    def default_port(self, default_port):
-        """Sets the default_port of this ImageDto.
-
-
-        :param default_port: The default_port of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if default_port is None:
-            raise ValueError("Invalid value for `default_port`, must not be `None`")  # noqa: E501
-
-        self._default_port = default_port
-
-    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(ImageDto, 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, ImageDto):
-            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/.jupyter/api_container/models/image_env_item_dto.py b/.jupyter/api_container/models/image_env_item_dto.py
deleted file mode 100644
index 5f77c61e3604cc1446733d653d6ea5c9a8f4c0a5..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/image_env_item_dto.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 ImageEnvItemDto(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 = {
-        'iid': 'int',
-        'key': 'str',
-        'value': 'str',
-        'type': 'str'
-    }
-
-    attribute_map = {
-        'iid': 'iid',
-        'key': 'key',
-        'value': 'value',
-        'type': 'type'
-    }
-
-    def __init__(self, iid=None, key=None, value=None, type=None):  # noqa: E501
-        """ImageEnvItemDto - a model defined in Swagger"""  # noqa: E501
-        self._iid = None
-        self._key = None
-        self._value = None
-        self._type = None
-        self.discriminator = None
-        self.iid = iid
-        self.key = key
-        self.value = value
-        if type is not None:
-            self.type = type
-
-    @property
-    def iid(self):
-        """Gets the iid of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The iid of this ImageEnvItemDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._iid
-
-    @iid.setter
-    def iid(self, iid):
-        """Sets the iid of this ImageEnvItemDto.
-
-
-        :param iid: The iid of this ImageEnvItemDto.  # noqa: E501
-        :type: int
-        """
-        if iid is None:
-            raise ValueError("Invalid value for `iid`, must not be `None`")  # noqa: E501
-
-        self._iid = iid
-
-    @property
-    def key(self):
-        """Gets the key of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The key of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._key
-
-    @key.setter
-    def key(self, key):
-        """Sets the key of this ImageEnvItemDto.
-
-
-        :param key: The key of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if key is None:
-            raise ValueError("Invalid value for `key`, must not be `None`")  # noqa: E501
-
-        self._key = key
-
-    @property
-    def value(self):
-        """Gets the value of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The value of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._value
-
-    @value.setter
-    def value(self, value):
-        """Sets the value of this ImageEnvItemDto.
-
-
-        :param value: The value of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if value is None:
-            raise ValueError("Invalid value for `value`, must not be `None`")  # noqa: E501
-
-        self._value = value
-
-    @property
-    def type(self):
-        """Gets the type of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The type of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._type
-
-    @type.setter
-    def type(self, type):
-        """Sets the type of this ImageEnvItemDto.
-
-
-        :param type: The type of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["USERNAME", "PASSWORD", "PRIVILEGED_USERNAME", "PRIVILEGED_PASSWORD"]  # noqa: E501
-        if type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `type` ({0}), must be one of {1}"  # noqa: E501
-                .format(type, allowed_values)
-            )
-
-        self._type = type
-
-    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(ImageEnvItemDto, 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, ImageEnvItemDto):
-            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/.jupyter/api_container/models/table_dto.py b/.jupyter/api_container/models/table_dto.py
deleted file mode 100644
index 30b4e2932fc5deee389da6e604dc41bffbb656aa..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/table_dto.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 TableDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'topic': 'str',
-        'description': 'str',
-        'created': 'datetime',
-        'columns': 'list[ColumnDto]',
-        'internal_name': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'topic': 'topic',
-        'description': 'description',
-        'created': 'created',
-        'columns': 'columns',
-        'internal_name': 'internal_name'
-    }
-
-    def __init__(self, id=None, name=None, topic=None, description=None, created=None, columns=None, internal_name=None):  # noqa: E501
-        """TableDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._topic = None
-        self._description = None
-        self._created = None
-        self._columns = None
-        self._internal_name = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.topic = topic
-        self.description = description
-        if created is not None:
-            self.created = created
-        self.columns = columns
-        self.internal_name = internal_name
-
-    @property
-    def id(self):
-        """Gets the id of this TableDto.  # noqa: E501
-
-
-        :return: The id of this TableDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this TableDto.
-
-
-        :param id: The id of this TableDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this TableDto.  # noqa: E501
-
-
-        :return: The name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableDto.
-
-
-        :param name: The name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def topic(self):
-        """Gets the topic of this TableDto.  # noqa: E501
-
-
-        :return: The topic of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._topic
-
-    @topic.setter
-    def topic(self, topic):
-        """Sets the topic of this TableDto.
-
-
-        :param topic: The topic of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if topic is None:
-            raise ValueError("Invalid value for `topic`, must not be `None`")  # noqa: E501
-
-        self._topic = topic
-
-    @property
-    def description(self):
-        """Gets the description of this TableDto.  # noqa: E501
-
-
-        :return: The description of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this TableDto.
-
-
-        :param description: The description of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def created(self):
-        """Gets the created of this TableDto.  # noqa: E501
-
-
-        :return: The created of this TableDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this TableDto.
-
-
-        :param created: The created of this TableDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def columns(self):
-        """Gets the columns of this TableDto.  # noqa: E501
-
-
-        :return: The columns of this TableDto.  # noqa: E501
-        :rtype: list[ColumnDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this TableDto.
-
-
-        :param columns: The columns of this TableDto.  # noqa: E501
-        :type: list[ColumnDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this TableDto.  # noqa: E501
-
-
-        :return: The internal_name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this TableDto.
-
-
-        :param internal_name: The internal_name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    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(TableDto, 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, TableDto):
-            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/.jupyter/api_container/models/user_dto.py b/.jupyter/api_container/models/user_dto.py
deleted file mode 100644
index a3713fa5231999159a5fbcbf8272fd68c9b19f83..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/models/user_dto.py
+++ /dev/null
@@ -1,478 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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 UserDto(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 = {
-        'id': 'int',
-        'authorities': 'list[GrantedAuthorityDto]',
-        'username': 'str',
-        'firstname': 'str',
-        'lastname': 'str',
-        'affiliation': 'str',
-        'orcid': 'str',
-        'containers': 'list[ContainerDto]',
-        'databases': 'list[ContainerDto]',
-        'identifiers': 'list[ContainerDto]',
-        'email': 'str',
-        'titles_before': 'str',
-        'titles_after': 'str',
-        'theme_dark': 'bool',
-        'email_verified': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'authorities': 'authorities',
-        'username': 'username',
-        'firstname': 'firstname',
-        'lastname': 'lastname',
-        'affiliation': 'affiliation',
-        'orcid': 'orcid',
-        'containers': 'containers',
-        'databases': 'databases',
-        'identifiers': 'identifiers',
-        'email': 'email',
-        'titles_before': 'titles_before',
-        'titles_after': 'titles_after',
-        'theme_dark': 'theme_dark',
-        'email_verified': 'email_verified'
-    }
-
-    def __init__(self, id=None, authorities=None, username=None, firstname=None, lastname=None, affiliation=None, orcid=None, containers=None, databases=None, identifiers=None, email=None, titles_before=None, titles_after=None, theme_dark=None, email_verified=None):  # noqa: E501
-        """UserDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._authorities = None
-        self._username = None
-        self._firstname = None
-        self._lastname = None
-        self._affiliation = None
-        self._orcid = None
-        self._containers = None
-        self._databases = None
-        self._identifiers = None
-        self._email = None
-        self._titles_before = None
-        self._titles_after = None
-        self._theme_dark = None
-        self._email_verified = None
-        self.discriminator = None
-        self.id = id
-        if authorities is not None:
-            self.authorities = authorities
-        self.username = username
-        if firstname is not None:
-            self.firstname = firstname
-        if lastname is not None:
-            self.lastname = lastname
-        if affiliation is not None:
-            self.affiliation = affiliation
-        if orcid is not None:
-            self.orcid = orcid
-        if containers is not None:
-            self.containers = containers
-        if databases is not None:
-            self.databases = databases
-        if identifiers is not None:
-            self.identifiers = identifiers
-        self.email = email
-        if titles_before is not None:
-            self.titles_before = titles_before
-        if titles_after is not None:
-            self.titles_after = titles_after
-        self.theme_dark = theme_dark
-        if email_verified is not None:
-            self.email_verified = email_verified
-
-    @property
-    def id(self):
-        """Gets the id of this UserDto.  # noqa: E501
-
-
-        :return: The id of this UserDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this UserDto.
-
-
-        :param id: The id of this UserDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def authorities(self):
-        """Gets the authorities of this UserDto.  # noqa: E501
-
-
-        :return: The authorities of this UserDto.  # noqa: E501
-        :rtype: list[GrantedAuthorityDto]
-        """
-        return self._authorities
-
-    @authorities.setter
-    def authorities(self, authorities):
-        """Sets the authorities of this UserDto.
-
-
-        :param authorities: The authorities of this UserDto.  # noqa: E501
-        :type: list[GrantedAuthorityDto]
-        """
-
-        self._authorities = authorities
-
-    @property
-    def username(self):
-        """Gets the username of this UserDto.  # noqa: E501
-
-
-        :return: The username of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this UserDto.
-
-
-        :param username: The username of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if username is None:
-            raise ValueError("Invalid value for `username`, must not be `None`")  # noqa: E501
-
-        self._username = username
-
-    @property
-    def firstname(self):
-        """Gets the firstname of this UserDto.  # noqa: E501
-
-
-        :return: The firstname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._firstname
-
-    @firstname.setter
-    def firstname(self, firstname):
-        """Sets the firstname of this UserDto.
-
-
-        :param firstname: The firstname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._firstname = firstname
-
-    @property
-    def lastname(self):
-        """Gets the lastname of this UserDto.  # noqa: E501
-
-
-        :return: The lastname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._lastname
-
-    @lastname.setter
-    def lastname(self, lastname):
-        """Sets the lastname of this UserDto.
-
-
-        :param lastname: The lastname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._lastname = lastname
-
-    @property
-    def affiliation(self):
-        """Gets the affiliation of this UserDto.  # noqa: E501
-
-
-        :return: The affiliation of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._affiliation
-
-    @affiliation.setter
-    def affiliation(self, affiliation):
-        """Sets the affiliation of this UserDto.
-
-
-        :param affiliation: The affiliation of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._affiliation = affiliation
-
-    @property
-    def orcid(self):
-        """Gets the orcid of this UserDto.  # noqa: E501
-
-
-        :return: The orcid of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._orcid
-
-    @orcid.setter
-    def orcid(self, orcid):
-        """Sets the orcid of this UserDto.
-
-
-        :param orcid: The orcid of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._orcid = orcid
-
-    @property
-    def containers(self):
-        """Gets the containers of this UserDto.  # noqa: E501
-
-
-        :return: The containers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._containers
-
-    @containers.setter
-    def containers(self, containers):
-        """Sets the containers of this UserDto.
-
-
-        :param containers: The containers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._containers = containers
-
-    @property
-    def databases(self):
-        """Gets the databases of this UserDto.  # noqa: E501
-
-
-        :return: The databases of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this UserDto.
-
-
-        :param databases: The databases of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def identifiers(self):
-        """Gets the identifiers of this UserDto.  # noqa: E501
-
-
-        :return: The identifiers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._identifiers
-
-    @identifiers.setter
-    def identifiers(self, identifiers):
-        """Sets the identifiers of this UserDto.
-
-
-        :param identifiers: The identifiers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._identifiers = identifiers
-
-    @property
-    def email(self):
-        """Gets the email of this UserDto.  # noqa: E501
-
-
-        :return: The email of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        """Sets the email of this UserDto.
-
-
-        :param email: The email of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if email is None:
-            raise ValueError("Invalid value for `email`, must not be `None`")  # noqa: E501
-
-        self._email = email
-
-    @property
-    def titles_before(self):
-        """Gets the titles_before of this UserDto.  # noqa: E501
-
-
-        :return: The titles_before of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_before
-
-    @titles_before.setter
-    def titles_before(self, titles_before):
-        """Sets the titles_before of this UserDto.
-
-
-        :param titles_before: The titles_before of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_before = titles_before
-
-    @property
-    def titles_after(self):
-        """Gets the titles_after of this UserDto.  # noqa: E501
-
-
-        :return: The titles_after of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_after
-
-    @titles_after.setter
-    def titles_after(self, titles_after):
-        """Sets the titles_after of this UserDto.
-
-
-        :param titles_after: The titles_after of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_after = titles_after
-
-    @property
-    def theme_dark(self):
-        """Gets the theme_dark of this UserDto.  # noqa: E501
-
-
-        :return: The theme_dark of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._theme_dark
-
-    @theme_dark.setter
-    def theme_dark(self, theme_dark):
-        """Sets the theme_dark of this UserDto.
-
-
-        :param theme_dark: The theme_dark of this UserDto.  # noqa: E501
-        :type: bool
-        """
-        if theme_dark is None:
-            raise ValueError("Invalid value for `theme_dark`, must not be `None`")  # noqa: E501
-
-        self._theme_dark = theme_dark
-
-    @property
-    def email_verified(self):
-        """Gets the email_verified of this UserDto.  # noqa: E501
-
-
-        :return: The email_verified of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._email_verified
-
-    @email_verified.setter
-    def email_verified(self, email_verified):
-        """Sets the email_verified of this UserDto.
-
-
-        :param email_verified: The email_verified of this UserDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._email_verified = email_verified
-
-    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(UserDto, 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, UserDto):
-            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/.jupyter/api_container/rest.py b/.jupyter/api_container/rest.py
deleted file mode 100644
index 0444029bd5e0e733a9b30a168bd55ccf63281f25..0000000000000000000000000000000000000000
--- a/.jupyter/api_container/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Container Service API
-
-    Service that manages the containers  # 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/.jupyter/api_database/__init__.py b/.jupyter/api_database/__init__.py
deleted file mode 100644
index 5da8bf97a428a1bc5e19898c594a8cd20c729876..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/__init__.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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_database.api.container_database_endpoint_api import ContainerDatabaseEndpointApi
-from api_database.api.license_endpoint_api import LicenseEndpointApi
-# import ApiClient
-from api_database.api_client import ApiClient
-from api_database.configuration import Configuration
-# import models into sdk package
-from api_database.models.api_error_dto import ApiErrorDto
-from api_database.models.container_brief_dto import ContainerBriefDto
-from api_database.models.container_dto import ContainerDto
-from api_database.models.database_brief_dto import DatabaseBriefDto
-from api_database.models.database_create_dto import DatabaseCreateDto
-from api_database.models.database_dto import DatabaseDto
-from api_database.models.database_modify_dto import DatabaseModifyDto
-from api_database.models.granted_authority_dto import GrantedAuthorityDto
-from api_database.models.image_brief_dto import ImageBriefDto
-from api_database.models.image_date_dto import ImageDateDto
-from api_database.models.image_dto import ImageDto
-from api_database.models.image_env_item_dto import ImageEnvItemDto
-from api_database.models.license_dto import LicenseDto
-from api_database.models.table_brief_dto import TableBriefDto
-from api_database.models.user_brief_dto import UserBriefDto
-from api_database.models.user_dto import UserDto
diff --git a/.jupyter/api_database/api/__init__.py b/.jupyter/api_database/api/__init__.py
deleted file mode 100644
index 959020dc689c6249ff09f0ad9b73c919356b2c83..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/api/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_database.api.container_database_endpoint_api import ContainerDatabaseEndpointApi
-from api_database.api.license_endpoint_api import LicenseEndpointApi
diff --git a/.jupyter/api_database/api/container_database_endpoint_api.py b/.jupyter/api_database/api/container_database_endpoint_api.py
deleted file mode 100644
index b2740125af65140fc7b27281ca0209c6cca8d271..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/api/container_database_endpoint_api.py
+++ /dev/null
@@ -1,546 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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_database.api_client import ApiClient
-
-
-class ContainerDatabaseEndpointApi(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    Ref: https://github.com/swagger-api/swagger-codegen
-    """
-
-    def __init__(self, api_client=None):
-        if api_client is None:
-            api_client = ApiClient()
-        self.api_client = api_client
-
-    def create(self, body, id, **kwargs):  # noqa: E501
-        """Create database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param DatabaseCreateDto body: (required)
-        :param int id: (required)
-        :return: DatabaseBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.create_with_http_info(body, id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.create_with_http_info(body, id, **kwargs)  # noqa: E501
-            return data
-
-    def create_with_http_info(self, body, id, **kwargs):  # noqa: E501
-        """Create database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create_with_http_info(body, id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param DatabaseCreateDto body: (required)
-        :param int id: (required)
-        :return: DatabaseBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method create" % 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 `create`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `create`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        if '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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='DatabaseBriefDto',  # 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 delete1(self, id, database_id, **kwargs):  # noqa: E501
-        """Delete some database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete1(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.delete1_with_http_info(id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.delete1_with_http_info(id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def delete1_with_http_info(self, id, database_id, **kwargs):  # noqa: E501
-        """Delete some database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete1_with_http_info(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method delete1" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `delete1`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `delete1`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}', 'DELETE',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='object',  # 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 find_all(self, id, **kwargs):  # noqa: E501
-        """List databases  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: list[DatabaseBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_all_with_http_info(id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_all_with_http_info(id, **kwargs)  # noqa: E501
-            return data
-
-    def find_all_with_http_info(self, id, **kwargs):  # noqa: E501
-        """List databases  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all_with_http_info(id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :return: list[DatabaseBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_all" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_all`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[DatabaseBriefDto]',  # 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 find_by_id(self, id, database_id, **kwargs):  # noqa: E501
-        """Find some database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: DatabaseDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_by_id_with_http_info(id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_by_id_with_http_info(id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def find_by_id_with_http_info(self, id, database_id, **kwargs):  # noqa: E501
-        """Find some database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id_with_http_info(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: DatabaseDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_by_id" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_by_id`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `find_by_id`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='DatabaseDto',  # 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 update(self, body, id, database_id, **kwargs):  # noqa: E501
-        """Update database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update(body, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param DatabaseModifyDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: DatabaseBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def update_with_http_info(self, body, id, database_id, **kwargs):  # noqa: E501
-        """Update database  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_with_http_info(body, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param DatabaseModifyDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: DatabaseBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update" % 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 `update`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `update`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='DatabaseBriefDto',  # 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/.jupyter/api_database/api_client.py b/.jupyter/api_database/api_client.py
deleted file mode 100644
index 448338ff3546155c87acbf85d007e2de41b1a7ae..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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_database.configuration import Configuration
-import api_database.models
-from api_database 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_database.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/.jupyter/api_database/configuration.py b/.jupyter/api_database/configuration.py
deleted file mode 100644
index 5ee4406b932b0def43900eedf1c962a85da65c16..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 = "http://localhost:9095"
-        # 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_database")
-        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/.jupyter/api_database/models/__init__.py b/.jupyter/api_database/models/__init__.py
deleted file mode 100644
index 17ab89a69b0183bc10388c23d898f30aaf44f6be..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/__init__.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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_database.models.api_error_dto import ApiErrorDto
-from api_database.models.container_brief_dto import ContainerBriefDto
-from api_database.models.container_dto import ContainerDto
-from api_database.models.database_brief_dto import DatabaseBriefDto
-from api_database.models.database_create_dto import DatabaseCreateDto
-from api_database.models.database_dto import DatabaseDto
-from api_database.models.database_modify_dto import DatabaseModifyDto
-from api_database.models.granted_authority_dto import GrantedAuthorityDto
-from api_database.models.image_brief_dto import ImageBriefDto
-from api_database.models.image_date_dto import ImageDateDto
-from api_database.models.image_dto import ImageDto
-from api_database.models.image_env_item_dto import ImageEnvItemDto
-from api_database.models.license_dto import LicenseDto
-from api_database.models.table_brief_dto import TableBriefDto
-from api_database.models.user_brief_dto import UserBriefDto
-from api_database.models.user_dto import UserDto
diff --git a/.jupyter/api_database/models/api_error_dto.py b/.jupyter/api_database/models/api_error_dto.py
deleted file mode 100644
index 1805f0cb0f156c7b3e3d19abc6f72865a0554f55..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/api_error_dto.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ApiErrorDto(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 = {
-        'status': 'str',
-        'message': 'str',
-        'code': 'str'
-    }
-
-    attribute_map = {
-        'status': 'status',
-        'message': 'message',
-        'code': 'code'
-    }
-
-    def __init__(self, status=None, message=None, code=None):  # noqa: E501
-        """ApiErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._status = None
-        self._message = None
-        self._code = None
-        self.discriminator = None
-        self.status = status
-        self.message = message
-        self.code = code
-
-    @property
-    def status(self):
-        """Gets the status of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The status of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._status
-
-    @status.setter
-    def status(self, status):
-        """Sets the status of this ApiErrorDto.
-
-
-        :param status: The status of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if status is None:
-            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
-        allowed_values = ["100 CONTINUE", "101 SWITCHING_PROTOCOLS", "102 PROCESSING", "103 CHECKPOINT", "200 OK", "201 CREATED", "202 ACCEPTED", "203 NON_AUTHORITATIVE_INFORMATION", "204 NO_CONTENT", "205 RESET_CONTENT", "206 PARTIAL_CONTENT", "207 MULTI_STATUS", "208 ALREADY_REPORTED", "226 IM_USED", "300 MULTIPLE_CHOICES", "301 MOVED_PERMANENTLY", "302 FOUND", "302 MOVED_TEMPORARILY", "303 SEE_OTHER", "304 NOT_MODIFIED", "305 USE_PROXY", "307 TEMPORARY_REDIRECT", "308 PERMANENT_REDIRECT", "400 BAD_REQUEST", "401 UNAUTHORIZED", "402 PAYMENT_REQUIRED", "403 FORBIDDEN", "404 NOT_FOUND", "405 METHOD_NOT_ALLOWED", "406 NOT_ACCEPTABLE", "407 PROXY_AUTHENTICATION_REQUIRED", "408 REQUEST_TIMEOUT", "409 CONFLICT", "410 GONE", "411 LENGTH_REQUIRED", "412 PRECONDITION_FAILED", "413 PAYLOAD_TOO_LARGE", "413 REQUEST_ENTITY_TOO_LARGE", "414 URI_TOO_LONG", "414 REQUEST_URI_TOO_LONG", "415 UNSUPPORTED_MEDIA_TYPE", "416 REQUESTED_RANGE_NOT_SATISFIABLE", "417 EXPECTATION_FAILED", "418 I_AM_A_TEAPOT", "419 INSUFFICIENT_SPACE_ON_RESOURCE", "420 METHOD_FAILURE", "421 DESTINATION_LOCKED", "422 UNPROCESSABLE_ENTITY", "423 LOCKED", "424 FAILED_DEPENDENCY", "425 TOO_EARLY", "426 UPGRADE_REQUIRED", "428 PRECONDITION_REQUIRED", "429 TOO_MANY_REQUESTS", "431 REQUEST_HEADER_FIELDS_TOO_LARGE", "451 UNAVAILABLE_FOR_LEGAL_REASONS", "500 INTERNAL_SERVER_ERROR", "501 NOT_IMPLEMENTED", "502 BAD_GATEWAY", "503 SERVICE_UNAVAILABLE", "504 GATEWAY_TIMEOUT", "505 HTTP_VERSION_NOT_SUPPORTED", "506 VARIANT_ALSO_NEGOTIATES", "507 INSUFFICIENT_STORAGE", "508 LOOP_DETECTED", "509 BANDWIDTH_LIMIT_EXCEEDED", "510 NOT_EXTENDED", "511 NETWORK_AUTHENTICATION_REQUIRED"]  # noqa: E501
-        if status not in allowed_values:
-            raise ValueError(
-                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
-                .format(status, allowed_values)
-            )
-
-        self._status = status
-
-    @property
-    def message(self):
-        """Gets the message of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The message of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ApiErrorDto.
-
-
-        :param message: The message of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if message is None:
-            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501
-
-        self._message = message
-
-    @property
-    def code(self):
-        """Gets the code of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The code of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._code
-
-    @code.setter
-    def code(self, code):
-        """Sets the code of this ApiErrorDto.
-
-
-        :param code: The code of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if code is None:
-            raise ValueError("Invalid value for `code`, must not be `None`")  # noqa: E501
-
-        self._code = code
-
-    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(ApiErrorDto, 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, ApiErrorDto):
-            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/.jupyter/api_database/models/column_dto.py b/.jupyter/api_database/models/column_dto.py
deleted file mode 100644
index e4e7f842ad2e7e5730320c4eabed83aa17a09250..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/column_dto.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ColumnDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'unique': 'bool',
-        'references': 'str',
-        'internal_name': 'str',
-        'date_format': 'ImageDateDto',
-        'auto_generated': 'bool',
-        'is_primary_key': 'bool',
-        'column_type': 'str',
-        'column_concept': 'ConceptDto',
-        'decimal_digits_before': 'int',
-        'decimal_digits_after': 'int',
-        'is_null_allowed': 'bool',
-        'check_expression': 'str',
-        'foreign_key': 'str',
-        'enum_values': 'list[str]'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'unique': 'unique',
-        'references': 'references',
-        'internal_name': 'internal_name',
-        'date_format': 'date_format',
-        'auto_generated': 'auto_generated',
-        'is_primary_key': 'is_primary_key',
-        'column_type': 'column_type',
-        'column_concept': 'column_concept',
-        'decimal_digits_before': 'decimal_digits_before',
-        'decimal_digits_after': 'decimal_digits_after',
-        'is_null_allowed': 'is_null_allowed',
-        'check_expression': 'check_expression',
-        'foreign_key': 'foreign_key',
-        'enum_values': 'enum_values'
-    }
-
-    def __init__(self, id=None, name=None, unique=None, references=None, internal_name=None, date_format=None, auto_generated=None, is_primary_key=None, column_type=None, column_concept=None, decimal_digits_before=None, decimal_digits_after=None, is_null_allowed=None, check_expression=None, foreign_key=None, enum_values=None):  # noqa: E501
-        """ColumnDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._unique = None
-        self._references = None
-        self._internal_name = None
-        self._date_format = None
-        self._auto_generated = None
-        self._is_primary_key = None
-        self._column_type = None
-        self._column_concept = None
-        self._decimal_digits_before = None
-        self._decimal_digits_after = None
-        self._is_null_allowed = None
-        self._check_expression = None
-        self._foreign_key = None
-        self._enum_values = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.unique = unique
-        if references is not None:
-            self.references = references
-        self.internal_name = internal_name
-        if date_format is not None:
-            self.date_format = date_format
-        self.auto_generated = auto_generated
-        self.is_primary_key = is_primary_key
-        self.column_type = column_type
-        if column_concept is not None:
-            self.column_concept = column_concept
-        if decimal_digits_before is not None:
-            self.decimal_digits_before = decimal_digits_before
-        if decimal_digits_after is not None:
-            self.decimal_digits_after = decimal_digits_after
-        self.is_null_allowed = is_null_allowed
-        if check_expression is not None:
-            self.check_expression = check_expression
-        if foreign_key is not None:
-            self.foreign_key = foreign_key
-        if enum_values is not None:
-            self.enum_values = enum_values
-
-    @property
-    def id(self):
-        """Gets the id of this ColumnDto.  # noqa: E501
-
-
-        :return: The id of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ColumnDto.
-
-
-        :param id: The id of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this ColumnDto.  # noqa: E501
-
-
-        :return: The name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ColumnDto.
-
-
-        :param name: The name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def unique(self):
-        """Gets the unique of this ColumnDto.  # noqa: E501
-
-
-        :return: The unique of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._unique
-
-    @unique.setter
-    def unique(self, unique):
-        """Sets the unique of this ColumnDto.
-
-
-        :param unique: The unique of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if unique is None:
-            raise ValueError("Invalid value for `unique`, must not be `None`")  # noqa: E501
-
-        self._unique = unique
-
-    @property
-    def references(self):
-        """Gets the references of this ColumnDto.  # noqa: E501
-
-
-        :return: The references of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._references
-
-    @references.setter
-    def references(self, references):
-        """Sets the references of this ColumnDto.
-
-
-        :param references: The references of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._references = references
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ColumnDto.  # noqa: E501
-
-
-        :return: The internal_name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ColumnDto.
-
-
-        :param internal_name: The internal_name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def date_format(self):
-        """Gets the date_format of this ColumnDto.  # noqa: E501
-
-
-        :return: The date_format of this ColumnDto.  # noqa: E501
-        :rtype: ImageDateDto
-        """
-        return self._date_format
-
-    @date_format.setter
-    def date_format(self, date_format):
-        """Sets the date_format of this ColumnDto.
-
-
-        :param date_format: The date_format of this ColumnDto.  # noqa: E501
-        :type: ImageDateDto
-        """
-
-        self._date_format = date_format
-
-    @property
-    def auto_generated(self):
-        """Gets the auto_generated of this ColumnDto.  # noqa: E501
-
-
-        :return: The auto_generated of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._auto_generated
-
-    @auto_generated.setter
-    def auto_generated(self, auto_generated):
-        """Sets the auto_generated of this ColumnDto.
-
-
-        :param auto_generated: The auto_generated of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if auto_generated is None:
-            raise ValueError("Invalid value for `auto_generated`, must not be `None`")  # noqa: E501
-
-        self._auto_generated = auto_generated
-
-    @property
-    def is_primary_key(self):
-        """Gets the is_primary_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_primary_key of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_primary_key
-
-    @is_primary_key.setter
-    def is_primary_key(self, is_primary_key):
-        """Sets the is_primary_key of this ColumnDto.
-
-
-        :param is_primary_key: The is_primary_key of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_primary_key is None:
-            raise ValueError("Invalid value for `is_primary_key`, must not be `None`")  # noqa: E501
-
-        self._is_primary_key = is_primary_key
-
-    @property
-    def column_type(self):
-        """Gets the column_type of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_type of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._column_type
-
-    @column_type.setter
-    def column_type(self, column_type):
-        """Sets the column_type of this ColumnDto.
-
-
-        :param column_type: The column_type of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if column_type is None:
-            raise ValueError("Invalid value for `column_type`, must not be `None`")  # noqa: E501
-        allowed_values = ["enum", "number", "decimal", "string", "text", "boolean", "date", "timestamp", "blob"]  # noqa: E501
-        if column_type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `column_type` ({0}), must be one of {1}"  # noqa: E501
-                .format(column_type, allowed_values)
-            )
-
-        self._column_type = column_type
-
-    @property
-    def column_concept(self):
-        """Gets the column_concept of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_concept of this ColumnDto.  # noqa: E501
-        :rtype: ConceptDto
-        """
-        return self._column_concept
-
-    @column_concept.setter
-    def column_concept(self, column_concept):
-        """Sets the column_concept of this ColumnDto.
-
-
-        :param column_concept: The column_concept of this ColumnDto.  # noqa: E501
-        :type: ConceptDto
-        """
-
-        self._column_concept = column_concept
-
-    @property
-    def decimal_digits_before(self):
-        """Gets the decimal_digits_before of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_before
-
-    @decimal_digits_before.setter
-    def decimal_digits_before(self, decimal_digits_before):
-        """Sets the decimal_digits_before of this ColumnDto.
-
-
-        :param decimal_digits_before: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_before = decimal_digits_before
-
-    @property
-    def decimal_digits_after(self):
-        """Gets the decimal_digits_after of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_after
-
-    @decimal_digits_after.setter
-    def decimal_digits_after(self, decimal_digits_after):
-        """Sets the decimal_digits_after of this ColumnDto.
-
-
-        :param decimal_digits_after: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_after = decimal_digits_after
-
-    @property
-    def is_null_allowed(self):
-        """Gets the is_null_allowed of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_null_allowed
-
-    @is_null_allowed.setter
-    def is_null_allowed(self, is_null_allowed):
-        """Sets the is_null_allowed of this ColumnDto.
-
-
-        :param is_null_allowed: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_null_allowed is None:
-            raise ValueError("Invalid value for `is_null_allowed`, must not be `None`")  # noqa: E501
-
-        self._is_null_allowed = is_null_allowed
-
-    @property
-    def check_expression(self):
-        """Gets the check_expression of this ColumnDto.  # noqa: E501
-
-
-        :return: The check_expression of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._check_expression
-
-    @check_expression.setter
-    def check_expression(self, check_expression):
-        """Sets the check_expression of this ColumnDto.
-
-
-        :param check_expression: The check_expression of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._check_expression = check_expression
-
-    @property
-    def foreign_key(self):
-        """Gets the foreign_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The foreign_key of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._foreign_key
-
-    @foreign_key.setter
-    def foreign_key(self, foreign_key):
-        """Sets the foreign_key of this ColumnDto.
-
-
-        :param foreign_key: The foreign_key of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._foreign_key = foreign_key
-
-    @property
-    def enum_values(self):
-        """Gets the enum_values of this ColumnDto.  # noqa: E501
-
-
-        :return: The enum_values of this ColumnDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._enum_values
-
-    @enum_values.setter
-    def enum_values(self, enum_values):
-        """Sets the enum_values of this ColumnDto.
-
-
-        :param enum_values: The enum_values of this ColumnDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._enum_values = enum_values
-
-    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(ColumnDto, 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, ColumnDto):
-            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/.jupyter/api_database/models/concept_dto.py b/.jupyter/api_database/models/concept_dto.py
deleted file mode 100644
index a2d5b742904608ce6b17b290a9e0b38bb4164ae7..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/concept_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ConceptDto(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 = {
-        'uri': 'str',
-        'name': 'str',
-        'created': 'datetime'
-    }
-
-    attribute_map = {
-        'uri': 'uri',
-        'name': 'name',
-        'created': 'created'
-    }
-
-    def __init__(self, uri=None, name=None, created=None):  # noqa: E501
-        """ConceptDto - a model defined in Swagger"""  # noqa: E501
-        self._uri = None
-        self._name = None
-        self._created = None
-        self.discriminator = None
-        self.uri = uri
-        self.name = name
-        self.created = created
-
-    @property
-    def uri(self):
-        """Gets the uri of this ConceptDto.  # noqa: E501
-
-
-        :return: The uri of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._uri
-
-    @uri.setter
-    def uri(self, uri):
-        """Sets the uri of this ConceptDto.
-
-
-        :param uri: The uri of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if uri is None:
-            raise ValueError("Invalid value for `uri`, must not be `None`")  # noqa: E501
-
-        self._uri = uri
-
-    @property
-    def name(self):
-        """Gets the name of this ConceptDto.  # noqa: E501
-
-
-        :return: The name of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ConceptDto.
-
-
-        :param name: The name of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def created(self):
-        """Gets the created of this ConceptDto.  # noqa: E501
-
-
-        :return: The created of this ConceptDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ConceptDto.
-
-
-        :param created: The created of this ConceptDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    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(ConceptDto, 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, ConceptDto):
-            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/.jupyter/api_database/models/container_dto.py b/.jupyter/api_database/models/container_dto.py
deleted file mode 100644
index e001f99473d271d4a4be3019a4579931610bbc82..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/container_dto.py
+++ /dev/null
@@ -1,381 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ContainerDto(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 = {
-        'id': 'int',
-        'hash': 'str',
-        'name': 'str',
-        'state': 'str',
-        'databases': 'list[DatabaseDto]',
-        'image': 'ImageBriefDto',
-        'port': 'int',
-        'created': 'datetime',
-        'internal_name': 'str',
-        'ip_address': 'str',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'hash': 'hash',
-        'name': 'name',
-        'state': 'state',
-        'databases': 'databases',
-        'image': 'image',
-        'port': 'port',
-        'created': 'created',
-        'internal_name': 'internal_name',
-        'ip_address': 'ip_address',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, hash=None, name=None, state=None, databases=None, image=None, port=None, created=None, internal_name=None, ip_address=None, is_public=None):  # noqa: E501
-        """ContainerDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._hash = None
-        self._name = None
-        self._state = None
-        self._databases = None
-        self._image = None
-        self._port = None
-        self._created = None
-        self._internal_name = None
-        self._ip_address = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.hash = hash
-        self.name = name
-        if state is not None:
-            self.state = state
-        if databases is not None:
-            self.databases = databases
-        if image is not None:
-            self.image = image
-        if port is not None:
-            self.port = port
-        self.created = created
-        self.internal_name = internal_name
-        if ip_address is not None:
-            self.ip_address = ip_address
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this ContainerDto.  # noqa: E501
-
-
-        :return: The id of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ContainerDto.
-
-
-        :param id: The id of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def hash(self):
-        """Gets the hash of this ContainerDto.  # noqa: E501
-
-
-        :return: The hash of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ContainerDto.
-
-
-        :param hash: The hash of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if hash is None:
-            raise ValueError("Invalid value for `hash`, must not be `None`")  # noqa: E501
-
-        self._hash = hash
-
-    @property
-    def name(self):
-        """Gets the name of this ContainerDto.  # noqa: E501
-
-
-        :return: The name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ContainerDto.
-
-
-        :param name: The name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def state(self):
-        """Gets the state of this ContainerDto.  # noqa: E501
-
-
-        :return: The state of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._state
-
-    @state.setter
-    def state(self, state):
-        """Sets the state of this ContainerDto.
-
-
-        :param state: The state of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ContainerStateDto.CREATED", "ContainerStateDto.RESTARTING", "ContainerStateDto.RUNNING", "ContainerStateDto.PAUSED", "ContainerStateDto.EXITED", "ContainerStateDto.DEAD"]  # noqa: E501
-        if state not in allowed_values:
-            raise ValueError(
-                "Invalid value for `state` ({0}), must be one of {1}"  # noqa: E501
-                .format(state, allowed_values)
-            )
-
-        self._state = state
-
-    @property
-    def databases(self):
-        """Gets the databases of this ContainerDto.  # noqa: E501
-
-
-        :return: The databases of this ContainerDto.  # noqa: E501
-        :rtype: list[DatabaseDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this ContainerDto.
-
-
-        :param databases: The databases of this ContainerDto.  # noqa: E501
-        :type: list[DatabaseDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def image(self):
-        """Gets the image of this ContainerDto.  # noqa: E501
-
-
-        :return: The image of this ContainerDto.  # noqa: E501
-        :rtype: ImageBriefDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this ContainerDto.
-
-
-        :param image: The image of this ContainerDto.  # noqa: E501
-        :type: ImageBriefDto
-        """
-
-        self._image = image
-
-    @property
-    def port(self):
-        """Gets the port of this ContainerDto.  # noqa: E501
-
-
-        :return: The port of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._port
-
-    @port.setter
-    def port(self, port):
-        """Sets the port of this ContainerDto.
-
-
-        :param port: The port of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-
-        self._port = port
-
-    @property
-    def created(self):
-        """Gets the created of this ContainerDto.  # noqa: E501
-
-
-        :return: The created of this ContainerDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ContainerDto.
-
-
-        :param created: The created of this ContainerDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ContainerDto.  # noqa: E501
-
-
-        :return: The internal_name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ContainerDto.
-
-
-        :param internal_name: The internal_name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def ip_address(self):
-        """Gets the ip_address of this ContainerDto.  # noqa: E501
-
-
-        :return: The ip_address of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._ip_address
-
-    @ip_address.setter
-    def ip_address(self, ip_address):
-        """Sets the ip_address of this ContainerDto.
-
-
-        :param ip_address: The ip_address of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-
-        self._ip_address = ip_address
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this ContainerDto.  # noqa: E501
-
-
-        :return: The is_public of this ContainerDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this ContainerDto.
-
-
-        :param is_public: The is_public of this ContainerDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(ContainerDto, 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, ContainerDto):
-            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/.jupyter/api_database/models/database_brief_dto.py b/.jupyter/api_database/models/database_brief_dto.py
deleted file mode 100644
index bf325afda796e5f97d25a0459deba58fefdbad9b..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/database_brief_dto.py
+++ /dev/null
@@ -1,294 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 DatabaseBriefDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'description': 'str',
-        'engine': 'str',
-        'container': 'ContainerBriefDto',
-        'creator': 'UserBriefDto',
-        'created': 'datetime',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'description': 'description',
-        'engine': 'engine',
-        'container': 'container',
-        'creator': 'creator',
-        'created': 'created',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, name=None, description=None, engine=None, container=None, creator=None, created=None, is_public=None):  # noqa: E501
-        """DatabaseBriefDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._description = None
-        self._engine = None
-        self._container = None
-        self._creator = None
-        self._created = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        if description is not None:
-            self.description = description
-        if engine is not None:
-            self.engine = engine
-        if container is not None:
-            self.container = container
-        if creator is not None:
-            self.creator = creator
-        if created is not None:
-            self.created = created
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The id of this DatabaseBriefDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseBriefDto.
-
-
-        :param id: The id of this DatabaseBriefDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The name of this DatabaseBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseBriefDto.
-
-
-        :param name: The name of this DatabaseBriefDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseBriefDto.
-
-
-        :param description: The description of this DatabaseBriefDto.  # noqa: E501
-        :type: str
-        """
-
-        self._description = description
-
-    @property
-    def engine(self):
-        """Gets the engine of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The engine of this DatabaseBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._engine
-
-    @engine.setter
-    def engine(self, engine):
-        """Sets the engine of this DatabaseBriefDto.
-
-
-        :param engine: The engine of this DatabaseBriefDto.  # noqa: E501
-        :type: str
-        """
-
-        self._engine = engine
-
-    @property
-    def container(self):
-        """Gets the container of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The container of this DatabaseBriefDto.  # noqa: E501
-        :rtype: ContainerBriefDto
-        """
-        return self._container
-
-    @container.setter
-    def container(self, container):
-        """Sets the container of this DatabaseBriefDto.
-
-
-        :param container: The container of this DatabaseBriefDto.  # noqa: E501
-        :type: ContainerBriefDto
-        """
-
-        self._container = container
-
-    @property
-    def creator(self):
-        """Gets the creator of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The creator of this DatabaseBriefDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseBriefDto.
-
-
-        :param creator: The creator of this DatabaseBriefDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-
-        self._creator = creator
-
-    @property
-    def created(self):
-        """Gets the created of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The created of this DatabaseBriefDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseBriefDto.
-
-
-        :param created: The created of this DatabaseBriefDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseBriefDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseBriefDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseBriefDto.
-
-
-        :param is_public: The is_public of this DatabaseBriefDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(DatabaseBriefDto, 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, DatabaseBriefDto):
-            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/.jupyter/api_database/models/database_create_dto.py b/.jupyter/api_database/models/database_create_dto.py
deleted file mode 100644
index a1a6d6bc699759d833b18f43581e7bb96013adc7..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/database_create_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 DatabaseCreateDto(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 = {
-        'name': 'str',
-        'description': 'str',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'name': 'name',
-        'description': 'description',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, name=None, description=None, is_public=None):  # noqa: E501
-        """DatabaseCreateDto - a model defined in Swagger"""  # noqa: E501
-        self._name = None
-        self._description = None
-        self._is_public = None
-        self.discriminator = None
-        self.name = name
-        self.description = description
-        self.is_public = is_public
-
-    @property
-    def name(self):
-        """Gets the name of this DatabaseCreateDto.  # noqa: E501
-
-
-        :return: The name of this DatabaseCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseCreateDto.
-
-
-        :param name: The name of this DatabaseCreateDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseCreateDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseCreateDto.
-
-
-        :param description: The description of this DatabaseCreateDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseCreateDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseCreateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseCreateDto.
-
-
-        :param is_public: The is_public of this DatabaseCreateDto.  # noqa: E501
-        :type: bool
-        """
-        if is_public is None:
-            raise ValueError("Invalid value for `is_public`, must not be `None`")  # noqa: E501
-
-        self._is_public = is_public
-
-    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(DatabaseCreateDto, 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, DatabaseCreateDto):
-            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/.jupyter/api_database/models/database_dto.py b/.jupyter/api_database/models/database_dto.py
deleted file mode 100644
index 52e21473a2256ae38d006e121c8080abecc2b7ad..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/database_dto.py
+++ /dev/null
@@ -1,564 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 DatabaseDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'exchange': 'str',
-        'creator': 'UserBriefDto',
-        'subjects': 'list[str]',
-        'language': 'str',
-        'license': 'LicenseDto',
-        'description': 'str',
-        'publisher': 'str',
-        'contact': 'UserDto',
-        'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
-        'container': 'ContainerDto',
-        'created': 'datetime',
-        'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
-        'tables': 'tables',
-        'image': 'image',
-        'container': 'container',
-        'created': 'created',
-        'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, name=None, exchange=None, creator=None, subjects=None, language=None, license=None, description=None, publisher=None, contact=None, tables=None, image=None, container=None, created=None, deleted=None, internal_name=None, publication_year=None, is_public=None):  # noqa: E501
-        """DatabaseDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._exchange = None
-        self._creator = None
-        self._subjects = None
-        self._language = None
-        self._license = None
-        self._description = None
-        self._publisher = None
-        self._contact = None
-        self._tables = None
-        self._image = None
-        self._container = None
-        self._created = None
-        self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.exchange = exchange
-        self.creator = creator
-        if subjects is not None:
-            self.subjects = subjects
-        if language is not None:
-            self.language = language
-        if license is not None:
-            self.license = license
-        if description is not None:
-            self.description = description
-        if publisher is not None:
-            self.publisher = publisher
-        if contact is not None:
-            self.contact = contact
-        if tables is not None:
-            self.tables = tables
-        if image is not None:
-            self.image = image
-        if container is not None:
-            self.container = container
-        if created is not None:
-            self.created = created
-        if deleted is not None:
-            self.deleted = deleted
-        self.internal_name = internal_name
-        self.publication_year = publication_year
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
-
-
-        :return: The id of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
-
-
-        :param id: The id of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
-
-
-        :param name: The name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
-
-
-        :return: The exchange of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._exchange
-
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
-
-
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
-
-        self._exchange = exchange
-
-    @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
-
-
-        :return: The creator of this DatabaseDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
-
-
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
-
-
-        :return: The subjects of this DatabaseDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._subjects
-
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
-
-
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._subjects = subjects
-
-    @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
-
-
-        :return: The language of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._language
-
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
-
-
-        :param language: The language of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ab", "aa", "af", "ak", "sq", "am", "ar", "an", "hy", "as", "av", "ae", "ay", "az", "bm", "ba", "eu", "be", "bn", "bh", "bi", "bs", "br", "bg", "my", "ca", "km", "ch", "ce", "ny", "zh", "cu", "cv", "kw", "co", "cr", "hr", "cs", "da", "dv", "nl", "dz", "en", "eo", "et", "ee", "fo", "fj", "fi", "fr", "ff", "gd", "gl", "lg", "ka", "de", "ki", "el", "kl", "gn", "gu", "ht", "ha", "he", "hz", "hi", "ho", "hu", "is", "io", "ig", "id", "ia", "ie", "iu", "ik", "ga", "it", "ja", "jv", "kn", "kr", "ks", "kk", "rw", "kv", "kg", "ko", "kj", "ku", "ky", "lo", "la", "lv", "lb", "li", "ln", "lt", "lu", "mk", "mg", "ms", "ml", "mt", "gv", "mi", "mr", "mh", "ro", "mn", "na", "nv", "nd", "ng", "ne", "se", "no", "nb", "nn", "ii", "oc", "oj", "or", "om", "os", "pi", "pa", "ps", "fa", "pl", "pt", "qu", "rm", "rn", "ru", "sm", "sg", "sa", "sc", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "nr", "es", "su", "sw", "ss", "sv", "tl", "ty", "tg", "ta", "tt", "te", "th", "bo", "ti", "to", "ts", "tn", "tr", "tk", "tw", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "cy", "fy", "wo", "xh", "yi", "yo", "za", "zu"]  # noqa: E501
-        if language not in allowed_values:
-            raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
-            )
-
-        self._language = language
-
-    @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
-
-
-        :return: The license of this DatabaseDto.  # noqa: E501
-        :rtype: LicenseDto
-        """
-        return self._license
-
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
-
-
-        :param license: The license of this DatabaseDto.  # noqa: E501
-        :type: LicenseDto
-        """
-
-        self._license = license
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
-
-
-        :param description: The description of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._description = description
-
-    @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publisher of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._publisher
-
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
-
-
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._publisher = publisher
-
-    @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
-
-
-        :return: The contact of this DatabaseDto.  # noqa: E501
-        :rtype: UserDto
-        """
-        return self._contact
-
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
-
-
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
-        :type: UserDto
-        """
-
-        self._contact = contact
-
-    @property
-    def tables(self):
-        """Gets the tables of this DatabaseDto.  # noqa: E501
-
-
-        :return: The tables of this DatabaseDto.  # noqa: E501
-        :rtype: list[TableBriefDto]
-        """
-        return self._tables
-
-    @tables.setter
-    def tables(self, tables):
-        """Sets the tables of this DatabaseDto.
-
-
-        :param tables: The tables of this DatabaseDto.  # noqa: E501
-        :type: list[TableBriefDto]
-        """
-
-        self._tables = tables
-
-    @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
-
-
-        :return: The image of this DatabaseDto.  # noqa: E501
-        :rtype: ImageDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
-
-
-        :param image: The image of this DatabaseDto.  # noqa: E501
-        :type: ImageDto
-        """
-
-        self._image = image
-
-    @property
-    def container(self):
-        """Gets the container of this DatabaseDto.  # noqa: E501
-
-
-        :return: The container of this DatabaseDto.  # noqa: E501
-        :rtype: ContainerDto
-        """
-        return self._container
-
-    @container.setter
-    def container(self, container):
-        """Sets the container of this DatabaseDto.
-
-
-        :param container: The container of this DatabaseDto.  # noqa: E501
-        :type: ContainerDto
-        """
-
-        self._container = container
-
-    @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
-
-
-        :return: The created of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
-
-
-        :param created: The created of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def deleted(self):
-        """Gets the deleted of this DatabaseDto.  # noqa: E501
-
-
-        :return: The deleted of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._deleted
-
-    @deleted.setter
-    def deleted(self, deleted):
-        """Sets the deleted of this DatabaseDto.
-
-
-        :param deleted: The deleted of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._deleted = deleted
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
-
-
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_year
-
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
-
-
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if publication_year is None:
-            raise ValueError("Invalid value for `publication_year`, must not be `None`")  # noqa: E501
-
-        self._publication_year = publication_year
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
-
-
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(DatabaseDto, 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, DatabaseDto):
-            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/.jupyter/api_database/models/database_modify_dto.py b/.jupyter/api_database/models/database_modify_dto.py
deleted file mode 100644
index f61145aa15e81aaf865f5b7d13e37deb8d1a2386..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/database_modify_dto.py
+++ /dev/null
@@ -1,301 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 DatabaseModifyDto(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 = {
-        'subject': 'list[str]',
-        'description': 'str',
-        'publisher': 'str',
-        'license': 'LicenseDto',
-        'language': 'str',
-        'is_public': 'bool',
-        'publication_year': 'int',
-        'contact_person': 'str'
-    }
-
-    attribute_map = {
-        'subject': 'subject',
-        'description': 'description',
-        'publisher': 'publisher',
-        'license': 'license',
-        'language': 'language',
-        'is_public': 'is_public',
-        'publication_year': 'publication_year',
-        'contact_person': 'contact_person'
-    }
-
-    def __init__(self, subject=None, description=None, publisher=None, license=None, language=None, is_public=None, publication_year=None, contact_person=None):  # noqa: E501
-        """DatabaseModifyDto - a model defined in Swagger"""  # noqa: E501
-        self._subject = None
-        self._description = None
-        self._publisher = None
-        self._license = None
-        self._language = None
-        self._is_public = None
-        self._publication_year = None
-        self._contact_person = None
-        self.discriminator = None
-        if subject is not None:
-            self.subject = subject
-        self.description = description
-        if publisher is not None:
-            self.publisher = publisher
-        if license is not None:
-            self.license = license
-        if language is not None:
-            self.language = language
-        self.is_public = is_public
-        self.publication_year = publication_year
-        if contact_person is not None:
-            self.contact_person = contact_person
-
-    @property
-    def subject(self):
-        """Gets the subject of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The subject of this DatabaseModifyDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._subject
-
-    @subject.setter
-    def subject(self, subject):
-        """Sets the subject of this DatabaseModifyDto.
-
-
-        :param subject: The subject of this DatabaseModifyDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._subject = subject
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseModifyDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseModifyDto.
-
-
-        :param description: The description of this DatabaseModifyDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The publisher of this DatabaseModifyDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._publisher
-
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseModifyDto.
-
-
-        :param publisher: The publisher of this DatabaseModifyDto.  # noqa: E501
-        :type: str
-        """
-
-        self._publisher = publisher
-
-    @property
-    def license(self):
-        """Gets the license of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The license of this DatabaseModifyDto.  # noqa: E501
-        :rtype: LicenseDto
-        """
-        return self._license
-
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseModifyDto.
-
-
-        :param license: The license of this DatabaseModifyDto.  # noqa: E501
-        :type: LicenseDto
-        """
-
-        self._license = license
-
-    @property
-    def language(self):
-        """Gets the language of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The language of this DatabaseModifyDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._language
-
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseModifyDto.
-
-
-        :param language: The language of this DatabaseModifyDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ab", "aa", "af", "ak", "sq", "am", "ar", "an", "hy", "as", "av", "ae", "ay", "az", "bm", "ba", "eu", "be", "bn", "bh", "bi", "bs", "br", "bg", "my", "ca", "km", "ch", "ce", "ny", "zh", "cu", "cv", "kw", "co", "cr", "hr", "cs", "da", "dv", "nl", "dz", "en", "eo", "et", "ee", "fo", "fj", "fi", "fr", "ff", "gd", "gl", "lg", "ka", "de", "ki", "el", "kl", "gn", "gu", "ht", "ha", "he", "hz", "hi", "ho", "hu", "is", "io", "ig", "id", "ia", "ie", "iu", "ik", "ga", "it", "ja", "jv", "kn", "kr", "ks", "kk", "rw", "kv", "kg", "ko", "kj", "ku", "ky", "lo", "la", "lv", "lb", "li", "ln", "lt", "lu", "mk", "mg", "ms", "ml", "mt", "gv", "mi", "mr", "mh", "ro", "mn", "na", "nv", "nd", "ng", "ne", "se", "no", "nb", "nn", "ii", "oc", "oj", "or", "om", "os", "pi", "pa", "ps", "fa", "pl", "pt", "qu", "rm", "rn", "ru", "sm", "sg", "sa", "sc", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "nr", "es", "su", "sw", "ss", "sv", "tl", "ty", "tg", "ta", "tt", "te", "th", "bo", "ti", "to", "ts", "tn", "tr", "tk", "tw", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "cy", "fy", "wo", "xh", "yi", "yo", "za", "zu"]  # noqa: E501
-        if language not in allowed_values:
-            raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
-            )
-
-        self._language = language
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseModifyDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseModifyDto.
-
-
-        :param is_public: The is_public of this DatabaseModifyDto.  # noqa: E501
-        :type: bool
-        """
-        if is_public is None:
-            raise ValueError("Invalid value for `is_public`, must not be `None`")  # noqa: E501
-
-        self._is_public = is_public
-
-    @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The publication_year of this DatabaseModifyDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_year
-
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseModifyDto.
-
-
-        :param publication_year: The publication_year of this DatabaseModifyDto.  # noqa: E501
-        :type: int
-        """
-        if publication_year is None:
-            raise ValueError("Invalid value for `publication_year`, must not be `None`")  # noqa: E501
-
-        self._publication_year = publication_year
-
-    @property
-    def contact_person(self):
-        """Gets the contact_person of this DatabaseModifyDto.  # noqa: E501
-
-
-        :return: The contact_person of this DatabaseModifyDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._contact_person
-
-    @contact_person.setter
-    def contact_person(self, contact_person):
-        """Sets the contact_person of this DatabaseModifyDto.
-
-
-        :param contact_person: The contact_person of this DatabaseModifyDto.  # noqa: E501
-        :type: str
-        """
-
-        self._contact_person = contact_person
-
-    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(DatabaseModifyDto, 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, DatabaseModifyDto):
-            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/.jupyter/api_database/models/granted_authority_dto.py b/.jupyter/api_database/models/granted_authority_dto.py
deleted file mode 100644
index 6cbbd98c6f6fa67dcc14b1774c293734496c4c87..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/granted_authority_dto.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 GrantedAuthorityDto(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 = {
-        'authority': 'str'
-    }
-
-    attribute_map = {
-        'authority': 'authority'
-    }
-
-    def __init__(self, authority=None):  # noqa: E501
-        """GrantedAuthorityDto - a model defined in Swagger"""  # noqa: E501
-        self._authority = None
-        self.discriminator = None
-        if authority is not None:
-            self.authority = authority
-
-    @property
-    def authority(self):
-        """Gets the authority of this GrantedAuthorityDto.  # noqa: E501
-
-
-        :return: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._authority
-
-    @authority.setter
-    def authority(self, authority):
-        """Sets the authority of this GrantedAuthorityDto.
-
-
-        :param authority: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :type: str
-        """
-
-        self._authority = authority
-
-    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(GrantedAuthorityDto, 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, GrantedAuthorityDto):
-            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/.jupyter/api_database/models/image_date_dto.py b/.jupyter/api_database/models/image_date_dto.py
deleted file mode 100644
index 093b1c638dd0bfdf10aa3ba8947d5679148ca754..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/image_date_dto.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ImageDateDto(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 = {
-        'id': 'int',
-        'example': 'str',
-        'database_format': 'str',
-        'unix_format': 'str',
-        'has_time': 'bool',
-        'created_at': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'example': 'example',
-        'database_format': 'database_format',
-        'unix_format': 'unix_format',
-        'has_time': 'has_time',
-        'created_at': 'created_at'
-    }
-
-    def __init__(self, id=None, example=None, database_format=None, unix_format=None, has_time=None, created_at=None):  # noqa: E501
-        """ImageDateDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._example = None
-        self._database_format = None
-        self._unix_format = None
-        self._has_time = None
-        self._created_at = None
-        self.discriminator = None
-        self.id = id
-        self.example = example
-        self.database_format = database_format
-        self.unix_format = unix_format
-        self.has_time = has_time
-        if created_at is not None:
-            self.created_at = created_at
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDateDto.  # noqa: E501
-
-
-        :return: The id of this ImageDateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDateDto.
-
-
-        :param id: The id of this ImageDateDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def example(self):
-        """Gets the example of this ImageDateDto.  # noqa: E501
-
-
-        :return: The example of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._example
-
-    @example.setter
-    def example(self, example):
-        """Sets the example of this ImageDateDto.
-
-
-        :param example: The example of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if example is None:
-            raise ValueError("Invalid value for `example`, must not be `None`")  # noqa: E501
-
-        self._example = example
-
-    @property
-    def database_format(self):
-        """Gets the database_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The database_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._database_format
-
-    @database_format.setter
-    def database_format(self, database_format):
-        """Sets the database_format of this ImageDateDto.
-
-
-        :param database_format: The database_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if database_format is None:
-            raise ValueError("Invalid value for `database_format`, must not be `None`")  # noqa: E501
-
-        self._database_format = database_format
-
-    @property
-    def unix_format(self):
-        """Gets the unix_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The unix_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._unix_format
-
-    @unix_format.setter
-    def unix_format(self, unix_format):
-        """Sets the unix_format of this ImageDateDto.
-
-
-        :param unix_format: The unix_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if unix_format is None:
-            raise ValueError("Invalid value for `unix_format`, must not be `None`")  # noqa: E501
-
-        self._unix_format = unix_format
-
-    @property
-    def has_time(self):
-        """Gets the has_time of this ImageDateDto.  # noqa: E501
-
-
-        :return: The has_time of this ImageDateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._has_time
-
-    @has_time.setter
-    def has_time(self, has_time):
-        """Sets the has_time of this ImageDateDto.
-
-
-        :param has_time: The has_time of this ImageDateDto.  # noqa: E501
-        :type: bool
-        """
-        if has_time is None:
-            raise ValueError("Invalid value for `has_time`, must not be `None`")  # noqa: E501
-
-        self._has_time = has_time
-
-    @property
-    def created_at(self):
-        """Gets the created_at of this ImageDateDto.  # noqa: E501
-
-
-        :return: The created_at of this ImageDateDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created_at
-
-    @created_at.setter
-    def created_at(self, created_at):
-        """Sets the created_at of this ImageDateDto.
-
-
-        :param created_at: The created_at of this ImageDateDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created_at = created_at
-
-    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(ImageDateDto, 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, ImageDateDto):
-            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/.jupyter/api_database/models/image_dto.py b/.jupyter/api_database/models/image_dto.py
deleted file mode 100644
index e067503c0eafaeba2441956475314662a3d946d3..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/image_dto.py
+++ /dev/null
@@ -1,404 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ImageDto(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 = {
-        'id': 'int',
-        'repository': 'str',
-        'tag': 'str',
-        'dialect': 'str',
-        'hash': 'str',
-        'compiled': 'datetime',
-        'size': 'int',
-        'environment': 'list[ImageEnvItemDto]',
-        'driver_class': 'str',
-        'date_formats': 'list[ImageDateDto]',
-        'jdbc_method': 'str',
-        'default_port': 'int'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'repository': 'repository',
-        'tag': 'tag',
-        'dialect': 'dialect',
-        'hash': 'hash',
-        'compiled': 'compiled',
-        'size': 'size',
-        'environment': 'environment',
-        'driver_class': 'driver_class',
-        'date_formats': 'date_formats',
-        'jdbc_method': 'jdbc_method',
-        'default_port': 'default_port'
-    }
-
-    def __init__(self, id=None, repository=None, tag=None, dialect=None, hash=None, compiled=None, size=None, environment=None, driver_class=None, date_formats=None, jdbc_method=None, default_port=None):  # noqa: E501
-        """ImageDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._repository = None
-        self._tag = None
-        self._dialect = None
-        self._hash = None
-        self._compiled = None
-        self._size = None
-        self._environment = None
-        self._driver_class = None
-        self._date_formats = None
-        self._jdbc_method = None
-        self._default_port = None
-        self.discriminator = None
-        self.id = id
-        self.repository = repository
-        self.tag = tag
-        self.dialect = dialect
-        if hash is not None:
-            self.hash = hash
-        if compiled is not None:
-            self.compiled = compiled
-        if size is not None:
-            self.size = size
-        self.environment = environment
-        self.driver_class = driver_class
-        if date_formats is not None:
-            self.date_formats = date_formats
-        self.jdbc_method = jdbc_method
-        self.default_port = default_port
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDto.  # noqa: E501
-
-
-        :return: The id of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDto.
-
-
-        :param id: The id of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def repository(self):
-        """Gets the repository of this ImageDto.  # noqa: E501
-
-
-        :return: The repository of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ImageDto.
-
-
-        :param repository: The repository of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ImageDto.  # noqa: E501
-
-
-        :return: The tag of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ImageDto.
-
-
-        :param tag: The tag of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    @property
-    def dialect(self):
-        """Gets the dialect of this ImageDto.  # noqa: E501
-
-
-        :return: The dialect of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._dialect
-
-    @dialect.setter
-    def dialect(self, dialect):
-        """Sets the dialect of this ImageDto.
-
-
-        :param dialect: The dialect of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if dialect is None:
-            raise ValueError("Invalid value for `dialect`, must not be `None`")  # noqa: E501
-
-        self._dialect = dialect
-
-    @property
-    def hash(self):
-        """Gets the hash of this ImageDto.  # noqa: E501
-
-
-        :return: The hash of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ImageDto.
-
-
-        :param hash: The hash of this ImageDto.  # noqa: E501
-        :type: str
-        """
-
-        self._hash = hash
-
-    @property
-    def compiled(self):
-        """Gets the compiled of this ImageDto.  # noqa: E501
-
-
-        :return: The compiled of this ImageDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._compiled
-
-    @compiled.setter
-    def compiled(self, compiled):
-        """Sets the compiled of this ImageDto.
-
-
-        :param compiled: The compiled of this ImageDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._compiled = compiled
-
-    @property
-    def size(self):
-        """Gets the size of this ImageDto.  # noqa: E501
-
-
-        :return: The size of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._size
-
-    @size.setter
-    def size(self, size):
-        """Sets the size of this ImageDto.
-
-
-        :param size: The size of this ImageDto.  # noqa: E501
-        :type: int
-        """
-
-        self._size = size
-
-    @property
-    def environment(self):
-        """Gets the environment of this ImageDto.  # noqa: E501
-
-
-        :return: The environment of this ImageDto.  # noqa: E501
-        :rtype: list[ImageEnvItemDto]
-        """
-        return self._environment
-
-    @environment.setter
-    def environment(self, environment):
-        """Sets the environment of this ImageDto.
-
-
-        :param environment: The environment of this ImageDto.  # noqa: E501
-        :type: list[ImageEnvItemDto]
-        """
-        if environment is None:
-            raise ValueError("Invalid value for `environment`, must not be `None`")  # noqa: E501
-
-        self._environment = environment
-
-    @property
-    def driver_class(self):
-        """Gets the driver_class of this ImageDto.  # noqa: E501
-
-
-        :return: The driver_class of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._driver_class
-
-    @driver_class.setter
-    def driver_class(self, driver_class):
-        """Sets the driver_class of this ImageDto.
-
-
-        :param driver_class: The driver_class of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if driver_class is None:
-            raise ValueError("Invalid value for `driver_class`, must not be `None`")  # noqa: E501
-
-        self._driver_class = driver_class
-
-    @property
-    def date_formats(self):
-        """Gets the date_formats of this ImageDto.  # noqa: E501
-
-
-        :return: The date_formats of this ImageDto.  # noqa: E501
-        :rtype: list[ImageDateDto]
-        """
-        return self._date_formats
-
-    @date_formats.setter
-    def date_formats(self, date_formats):
-        """Sets the date_formats of this ImageDto.
-
-
-        :param date_formats: The date_formats of this ImageDto.  # noqa: E501
-        :type: list[ImageDateDto]
-        """
-
-        self._date_formats = date_formats
-
-    @property
-    def jdbc_method(self):
-        """Gets the jdbc_method of this ImageDto.  # noqa: E501
-
-
-        :return: The jdbc_method of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._jdbc_method
-
-    @jdbc_method.setter
-    def jdbc_method(self, jdbc_method):
-        """Sets the jdbc_method of this ImageDto.
-
-
-        :param jdbc_method: The jdbc_method of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if jdbc_method is None:
-            raise ValueError("Invalid value for `jdbc_method`, must not be `None`")  # noqa: E501
-
-        self._jdbc_method = jdbc_method
-
-    @property
-    def default_port(self):
-        """Gets the default_port of this ImageDto.  # noqa: E501
-
-
-        :return: The default_port of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._default_port
-
-    @default_port.setter
-    def default_port(self, default_port):
-        """Sets the default_port of this ImageDto.
-
-
-        :param default_port: The default_port of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if default_port is None:
-            raise ValueError("Invalid value for `default_port`, must not be `None`")  # noqa: E501
-
-        self._default_port = default_port
-
-    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(ImageDto, 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, ImageDto):
-            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/.jupyter/api_database/models/image_env_item_dto.py b/.jupyter/api_database/models/image_env_item_dto.py
deleted file mode 100644
index 21f24fc6b259b257ab6963b6b24b3c686cefccef..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/image_env_item_dto.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 ImageEnvItemDto(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 = {
-        'iid': 'int',
-        'key': 'str',
-        'value': 'str',
-        'type': 'str'
-    }
-
-    attribute_map = {
-        'iid': 'iid',
-        'key': 'key',
-        'value': 'value',
-        'type': 'type'
-    }
-
-    def __init__(self, iid=None, key=None, value=None, type=None):  # noqa: E501
-        """ImageEnvItemDto - a model defined in Swagger"""  # noqa: E501
-        self._iid = None
-        self._key = None
-        self._value = None
-        self._type = None
-        self.discriminator = None
-        self.iid = iid
-        self.key = key
-        self.value = value
-        if type is not None:
-            self.type = type
-
-    @property
-    def iid(self):
-        """Gets the iid of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The iid of this ImageEnvItemDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._iid
-
-    @iid.setter
-    def iid(self, iid):
-        """Sets the iid of this ImageEnvItemDto.
-
-
-        :param iid: The iid of this ImageEnvItemDto.  # noqa: E501
-        :type: int
-        """
-        if iid is None:
-            raise ValueError("Invalid value for `iid`, must not be `None`")  # noqa: E501
-
-        self._iid = iid
-
-    @property
-    def key(self):
-        """Gets the key of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The key of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._key
-
-    @key.setter
-    def key(self, key):
-        """Sets the key of this ImageEnvItemDto.
-
-
-        :param key: The key of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if key is None:
-            raise ValueError("Invalid value for `key`, must not be `None`")  # noqa: E501
-
-        self._key = key
-
-    @property
-    def value(self):
-        """Gets the value of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The value of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._value
-
-    @value.setter
-    def value(self, value):
-        """Sets the value of this ImageEnvItemDto.
-
-
-        :param value: The value of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if value is None:
-            raise ValueError("Invalid value for `value`, must not be `None`")  # noqa: E501
-
-        self._value = value
-
-    @property
-    def type(self):
-        """Gets the type of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The type of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._type
-
-    @type.setter
-    def type(self, type):
-        """Sets the type of this ImageEnvItemDto.
-
-
-        :param type: The type of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["USERNAME", "PASSWORD", "PRIVILEGED_USERNAME", "PRIVILEGED_PASSWORD"]  # noqa: E501
-        if type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `type` ({0}), must be one of {1}"  # noqa: E501
-                .format(type, allowed_values)
-            )
-
-        self._type = type
-
-    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(ImageEnvItemDto, 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, ImageEnvItemDto):
-            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/.jupyter/api_database/models/table_dto.py b/.jupyter/api_database/models/table_dto.py
deleted file mode 100644
index 4206ee0d4928bb33508b7fa1afb26059dda97e07..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/table_dto.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 TableDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'topic': 'str',
-        'description': 'str',
-        'created': 'datetime',
-        'columns': 'list[ColumnDto]',
-        'internal_name': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'topic': 'topic',
-        'description': 'description',
-        'created': 'created',
-        'columns': 'columns',
-        'internal_name': 'internal_name'
-    }
-
-    def __init__(self, id=None, name=None, topic=None, description=None, created=None, columns=None, internal_name=None):  # noqa: E501
-        """TableDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._topic = None
-        self._description = None
-        self._created = None
-        self._columns = None
-        self._internal_name = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.topic = topic
-        self.description = description
-        if created is not None:
-            self.created = created
-        self.columns = columns
-        self.internal_name = internal_name
-
-    @property
-    def id(self):
-        """Gets the id of this TableDto.  # noqa: E501
-
-
-        :return: The id of this TableDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this TableDto.
-
-
-        :param id: The id of this TableDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this TableDto.  # noqa: E501
-
-
-        :return: The name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableDto.
-
-
-        :param name: The name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def topic(self):
-        """Gets the topic of this TableDto.  # noqa: E501
-
-
-        :return: The topic of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._topic
-
-    @topic.setter
-    def topic(self, topic):
-        """Sets the topic of this TableDto.
-
-
-        :param topic: The topic of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if topic is None:
-            raise ValueError("Invalid value for `topic`, must not be `None`")  # noqa: E501
-
-        self._topic = topic
-
-    @property
-    def description(self):
-        """Gets the description of this TableDto.  # noqa: E501
-
-
-        :return: The description of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this TableDto.
-
-
-        :param description: The description of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def created(self):
-        """Gets the created of this TableDto.  # noqa: E501
-
-
-        :return: The created of this TableDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this TableDto.
-
-
-        :param created: The created of this TableDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def columns(self):
-        """Gets the columns of this TableDto.  # noqa: E501
-
-
-        :return: The columns of this TableDto.  # noqa: E501
-        :rtype: list[ColumnDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this TableDto.
-
-
-        :param columns: The columns of this TableDto.  # noqa: E501
-        :type: list[ColumnDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this TableDto.  # noqa: E501
-
-
-        :return: The internal_name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this TableDto.
-
-
-        :param internal_name: The internal_name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    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(TableDto, 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, TableDto):
-            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/.jupyter/api_database/models/user_dto.py b/.jupyter/api_database/models/user_dto.py
deleted file mode 100644
index 949d9c1d04a775a94bc025bc38c66c30b323e35d..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/models/user_dto.py
+++ /dev/null
@@ -1,478 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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 UserDto(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 = {
-        'id': 'int',
-        'authorities': 'list[GrantedAuthorityDto]',
-        'username': 'str',
-        'firstname': 'str',
-        'lastname': 'str',
-        'affiliation': 'str',
-        'orcid': 'str',
-        'containers': 'list[ContainerDto]',
-        'databases': 'list[ContainerDto]',
-        'identifiers': 'list[ContainerDto]',
-        'email': 'str',
-        'titles_before': 'str',
-        'titles_after': 'str',
-        'theme_dark': 'bool',
-        'email_verified': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'authorities': 'authorities',
-        'username': 'username',
-        'firstname': 'firstname',
-        'lastname': 'lastname',
-        'affiliation': 'affiliation',
-        'orcid': 'orcid',
-        'containers': 'containers',
-        'databases': 'databases',
-        'identifiers': 'identifiers',
-        'email': 'email',
-        'titles_before': 'titles_before',
-        'titles_after': 'titles_after',
-        'theme_dark': 'theme_dark',
-        'email_verified': 'email_verified'
-    }
-
-    def __init__(self, id=None, authorities=None, username=None, firstname=None, lastname=None, affiliation=None, orcid=None, containers=None, databases=None, identifiers=None, email=None, titles_before=None, titles_after=None, theme_dark=None, email_verified=None):  # noqa: E501
-        """UserDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._authorities = None
-        self._username = None
-        self._firstname = None
-        self._lastname = None
-        self._affiliation = None
-        self._orcid = None
-        self._containers = None
-        self._databases = None
-        self._identifiers = None
-        self._email = None
-        self._titles_before = None
-        self._titles_after = None
-        self._theme_dark = None
-        self._email_verified = None
-        self.discriminator = None
-        self.id = id
-        if authorities is not None:
-            self.authorities = authorities
-        self.username = username
-        if firstname is not None:
-            self.firstname = firstname
-        if lastname is not None:
-            self.lastname = lastname
-        if affiliation is not None:
-            self.affiliation = affiliation
-        if orcid is not None:
-            self.orcid = orcid
-        if containers is not None:
-            self.containers = containers
-        if databases is not None:
-            self.databases = databases
-        if identifiers is not None:
-            self.identifiers = identifiers
-        self.email = email
-        if titles_before is not None:
-            self.titles_before = titles_before
-        if titles_after is not None:
-            self.titles_after = titles_after
-        self.theme_dark = theme_dark
-        if email_verified is not None:
-            self.email_verified = email_verified
-
-    @property
-    def id(self):
-        """Gets the id of this UserDto.  # noqa: E501
-
-
-        :return: The id of this UserDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this UserDto.
-
-
-        :param id: The id of this UserDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def authorities(self):
-        """Gets the authorities of this UserDto.  # noqa: E501
-
-
-        :return: The authorities of this UserDto.  # noqa: E501
-        :rtype: list[GrantedAuthorityDto]
-        """
-        return self._authorities
-
-    @authorities.setter
-    def authorities(self, authorities):
-        """Sets the authorities of this UserDto.
-
-
-        :param authorities: The authorities of this UserDto.  # noqa: E501
-        :type: list[GrantedAuthorityDto]
-        """
-
-        self._authorities = authorities
-
-    @property
-    def username(self):
-        """Gets the username of this UserDto.  # noqa: E501
-
-
-        :return: The username of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this UserDto.
-
-
-        :param username: The username of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if username is None:
-            raise ValueError("Invalid value for `username`, must not be `None`")  # noqa: E501
-
-        self._username = username
-
-    @property
-    def firstname(self):
-        """Gets the firstname of this UserDto.  # noqa: E501
-
-
-        :return: The firstname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._firstname
-
-    @firstname.setter
-    def firstname(self, firstname):
-        """Sets the firstname of this UserDto.
-
-
-        :param firstname: The firstname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._firstname = firstname
-
-    @property
-    def lastname(self):
-        """Gets the lastname of this UserDto.  # noqa: E501
-
-
-        :return: The lastname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._lastname
-
-    @lastname.setter
-    def lastname(self, lastname):
-        """Sets the lastname of this UserDto.
-
-
-        :param lastname: The lastname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._lastname = lastname
-
-    @property
-    def affiliation(self):
-        """Gets the affiliation of this UserDto.  # noqa: E501
-
-
-        :return: The affiliation of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._affiliation
-
-    @affiliation.setter
-    def affiliation(self, affiliation):
-        """Sets the affiliation of this UserDto.
-
-
-        :param affiliation: The affiliation of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._affiliation = affiliation
-
-    @property
-    def orcid(self):
-        """Gets the orcid of this UserDto.  # noqa: E501
-
-
-        :return: The orcid of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._orcid
-
-    @orcid.setter
-    def orcid(self, orcid):
-        """Sets the orcid of this UserDto.
-
-
-        :param orcid: The orcid of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._orcid = orcid
-
-    @property
-    def containers(self):
-        """Gets the containers of this UserDto.  # noqa: E501
-
-
-        :return: The containers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._containers
-
-    @containers.setter
-    def containers(self, containers):
-        """Sets the containers of this UserDto.
-
-
-        :param containers: The containers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._containers = containers
-
-    @property
-    def databases(self):
-        """Gets the databases of this UserDto.  # noqa: E501
-
-
-        :return: The databases of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this UserDto.
-
-
-        :param databases: The databases of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def identifiers(self):
-        """Gets the identifiers of this UserDto.  # noqa: E501
-
-
-        :return: The identifiers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._identifiers
-
-    @identifiers.setter
-    def identifiers(self, identifiers):
-        """Sets the identifiers of this UserDto.
-
-
-        :param identifiers: The identifiers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._identifiers = identifiers
-
-    @property
-    def email(self):
-        """Gets the email of this UserDto.  # noqa: E501
-
-
-        :return: The email of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        """Sets the email of this UserDto.
-
-
-        :param email: The email of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if email is None:
-            raise ValueError("Invalid value for `email`, must not be `None`")  # noqa: E501
-
-        self._email = email
-
-    @property
-    def titles_before(self):
-        """Gets the titles_before of this UserDto.  # noqa: E501
-
-
-        :return: The titles_before of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_before
-
-    @titles_before.setter
-    def titles_before(self, titles_before):
-        """Sets the titles_before of this UserDto.
-
-
-        :param titles_before: The titles_before of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_before = titles_before
-
-    @property
-    def titles_after(self):
-        """Gets the titles_after of this UserDto.  # noqa: E501
-
-
-        :return: The titles_after of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_after
-
-    @titles_after.setter
-    def titles_after(self, titles_after):
-        """Sets the titles_after of this UserDto.
-
-
-        :param titles_after: The titles_after of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_after = titles_after
-
-    @property
-    def theme_dark(self):
-        """Gets the theme_dark of this UserDto.  # noqa: E501
-
-
-        :return: The theme_dark of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._theme_dark
-
-    @theme_dark.setter
-    def theme_dark(self, theme_dark):
-        """Sets the theme_dark of this UserDto.
-
-
-        :param theme_dark: The theme_dark of this UserDto.  # noqa: E501
-        :type: bool
-        """
-        if theme_dark is None:
-            raise ValueError("Invalid value for `theme_dark`, must not be `None`")  # noqa: E501
-
-        self._theme_dark = theme_dark
-
-    @property
-    def email_verified(self):
-        """Gets the email_verified of this UserDto.  # noqa: E501
-
-
-        :return: The email_verified of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._email_verified
-
-    @email_verified.setter
-    def email_verified(self, email_verified):
-        """Sets the email_verified of this UserDto.
-
-
-        :param email_verified: The email_verified of this UserDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._email_verified = email_verified
-
-    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(UserDto, 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, UserDto):
-            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/.jupyter/api_database/rest.py b/.jupyter/api_database/rest.py
deleted file mode 100644
index b0660ec0a57a3bb1d61c28f5f2fd0f00aefbe03c..0000000000000000000000000000000000000000
--- a/.jupyter/api_database/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Database Service API
-
-    Service that manages the databases  # 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/.jupyter/api_identifier/__init__.py b/.jupyter/api_identifier/__init__.py
deleted file mode 100644
index 004d1c92b4090d4278f7b889ddf19bcceed7077e..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/__init__.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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_identifier.api.identifier_endpoint_api import IdentifierEndpointApi
-from api_identifier.api.persistence_endpoint_api import PersistenceEndpointApi
-# import ApiClient
-from api_identifier.api_client import ApiClient
-from api_identifier.configuration import Configuration
-# import models into sdk package
-from api_identifier.models.api_error_dto import ApiErrorDto
-from api_identifier.models.container_dto import ContainerDto
-from api_identifier.models.creator_create_dto import CreatorCreateDto
-from api_identifier.models.creator_dto import CreatorDto
-from api_identifier.models.database_dto import DatabaseDto
-from api_identifier.models.granted_authority_dto import GrantedAuthorityDto
-from api_identifier.models.identifier_create_dto import IdentifierCreateDto
-from api_identifier.models.identifier_dto import IdentifierDto
-from api_identifier.models.image_brief_dto import ImageBriefDto
-from api_identifier.models.image_date_dto import ImageDateDto
-from api_identifier.models.image_dto import ImageDto
-from api_identifier.models.image_env_item_dto import ImageEnvItemDto
-from api_identifier.models.license_dto import LicenseDto
-from api_identifier.models.related_identifier_create_dto import RelatedIdentifierCreateDto
-from api_identifier.models.related_identifier_dto import RelatedIdentifierDto
-from api_identifier.models.table_brief_dto import TableBriefDto
-from api_identifier.models.user_brief_dto import UserBriefDto
-from api_identifier.models.user_dto import UserDto
diff --git a/.jupyter/api_identifier/api/__init__.py b/.jupyter/api_identifier/api/__init__.py
deleted file mode 100644
index dcdac13945c7190cfdf82721a20e61bf43f9112d..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/api/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_identifier.api.identifier_endpoint_api import IdentifierEndpointApi
-from api_identifier.api.persistence_endpoint_api import PersistenceEndpointApi
diff --git a/.jupyter/api_identifier/api/identifier_endpoint_api.py b/.jupyter/api_identifier/api/identifier_endpoint_api.py
deleted file mode 100644
index c481c9ff454520d489156ea4d9e1c2ba6840c353..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/api/identifier_endpoint_api.py
+++ /dev/null
@@ -1,598 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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_identifier.api_client import ApiClient
-
-
-class IdentifierEndpointApi(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    Ref: https://github.com/swagger-api/swagger-codegen
-    """
-
-    def __init__(self, api_client=None):
-        if api_client is None:
-            api_client = ApiClient()
-        self.api_client = api_client
-
-    def create(self, body, authorization, id, database_id, **kwargs):  # noqa: E501
-        """Create identifier  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create(body, authorization, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param IdentifierCreateDto body: (required)
-        :param str authorization: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: IdentifierDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.create_with_http_info(body, authorization, id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.create_with_http_info(body, authorization, id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def create_with_http_info(self, body, authorization, id, database_id, **kwargs):  # noqa: E501
-        """Create identifier  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create_with_http_info(body, authorization, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param IdentifierCreateDto body: (required)
-        :param str authorization: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: IdentifierDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'authorization', 'id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method create" % 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 `create`")  # noqa: E501
-        # verify the required parameter 'authorization' is set
-        if ('authorization' not in params or
-                params['authorization'] is None):
-            raise ValueError("Missing the required parameter `authorization` when calling `create`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `create`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `create`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-        if 'authorization' in params:
-            header_params['Authorization'] = params['authorization']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/identifier', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='IdentifierDto',  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=params.get('async_req'),
-            _return_http_data_only=params.get('_return_http_data_only'),
-            _preload_content=params.get('_preload_content', True),
-            _request_timeout=params.get('_request_timeout'),
-            collection_formats=collection_formats)
-
-    def delete(self, id, database_id, identifer_id, **kwargs):  # noqa: E501
-        """Delete some identifer  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete(id, database_id, identifer_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int identifer_id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.delete_with_http_info(id, database_id, identifer_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.delete_with_http_info(id, database_id, identifer_id, **kwargs)  # noqa: E501
-            return data
-
-    def delete_with_http_info(self, id, database_id, identifer_id, **kwargs):  # noqa: E501
-        """Delete some identifer  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete_with_http_info(id, database_id, identifer_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int identifer_id: (required)
-        :return: object
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'identifer_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method delete" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `delete`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `delete`")  # noqa: E501
-        # verify the required parameter 'identifer_id' is set
-        if ('identifer_id' not in params or
-                params['identifer_id'] is None):
-            raise ValueError("Missing the required parameter `identifer_id` when calling `delete`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-        if 'identifer_id' in params:
-            query_params.append(('identiferId', params['identifer_id']))  # noqa: E501
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/identifier/{identiferId}', 'DELETE',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='object',  # 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 export(self, id, database_id, identifier_id, **kwargs):  # noqa: E501
-        """Export some identifier metadata  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.export(id, database_id, identifier_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int identifier_id: (required)
-        :return: str
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.export_with_http_info(id, database_id, identifier_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.export_with_http_info(id, database_id, identifier_id, **kwargs)  # noqa: E501
-            return data
-
-    def export_with_http_info(self, id, database_id, identifier_id, **kwargs):  # noqa: E501
-        """Export some identifier metadata  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.export_with_http_info(id, database_id, identifier_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int identifier_id: (required)
-        :return: str
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'identifier_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method export" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `export`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `export`")  # noqa: E501
-        # verify the required parameter 'identifier_id' is set
-        if ('identifier_id' not in params or
-                params['identifier_id'] is None):
-            raise ValueError("Missing the required parameter `identifier_id` when calling `export`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'identifier_id' in params:
-            path_params['identifierId'] = params['identifier_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/identifier/{identifierId}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='str',  # 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 find_all(self, id, database_id, **kwargs):  # noqa: E501
-        """Find identifiers  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int qid:
-        :return: list[IdentifierDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_all_with_http_info(id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_all_with_http_info(id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def find_all_with_http_info(self, id, database_id, **kwargs):  # noqa: E501
-        """Find identifiers  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all_with_http_info(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int qid:
-        :return: list[IdentifierDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'qid']  # 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 find_all" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_all`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `find_all`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-        if 'qid' in params:
-            query_params.append(('qid', params['qid']))  # noqa: E501
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/identifier', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[IdentifierDto]',  # 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 update(self, body, identifer_id, id, database_id, **kwargs):  # noqa: E501
-        """Update some identifier  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update(body, identifer_id, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param IdentifierDto body: (required)
-        :param int identifer_id: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: IdentifierDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_with_http_info(body, identifer_id, id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_with_http_info(body, identifer_id, id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def update_with_http_info(self, body, identifer_id, id, database_id, **kwargs):  # noqa: E501
-        """Update some identifier  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_with_http_info(body, identifer_id, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param IdentifierDto body: (required)
-        :param int identifer_id: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: IdentifierDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'identifer_id', 'id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update" % 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 `update`")  # noqa: E501
-        # verify the required parameter 'identifer_id' is set
-        if ('identifer_id' not in params or
-                params['identifer_id'] is None):
-            raise ValueError("Missing the required parameter `identifer_id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `update`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-        if 'identifer_id' in params:
-            query_params.append(('identiferId', params['identifer_id']))  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/identifier/{identiferId}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='IdentifierDto',  # 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/.jupyter/api_identifier/api/persistence_endpoint_api.py b/.jupyter/api_identifier/api/persistence_endpoint_api.py
deleted file mode 100644
index 46af546da5338e05cc0aeaf948762e7794efb1fe..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/api/persistence_endpoint_api.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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_identifier.api_client import ApiClient
-
-
-class PersistenceEndpointApi(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 find(self, pid, **kwargs):  # noqa: E501
-        """Find some identifier  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find(pid, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int pid: (required)
-        :return: IdentifierDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_with_http_info(pid, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_with_http_info(pid, **kwargs)  # noqa: E501
-            return data
-
-    def find_with_http_info(self, pid, **kwargs):  # noqa: E501
-        """Find some identifier  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_with_http_info(pid, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int pid: (required)
-        :return: IdentifierDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['pid']  # 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 find" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'pid' is set
-        if ('pid' not in params or
-                params['pid'] is None):
-            raise ValueError("Missing the required parameter `pid` when calling `find`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'pid' in params:
-            path_params['pid'] = params['pid']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = []  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/pid/{pid}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='IdentifierDto',  # 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/.jupyter/api_identifier/api_client.py b/.jupyter/api_identifier/api_client.py
deleted file mode 100644
index 9328e6c1eaecabf1c81a968202b2e2d0588b0795..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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_identifier.configuration import Configuration
-import api_identifier.models
-from api_identifier 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_identifier.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/.jupyter/api_identifier/configuration.py b/.jupyter/api_identifier/configuration.py
deleted file mode 100644
index 28b5cf87552aa2b12278480c89b594d8332d847b..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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 = "http://localhost:9095"
-        # 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_identifier")
-        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/.jupyter/api_identifier/models/__init__.py b/.jupyter/api_identifier/models/__init__.py
deleted file mode 100644
index 10de3f2d883f13ef5e5b73c543d8a8c8b770850d..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/models/__init__.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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_identifier.models.api_error_dto import ApiErrorDto
-from api_identifier.models.container_dto import ContainerDto
-from api_identifier.models.creator_create_dto import CreatorCreateDto
-from api_identifier.models.creator_dto import CreatorDto
-from api_identifier.models.database_dto import DatabaseDto
-from api_identifier.models.granted_authority_dto import GrantedAuthorityDto
-from api_identifier.models.identifier_create_dto import IdentifierCreateDto
-from api_identifier.models.identifier_dto import IdentifierDto
-from api_identifier.models.image_brief_dto import ImageBriefDto
-from api_identifier.models.image_date_dto import ImageDateDto
-from api_identifier.models.image_dto import ImageDto
-from api_identifier.models.image_env_item_dto import ImageEnvItemDto
-from api_identifier.models.license_dto import LicenseDto
-from api_identifier.models.related_identifier_create_dto import RelatedIdentifierCreateDto
-from api_identifier.models.related_identifier_dto import RelatedIdentifierDto
-from api_identifier.models.table_brief_dto import TableBriefDto
-from api_identifier.models.user_brief_dto import UserBriefDto
-from api_identifier.models.user_dto import UserDto
diff --git a/.jupyter/api_identifier/models/api_error_dto.py b/.jupyter/api_identifier/models/api_error_dto.py
deleted file mode 100644
index cf63fab43ba16f5318d3bd685a1d3ca140e7e673..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/models/api_error_dto.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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 ApiErrorDto(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 = {
-        'status': 'str',
-        'message': 'str',
-        'code': 'str'
-    }
-
-    attribute_map = {
-        'status': 'status',
-        'message': 'message',
-        'code': 'code'
-    }
-
-    def __init__(self, status=None, message=None, code=None):  # noqa: E501
-        """ApiErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._status = None
-        self._message = None
-        self._code = None
-        self.discriminator = None
-        self.status = status
-        self.message = message
-        self.code = code
-
-    @property
-    def status(self):
-        """Gets the status of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The status of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._status
-
-    @status.setter
-    def status(self, status):
-        """Sets the status of this ApiErrorDto.
-
-
-        :param status: The status of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if status is None:
-            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
-        allowed_values = ["100 CONTINUE", "101 SWITCHING_PROTOCOLS", "102 PROCESSING", "103 CHECKPOINT", "200 OK", "201 CREATED", "202 ACCEPTED", "203 NON_AUTHORITATIVE_INFORMATION", "204 NO_CONTENT", "205 RESET_CONTENT", "206 PARTIAL_CONTENT", "207 MULTI_STATUS", "208 ALREADY_REPORTED", "226 IM_USED", "300 MULTIPLE_CHOICES", "301 MOVED_PERMANENTLY", "302 FOUND", "302 MOVED_TEMPORARILY", "303 SEE_OTHER", "304 NOT_MODIFIED", "305 USE_PROXY", "307 TEMPORARY_REDIRECT", "308 PERMANENT_REDIRECT", "400 BAD_REQUEST", "401 UNAUTHORIZED", "402 PAYMENT_REQUIRED", "403 FORBIDDEN", "404 NOT_FOUND", "405 METHOD_NOT_ALLOWED", "406 NOT_ACCEPTABLE", "407 PROXY_AUTHENTICATION_REQUIRED", "408 REQUEST_TIMEOUT", "409 CONFLICT", "410 GONE", "411 LENGTH_REQUIRED", "412 PRECONDITION_FAILED", "413 PAYLOAD_TOO_LARGE", "413 REQUEST_ENTITY_TOO_LARGE", "414 URI_TOO_LONG", "414 REQUEST_URI_TOO_LONG", "415 UNSUPPORTED_MEDIA_TYPE", "416 REQUESTED_RANGE_NOT_SATISFIABLE", "417 EXPECTATION_FAILED", "418 I_AM_A_TEAPOT", "419 INSUFFICIENT_SPACE_ON_RESOURCE", "420 METHOD_FAILURE", "421 DESTINATION_LOCKED", "422 UNPROCESSABLE_ENTITY", "423 LOCKED", "424 FAILED_DEPENDENCY", "425 TOO_EARLY", "426 UPGRADE_REQUIRED", "428 PRECONDITION_REQUIRED", "429 TOO_MANY_REQUESTS", "431 REQUEST_HEADER_FIELDS_TOO_LARGE", "451 UNAVAILABLE_FOR_LEGAL_REASONS", "500 INTERNAL_SERVER_ERROR", "501 NOT_IMPLEMENTED", "502 BAD_GATEWAY", "503 SERVICE_UNAVAILABLE", "504 GATEWAY_TIMEOUT", "505 HTTP_VERSION_NOT_SUPPORTED", "506 VARIANT_ALSO_NEGOTIATES", "507 INSUFFICIENT_STORAGE", "508 LOOP_DETECTED", "509 BANDWIDTH_LIMIT_EXCEEDED", "510 NOT_EXTENDED", "511 NETWORK_AUTHENTICATION_REQUIRED"]  # noqa: E501
-        if status not in allowed_values:
-            raise ValueError(
-                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
-                .format(status, allowed_values)
-            )
-
-        self._status = status
-
-    @property
-    def message(self):
-        """Gets the message of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The message of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ApiErrorDto.
-
-
-        :param message: The message of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if message is None:
-            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501
-
-        self._message = message
-
-    @property
-    def code(self):
-        """Gets the code of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The code of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._code
-
-    @code.setter
-    def code(self, code):
-        """Sets the code of this ApiErrorDto.
-
-
-        :param code: The code of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if code is None:
-            raise ValueError("Invalid value for `code`, must not be `None`")  # noqa: E501
-
-        self._code = code
-
-    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(ApiErrorDto, 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, ApiErrorDto):
-            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/.jupyter/api_identifier/models/creator_dto.py b/.jupyter/api_identifier/models/creator_dto.py
deleted file mode 100644
index ebe85cc6c7b14cdb49c10b1b711a06d148ab9095..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/models/creator_dto.py
+++ /dev/null
@@ -1,243 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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 CreatorDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'affiliation': 'str',
-        'orcid': 'str',
-        'created': 'datetime',
-        'last_modified': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'affiliation': 'affiliation',
-        'orcid': 'orcid',
-        'created': 'created',
-        'last_modified': 'last_modified'
-    }
-
-    def __init__(self, id=None, name=None, affiliation=None, orcid=None, created=None, last_modified=None):  # noqa: E501
-        """CreatorDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._affiliation = None
-        self._orcid = None
-        self._created = None
-        self._last_modified = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        if affiliation is not None:
-            self.affiliation = affiliation
-        if orcid is not None:
-            self.orcid = orcid
-        self.created = created
-        if last_modified is not None:
-            self.last_modified = last_modified
-
-    @property
-    def id(self):
-        """Gets the id of this CreatorDto.  # noqa: E501
-
-
-        :return: The id of this CreatorDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this CreatorDto.
-
-
-        :param id: The id of this CreatorDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this CreatorDto.  # noqa: E501
-
-
-        :return: The name of this CreatorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this CreatorDto.
-
-
-        :param name: The name of this CreatorDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def affiliation(self):
-        """Gets the affiliation of this CreatorDto.  # noqa: E501
-
-
-        :return: The affiliation of this CreatorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._affiliation
-
-    @affiliation.setter
-    def affiliation(self, affiliation):
-        """Sets the affiliation of this CreatorDto.
-
-
-        :param affiliation: The affiliation of this CreatorDto.  # noqa: E501
-        :type: str
-        """
-
-        self._affiliation = affiliation
-
-    @property
-    def orcid(self):
-        """Gets the orcid of this CreatorDto.  # noqa: E501
-
-
-        :return: The orcid of this CreatorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._orcid
-
-    @orcid.setter
-    def orcid(self, orcid):
-        """Sets the orcid of this CreatorDto.
-
-
-        :param orcid: The orcid of this CreatorDto.  # noqa: E501
-        :type: str
-        """
-
-        self._orcid = orcid
-
-    @property
-    def created(self):
-        """Gets the created of this CreatorDto.  # noqa: E501
-
-
-        :return: The created of this CreatorDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this CreatorDto.
-
-
-        :param created: The created of this CreatorDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    @property
-    def last_modified(self):
-        """Gets the last_modified of this CreatorDto.  # noqa: E501
-
-
-        :return: The last_modified of this CreatorDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._last_modified
-
-    @last_modified.setter
-    def last_modified(self, last_modified):
-        """Sets the last_modified of this CreatorDto.
-
-
-        :param last_modified: The last_modified of this CreatorDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._last_modified = last_modified
-
-    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(CreatorDto, 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, CreatorDto):
-            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/.jupyter/api_identifier/models/identifier_dto.py b/.jupyter/api_identifier/models/identifier_dto.py
deleted file mode 100644
index 5ee9095a726672927b5099a687474f420c06c11d..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/models/identifier_dto.py
+++ /dev/null
@@ -1,677 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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 IdentifierDto(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 = {
-        'id': 'int',
-        'cid': 'int',
-        'dbid': 'int',
-        'qid': 'int',
-        'title': 'str',
-        'description': 'str',
-        'query': 'str',
-        'execution': 'datetime',
-        'visibility': 'str',
-        'doi': 'str',
-        'creator': 'UserDto',
-        'creators': 'list[CreatorDto]',
-        'created': 'datetime',
-        'query_normalized': 'str',
-        'related': 'list[RelatedIdentifierDto]',
-        'query_hash': 'str',
-        'result_hash': 'str',
-        'result_number': 'int',
-        'publication_day': 'int',
-        'publication_month': 'int',
-        'publication_year': 'int',
-        'last_modified': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'cid': 'cid',
-        'dbid': 'dbid',
-        'qid': 'qid',
-        'title': 'title',
-        'description': 'description',
-        'query': 'query',
-        'execution': 'execution',
-        'visibility': 'visibility',
-        'doi': 'doi',
-        'creator': 'creator',
-        'creators': 'creators',
-        'created': 'created',
-        'query_normalized': 'query_normalized',
-        'related': 'related',
-        'query_hash': 'query_hash',
-        'result_hash': 'result_hash',
-        'result_number': 'result_number',
-        'publication_day': 'publication_day',
-        'publication_month': 'publication_month',
-        'publication_year': 'publication_year',
-        'last_modified': 'last_modified'
-    }
-
-    def __init__(self, id=None, cid=None, dbid=None, qid=None, title=None, description=None, query=None, execution=None, visibility=None, doi=None, creator=None, creators=None, created=None, query_normalized=None, related=None, query_hash=None, result_hash=None, result_number=None, publication_day=None, publication_month=None, publication_year=None, last_modified=None):  # noqa: E501
-        """IdentifierDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._cid = None
-        self._dbid = None
-        self._qid = None
-        self._title = None
-        self._description = None
-        self._query = None
-        self._execution = None
-        self._visibility = None
-        self._doi = None
-        self._creator = None
-        self._creators = None
-        self._created = None
-        self._query_normalized = None
-        self._related = None
-        self._query_hash = None
-        self._result_hash = None
-        self._result_number = None
-        self._publication_day = None
-        self._publication_month = None
-        self._publication_year = None
-        self._last_modified = None
-        self.discriminator = None
-        if id is not None:
-            self.id = id
-        self.cid = cid
-        self.dbid = dbid
-        self.qid = qid
-        self.title = title
-        self.description = description
-        self.query = query
-        self.execution = execution
-        self.visibility = visibility
-        if doi is not None:
-            self.doi = doi
-        self.creator = creator
-        self.creators = creators
-        if created is not None:
-            self.created = created
-        self.query_normalized = query_normalized
-        if related is not None:
-            self.related = related
-        self.query_hash = query_hash
-        self.result_hash = result_hash
-        self.result_number = result_number
-        if publication_day is not None:
-            self.publication_day = publication_day
-        if publication_month is not None:
-            self.publication_month = publication_month
-        self.publication_year = publication_year
-        if last_modified is not None:
-            self.last_modified = last_modified
-
-    @property
-    def id(self):
-        """Gets the id of this IdentifierDto.  # noqa: E501
-
-
-        :return: The id of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this IdentifierDto.
-
-
-        :param id: The id of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-
-        self._id = id
-
-    @property
-    def cid(self):
-        """Gets the cid of this IdentifierDto.  # noqa: E501
-
-
-        :return: The cid of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._cid
-
-    @cid.setter
-    def cid(self, cid):
-        """Sets the cid of this IdentifierDto.
-
-
-        :param cid: The cid of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-        if cid is None:
-            raise ValueError("Invalid value for `cid`, must not be `None`")  # noqa: E501
-
-        self._cid = cid
-
-    @property
-    def dbid(self):
-        """Gets the dbid of this IdentifierDto.  # noqa: E501
-
-
-        :return: The dbid of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._dbid
-
-    @dbid.setter
-    def dbid(self, dbid):
-        """Sets the dbid of this IdentifierDto.
-
-
-        :param dbid: The dbid of this IdentifierDto.  # 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 qid(self):
-        """Gets the qid of this IdentifierDto.  # noqa: E501
-
-
-        :return: The qid of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._qid
-
-    @qid.setter
-    def qid(self, qid):
-        """Sets the qid of this IdentifierDto.
-
-
-        :param qid: The qid of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-        if qid is None:
-            raise ValueError("Invalid value for `qid`, must not be `None`")  # noqa: E501
-
-        self._qid = qid
-
-    @property
-    def title(self):
-        """Gets the title of this IdentifierDto.  # noqa: E501
-
-
-        :return: The title of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._title
-
-    @title.setter
-    def title(self, title):
-        """Sets the title of this IdentifierDto.
-
-
-        :param title: The title of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if title is None:
-            raise ValueError("Invalid value for `title`, must not be `None`")  # noqa: E501
-
-        self._title = title
-
-    @property
-    def description(self):
-        """Gets the description of this IdentifierDto.  # noqa: E501
-
-
-        :return: The description of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this IdentifierDto.
-
-
-        :param description: The description of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def query(self):
-        """Gets the query of this IdentifierDto.  # noqa: E501
-
-
-        :return: The query of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._query
-
-    @query.setter
-    def query(self, query):
-        """Sets the query of this IdentifierDto.
-
-
-        :param query: The query of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if query is None:
-            raise ValueError("Invalid value for `query`, must not be `None`")  # noqa: E501
-
-        self._query = query
-
-    @property
-    def execution(self):
-        """Gets the execution of this IdentifierDto.  # noqa: E501
-
-
-        :return: The execution of this IdentifierDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._execution
-
-    @execution.setter
-    def execution(self, execution):
-        """Sets the execution of this IdentifierDto.
-
-
-        :param execution: The execution of this IdentifierDto.  # noqa: E501
-        :type: datetime
-        """
-        if execution is None:
-            raise ValueError("Invalid value for `execution`, must not be `None`")  # noqa: E501
-
-        self._execution = execution
-
-    @property
-    def visibility(self):
-        """Gets the visibility of this IdentifierDto.  # noqa: E501
-
-
-        :return: The visibility of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._visibility
-
-    @visibility.setter
-    def visibility(self, visibility):
-        """Sets the visibility of this IdentifierDto.
-
-
-        :param visibility: The visibility of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if visibility is None:
-            raise ValueError("Invalid value for `visibility`, must not be `None`")  # noqa: E501
-        allowed_values = ["everyone", "trusted", "self"]  # noqa: E501
-        if visibility not in allowed_values:
-            raise ValueError(
-                "Invalid value for `visibility` ({0}), must be one of {1}"  # noqa: E501
-                .format(visibility, allowed_values)
-            )
-
-        self._visibility = visibility
-
-    @property
-    def doi(self):
-        """Gets the doi of this IdentifierDto.  # noqa: E501
-
-
-        :return: The doi of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._doi
-
-    @doi.setter
-    def doi(self, doi):
-        """Sets the doi of this IdentifierDto.
-
-
-        :param doi: The doi of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-
-        self._doi = doi
-
-    @property
-    def creator(self):
-        """Gets the creator of this IdentifierDto.  # noqa: E501
-
-
-        :return: The creator of this IdentifierDto.  # noqa: E501
-        :rtype: UserDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this IdentifierDto.
-
-
-        :param creator: The creator of this IdentifierDto.  # noqa: E501
-        :type: UserDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def creators(self):
-        """Gets the creators of this IdentifierDto.  # noqa: E501
-
-
-        :return: The creators of this IdentifierDto.  # noqa: E501
-        :rtype: list[CreatorDto]
-        """
-        return self._creators
-
-    @creators.setter
-    def creators(self, creators):
-        """Sets the creators of this IdentifierDto.
-
-
-        :param creators: The creators of this IdentifierDto.  # noqa: E501
-        :type: list[CreatorDto]
-        """
-        if creators is None:
-            raise ValueError("Invalid value for `creators`, must not be `None`")  # noqa: E501
-
-        self._creators = creators
-
-    @property
-    def created(self):
-        """Gets the created of this IdentifierDto.  # noqa: E501
-
-
-        :return: The created of this IdentifierDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this IdentifierDto.
-
-
-        :param created: The created of this IdentifierDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def query_normalized(self):
-        """Gets the query_normalized of this IdentifierDto.  # noqa: E501
-
-
-        :return: The query_normalized of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._query_normalized
-
-    @query_normalized.setter
-    def query_normalized(self, query_normalized):
-        """Sets the query_normalized of this IdentifierDto.
-
-
-        :param query_normalized: The query_normalized of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if query_normalized is None:
-            raise ValueError("Invalid value for `query_normalized`, must not be `None`")  # noqa: E501
-
-        self._query_normalized = query_normalized
-
-    @property
-    def related(self):
-        """Gets the related of this IdentifierDto.  # noqa: E501
-
-
-        :return: The related of this IdentifierDto.  # noqa: E501
-        :rtype: list[RelatedIdentifierDto]
-        """
-        return self._related
-
-    @related.setter
-    def related(self, related):
-        """Sets the related of this IdentifierDto.
-
-
-        :param related: The related of this IdentifierDto.  # noqa: E501
-        :type: list[RelatedIdentifierDto]
-        """
-
-        self._related = related
-
-    @property
-    def query_hash(self):
-        """Gets the query_hash of this IdentifierDto.  # noqa: E501
-
-
-        :return: The query_hash of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._query_hash
-
-    @query_hash.setter
-    def query_hash(self, query_hash):
-        """Sets the query_hash of this IdentifierDto.
-
-
-        :param query_hash: The query_hash of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if query_hash is None:
-            raise ValueError("Invalid value for `query_hash`, must not be `None`")  # noqa: E501
-
-        self._query_hash = query_hash
-
-    @property
-    def result_hash(self):
-        """Gets the result_hash of this IdentifierDto.  # noqa: E501
-
-
-        :return: The result_hash of this IdentifierDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._result_hash
-
-    @result_hash.setter
-    def result_hash(self, result_hash):
-        """Sets the result_hash of this IdentifierDto.
-
-
-        :param result_hash: The result_hash of this IdentifierDto.  # noqa: E501
-        :type: str
-        """
-        if result_hash is None:
-            raise ValueError("Invalid value for `result_hash`, must not be `None`")  # noqa: E501
-
-        self._result_hash = result_hash
-
-    @property
-    def result_number(self):
-        """Gets the result_number of this IdentifierDto.  # noqa: E501
-
-
-        :return: The result_number of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._result_number
-
-    @result_number.setter
-    def result_number(self, result_number):
-        """Sets the result_number of this IdentifierDto.
-
-
-        :param result_number: The result_number of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-        if result_number is None:
-            raise ValueError("Invalid value for `result_number`, must not be `None`")  # noqa: E501
-
-        self._result_number = result_number
-
-    @property
-    def publication_day(self):
-        """Gets the publication_day of this IdentifierDto.  # noqa: E501
-
-
-        :return: The publication_day of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_day
-
-    @publication_day.setter
-    def publication_day(self, publication_day):
-        """Sets the publication_day of this IdentifierDto.
-
-
-        :param publication_day: The publication_day of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-
-        self._publication_day = publication_day
-
-    @property
-    def publication_month(self):
-        """Gets the publication_month of this IdentifierDto.  # noqa: E501
-
-
-        :return: The publication_month of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_month
-
-    @publication_month.setter
-    def publication_month(self, publication_month):
-        """Sets the publication_month of this IdentifierDto.
-
-
-        :param publication_month: The publication_month of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-
-        self._publication_month = publication_month
-
-    @property
-    def publication_year(self):
-        """Gets the publication_year of this IdentifierDto.  # noqa: E501
-
-
-        :return: The publication_year of this IdentifierDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_year
-
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this IdentifierDto.
-
-
-        :param publication_year: The publication_year of this IdentifierDto.  # noqa: E501
-        :type: int
-        """
-        if publication_year is None:
-            raise ValueError("Invalid value for `publication_year`, must not be `None`")  # noqa: E501
-
-        self._publication_year = publication_year
-
-    @property
-    def last_modified(self):
-        """Gets the last_modified of this IdentifierDto.  # noqa: E501
-
-
-        :return: The last_modified of this IdentifierDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._last_modified
-
-    @last_modified.setter
-    def last_modified(self, last_modified):
-        """Sets the last_modified of this IdentifierDto.
-
-
-        :param last_modified: The last_modified of this IdentifierDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._last_modified = last_modified
-
-    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(IdentifierDto, 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, IdentifierDto):
-            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/.jupyter/api_identifier/rest.py b/.jupyter/api_identifier/rest.py
deleted file mode 100644
index 8033a0a8072fadbcf7c49c3dc9fdac1e2f00fd8c..0000000000000000000000000000000000000000
--- a/.jupyter/api_identifier/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Identifier Service API
-
-    Service that manages the identifiers  # 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/.jupyter/api_query/__init__.py b/.jupyter/api_query/__init__.py
deleted file mode 100644
index 942ef1295749765c185fa8a983411d6a309cd218..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/__init__.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.api.consumer_endpoint_api import ConsumerEndpointApi
-from api_query.api.export_endpoint_api import ExportEndpointApi
-from api_query.api.query_endpoint_api import QueryEndpointApi
-from api_query.api.store_endpoint_api import StoreEndpointApi
-from api_query.api.table_data_endpoint_api import TableDataEndpointApi
-from api_query.api.table_history_endpoint_api import TableHistoryEndpointApi
-# import ApiClient
-from api_query.api_client import ApiClient
-from api_query.configuration import Configuration
-# import models into sdk package
-from api_query.models.api_error_dto import ApiErrorDto
-from api_query.models.container_dto import ContainerDto
-from api_query.models.database_dto import DatabaseDto
-from api_query.models.execute_statement_dto import ExecuteStatementDto
-from api_query.models.granted_authority_dto import GrantedAuthorityDto
-from api_query.models.image_brief_dto import ImageBriefDto
-from api_query.models.image_date_dto import ImageDateDto
-from api_query.models.image_dto import ImageDto
-from api_query.models.image_env_item_dto import ImageEnvItemDto
-from api_query.models.import_dto import ImportDto
-from api_query.models.license_dto import LicenseDto
-from api_query.models.query_dto import QueryDto
-from api_query.models.query_result_dto import QueryResultDto
-from api_query.models.table_brief_dto import TableBriefDto
-from api_query.models.table_csv_delete_dto import TableCsvDeleteDto
-from api_query.models.table_csv_dto import TableCsvDto
-from api_query.models.table_csv_update_dto import TableCsvUpdateDto
-from api_query.models.table_history_dto import TableHistoryDto
-from api_query.models.user_brief_dto import UserBriefDto
-from api_query.models.user_dto import UserDto
diff --git a/.jupyter/api_query/api/__init__.py b/.jupyter/api_query/api/__init__.py
deleted file mode 100644
index 67a6ca4c6a3979c73b8231ecb61bc7cd9c85e0f4..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/api/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_query.api.consumer_endpoint_api import ConsumerEndpointApi
-from api_query.api.export_endpoint_api import ExportEndpointApi
-from api_query.api.query_endpoint_api import QueryEndpointApi
-from api_query.api.store_endpoint_api import StoreEndpointApi
-from api_query.api.table_data_endpoint_api import TableDataEndpointApi
-from api_query.api.table_history_endpoint_api import TableHistoryEndpointApi
diff --git a/.jupyter/api_query/api/export_endpoint_api.py b/.jupyter/api_query/api/export_endpoint_api.py
deleted file mode 100644
index 6f67efb590901b2a7b7df3225614dbadb41a345b..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/api/export_endpoint_api.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.api_client import ApiClient
-
-
-class ExportEndpointApi(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 export(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Export table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.export(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :param datetime timestamp:
-        :return: str
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.export_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.export_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def export_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Export table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.export_with_http_info(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :param datetime timestamp:
-        :return: str
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'table_id', 'timestamp']  # 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 export" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `export`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `export`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `export`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        query_params = []
-        if 'timestamp' in params:
-            query_params.append(('timestamp', params['timestamp']))  # noqa: E501
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/export', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='str',  # 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/.jupyter/api_query/api/query_endpoint_api.py b/.jupyter/api_query/api/query_endpoint_api.py
deleted file mode 100644
index 158773461bef14884a5b792f1283b191d6c199d7..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/api/query_endpoint_api.py
+++ /dev/null
@@ -1,380 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.api_client import ApiClient
-
-
-class QueryEndpointApi(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 execute(self, body, id, database_id, **kwargs):  # noqa: E501
-        """Execute query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.execute(body, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ExecuteStatementDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.execute_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.execute_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def execute_with_http_info(self, body, id, database_id, **kwargs):  # noqa: E501
-        """Execute query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.execute_with_http_info(body, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ExecuteStatementDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id', 'page', 'size']  # 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 execute" % 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 `execute`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `execute`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `execute`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-        if 'page' in params:
-            query_params.append(('page', params['page']))  # noqa: E501
-        if 'size' in params:
-            query_params.append(('size', params['size']))  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/query', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='QueryResultDto',  # 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 export1(self, id, database_id, query_id, **kwargs):  # noqa: E501
-        """Exports some query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.export1(id, database_id, query_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int query_id: (required)
-        :return: str
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.export1_with_http_info(id, database_id, query_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.export1_with_http_info(id, database_id, query_id, **kwargs)  # noqa: E501
-            return data
-
-    def export1_with_http_info(self, id, database_id, query_id, **kwargs):  # noqa: E501
-        """Exports some query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.export1_with_http_info(id, database_id, query_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int query_id: (required)
-        :return: str
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'query_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method export1" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `export1`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `export1`")  # noqa: E501
-        # verify the required parameter 'query_id' is set
-        if ('query_id' not in params or
-                params['query_id'] is None):
-            raise ValueError("Missing the required parameter `query_id` when calling `export1`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'query_id' in params:
-            path_params['queryId'] = params['query_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/query/{queryId}/export', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='str',  # 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 re_execute(self, id, database_id, query_id, **kwargs):  # noqa: E501
-        """Re-execute some query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.re_execute(id, database_id, query_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int query_id: (required)
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.re_execute_with_http_info(id, database_id, query_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.re_execute_with_http_info(id, database_id, query_id, **kwargs)  # noqa: E501
-            return data
-
-    def re_execute_with_http_info(self, id, database_id, query_id, **kwargs):  # noqa: E501
-        """Re-execute some query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.re_execute_with_http_info(id, database_id, query_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int query_id: (required)
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'query_id', 'page', 'size']  # 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 re_execute" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `re_execute`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `re_execute`")  # noqa: E501
-        # verify the required parameter 'query_id' is set
-        if ('query_id' not in params or
-                params['query_id'] is None):
-            raise ValueError("Missing the required parameter `query_id` when calling `re_execute`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'query_id' in params:
-            path_params['queryId'] = params['query_id']  # noqa: E501
-
-        query_params = []
-        if 'page' in params:
-            query_params.append(('page', params['page']))  # noqa: E501
-        if 'size' in params:
-            query_params.append(('size', params['size']))  # noqa: E501
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/query/{queryId}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='QueryResultDto',  # 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/.jupyter/api_query/api/store_endpoint_api.py b/.jupyter/api_query/api/store_endpoint_api.py
deleted file mode 100644
index 944e673ef29a78e77e5d10fe9841fc9e7f44e90c..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/api/store_endpoint_api.py
+++ /dev/null
@@ -1,243 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.api_client import ApiClient
-
-
-class StoreEndpointApi(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 find(self, id, database_id, query_id, **kwargs):  # noqa: E501
-        """Find some query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find(id, database_id, query_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int query_id: (required)
-        :return: QueryDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_with_http_info(id, database_id, query_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_with_http_info(id, database_id, query_id, **kwargs)  # noqa: E501
-            return data
-
-    def find_with_http_info(self, id, database_id, query_id, **kwargs):  # noqa: E501
-        """Find some query  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_with_http_info(id, database_id, query_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int query_id: (required)
-        :return: QueryDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'query_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `find`")  # noqa: E501
-        # verify the required parameter 'query_id' is set
-        if ('query_id' not in params or
-                params['query_id'] is None):
-            raise ValueError("Missing the required parameter `query_id` when calling `find`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'query_id' in params:
-            path_params['queryId'] = params['query_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/query/{queryId}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='QueryDto',  # 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 find_all(self, id, database_id, **kwargs):  # noqa: E501
-        """Find queries  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: list[QueryDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_all_with_http_info(id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_all_with_http_info(id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def find_all_with_http_info(self, id, database_id, **kwargs):  # noqa: E501
-        """Find queries  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all_with_http_info(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: list[QueryDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_all" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_all`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `find_all`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/query', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[QueryDto]',  # 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/.jupyter/api_query/api/table_data_endpoint_api.py b/.jupyter/api_query/api/table_data_endpoint_api.py
deleted file mode 100644
index 8f34b37dacac4db3543dd2def4951d0d24501b87..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/api/table_data_endpoint_api.py
+++ /dev/null
@@ -1,759 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.api_client import ApiClient
-
-
-class TableDataEndpointApi(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 delete(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Delete data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCsvDeleteDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.delete_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.delete_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def delete_with_http_info(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Delete data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete_with_http_info(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCsvDeleteDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method delete" % 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 `delete`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `delete`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `delete`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `delete`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/data', 'DELETE',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=params.get('async_req'),
-            _return_http_data_only=params.get('_return_http_data_only'),
-            _preload_content=params.get('_preload_content', True),
-            _request_timeout=params.get('_request_timeout'),
-            collection_formats=collection_formats)
-
-    def get_all2(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Find data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.get_all2(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :param datetime timestamp:
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.get_all2_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.get_all2_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def get_all2_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Find data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.get_all2_with_http_info(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :param datetime timestamp:
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'table_id', 'timestamp', 'page', 'size']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method get_all2" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `get_all2`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `get_all2`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `get_all2`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        query_params = []
-        if 'timestamp' in params:
-            query_params.append(('timestamp', params['timestamp']))  # noqa: E501
-        if 'page' in params:
-            query_params.append(('page', params['page']))  # noqa: E501
-        if 'size' in params:
-            query_params.append(('size', params['size']))  # noqa: E501
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/data', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='QueryResultDto',  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=params.get('async_req'),
-            _return_http_data_only=params.get('_return_http_data_only'),
-            _preload_content=params.get('_preload_content', True),
-            _request_timeout=params.get('_request_timeout'),
-            collection_formats=collection_formats)
-
-    def get_all3(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Find data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.get_all3(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :param datetime timestamp:
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.get_all3_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.get_all3_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def get_all3_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Find data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.get_all3_with_http_info(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :param datetime timestamp:
-        :param int page:
-        :param int size:
-        :return: QueryResultDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'table_id', 'timestamp', 'page', 'size']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method get_all3" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `get_all3`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `get_all3`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `get_all3`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        query_params = []
-        if 'timestamp' in params:
-            query_params.append(('timestamp', params['timestamp']))  # noqa: E501
-        if 'page' in params:
-            query_params.append(('page', params['page']))  # noqa: E501
-        if 'size' in params:
-            query_params.append(('size', params['size']))  # noqa: E501
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/data', 'HEAD',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='QueryResultDto',  # 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 import_csv(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Insert data from csv  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.import_csv(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ImportDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.import_csv_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.import_csv_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def import_csv_with_http_info(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Insert data from csv  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.import_csv_with_http_info(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param ImportDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method import_csv" % 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 `import_csv`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `import_csv`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `import_csv`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `import_csv`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/data/import', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_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 insert(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Insert data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.insert(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCsvDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.insert_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.insert_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def insert_with_http_info(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Insert data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.insert_with_http_info(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCsvDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method insert" % 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 `insert`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `insert`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `insert`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `insert`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/data', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_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 update(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Update data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCsvUpdateDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_with_http_info(body, id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def update_with_http_info(self, body, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Update data  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_with_http_info(body, id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCsvUpdateDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update" % 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 `update`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `update`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}/data', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_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/.jupyter/api_query/api_client.py b/.jupyter/api_query/api_client.py
deleted file mode 100644
index 170ae02e07218bf4de3d47d831e7686fc0c30b7d..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.configuration import Configuration
-import api_query.models
-from api_query 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_query.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/.jupyter/api_query/configuration.py b/.jupyter/api_query/configuration.py
deleted file mode 100644
index 2991fff8bf4bb94a0f13898b2c1332ee3644ca45..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 = "http://localhost:9095"
-        # 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_query")
-        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/.jupyter/api_query/models/__init__.py b/.jupyter/api_query/models/__init__.py
deleted file mode 100644
index 947ce39c5dbb0d5aeac633d99c8d0e0b68818e03..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/__init__.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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_query.models.api_error_dto import ApiErrorDto
-from api_query.models.container_dto import ContainerDto
-from api_query.models.database_dto import DatabaseDto
-from api_query.models.execute_statement_dto import ExecuteStatementDto
-from api_query.models.granted_authority_dto import GrantedAuthorityDto
-from api_query.models.image_brief_dto import ImageBriefDto
-from api_query.models.image_date_dto import ImageDateDto
-from api_query.models.image_dto import ImageDto
-from api_query.models.image_env_item_dto import ImageEnvItemDto
-from api_query.models.import_dto import ImportDto
-from api_query.models.license_dto import LicenseDto
-from api_query.models.query_dto import QueryDto
-from api_query.models.query_result_dto import QueryResultDto
-from api_query.models.table_brief_dto import TableBriefDto
-from api_query.models.table_csv_delete_dto import TableCsvDeleteDto
-from api_query.models.table_csv_dto import TableCsvDto
-from api_query.models.table_csv_update_dto import TableCsvUpdateDto
-from api_query.models.table_history_dto import TableHistoryDto
-from api_query.models.user_brief_dto import UserBriefDto
-from api_query.models.user_dto import UserDto
diff --git a/.jupyter/api_query/models/api_error_dto.py b/.jupyter/api_query/models/api_error_dto.py
deleted file mode 100644
index d873b7d260a3216d012bde69351ddd5d9756d22d..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/api_error_dto.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ApiErrorDto(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 = {
-        'status': 'str',
-        'message': 'str',
-        'code': 'str'
-    }
-
-    attribute_map = {
-        'status': 'status',
-        'message': 'message',
-        'code': 'code'
-    }
-
-    def __init__(self, status=None, message=None, code=None):  # noqa: E501
-        """ApiErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._status = None
-        self._message = None
-        self._code = None
-        self.discriminator = None
-        self.status = status
-        self.message = message
-        self.code = code
-
-    @property
-    def status(self):
-        """Gets the status of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The status of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._status
-
-    @status.setter
-    def status(self, status):
-        """Sets the status of this ApiErrorDto.
-
-
-        :param status: The status of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if status is None:
-            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
-        allowed_values = ["100 CONTINUE", "101 SWITCHING_PROTOCOLS", "102 PROCESSING", "103 CHECKPOINT", "200 OK", "201 CREATED", "202 ACCEPTED", "203 NON_AUTHORITATIVE_INFORMATION", "204 NO_CONTENT", "205 RESET_CONTENT", "206 PARTIAL_CONTENT", "207 MULTI_STATUS", "208 ALREADY_REPORTED", "226 IM_USED", "300 MULTIPLE_CHOICES", "301 MOVED_PERMANENTLY", "302 FOUND", "302 MOVED_TEMPORARILY", "303 SEE_OTHER", "304 NOT_MODIFIED", "305 USE_PROXY", "307 TEMPORARY_REDIRECT", "308 PERMANENT_REDIRECT", "400 BAD_REQUEST", "401 UNAUTHORIZED", "402 PAYMENT_REQUIRED", "403 FORBIDDEN", "404 NOT_FOUND", "405 METHOD_NOT_ALLOWED", "406 NOT_ACCEPTABLE", "407 PROXY_AUTHENTICATION_REQUIRED", "408 REQUEST_TIMEOUT", "409 CONFLICT", "410 GONE", "411 LENGTH_REQUIRED", "412 PRECONDITION_FAILED", "413 PAYLOAD_TOO_LARGE", "413 REQUEST_ENTITY_TOO_LARGE", "414 URI_TOO_LONG", "414 REQUEST_URI_TOO_LONG", "415 UNSUPPORTED_MEDIA_TYPE", "416 REQUESTED_RANGE_NOT_SATISFIABLE", "417 EXPECTATION_FAILED", "418 I_AM_A_TEAPOT", "419 INSUFFICIENT_SPACE_ON_RESOURCE", "420 METHOD_FAILURE", "421 DESTINATION_LOCKED", "422 UNPROCESSABLE_ENTITY", "423 LOCKED", "424 FAILED_DEPENDENCY", "425 TOO_EARLY", "426 UPGRADE_REQUIRED", "428 PRECONDITION_REQUIRED", "429 TOO_MANY_REQUESTS", "431 REQUEST_HEADER_FIELDS_TOO_LARGE", "451 UNAVAILABLE_FOR_LEGAL_REASONS", "500 INTERNAL_SERVER_ERROR", "501 NOT_IMPLEMENTED", "502 BAD_GATEWAY", "503 SERVICE_UNAVAILABLE", "504 GATEWAY_TIMEOUT", "505 HTTP_VERSION_NOT_SUPPORTED", "506 VARIANT_ALSO_NEGOTIATES", "507 INSUFFICIENT_STORAGE", "508 LOOP_DETECTED", "509 BANDWIDTH_LIMIT_EXCEEDED", "510 NOT_EXTENDED", "511 NETWORK_AUTHENTICATION_REQUIRED"]  # noqa: E501
-        if status not in allowed_values:
-            raise ValueError(
-                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
-                .format(status, allowed_values)
-            )
-
-        self._status = status
-
-    @property
-    def message(self):
-        """Gets the message of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The message of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ApiErrorDto.
-
-
-        :param message: The message of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if message is None:
-            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501
-
-        self._message = message
-
-    @property
-    def code(self):
-        """Gets the code of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The code of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._code
-
-    @code.setter
-    def code(self, code):
-        """Sets the code of this ApiErrorDto.
-
-
-        :param code: The code of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if code is None:
-            raise ValueError("Invalid value for `code`, must not be `None`")  # noqa: E501
-
-        self._code = code
-
-    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(ApiErrorDto, 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, ApiErrorDto):
-            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/.jupyter/api_query/models/column_dto.py b/.jupyter/api_query/models/column_dto.py
deleted file mode 100644
index f6997fd2c20d93994ec83b4d03ec0f925ea30d8d..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/column_dto.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ColumnDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'unique': 'bool',
-        'references': 'str',
-        'internal_name': 'str',
-        'date_format': 'ImageDateDto',
-        'auto_generated': 'bool',
-        'is_primary_key': 'bool',
-        'column_type': 'str',
-        'column_concept': 'ConceptDto',
-        'decimal_digits_before': 'int',
-        'decimal_digits_after': 'int',
-        'is_null_allowed': 'bool',
-        'check_expression': 'str',
-        'foreign_key': 'str',
-        'enum_values': 'list[str]'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'unique': 'unique',
-        'references': 'references',
-        'internal_name': 'internal_name',
-        'date_format': 'date_format',
-        'auto_generated': 'auto_generated',
-        'is_primary_key': 'is_primary_key',
-        'column_type': 'column_type',
-        'column_concept': 'column_concept',
-        'decimal_digits_before': 'decimal_digits_before',
-        'decimal_digits_after': 'decimal_digits_after',
-        'is_null_allowed': 'is_null_allowed',
-        'check_expression': 'check_expression',
-        'foreign_key': 'foreign_key',
-        'enum_values': 'enum_values'
-    }
-
-    def __init__(self, id=None, name=None, unique=None, references=None, internal_name=None, date_format=None, auto_generated=None, is_primary_key=None, column_type=None, column_concept=None, decimal_digits_before=None, decimal_digits_after=None, is_null_allowed=None, check_expression=None, foreign_key=None, enum_values=None):  # noqa: E501
-        """ColumnDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._unique = None
-        self._references = None
-        self._internal_name = None
-        self._date_format = None
-        self._auto_generated = None
-        self._is_primary_key = None
-        self._column_type = None
-        self._column_concept = None
-        self._decimal_digits_before = None
-        self._decimal_digits_after = None
-        self._is_null_allowed = None
-        self._check_expression = None
-        self._foreign_key = None
-        self._enum_values = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.unique = unique
-        if references is not None:
-            self.references = references
-        self.internal_name = internal_name
-        if date_format is not None:
-            self.date_format = date_format
-        self.auto_generated = auto_generated
-        self.is_primary_key = is_primary_key
-        self.column_type = column_type
-        if column_concept is not None:
-            self.column_concept = column_concept
-        if decimal_digits_before is not None:
-            self.decimal_digits_before = decimal_digits_before
-        if decimal_digits_after is not None:
-            self.decimal_digits_after = decimal_digits_after
-        self.is_null_allowed = is_null_allowed
-        if check_expression is not None:
-            self.check_expression = check_expression
-        if foreign_key is not None:
-            self.foreign_key = foreign_key
-        if enum_values is not None:
-            self.enum_values = enum_values
-
-    @property
-    def id(self):
-        """Gets the id of this ColumnDto.  # noqa: E501
-
-
-        :return: The id of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ColumnDto.
-
-
-        :param id: The id of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this ColumnDto.  # noqa: E501
-
-
-        :return: The name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ColumnDto.
-
-
-        :param name: The name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def unique(self):
-        """Gets the unique of this ColumnDto.  # noqa: E501
-
-
-        :return: The unique of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._unique
-
-    @unique.setter
-    def unique(self, unique):
-        """Sets the unique of this ColumnDto.
-
-
-        :param unique: The unique of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if unique is None:
-            raise ValueError("Invalid value for `unique`, must not be `None`")  # noqa: E501
-
-        self._unique = unique
-
-    @property
-    def references(self):
-        """Gets the references of this ColumnDto.  # noqa: E501
-
-
-        :return: The references of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._references
-
-    @references.setter
-    def references(self, references):
-        """Sets the references of this ColumnDto.
-
-
-        :param references: The references of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._references = references
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ColumnDto.  # noqa: E501
-
-
-        :return: The internal_name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ColumnDto.
-
-
-        :param internal_name: The internal_name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def date_format(self):
-        """Gets the date_format of this ColumnDto.  # noqa: E501
-
-
-        :return: The date_format of this ColumnDto.  # noqa: E501
-        :rtype: ImageDateDto
-        """
-        return self._date_format
-
-    @date_format.setter
-    def date_format(self, date_format):
-        """Sets the date_format of this ColumnDto.
-
-
-        :param date_format: The date_format of this ColumnDto.  # noqa: E501
-        :type: ImageDateDto
-        """
-
-        self._date_format = date_format
-
-    @property
-    def auto_generated(self):
-        """Gets the auto_generated of this ColumnDto.  # noqa: E501
-
-
-        :return: The auto_generated of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._auto_generated
-
-    @auto_generated.setter
-    def auto_generated(self, auto_generated):
-        """Sets the auto_generated of this ColumnDto.
-
-
-        :param auto_generated: The auto_generated of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if auto_generated is None:
-            raise ValueError("Invalid value for `auto_generated`, must not be `None`")  # noqa: E501
-
-        self._auto_generated = auto_generated
-
-    @property
-    def is_primary_key(self):
-        """Gets the is_primary_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_primary_key of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_primary_key
-
-    @is_primary_key.setter
-    def is_primary_key(self, is_primary_key):
-        """Sets the is_primary_key of this ColumnDto.
-
-
-        :param is_primary_key: The is_primary_key of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_primary_key is None:
-            raise ValueError("Invalid value for `is_primary_key`, must not be `None`")  # noqa: E501
-
-        self._is_primary_key = is_primary_key
-
-    @property
-    def column_type(self):
-        """Gets the column_type of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_type of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._column_type
-
-    @column_type.setter
-    def column_type(self, column_type):
-        """Sets the column_type of this ColumnDto.
-
-
-        :param column_type: The column_type of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if column_type is None:
-            raise ValueError("Invalid value for `column_type`, must not be `None`")  # noqa: E501
-        allowed_values = ["enum", "number", "decimal", "string", "text", "boolean", "date", "timestamp", "blob"]  # noqa: E501
-        if column_type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `column_type` ({0}), must be one of {1}"  # noqa: E501
-                .format(column_type, allowed_values)
-            )
-
-        self._column_type = column_type
-
-    @property
-    def column_concept(self):
-        """Gets the column_concept of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_concept of this ColumnDto.  # noqa: E501
-        :rtype: ConceptDto
-        """
-        return self._column_concept
-
-    @column_concept.setter
-    def column_concept(self, column_concept):
-        """Sets the column_concept of this ColumnDto.
-
-
-        :param column_concept: The column_concept of this ColumnDto.  # noqa: E501
-        :type: ConceptDto
-        """
-
-        self._column_concept = column_concept
-
-    @property
-    def decimal_digits_before(self):
-        """Gets the decimal_digits_before of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_before
-
-    @decimal_digits_before.setter
-    def decimal_digits_before(self, decimal_digits_before):
-        """Sets the decimal_digits_before of this ColumnDto.
-
-
-        :param decimal_digits_before: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_before = decimal_digits_before
-
-    @property
-    def decimal_digits_after(self):
-        """Gets the decimal_digits_after of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_after
-
-    @decimal_digits_after.setter
-    def decimal_digits_after(self, decimal_digits_after):
-        """Sets the decimal_digits_after of this ColumnDto.
-
-
-        :param decimal_digits_after: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_after = decimal_digits_after
-
-    @property
-    def is_null_allowed(self):
-        """Gets the is_null_allowed of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_null_allowed
-
-    @is_null_allowed.setter
-    def is_null_allowed(self, is_null_allowed):
-        """Sets the is_null_allowed of this ColumnDto.
-
-
-        :param is_null_allowed: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_null_allowed is None:
-            raise ValueError("Invalid value for `is_null_allowed`, must not be `None`")  # noqa: E501
-
-        self._is_null_allowed = is_null_allowed
-
-    @property
-    def check_expression(self):
-        """Gets the check_expression of this ColumnDto.  # noqa: E501
-
-
-        :return: The check_expression of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._check_expression
-
-    @check_expression.setter
-    def check_expression(self, check_expression):
-        """Sets the check_expression of this ColumnDto.
-
-
-        :param check_expression: The check_expression of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._check_expression = check_expression
-
-    @property
-    def foreign_key(self):
-        """Gets the foreign_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The foreign_key of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._foreign_key
-
-    @foreign_key.setter
-    def foreign_key(self, foreign_key):
-        """Sets the foreign_key of this ColumnDto.
-
-
-        :param foreign_key: The foreign_key of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._foreign_key = foreign_key
-
-    @property
-    def enum_values(self):
-        """Gets the enum_values of this ColumnDto.  # noqa: E501
-
-
-        :return: The enum_values of this ColumnDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._enum_values
-
-    @enum_values.setter
-    def enum_values(self, enum_values):
-        """Sets the enum_values of this ColumnDto.
-
-
-        :param enum_values: The enum_values of this ColumnDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._enum_values = enum_values
-
-    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(ColumnDto, 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, ColumnDto):
-            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/.jupyter/api_query/models/concept_dto.py b/.jupyter/api_query/models/concept_dto.py
deleted file mode 100644
index 02ea52890e81572d29547d4bbfb8f69dd41e95a8..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/concept_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ConceptDto(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 = {
-        'uri': 'str',
-        'name': 'str',
-        'created': 'datetime'
-    }
-
-    attribute_map = {
-        'uri': 'uri',
-        'name': 'name',
-        'created': 'created'
-    }
-
-    def __init__(self, uri=None, name=None, created=None):  # noqa: E501
-        """ConceptDto - a model defined in Swagger"""  # noqa: E501
-        self._uri = None
-        self._name = None
-        self._created = None
-        self.discriminator = None
-        self.uri = uri
-        self.name = name
-        self.created = created
-
-    @property
-    def uri(self):
-        """Gets the uri of this ConceptDto.  # noqa: E501
-
-
-        :return: The uri of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._uri
-
-    @uri.setter
-    def uri(self, uri):
-        """Sets the uri of this ConceptDto.
-
-
-        :param uri: The uri of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if uri is None:
-            raise ValueError("Invalid value for `uri`, must not be `None`")  # noqa: E501
-
-        self._uri = uri
-
-    @property
-    def name(self):
-        """Gets the name of this ConceptDto.  # noqa: E501
-
-
-        :return: The name of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ConceptDto.
-
-
-        :param name: The name of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def created(self):
-        """Gets the created of this ConceptDto.  # noqa: E501
-
-
-        :return: The created of this ConceptDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ConceptDto.
-
-
-        :param created: The created of this ConceptDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    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(ConceptDto, 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, ConceptDto):
-            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/.jupyter/api_query/models/container_dto.py b/.jupyter/api_query/models/container_dto.py
deleted file mode 100644
index 6776f130533acac43b95188fa3a834a96c3e4c97..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/container_dto.py
+++ /dev/null
@@ -1,381 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ContainerDto(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 = {
-        'id': 'int',
-        'hash': 'str',
-        'name': 'str',
-        'state': 'str',
-        'databases': 'list[DatabaseDto]',
-        'image': 'ImageBriefDto',
-        'port': 'int',
-        'created': 'datetime',
-        'internal_name': 'str',
-        'ip_address': 'str',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'hash': 'hash',
-        'name': 'name',
-        'state': 'state',
-        'databases': 'databases',
-        'image': 'image',
-        'port': 'port',
-        'created': 'created',
-        'internal_name': 'internal_name',
-        'ip_address': 'ip_address',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, hash=None, name=None, state=None, databases=None, image=None, port=None, created=None, internal_name=None, ip_address=None, is_public=None):  # noqa: E501
-        """ContainerDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._hash = None
-        self._name = None
-        self._state = None
-        self._databases = None
-        self._image = None
-        self._port = None
-        self._created = None
-        self._internal_name = None
-        self._ip_address = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.hash = hash
-        self.name = name
-        if state is not None:
-            self.state = state
-        if databases is not None:
-            self.databases = databases
-        if image is not None:
-            self.image = image
-        if port is not None:
-            self.port = port
-        self.created = created
-        self.internal_name = internal_name
-        if ip_address is not None:
-            self.ip_address = ip_address
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this ContainerDto.  # noqa: E501
-
-
-        :return: The id of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ContainerDto.
-
-
-        :param id: The id of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def hash(self):
-        """Gets the hash of this ContainerDto.  # noqa: E501
-
-
-        :return: The hash of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ContainerDto.
-
-
-        :param hash: The hash of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if hash is None:
-            raise ValueError("Invalid value for `hash`, must not be `None`")  # noqa: E501
-
-        self._hash = hash
-
-    @property
-    def name(self):
-        """Gets the name of this ContainerDto.  # noqa: E501
-
-
-        :return: The name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ContainerDto.
-
-
-        :param name: The name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def state(self):
-        """Gets the state of this ContainerDto.  # noqa: E501
-
-
-        :return: The state of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._state
-
-    @state.setter
-    def state(self, state):
-        """Sets the state of this ContainerDto.
-
-
-        :param state: The state of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ContainerStateDto.CREATED", "ContainerStateDto.RESTARTING", "ContainerStateDto.RUNNING", "ContainerStateDto.PAUSED", "ContainerStateDto.EXITED", "ContainerStateDto.DEAD"]  # noqa: E501
-        if state not in allowed_values:
-            raise ValueError(
-                "Invalid value for `state` ({0}), must be one of {1}"  # noqa: E501
-                .format(state, allowed_values)
-            )
-
-        self._state = state
-
-    @property
-    def databases(self):
-        """Gets the databases of this ContainerDto.  # noqa: E501
-
-
-        :return: The databases of this ContainerDto.  # noqa: E501
-        :rtype: list[DatabaseDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this ContainerDto.
-
-
-        :param databases: The databases of this ContainerDto.  # noqa: E501
-        :type: list[DatabaseDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def image(self):
-        """Gets the image of this ContainerDto.  # noqa: E501
-
-
-        :return: The image of this ContainerDto.  # noqa: E501
-        :rtype: ImageBriefDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this ContainerDto.
-
-
-        :param image: The image of this ContainerDto.  # noqa: E501
-        :type: ImageBriefDto
-        """
-
-        self._image = image
-
-    @property
-    def port(self):
-        """Gets the port of this ContainerDto.  # noqa: E501
-
-
-        :return: The port of this ContainerDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._port
-
-    @port.setter
-    def port(self, port):
-        """Sets the port of this ContainerDto.
-
-
-        :param port: The port of this ContainerDto.  # noqa: E501
-        :type: int
-        """
-
-        self._port = port
-
-    @property
-    def created(self):
-        """Gets the created of this ContainerDto.  # noqa: E501
-
-
-        :return: The created of this ContainerDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ContainerDto.
-
-
-        :param created: The created of this ContainerDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ContainerDto.  # noqa: E501
-
-
-        :return: The internal_name of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ContainerDto.
-
-
-        :param internal_name: The internal_name of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def ip_address(self):
-        """Gets the ip_address of this ContainerDto.  # noqa: E501
-
-
-        :return: The ip_address of this ContainerDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._ip_address
-
-    @ip_address.setter
-    def ip_address(self, ip_address):
-        """Sets the ip_address of this ContainerDto.
-
-
-        :param ip_address: The ip_address of this ContainerDto.  # noqa: E501
-        :type: str
-        """
-
-        self._ip_address = ip_address
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this ContainerDto.  # noqa: E501
-
-
-        :return: The is_public of this ContainerDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this ContainerDto.
-
-
-        :param is_public: The is_public of this ContainerDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(ContainerDto, 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, ContainerDto):
-            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/.jupyter/api_query/models/database_dto.py b/.jupyter/api_query/models/database_dto.py
deleted file mode 100644
index a6cbe93ef828694fc41e70f0dc370ee8fdd900f0..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/database_dto.py
+++ /dev/null
@@ -1,564 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 DatabaseDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'exchange': 'str',
-        'creator': 'UserBriefDto',
-        'subjects': 'list[str]',
-        'language': 'str',
-        'license': 'LicenseDto',
-        'description': 'str',
-        'publisher': 'str',
-        'contact': 'UserDto',
-        'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
-        'container': 'ContainerDto',
-        'created': 'datetime',
-        'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
-        'tables': 'tables',
-        'image': 'image',
-        'container': 'container',
-        'created': 'created',
-        'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
-    }
-
-    def __init__(self, id=None, name=None, exchange=None, creator=None, subjects=None, language=None, license=None, description=None, publisher=None, contact=None, tables=None, image=None, container=None, created=None, deleted=None, internal_name=None, publication_year=None, is_public=None):  # noqa: E501
-        """DatabaseDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._exchange = None
-        self._creator = None
-        self._subjects = None
-        self._language = None
-        self._license = None
-        self._description = None
-        self._publisher = None
-        self._contact = None
-        self._tables = None
-        self._image = None
-        self._container = None
-        self._created = None
-        self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.exchange = exchange
-        self.creator = creator
-        if subjects is not None:
-            self.subjects = subjects
-        if language is not None:
-            self.language = language
-        if license is not None:
-            self.license = license
-        if description is not None:
-            self.description = description
-        if publisher is not None:
-            self.publisher = publisher
-        if contact is not None:
-            self.contact = contact
-        if tables is not None:
-            self.tables = tables
-        if image is not None:
-            self.image = image
-        if container is not None:
-            self.container = container
-        if created is not None:
-            self.created = created
-        if deleted is not None:
-            self.deleted = deleted
-        self.internal_name = internal_name
-        self.publication_year = publication_year
-        if is_public is not None:
-            self.is_public = is_public
-
-    @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
-
-
-        :return: The id of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
-
-
-        :param id: The id of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
-
-
-        :param name: The name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
-
-
-        :return: The exchange of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._exchange
-
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
-
-
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
-
-        self._exchange = exchange
-
-    @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
-
-
-        :return: The creator of this DatabaseDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
-
-
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
-
-
-        :return: The subjects of this DatabaseDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._subjects
-
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
-
-
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._subjects = subjects
-
-    @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
-
-
-        :return: The language of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._language
-
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
-
-
-        :param language: The language of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["ab", "aa", "af", "ak", "sq", "am", "ar", "an", "hy", "as", "av", "ae", "ay", "az", "bm", "ba", "eu", "be", "bn", "bh", "bi", "bs", "br", "bg", "my", "ca", "km", "ch", "ce", "ny", "zh", "cu", "cv", "kw", "co", "cr", "hr", "cs", "da", "dv", "nl", "dz", "en", "eo", "et", "ee", "fo", "fj", "fi", "fr", "ff", "gd", "gl", "lg", "ka", "de", "ki", "el", "kl", "gn", "gu", "ht", "ha", "he", "hz", "hi", "ho", "hu", "is", "io", "ig", "id", "ia", "ie", "iu", "ik", "ga", "it", "ja", "jv", "kn", "kr", "ks", "kk", "rw", "kv", "kg", "ko", "kj", "ku", "ky", "lo", "la", "lv", "lb", "li", "ln", "lt", "lu", "mk", "mg", "ms", "ml", "mt", "gv", "mi", "mr", "mh", "ro", "mn", "na", "nv", "nd", "ng", "ne", "se", "no", "nb", "nn", "ii", "oc", "oj", "or", "om", "os", "pi", "pa", "ps", "fa", "pl", "pt", "qu", "rm", "rn", "ru", "sm", "sg", "sa", "sc", "sr", "sn", "sd", "si", "sk", "sl", "so", "st", "nr", "es", "su", "sw", "ss", "sv", "tl", "ty", "tg", "ta", "tt", "te", "th", "bo", "ti", "to", "ts", "tn", "tr", "tk", "tw", "ug", "uk", "ur", "uz", "ve", "vi", "vo", "wa", "cy", "fy", "wo", "xh", "yi", "yo", "za", "zu"]  # noqa: E501
-        if language not in allowed_values:
-            raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
-            )
-
-        self._language = language
-
-    @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
-
-
-        :return: The license of this DatabaseDto.  # noqa: E501
-        :rtype: LicenseDto
-        """
-        return self._license
-
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
-
-
-        :param license: The license of this DatabaseDto.  # noqa: E501
-        :type: LicenseDto
-        """
-
-        self._license = license
-
-    @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
-
-
-        :return: The description of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
-
-
-        :param description: The description of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._description = description
-
-    @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publisher of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._publisher
-
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
-
-
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-
-        self._publisher = publisher
-
-    @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
-
-
-        :return: The contact of this DatabaseDto.  # noqa: E501
-        :rtype: UserDto
-        """
-        return self._contact
-
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
-
-
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
-        :type: UserDto
-        """
-
-        self._contact = contact
-
-    @property
-    def tables(self):
-        """Gets the tables of this DatabaseDto.  # noqa: E501
-
-
-        :return: The tables of this DatabaseDto.  # noqa: E501
-        :rtype: list[TableBriefDto]
-        """
-        return self._tables
-
-    @tables.setter
-    def tables(self, tables):
-        """Sets the tables of this DatabaseDto.
-
-
-        :param tables: The tables of this DatabaseDto.  # noqa: E501
-        :type: list[TableBriefDto]
-        """
-
-        self._tables = tables
-
-    @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
-
-
-        :return: The image of this DatabaseDto.  # noqa: E501
-        :rtype: ImageDto
-        """
-        return self._image
-
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
-
-
-        :param image: The image of this DatabaseDto.  # noqa: E501
-        :type: ImageDto
-        """
-
-        self._image = image
-
-    @property
-    def container(self):
-        """Gets the container of this DatabaseDto.  # noqa: E501
-
-
-        :return: The container of this DatabaseDto.  # noqa: E501
-        :rtype: ContainerDto
-        """
-        return self._container
-
-    @container.setter
-    def container(self, container):
-        """Sets the container of this DatabaseDto.
-
-
-        :param container: The container of this DatabaseDto.  # noqa: E501
-        :type: ContainerDto
-        """
-
-        self._container = container
-
-    @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
-
-
-        :return: The created of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
-
-
-        :param created: The created of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def deleted(self):
-        """Gets the deleted of this DatabaseDto.  # noqa: E501
-
-
-        :return: The deleted of this DatabaseDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._deleted
-
-    @deleted.setter
-    def deleted(self, deleted):
-        """Sets the deleted of this DatabaseDto.
-
-
-        :param deleted: The deleted of this DatabaseDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._deleted = deleted
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
-
-
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
-
-
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
-
-
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._publication_year
-
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
-
-
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
-        :type: int
-        """
-        if publication_year is None:
-            raise ValueError("Invalid value for `publication_year`, must not be `None`")  # noqa: E501
-
-        self._publication_year = publication_year
-
-    @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
-
-
-        :return: The is_public of this DatabaseDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_public
-
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
-
-
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._is_public = is_public
-
-    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(DatabaseDto, 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, DatabaseDto):
-            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/.jupyter/api_query/models/execute_statement_dto.py b/.jupyter/api_query/models/execute_statement_dto.py
deleted file mode 100644
index 066ab10780de553f8414b831289c8d0caec52c1d..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/execute_statement_dto.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ExecuteStatementDto(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 = {
-        'statement': 'str'
-    }
-
-    attribute_map = {
-        'statement': 'statement'
-    }
-
-    def __init__(self, statement=None):  # noqa: E501
-        """ExecuteStatementDto - a model defined in Swagger"""  # noqa: E501
-        self._statement = None
-        self.discriminator = None
-        self.statement = statement
-
-    @property
-    def statement(self):
-        """Gets the statement of this ExecuteStatementDto.  # noqa: E501
-
-
-        :return: The statement of this ExecuteStatementDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._statement
-
-    @statement.setter
-    def statement(self, statement):
-        """Sets the statement of this ExecuteStatementDto.
-
-
-        :param statement: The statement of this ExecuteStatementDto.  # noqa: E501
-        :type: str
-        """
-        if statement is None:
-            raise ValueError("Invalid value for `statement`, must not be `None`")  # noqa: E501
-
-        self._statement = statement
-
-    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(ExecuteStatementDto, 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, ExecuteStatementDto):
-            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/.jupyter/api_query/models/granted_authority_dto.py b/.jupyter/api_query/models/granted_authority_dto.py
deleted file mode 100644
index 14256a5fe3229571bb8f6d72e4da652593f608da..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/granted_authority_dto.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 GrantedAuthorityDto(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 = {
-        'authority': 'str'
-    }
-
-    attribute_map = {
-        'authority': 'authority'
-    }
-
-    def __init__(self, authority=None):  # noqa: E501
-        """GrantedAuthorityDto - a model defined in Swagger"""  # noqa: E501
-        self._authority = None
-        self.discriminator = None
-        if authority is not None:
-            self.authority = authority
-
-    @property
-    def authority(self):
-        """Gets the authority of this GrantedAuthorityDto.  # noqa: E501
-
-
-        :return: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._authority
-
-    @authority.setter
-    def authority(self, authority):
-        """Sets the authority of this GrantedAuthorityDto.
-
-
-        :param authority: The authority of this GrantedAuthorityDto.  # noqa: E501
-        :type: str
-        """
-
-        self._authority = authority
-
-    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(GrantedAuthorityDto, 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, GrantedAuthorityDto):
-            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/.jupyter/api_query/models/image_date_dto.py b/.jupyter/api_query/models/image_date_dto.py
deleted file mode 100644
index cffa3c6e333e5ec1c0fb2b3754d8b3ae9886f319..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/image_date_dto.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ImageDateDto(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 = {
-        'id': 'int',
-        'example': 'str',
-        'database_format': 'str',
-        'unix_format': 'str',
-        'has_time': 'bool',
-        'created_at': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'example': 'example',
-        'database_format': 'database_format',
-        'unix_format': 'unix_format',
-        'has_time': 'has_time',
-        'created_at': 'created_at'
-    }
-
-    def __init__(self, id=None, example=None, database_format=None, unix_format=None, has_time=None, created_at=None):  # noqa: E501
-        """ImageDateDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._example = None
-        self._database_format = None
-        self._unix_format = None
-        self._has_time = None
-        self._created_at = None
-        self.discriminator = None
-        self.id = id
-        self.example = example
-        self.database_format = database_format
-        self.unix_format = unix_format
-        self.has_time = has_time
-        if created_at is not None:
-            self.created_at = created_at
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDateDto.  # noqa: E501
-
-
-        :return: The id of this ImageDateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDateDto.
-
-
-        :param id: The id of this ImageDateDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def example(self):
-        """Gets the example of this ImageDateDto.  # noqa: E501
-
-
-        :return: The example of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._example
-
-    @example.setter
-    def example(self, example):
-        """Sets the example of this ImageDateDto.
-
-
-        :param example: The example of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if example is None:
-            raise ValueError("Invalid value for `example`, must not be `None`")  # noqa: E501
-
-        self._example = example
-
-    @property
-    def database_format(self):
-        """Gets the database_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The database_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._database_format
-
-    @database_format.setter
-    def database_format(self, database_format):
-        """Sets the database_format of this ImageDateDto.
-
-
-        :param database_format: The database_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if database_format is None:
-            raise ValueError("Invalid value for `database_format`, must not be `None`")  # noqa: E501
-
-        self._database_format = database_format
-
-    @property
-    def unix_format(self):
-        """Gets the unix_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The unix_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._unix_format
-
-    @unix_format.setter
-    def unix_format(self, unix_format):
-        """Sets the unix_format of this ImageDateDto.
-
-
-        :param unix_format: The unix_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if unix_format is None:
-            raise ValueError("Invalid value for `unix_format`, must not be `None`")  # noqa: E501
-
-        self._unix_format = unix_format
-
-    @property
-    def has_time(self):
-        """Gets the has_time of this ImageDateDto.  # noqa: E501
-
-
-        :return: The has_time of this ImageDateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._has_time
-
-    @has_time.setter
-    def has_time(self, has_time):
-        """Sets the has_time of this ImageDateDto.
-
-
-        :param has_time: The has_time of this ImageDateDto.  # noqa: E501
-        :type: bool
-        """
-        if has_time is None:
-            raise ValueError("Invalid value for `has_time`, must not be `None`")  # noqa: E501
-
-        self._has_time = has_time
-
-    @property
-    def created_at(self):
-        """Gets the created_at of this ImageDateDto.  # noqa: E501
-
-
-        :return: The created_at of this ImageDateDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created_at
-
-    @created_at.setter
-    def created_at(self, created_at):
-        """Sets the created_at of this ImageDateDto.
-
-
-        :param created_at: The created_at of this ImageDateDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created_at = created_at
-
-    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(ImageDateDto, 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, ImageDateDto):
-            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/.jupyter/api_query/models/image_dto.py b/.jupyter/api_query/models/image_dto.py
deleted file mode 100644
index f527a511f888b0c7ad69997b87397eeddde38a9b..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/image_dto.py
+++ /dev/null
@@ -1,404 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ImageDto(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 = {
-        'id': 'int',
-        'repository': 'str',
-        'tag': 'str',
-        'dialect': 'str',
-        'hash': 'str',
-        'compiled': 'datetime',
-        'size': 'int',
-        'environment': 'list[ImageEnvItemDto]',
-        'driver_class': 'str',
-        'date_formats': 'list[ImageDateDto]',
-        'jdbc_method': 'str',
-        'default_port': 'int'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'repository': 'repository',
-        'tag': 'tag',
-        'dialect': 'dialect',
-        'hash': 'hash',
-        'compiled': 'compiled',
-        'size': 'size',
-        'environment': 'environment',
-        'driver_class': 'driver_class',
-        'date_formats': 'date_formats',
-        'jdbc_method': 'jdbc_method',
-        'default_port': 'default_port'
-    }
-
-    def __init__(self, id=None, repository=None, tag=None, dialect=None, hash=None, compiled=None, size=None, environment=None, driver_class=None, date_formats=None, jdbc_method=None, default_port=None):  # noqa: E501
-        """ImageDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._repository = None
-        self._tag = None
-        self._dialect = None
-        self._hash = None
-        self._compiled = None
-        self._size = None
-        self._environment = None
-        self._driver_class = None
-        self._date_formats = None
-        self._jdbc_method = None
-        self._default_port = None
-        self.discriminator = None
-        self.id = id
-        self.repository = repository
-        self.tag = tag
-        self.dialect = dialect
-        if hash is not None:
-            self.hash = hash
-        if compiled is not None:
-            self.compiled = compiled
-        if size is not None:
-            self.size = size
-        self.environment = environment
-        self.driver_class = driver_class
-        if date_formats is not None:
-            self.date_formats = date_formats
-        self.jdbc_method = jdbc_method
-        self.default_port = default_port
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDto.  # noqa: E501
-
-
-        :return: The id of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDto.
-
-
-        :param id: The id of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def repository(self):
-        """Gets the repository of this ImageDto.  # noqa: E501
-
-
-        :return: The repository of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._repository
-
-    @repository.setter
-    def repository(self, repository):
-        """Sets the repository of this ImageDto.
-
-
-        :param repository: The repository of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if repository is None:
-            raise ValueError("Invalid value for `repository`, must not be `None`")  # noqa: E501
-
-        self._repository = repository
-
-    @property
-    def tag(self):
-        """Gets the tag of this ImageDto.  # noqa: E501
-
-
-        :return: The tag of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._tag
-
-    @tag.setter
-    def tag(self, tag):
-        """Sets the tag of this ImageDto.
-
-
-        :param tag: The tag of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if tag is None:
-            raise ValueError("Invalid value for `tag`, must not be `None`")  # noqa: E501
-
-        self._tag = tag
-
-    @property
-    def dialect(self):
-        """Gets the dialect of this ImageDto.  # noqa: E501
-
-
-        :return: The dialect of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._dialect
-
-    @dialect.setter
-    def dialect(self, dialect):
-        """Sets the dialect of this ImageDto.
-
-
-        :param dialect: The dialect of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if dialect is None:
-            raise ValueError("Invalid value for `dialect`, must not be `None`")  # noqa: E501
-
-        self._dialect = dialect
-
-    @property
-    def hash(self):
-        """Gets the hash of this ImageDto.  # noqa: E501
-
-
-        :return: The hash of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._hash
-
-    @hash.setter
-    def hash(self, hash):
-        """Sets the hash of this ImageDto.
-
-
-        :param hash: The hash of this ImageDto.  # noqa: E501
-        :type: str
-        """
-
-        self._hash = hash
-
-    @property
-    def compiled(self):
-        """Gets the compiled of this ImageDto.  # noqa: E501
-
-
-        :return: The compiled of this ImageDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._compiled
-
-    @compiled.setter
-    def compiled(self, compiled):
-        """Sets the compiled of this ImageDto.
-
-
-        :param compiled: The compiled of this ImageDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._compiled = compiled
-
-    @property
-    def size(self):
-        """Gets the size of this ImageDto.  # noqa: E501
-
-
-        :return: The size of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._size
-
-    @size.setter
-    def size(self, size):
-        """Sets the size of this ImageDto.
-
-
-        :param size: The size of this ImageDto.  # noqa: E501
-        :type: int
-        """
-
-        self._size = size
-
-    @property
-    def environment(self):
-        """Gets the environment of this ImageDto.  # noqa: E501
-
-
-        :return: The environment of this ImageDto.  # noqa: E501
-        :rtype: list[ImageEnvItemDto]
-        """
-        return self._environment
-
-    @environment.setter
-    def environment(self, environment):
-        """Sets the environment of this ImageDto.
-
-
-        :param environment: The environment of this ImageDto.  # noqa: E501
-        :type: list[ImageEnvItemDto]
-        """
-        if environment is None:
-            raise ValueError("Invalid value for `environment`, must not be `None`")  # noqa: E501
-
-        self._environment = environment
-
-    @property
-    def driver_class(self):
-        """Gets the driver_class of this ImageDto.  # noqa: E501
-
-
-        :return: The driver_class of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._driver_class
-
-    @driver_class.setter
-    def driver_class(self, driver_class):
-        """Sets the driver_class of this ImageDto.
-
-
-        :param driver_class: The driver_class of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if driver_class is None:
-            raise ValueError("Invalid value for `driver_class`, must not be `None`")  # noqa: E501
-
-        self._driver_class = driver_class
-
-    @property
-    def date_formats(self):
-        """Gets the date_formats of this ImageDto.  # noqa: E501
-
-
-        :return: The date_formats of this ImageDto.  # noqa: E501
-        :rtype: list[ImageDateDto]
-        """
-        return self._date_formats
-
-    @date_formats.setter
-    def date_formats(self, date_formats):
-        """Sets the date_formats of this ImageDto.
-
-
-        :param date_formats: The date_formats of this ImageDto.  # noqa: E501
-        :type: list[ImageDateDto]
-        """
-
-        self._date_formats = date_formats
-
-    @property
-    def jdbc_method(self):
-        """Gets the jdbc_method of this ImageDto.  # noqa: E501
-
-
-        :return: The jdbc_method of this ImageDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._jdbc_method
-
-    @jdbc_method.setter
-    def jdbc_method(self, jdbc_method):
-        """Sets the jdbc_method of this ImageDto.
-
-
-        :param jdbc_method: The jdbc_method of this ImageDto.  # noqa: E501
-        :type: str
-        """
-        if jdbc_method is None:
-            raise ValueError("Invalid value for `jdbc_method`, must not be `None`")  # noqa: E501
-
-        self._jdbc_method = jdbc_method
-
-    @property
-    def default_port(self):
-        """Gets the default_port of this ImageDto.  # noqa: E501
-
-
-        :return: The default_port of this ImageDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._default_port
-
-    @default_port.setter
-    def default_port(self, default_port):
-        """Sets the default_port of this ImageDto.
-
-
-        :param default_port: The default_port of this ImageDto.  # noqa: E501
-        :type: int
-        """
-        if default_port is None:
-            raise ValueError("Invalid value for `default_port`, must not be `None`")  # noqa: E501
-
-        self._default_port = default_port
-
-    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(ImageDto, 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, ImageDto):
-            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/.jupyter/api_query/models/image_env_item_dto.py b/.jupyter/api_query/models/image_env_item_dto.py
deleted file mode 100644
index 73c5fbab7092aeb3e00129d0546064469523d009..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/image_env_item_dto.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ImageEnvItemDto(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 = {
-        'iid': 'int',
-        'key': 'str',
-        'value': 'str',
-        'type': 'str'
-    }
-
-    attribute_map = {
-        'iid': 'iid',
-        'key': 'key',
-        'value': 'value',
-        'type': 'type'
-    }
-
-    def __init__(self, iid=None, key=None, value=None, type=None):  # noqa: E501
-        """ImageEnvItemDto - a model defined in Swagger"""  # noqa: E501
-        self._iid = None
-        self._key = None
-        self._value = None
-        self._type = None
-        self.discriminator = None
-        self.iid = iid
-        self.key = key
-        self.value = value
-        if type is not None:
-            self.type = type
-
-    @property
-    def iid(self):
-        """Gets the iid of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The iid of this ImageEnvItemDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._iid
-
-    @iid.setter
-    def iid(self, iid):
-        """Sets the iid of this ImageEnvItemDto.
-
-
-        :param iid: The iid of this ImageEnvItemDto.  # noqa: E501
-        :type: int
-        """
-        if iid is None:
-            raise ValueError("Invalid value for `iid`, must not be `None`")  # noqa: E501
-
-        self._iid = iid
-
-    @property
-    def key(self):
-        """Gets the key of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The key of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._key
-
-    @key.setter
-    def key(self, key):
-        """Sets the key of this ImageEnvItemDto.
-
-
-        :param key: The key of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if key is None:
-            raise ValueError("Invalid value for `key`, must not be `None`")  # noqa: E501
-
-        self._key = key
-
-    @property
-    def value(self):
-        """Gets the value of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The value of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._value
-
-    @value.setter
-    def value(self, value):
-        """Sets the value of this ImageEnvItemDto.
-
-
-        :param value: The value of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        if value is None:
-            raise ValueError("Invalid value for `value`, must not be `None`")  # noqa: E501
-
-        self._value = value
-
-    @property
-    def type(self):
-        """Gets the type of this ImageEnvItemDto.  # noqa: E501
-
-
-        :return: The type of this ImageEnvItemDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._type
-
-    @type.setter
-    def type(self, type):
-        """Sets the type of this ImageEnvItemDto.
-
-
-        :param type: The type of this ImageEnvItemDto.  # noqa: E501
-        :type: str
-        """
-        allowed_values = ["USERNAME", "PASSWORD", "PRIVILEGED_USERNAME", "PRIVILEGED_PASSWORD"]  # noqa: E501
-        if type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `type` ({0}), must be one of {1}"  # noqa: E501
-                .format(type, allowed_values)
-            )
-
-        self._type = type
-
-    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(ImageEnvItemDto, 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, ImageEnvItemDto):
-            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/.jupyter/api_query/models/import_dto.py b/.jupyter/api_query/models/import_dto.py
deleted file mode 100644
index b6a90a4e1cdd6c20fe0c68f9340b0a025355eb03..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/import_dto.py
+++ /dev/null
@@ -1,268 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 ImportDto(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 = {
-        'location': 'str',
-        'separator': 'str',
-        'quote': 'str',
-        'skip_lines': 'int',
-        'false_element': 'str',
-        'true_element': 'str',
-        'null_element': 'str'
-    }
-
-    attribute_map = {
-        'location': 'location',
-        'separator': 'separator',
-        'quote': 'quote',
-        'skip_lines': 'skip_lines',
-        'false_element': 'false_element',
-        'true_element': 'true_element',
-        'null_element': 'null_element'
-    }
-
-    def __init__(self, location=None, separator=None, quote=None, skip_lines=None, false_element=None, true_element=None, null_element=None):  # noqa: E501
-        """ImportDto - a model defined in Swagger"""  # noqa: E501
-        self._location = None
-        self._separator = None
-        self._quote = None
-        self._skip_lines = None
-        self._false_element = None
-        self._true_element = None
-        self._null_element = None
-        self.discriminator = None
-        self.location = location
-        self.separator = separator
-        if quote is not None:
-            self.quote = quote
-        if skip_lines is not None:
-            self.skip_lines = skip_lines
-        if false_element is not None:
-            self.false_element = false_element
-        if true_element is not None:
-            self.true_element = true_element
-        if null_element is not None:
-            self.null_element = null_element
-
-    @property
-    def location(self):
-        """Gets the location of this ImportDto.  # noqa: E501
-
-
-        :return: The location of this ImportDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._location
-
-    @location.setter
-    def location(self, location):
-        """Sets the location of this ImportDto.
-
-
-        :param location: The location of this ImportDto.  # noqa: E501
-        :type: str
-        """
-        if location is None:
-            raise ValueError("Invalid value for `location`, must not be `None`")  # noqa: E501
-
-        self._location = location
-
-    @property
-    def separator(self):
-        """Gets the separator of this ImportDto.  # noqa: E501
-
-
-        :return: The separator of this ImportDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._separator
-
-    @separator.setter
-    def separator(self, separator):
-        """Sets the separator of this ImportDto.
-
-
-        :param separator: The separator of this ImportDto.  # noqa: E501
-        :type: str
-        """
-        if separator is None:
-            raise ValueError("Invalid value for `separator`, must not be `None`")  # noqa: E501
-
-        self._separator = separator
-
-    @property
-    def quote(self):
-        """Gets the quote of this ImportDto.  # noqa: E501
-
-
-        :return: The quote of this ImportDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._quote
-
-    @quote.setter
-    def quote(self, quote):
-        """Sets the quote of this ImportDto.
-
-
-        :param quote: The quote of this ImportDto.  # noqa: E501
-        :type: str
-        """
-
-        self._quote = quote
-
-    @property
-    def skip_lines(self):
-        """Gets the skip_lines of this ImportDto.  # noqa: E501
-
-
-        :return: The skip_lines of this ImportDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._skip_lines
-
-    @skip_lines.setter
-    def skip_lines(self, skip_lines):
-        """Sets the skip_lines of this ImportDto.
-
-
-        :param skip_lines: The skip_lines of this ImportDto.  # noqa: E501
-        :type: int
-        """
-
-        self._skip_lines = skip_lines
-
-    @property
-    def false_element(self):
-        """Gets the false_element of this ImportDto.  # noqa: E501
-
-
-        :return: The false_element of this ImportDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._false_element
-
-    @false_element.setter
-    def false_element(self, false_element):
-        """Sets the false_element of this ImportDto.
-
-
-        :param false_element: The false_element of this ImportDto.  # noqa: E501
-        :type: str
-        """
-
-        self._false_element = false_element
-
-    @property
-    def true_element(self):
-        """Gets the true_element of this ImportDto.  # noqa: E501
-
-
-        :return: The true_element of this ImportDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._true_element
-
-    @true_element.setter
-    def true_element(self, true_element):
-        """Sets the true_element of this ImportDto.
-
-
-        :param true_element: The true_element of this ImportDto.  # noqa: E501
-        :type: str
-        """
-
-        self._true_element = true_element
-
-    @property
-    def null_element(self):
-        """Gets the null_element of this ImportDto.  # noqa: E501
-
-
-        :return: The null_element of this ImportDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._null_element
-
-    @null_element.setter
-    def null_element(self, null_element):
-        """Sets the null_element of this ImportDto.
-
-
-        :param null_element: The null_element of this ImportDto.  # noqa: E501
-        :type: str
-        """
-
-        self._null_element = null_element
-
-    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(ImportDto, 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, ImportDto):
-            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/.jupyter/api_query/models/query_dto.py b/.jupyter/api_query/models/query_dto.py
deleted file mode 100644
index 60469ec4cf21b7ed58ed9c06ff17c95420e9cbd5..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/query_dto.py
+++ /dev/null
@@ -1,403 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 QueryDto(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 = {
-        'id': 'int',
-        'cid': 'int',
-        'dbid': 'int',
-        'creator': 'UserDto',
-        'execution': 'datetime',
-        'query': 'str',
-        'created': 'datetime',
-        'query_normalized': 'str',
-        'query_hash': 'str',
-        'result_hash': 'str',
-        'result_number': 'int',
-        'last_modified': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'cid': 'cid',
-        'dbid': 'dbid',
-        'creator': 'creator',
-        'execution': 'execution',
-        'query': 'query',
-        'created': 'created',
-        'query_normalized': 'query_normalized',
-        'query_hash': 'query_hash',
-        'result_hash': 'result_hash',
-        'result_number': 'result_number',
-        'last_modified': 'last_modified'
-    }
-
-    def __init__(self, id=None, cid=None, dbid=None, creator=None, execution=None, query=None, created=None, query_normalized=None, query_hash=None, result_hash=None, result_number=None, last_modified=None):  # noqa: E501
-        """QueryDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._cid = None
-        self._dbid = None
-        self._creator = None
-        self._execution = None
-        self._query = None
-        self._created = None
-        self._query_normalized = None
-        self._query_hash = None
-        self._result_hash = None
-        self._result_number = None
-        self._last_modified = None
-        self.discriminator = None
-        self.id = id
-        self.cid = cid
-        self.dbid = dbid
-        self.creator = creator
-        if execution is not None:
-            self.execution = execution
-        self.query = query
-        self.created = created
-        if query_normalized is not None:
-            self.query_normalized = query_normalized
-        self.query_hash = query_hash
-        if result_hash is not None:
-            self.result_hash = result_hash
-        if result_number is not None:
-            self.result_number = result_number
-        if last_modified is not None:
-            self.last_modified = last_modified
-
-    @property
-    def id(self):
-        """Gets the id of this QueryDto.  # noqa: E501
-
-
-        :return: The id of this QueryDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this QueryDto.
-
-
-        :param id: The id of this QueryDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def cid(self):
-        """Gets the cid of this QueryDto.  # noqa: E501
-
-
-        :return: The cid of this QueryDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._cid
-
-    @cid.setter
-    def cid(self, cid):
-        """Sets the cid of this QueryDto.
-
-
-        :param cid: The cid of this QueryDto.  # noqa: E501
-        :type: int
-        """
-        if cid is None:
-            raise ValueError("Invalid value for `cid`, must not be `None`")  # noqa: E501
-
-        self._cid = cid
-
-    @property
-    def dbid(self):
-        """Gets the dbid of this QueryDto.  # noqa: E501
-
-
-        :return: The dbid of this QueryDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._dbid
-
-    @dbid.setter
-    def dbid(self, dbid):
-        """Sets the dbid of this QueryDto.
-
-
-        :param dbid: The dbid of this QueryDto.  # 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 creator(self):
-        """Gets the creator of this QueryDto.  # noqa: E501
-
-
-        :return: The creator of this QueryDto.  # noqa: E501
-        :rtype: UserDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this QueryDto.
-
-
-        :param creator: The creator of this QueryDto.  # noqa: E501
-        :type: UserDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def execution(self):
-        """Gets the execution of this QueryDto.  # noqa: E501
-
-
-        :return: The execution of this QueryDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._execution
-
-    @execution.setter
-    def execution(self, execution):
-        """Sets the execution of this QueryDto.
-
-
-        :param execution: The execution of this QueryDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._execution = execution
-
-    @property
-    def query(self):
-        """Gets the query of this QueryDto.  # noqa: E501
-
-
-        :return: The query of this QueryDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._query
-
-    @query.setter
-    def query(self, query):
-        """Sets the query of this QueryDto.
-
-
-        :param query: The query of this QueryDto.  # noqa: E501
-        :type: str
-        """
-        if query is None:
-            raise ValueError("Invalid value for `query`, must not be `None`")  # noqa: E501
-
-        self._query = query
-
-    @property
-    def created(self):
-        """Gets the created of this QueryDto.  # noqa: E501
-
-
-        :return: The created of this QueryDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this QueryDto.
-
-
-        :param created: The created of this QueryDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    @property
-    def query_normalized(self):
-        """Gets the query_normalized of this QueryDto.  # noqa: E501
-
-
-        :return: The query_normalized of this QueryDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._query_normalized
-
-    @query_normalized.setter
-    def query_normalized(self, query_normalized):
-        """Sets the query_normalized of this QueryDto.
-
-
-        :param query_normalized: The query_normalized of this QueryDto.  # noqa: E501
-        :type: str
-        """
-
-        self._query_normalized = query_normalized
-
-    @property
-    def query_hash(self):
-        """Gets the query_hash of this QueryDto.  # noqa: E501
-
-
-        :return: The query_hash of this QueryDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._query_hash
-
-    @query_hash.setter
-    def query_hash(self, query_hash):
-        """Sets the query_hash of this QueryDto.
-
-
-        :param query_hash: The query_hash of this QueryDto.  # noqa: E501
-        :type: str
-        """
-        if query_hash is None:
-            raise ValueError("Invalid value for `query_hash`, must not be `None`")  # noqa: E501
-
-        self._query_hash = query_hash
-
-    @property
-    def result_hash(self):
-        """Gets the result_hash of this QueryDto.  # noqa: E501
-
-
-        :return: The result_hash of this QueryDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._result_hash
-
-    @result_hash.setter
-    def result_hash(self, result_hash):
-        """Sets the result_hash of this QueryDto.
-
-
-        :param result_hash: The result_hash of this QueryDto.  # noqa: E501
-        :type: str
-        """
-
-        self._result_hash = result_hash
-
-    @property
-    def result_number(self):
-        """Gets the result_number of this QueryDto.  # noqa: E501
-
-
-        :return: The result_number of this QueryDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._result_number
-
-    @result_number.setter
-    def result_number(self, result_number):
-        """Sets the result_number of this QueryDto.
-
-
-        :param result_number: The result_number of this QueryDto.  # noqa: E501
-        :type: int
-        """
-
-        self._result_number = result_number
-
-    @property
-    def last_modified(self):
-        """Gets the last_modified of this QueryDto.  # noqa: E501
-
-
-        :return: The last_modified of this QueryDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._last_modified
-
-    @last_modified.setter
-    def last_modified(self, last_modified):
-        """Sets the last_modified of this QueryDto.
-
-
-        :param last_modified: The last_modified of this QueryDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._last_modified = last_modified
-
-    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(QueryDto, 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, QueryDto):
-            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/.jupyter/api_query/models/query_result_dto.py b/.jupyter/api_query/models/query_result_dto.py
deleted file mode 100644
index c60a6fe76eb2cd94ba74cb23c6f0b824e69142d9..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/query_result_dto.py
+++ /dev/null
@@ -1,164 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 QueryResultDto(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 = {
-        'result': 'list[dict(str, object)]',
-        'id': 'int',
-        'result_number': 'int'
-    }
-
-    attribute_map = {
-        'result': 'result',
-        'id': 'id',
-        'result_number': 'resultNumber'
-    }
-
-    def __init__(self, result=None, id=None, result_number=None):  # noqa: E501
-        """QueryResultDto - a model defined in Swagger"""  # noqa: E501
-        self._result = None
-        self._id = None
-        self._result_number = None
-        self.discriminator = None
-        self.result = result
-        self.id = id
-        if result_number is not None:
-            self.result_number = result_number
-
-    @property
-    def result(self):
-        """Gets the result of this QueryResultDto.  # noqa: E501
-
-
-        :return: The result of this QueryResultDto.  # noqa: E501
-        :rtype: list[dict(str, object)]
-        """
-        return self._result
-
-    @result.setter
-    def result(self, result):
-        """Sets the result of this QueryResultDto.
-
-
-        :param result: The result of this QueryResultDto.  # noqa: E501
-        :type: list[dict(str, object)]
-        """
-        if result is None:
-            raise ValueError("Invalid value for `result`, must not be `None`")  # noqa: E501
-
-        self._result = result
-
-    @property
-    def id(self):
-        """Gets the id of this QueryResultDto.  # noqa: E501
-
-
-        :return: The id of this QueryResultDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this QueryResultDto.
-
-
-        :param id: The id of this QueryResultDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def result_number(self):
-        """Gets the result_number of this QueryResultDto.  # noqa: E501
-
-
-        :return: The result_number of this QueryResultDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._result_number
-
-    @result_number.setter
-    def result_number(self, result_number):
-        """Sets the result_number of this QueryResultDto.
-
-
-        :param result_number: The result_number of this QueryResultDto.  # noqa: E501
-        :type: int
-        """
-
-        self._result_number = result_number
-
-    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(QueryResultDto, 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, QueryResultDto):
-            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/.jupyter/api_query/models/table_csv_delete_dto.py b/.jupyter/api_query/models/table_csv_delete_dto.py
deleted file mode 100644
index ede0ff3d60eb6424d99f3c2572b11a44f802221a..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/table_csv_delete_dto.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 TableCsvDeleteDto(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 = {
-        'keys': 'dict(str, object)'
-    }
-
-    attribute_map = {
-        'keys': 'keys'
-    }
-
-    def __init__(self, keys=None):  # noqa: E501
-        """TableCsvDeleteDto - a model defined in Swagger"""  # noqa: E501
-        self._keys = None
-        self.discriminator = None
-        self.keys = keys
-
-    @property
-    def keys(self):
-        """Gets the keys of this TableCsvDeleteDto.  # noqa: E501
-
-
-        :return: The keys of this TableCsvDeleteDto.  # noqa: E501
-        :rtype: dict(str, object)
-        """
-        return self._keys
-
-    @keys.setter
-    def keys(self, keys):
-        """Sets the keys of this TableCsvDeleteDto.
-
-
-        :param keys: The keys of this TableCsvDeleteDto.  # noqa: E501
-        :type: dict(str, object)
-        """
-        if keys is None:
-            raise ValueError("Invalid value for `keys`, must not be `None`")  # noqa: E501
-
-        self._keys = keys
-
-    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(TableCsvDeleteDto, 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, TableCsvDeleteDto):
-            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/.jupyter/api_query/models/table_csv_dto.py b/.jupyter/api_query/models/table_csv_dto.py
deleted file mode 100644
index b473e2acc95e2009adab375000c5995b1ac70260..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/table_csv_dto.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 TableCsvDto(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 = {
-        'data': 'dict(str, object)'
-    }
-
-    attribute_map = {
-        'data': 'data'
-    }
-
-    def __init__(self, data=None):  # noqa: E501
-        """TableCsvDto - a model defined in Swagger"""  # noqa: E501
-        self._data = None
-        self.discriminator = None
-        self.data = data
-
-    @property
-    def data(self):
-        """Gets the data of this TableCsvDto.  # noqa: E501
-
-
-        :return: The data of this TableCsvDto.  # noqa: E501
-        :rtype: dict(str, object)
-        """
-        return self._data
-
-    @data.setter
-    def data(self, data):
-        """Sets the data of this TableCsvDto.
-
-
-        :param data: The data of this TableCsvDto.  # noqa: E501
-        :type: dict(str, object)
-        """
-        if data is None:
-            raise ValueError("Invalid value for `data`, must not be `None`")  # noqa: E501
-
-        self._data = data
-
-    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(TableCsvDto, 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, TableCsvDto):
-            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/.jupyter/api_query/models/table_csv_update_dto.py b/.jupyter/api_query/models/table_csv_update_dto.py
deleted file mode 100644
index f2c2316f7d16ee540952af65452028b9d1debfb2..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/table_csv_update_dto.py
+++ /dev/null
@@ -1,138 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 TableCsvUpdateDto(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 = {
-        'data': 'dict(str, object)',
-        'keys': 'dict(str, object)'
-    }
-
-    attribute_map = {
-        'data': 'data',
-        'keys': 'keys'
-    }
-
-    def __init__(self, data=None, keys=None):  # noqa: E501
-        """TableCsvUpdateDto - a model defined in Swagger"""  # noqa: E501
-        self._data = None
-        self._keys = None
-        self.discriminator = None
-        self.data = data
-        self.keys = keys
-
-    @property
-    def data(self):
-        """Gets the data of this TableCsvUpdateDto.  # noqa: E501
-
-
-        :return: The data of this TableCsvUpdateDto.  # noqa: E501
-        :rtype: dict(str, object)
-        """
-        return self._data
-
-    @data.setter
-    def data(self, data):
-        """Sets the data of this TableCsvUpdateDto.
-
-
-        :param data: The data of this TableCsvUpdateDto.  # noqa: E501
-        :type: dict(str, object)
-        """
-        if data is None:
-            raise ValueError("Invalid value for `data`, must not be `None`")  # noqa: E501
-
-        self._data = data
-
-    @property
-    def keys(self):
-        """Gets the keys of this TableCsvUpdateDto.  # noqa: E501
-
-
-        :return: The keys of this TableCsvUpdateDto.  # noqa: E501
-        :rtype: dict(str, object)
-        """
-        return self._keys
-
-    @keys.setter
-    def keys(self, keys):
-        """Sets the keys of this TableCsvUpdateDto.
-
-
-        :param keys: The keys of this TableCsvUpdateDto.  # noqa: E501
-        :type: dict(str, object)
-        """
-        if keys is None:
-            raise ValueError("Invalid value for `keys`, must not be `None`")  # noqa: E501
-
-        self._keys = keys
-
-    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(TableCsvUpdateDto, 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, TableCsvUpdateDto):
-            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/.jupyter/api_query/models/table_dto.py b/.jupyter/api_query/models/table_dto.py
deleted file mode 100644
index b5828f5a522e2cbf96882b4a65ceb6f767b5a837..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/table_dto.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 TableDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'topic': 'str',
-        'description': 'str',
-        'created': 'datetime',
-        'columns': 'list[ColumnDto]',
-        'internal_name': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'topic': 'topic',
-        'description': 'description',
-        'created': 'created',
-        'columns': 'columns',
-        'internal_name': 'internal_name'
-    }
-
-    def __init__(self, id=None, name=None, topic=None, description=None, created=None, columns=None, internal_name=None):  # noqa: E501
-        """TableDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._topic = None
-        self._description = None
-        self._created = None
-        self._columns = None
-        self._internal_name = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.topic = topic
-        self.description = description
-        if created is not None:
-            self.created = created
-        self.columns = columns
-        self.internal_name = internal_name
-
-    @property
-    def id(self):
-        """Gets the id of this TableDto.  # noqa: E501
-
-
-        :return: The id of this TableDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this TableDto.
-
-
-        :param id: The id of this TableDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this TableDto.  # noqa: E501
-
-
-        :return: The name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableDto.
-
-
-        :param name: The name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def topic(self):
-        """Gets the topic of this TableDto.  # noqa: E501
-
-
-        :return: The topic of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._topic
-
-    @topic.setter
-    def topic(self, topic):
-        """Sets the topic of this TableDto.
-
-
-        :param topic: The topic of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if topic is None:
-            raise ValueError("Invalid value for `topic`, must not be `None`")  # noqa: E501
-
-        self._topic = topic
-
-    @property
-    def description(self):
-        """Gets the description of this TableDto.  # noqa: E501
-
-
-        :return: The description of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this TableDto.
-
-
-        :param description: The description of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def created(self):
-        """Gets the created of this TableDto.  # noqa: E501
-
-
-        :return: The created of this TableDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this TableDto.
-
-
-        :param created: The created of this TableDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def columns(self):
-        """Gets the columns of this TableDto.  # noqa: E501
-
-
-        :return: The columns of this TableDto.  # noqa: E501
-        :rtype: list[ColumnDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this TableDto.
-
-
-        :param columns: The columns of this TableDto.  # noqa: E501
-        :type: list[ColumnDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this TableDto.  # noqa: E501
-
-
-        :return: The internal_name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this TableDto.
-
-
-        :param internal_name: The internal_name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    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(TableDto, 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, TableDto):
-            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/.jupyter/api_query/models/user_dto.py b/.jupyter/api_query/models/user_dto.py
deleted file mode 100644
index 86827496d3dd009a28fd6f35faac7573b153922f..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/models/user_dto.py
+++ /dev/null
@@ -1,478 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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 UserDto(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 = {
-        'id': 'int',
-        'authorities': 'list[GrantedAuthorityDto]',
-        'username': 'str',
-        'firstname': 'str',
-        'lastname': 'str',
-        'affiliation': 'str',
-        'orcid': 'str',
-        'containers': 'list[ContainerDto]',
-        'databases': 'list[ContainerDto]',
-        'identifiers': 'list[ContainerDto]',
-        'email': 'str',
-        'titles_before': 'str',
-        'titles_after': 'str',
-        'theme_dark': 'bool',
-        'email_verified': 'bool'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'authorities': 'authorities',
-        'username': 'username',
-        'firstname': 'firstname',
-        'lastname': 'lastname',
-        'affiliation': 'affiliation',
-        'orcid': 'orcid',
-        'containers': 'containers',
-        'databases': 'databases',
-        'identifiers': 'identifiers',
-        'email': 'email',
-        'titles_before': 'titles_before',
-        'titles_after': 'titles_after',
-        'theme_dark': 'theme_dark',
-        'email_verified': 'email_verified'
-    }
-
-    def __init__(self, id=None, authorities=None, username=None, firstname=None, lastname=None, affiliation=None, orcid=None, containers=None, databases=None, identifiers=None, email=None, titles_before=None, titles_after=None, theme_dark=None, email_verified=None):  # noqa: E501
-        """UserDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._authorities = None
-        self._username = None
-        self._firstname = None
-        self._lastname = None
-        self._affiliation = None
-        self._orcid = None
-        self._containers = None
-        self._databases = None
-        self._identifiers = None
-        self._email = None
-        self._titles_before = None
-        self._titles_after = None
-        self._theme_dark = None
-        self._email_verified = None
-        self.discriminator = None
-        self.id = id
-        if authorities is not None:
-            self.authorities = authorities
-        self.username = username
-        if firstname is not None:
-            self.firstname = firstname
-        if lastname is not None:
-            self.lastname = lastname
-        if affiliation is not None:
-            self.affiliation = affiliation
-        if orcid is not None:
-            self.orcid = orcid
-        if containers is not None:
-            self.containers = containers
-        if databases is not None:
-            self.databases = databases
-        if identifiers is not None:
-            self.identifiers = identifiers
-        self.email = email
-        if titles_before is not None:
-            self.titles_before = titles_before
-        if titles_after is not None:
-            self.titles_after = titles_after
-        self.theme_dark = theme_dark
-        if email_verified is not None:
-            self.email_verified = email_verified
-
-    @property
-    def id(self):
-        """Gets the id of this UserDto.  # noqa: E501
-
-
-        :return: The id of this UserDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this UserDto.
-
-
-        :param id: The id of this UserDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def authorities(self):
-        """Gets the authorities of this UserDto.  # noqa: E501
-
-
-        :return: The authorities of this UserDto.  # noqa: E501
-        :rtype: list[GrantedAuthorityDto]
-        """
-        return self._authorities
-
-    @authorities.setter
-    def authorities(self, authorities):
-        """Sets the authorities of this UserDto.
-
-
-        :param authorities: The authorities of this UserDto.  # noqa: E501
-        :type: list[GrantedAuthorityDto]
-        """
-
-        self._authorities = authorities
-
-    @property
-    def username(self):
-        """Gets the username of this UserDto.  # noqa: E501
-
-
-        :return: The username of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._username
-
-    @username.setter
-    def username(self, username):
-        """Sets the username of this UserDto.
-
-
-        :param username: The username of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if username is None:
-            raise ValueError("Invalid value for `username`, must not be `None`")  # noqa: E501
-
-        self._username = username
-
-    @property
-    def firstname(self):
-        """Gets the firstname of this UserDto.  # noqa: E501
-
-
-        :return: The firstname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._firstname
-
-    @firstname.setter
-    def firstname(self, firstname):
-        """Sets the firstname of this UserDto.
-
-
-        :param firstname: The firstname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._firstname = firstname
-
-    @property
-    def lastname(self):
-        """Gets the lastname of this UserDto.  # noqa: E501
-
-
-        :return: The lastname of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._lastname
-
-    @lastname.setter
-    def lastname(self, lastname):
-        """Sets the lastname of this UserDto.
-
-
-        :param lastname: The lastname of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._lastname = lastname
-
-    @property
-    def affiliation(self):
-        """Gets the affiliation of this UserDto.  # noqa: E501
-
-
-        :return: The affiliation of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._affiliation
-
-    @affiliation.setter
-    def affiliation(self, affiliation):
-        """Sets the affiliation of this UserDto.
-
-
-        :param affiliation: The affiliation of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._affiliation = affiliation
-
-    @property
-    def orcid(self):
-        """Gets the orcid of this UserDto.  # noqa: E501
-
-
-        :return: The orcid of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._orcid
-
-    @orcid.setter
-    def orcid(self, orcid):
-        """Sets the orcid of this UserDto.
-
-
-        :param orcid: The orcid of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._orcid = orcid
-
-    @property
-    def containers(self):
-        """Gets the containers of this UserDto.  # noqa: E501
-
-
-        :return: The containers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._containers
-
-    @containers.setter
-    def containers(self, containers):
-        """Sets the containers of this UserDto.
-
-
-        :param containers: The containers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._containers = containers
-
-    @property
-    def databases(self):
-        """Gets the databases of this UserDto.  # noqa: E501
-
-
-        :return: The databases of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._databases
-
-    @databases.setter
-    def databases(self, databases):
-        """Sets the databases of this UserDto.
-
-
-        :param databases: The databases of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._databases = databases
-
-    @property
-    def identifiers(self):
-        """Gets the identifiers of this UserDto.  # noqa: E501
-
-
-        :return: The identifiers of this UserDto.  # noqa: E501
-        :rtype: list[ContainerDto]
-        """
-        return self._identifiers
-
-    @identifiers.setter
-    def identifiers(self, identifiers):
-        """Sets the identifiers of this UserDto.
-
-
-        :param identifiers: The identifiers of this UserDto.  # noqa: E501
-        :type: list[ContainerDto]
-        """
-
-        self._identifiers = identifiers
-
-    @property
-    def email(self):
-        """Gets the email of this UserDto.  # noqa: E501
-
-
-        :return: The email of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._email
-
-    @email.setter
-    def email(self, email):
-        """Sets the email of this UserDto.
-
-
-        :param email: The email of this UserDto.  # noqa: E501
-        :type: str
-        """
-        if email is None:
-            raise ValueError("Invalid value for `email`, must not be `None`")  # noqa: E501
-
-        self._email = email
-
-    @property
-    def titles_before(self):
-        """Gets the titles_before of this UserDto.  # noqa: E501
-
-
-        :return: The titles_before of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_before
-
-    @titles_before.setter
-    def titles_before(self, titles_before):
-        """Sets the titles_before of this UserDto.
-
-
-        :param titles_before: The titles_before of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_before = titles_before
-
-    @property
-    def titles_after(self):
-        """Gets the titles_after of this UserDto.  # noqa: E501
-
-
-        :return: The titles_after of this UserDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._titles_after
-
-    @titles_after.setter
-    def titles_after(self, titles_after):
-        """Sets the titles_after of this UserDto.
-
-
-        :param titles_after: The titles_after of this UserDto.  # noqa: E501
-        :type: str
-        """
-
-        self._titles_after = titles_after
-
-    @property
-    def theme_dark(self):
-        """Gets the theme_dark of this UserDto.  # noqa: E501
-
-
-        :return: The theme_dark of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._theme_dark
-
-    @theme_dark.setter
-    def theme_dark(self, theme_dark):
-        """Sets the theme_dark of this UserDto.
-
-
-        :param theme_dark: The theme_dark of this UserDto.  # noqa: E501
-        :type: bool
-        """
-        if theme_dark is None:
-            raise ValueError("Invalid value for `theme_dark`, must not be `None`")  # noqa: E501
-
-        self._theme_dark = theme_dark
-
-    @property
-    def email_verified(self):
-        """Gets the email_verified of this UserDto.  # noqa: E501
-
-
-        :return: The email_verified of this UserDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._email_verified
-
-    @email_verified.setter
-    def email_verified(self, email_verified):
-        """Sets the email_verified of this UserDto.
-
-
-        :param email_verified: The email_verified of this UserDto.  # noqa: E501
-        :type: bool
-        """
-
-        self._email_verified = email_verified
-
-    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(UserDto, 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, UserDto):
-            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/.jupyter/api_query/rest.py b/.jupyter/api_query/rest.py
deleted file mode 100644
index ca858e0e27c750a6ab56fbc0451a091cd3b51818..0000000000000000000000000000000000000000
--- a/.jupyter/api_query/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Query Service API
-
-    Service that manages the queries  # 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/.jupyter/api_table/__init__.py b/.jupyter/api_table/__init__.py
deleted file mode 100644
index 37441edea5b7655b2a5337e45897d5860cd36e48..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/__init__.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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_table.api.table_endpoint_api import TableEndpointApi
-# import ApiClient
-from api_table.api_client import ApiClient
-from api_table.configuration import Configuration
-# import models into sdk package
-from api_table.models.api_error_dto import ApiErrorDto
-from api_table.models.column_create_dto import ColumnCreateDto
-from api_table.models.column_dto import ColumnDto
-from api_table.models.concept_dto import ConceptDto
-from api_table.models.image_date_dto import ImageDateDto
-from api_table.models.table_brief_dto import TableBriefDto
-from api_table.models.table_create_dto import TableCreateDto
-from api_table.models.table_dto import TableDto
-from api_table.models.user_brief_dto import UserBriefDto
diff --git a/.jupyter/api_table/api/__init__.py b/.jupyter/api_table/api/__init__.py
deleted file mode 100644
index 7ac1b66c4f54b7eab1ebc4b1898d33e21f56cb61..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/api/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from __future__ import absolute_import
-
-# flake8: noqa
-
-# import apis into api package
-from api_table.api.table_endpoint_api import TableEndpointApi
diff --git a/.jupyter/api_table/api/table_endpoint_api.py b/.jupyter/api_table/api/table_endpoint_api.py
deleted file mode 100644
index ca2f072bd02fb59f14d40e93d298617cc76511f2..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/api/table_endpoint_api.py
+++ /dev/null
@@ -1,574 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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_table.api_client import ApiClient
-
-
-class TableEndpointApi(object):
-    """NOTE: This class is auto generated by the swagger code generator program.
-
-    Do not edit the class manually.
-    Ref: https://github.com/swagger-api/swagger-codegen
-    """
-
-    def __init__(self, api_client=None):
-        if api_client is None:
-            api_client = ApiClient()
-        self.api_client = api_client
-
-    def create(self, body, id, database_id, **kwargs):  # noqa: E501
-        """Create a table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create(body, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCreateDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: TableBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.create_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.create_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def create_with_http_info(self, body, id, database_id, **kwargs):  # noqa: E501
-        """Create a table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.create_with_http_info(body, id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param TableCreateDto body: (required)
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: TableBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['body', 'id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method create" % 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 `create`")  # noqa: E501
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `create`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `create`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        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 = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table', 'POST',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='TableBriefDto',  # noqa: E501
-            auth_settings=auth_settings,
-            async_req=params.get('async_req'),
-            _return_http_data_only=params.get('_return_http_data_only'),
-            _preload_content=params.get('_preload_content', True),
-            _request_timeout=params.get('_request_timeout'),
-            collection_formats=collection_formats)
-
-    def delete(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Delete a table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.delete_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.delete_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def delete_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Delete a table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.delete_with_http_info(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: None
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method delete" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `delete`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `delete`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `delete`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}', 'DELETE',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type=None,  # noqa: E501
-            auth_settings=auth_settings,
-            async_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 find_all(self, id, database_id, **kwargs):  # noqa: E501
-        """List all tables  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: list[TableBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_all_with_http_info(id, database_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_all_with_http_info(id, database_id, **kwargs)  # noqa: E501
-            return data
-
-    def find_all_with_http_info(self, id, database_id, **kwargs):  # noqa: E501
-        """List all tables  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_all_with_http_info(id, database_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :return: list[TableBriefDto]
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_all" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_all`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `find_all`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='list[TableBriefDto]',  # 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 find_by_id(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Get information about table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: TableDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.find_by_id_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.find_by_id_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def find_by_id_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Get information about table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.find_by_id_with_http_info(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: TableDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method find_by_id" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `find_by_id`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `find_by_id`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `find_by_id`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}', 'GET',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='TableDto',  # 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 update(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Update a table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: TableBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-        kwargs['_return_http_data_only'] = True
-        if kwargs.get('async_req'):
-            return self.update_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-        else:
-            (data) = self.update_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
-            return data
-
-    def update_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
-        """Update a table  # noqa: E501
-
-        This method makes a synchronous HTTP request by default. To make an
-        asynchronous HTTP request, please pass async_req=True
-        >>> thread = api.update_with_http_info(id, database_id, table_id, async_req=True)
-        >>> result = thread.get()
-
-        :param async_req bool
-        :param int id: (required)
-        :param int database_id: (required)
-        :param int table_id: (required)
-        :return: TableBriefDto
-                 If the method is called asynchronously,
-                 returns the request thread.
-        """
-
-        all_params = ['id', 'database_id', 'table_id']  # noqa: E501
-        all_params.append('async_req')
-        all_params.append('_return_http_data_only')
-        all_params.append('_preload_content')
-        all_params.append('_request_timeout')
-
-        params = locals()
-        for key, val in six.iteritems(params['kwargs']):
-            if key not in all_params:
-                raise TypeError(
-                    "Got an unexpected keyword argument '%s'"
-                    " to method update" % key
-                )
-            params[key] = val
-        del params['kwargs']
-        # verify the required parameter 'id' is set
-        if ('id' not in params or
-                params['id'] is None):
-            raise ValueError("Missing the required parameter `id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'database_id' is set
-        if ('database_id' not in params or
-                params['database_id'] is None):
-            raise ValueError("Missing the required parameter `database_id` when calling `update`")  # noqa: E501
-        # verify the required parameter 'table_id' is set
-        if ('table_id' not in params or
-                params['table_id'] is None):
-            raise ValueError("Missing the required parameter `table_id` when calling `update`")  # noqa: E501
-
-        collection_formats = {}
-
-        path_params = {}
-        if 'id' in params:
-            path_params['id'] = params['id']  # noqa: E501
-        if 'database_id' in params:
-            path_params['databaseId'] = params['database_id']  # noqa: E501
-        if 'table_id' in params:
-            path_params['tableId'] = params['table_id']  # noqa: E501
-
-        query_params = []
-
-        header_params = {}
-
-        form_params = []
-        local_var_files = {}
-
-        body_params = None
-        # HTTP header `Accept`
-        header_params['Accept'] = self.api_client.select_header_accept(
-            ['*/*'])  # noqa: E501
-
-        # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
-
-        return self.api_client.call_api(
-            '/api/container/{id}/database/{databaseId}/table/{tableId}', 'PUT',
-            path_params,
-            query_params,
-            header_params,
-            body=body_params,
-            post_params=form_params,
-            files=local_var_files,
-            response_type='TableBriefDto',  # 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/.jupyter/api_table/api_client.py b/.jupyter/api_table/api_client.py
deleted file mode 100644
index ad7dbac3be914066b22d990599ece33392227a84..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/api_client.py
+++ /dev/null
@@ -1,632 +0,0 @@
-# coding: utf-8
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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_table.configuration import Configuration
-import api_table.models
-from api_table 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_table.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/.jupyter/api_table/configuration.py b/.jupyter/api_table/configuration.py
deleted file mode 100644
index 557adf4db5a7409e3736e03ecbe0380531dac8a6..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/configuration.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 = "http://localhost:9095"
-        # 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_table")
-        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/.jupyter/api_table/models/__init__.py b/.jupyter/api_table/models/__init__.py
deleted file mode 100644
index 65818bef09589a604af11a71cac062d8ca9b09de..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# coding: utf-8
-
-# flake8: noqa
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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_table.models.api_error_dto import ApiErrorDto
-from api_table.models.column_create_dto import ColumnCreateDto
-from api_table.models.column_dto import ColumnDto
-from api_table.models.concept_dto import ConceptDto
-from api_table.models.image_date_dto import ImageDateDto
-from api_table.models.table_brief_dto import TableBriefDto
-from api_table.models.table_create_dto import TableCreateDto
-from api_table.models.table_dto import TableDto
-from api_table.models.user_brief_dto import UserBriefDto
diff --git a/.jupyter/api_table/models/api_error_dto.py b/.jupyter/api_table/models/api_error_dto.py
deleted file mode 100644
index a67060c6825f53ef2ffb421da1b1386269540ee2..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/api_error_dto.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 ApiErrorDto(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 = {
-        'status': 'str',
-        'message': 'str',
-        'code': 'str'
-    }
-
-    attribute_map = {
-        'status': 'status',
-        'message': 'message',
-        'code': 'code'
-    }
-
-    def __init__(self, status=None, message=None, code=None):  # noqa: E501
-        """ApiErrorDto - a model defined in Swagger"""  # noqa: E501
-        self._status = None
-        self._message = None
-        self._code = None
-        self.discriminator = None
-        self.status = status
-        self.message = message
-        self.code = code
-
-    @property
-    def status(self):
-        """Gets the status of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The status of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._status
-
-    @status.setter
-    def status(self, status):
-        """Sets the status of this ApiErrorDto.
-
-
-        :param status: The status of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if status is None:
-            raise ValueError("Invalid value for `status`, must not be `None`")  # noqa: E501
-        allowed_values = ["100 CONTINUE", "101 SWITCHING_PROTOCOLS", "102 PROCESSING", "103 CHECKPOINT", "200 OK", "201 CREATED", "202 ACCEPTED", "203 NON_AUTHORITATIVE_INFORMATION", "204 NO_CONTENT", "205 RESET_CONTENT", "206 PARTIAL_CONTENT", "207 MULTI_STATUS", "208 ALREADY_REPORTED", "226 IM_USED", "300 MULTIPLE_CHOICES", "301 MOVED_PERMANENTLY", "302 FOUND", "302 MOVED_TEMPORARILY", "303 SEE_OTHER", "304 NOT_MODIFIED", "305 USE_PROXY", "307 TEMPORARY_REDIRECT", "308 PERMANENT_REDIRECT", "400 BAD_REQUEST", "401 UNAUTHORIZED", "402 PAYMENT_REQUIRED", "403 FORBIDDEN", "404 NOT_FOUND", "405 METHOD_NOT_ALLOWED", "406 NOT_ACCEPTABLE", "407 PROXY_AUTHENTICATION_REQUIRED", "408 REQUEST_TIMEOUT", "409 CONFLICT", "410 GONE", "411 LENGTH_REQUIRED", "412 PRECONDITION_FAILED", "413 PAYLOAD_TOO_LARGE", "413 REQUEST_ENTITY_TOO_LARGE", "414 URI_TOO_LONG", "414 REQUEST_URI_TOO_LONG", "415 UNSUPPORTED_MEDIA_TYPE", "416 REQUESTED_RANGE_NOT_SATISFIABLE", "417 EXPECTATION_FAILED", "418 I_AM_A_TEAPOT", "419 INSUFFICIENT_SPACE_ON_RESOURCE", "420 METHOD_FAILURE", "421 DESTINATION_LOCKED", "422 UNPROCESSABLE_ENTITY", "423 LOCKED", "424 FAILED_DEPENDENCY", "425 TOO_EARLY", "426 UPGRADE_REQUIRED", "428 PRECONDITION_REQUIRED", "429 TOO_MANY_REQUESTS", "431 REQUEST_HEADER_FIELDS_TOO_LARGE", "451 UNAVAILABLE_FOR_LEGAL_REASONS", "500 INTERNAL_SERVER_ERROR", "501 NOT_IMPLEMENTED", "502 BAD_GATEWAY", "503 SERVICE_UNAVAILABLE", "504 GATEWAY_TIMEOUT", "505 HTTP_VERSION_NOT_SUPPORTED", "506 VARIANT_ALSO_NEGOTIATES", "507 INSUFFICIENT_STORAGE", "508 LOOP_DETECTED", "509 BANDWIDTH_LIMIT_EXCEEDED", "510 NOT_EXTENDED", "511 NETWORK_AUTHENTICATION_REQUIRED"]  # noqa: E501
-        if status not in allowed_values:
-            raise ValueError(
-                "Invalid value for `status` ({0}), must be one of {1}"  # noqa: E501
-                .format(status, allowed_values)
-            )
-
-        self._status = status
-
-    @property
-    def message(self):
-        """Gets the message of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The message of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._message
-
-    @message.setter
-    def message(self, message):
-        """Sets the message of this ApiErrorDto.
-
-
-        :param message: The message of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if message is None:
-            raise ValueError("Invalid value for `message`, must not be `None`")  # noqa: E501
-
-        self._message = message
-
-    @property
-    def code(self):
-        """Gets the code of this ApiErrorDto.  # noqa: E501
-
-
-        :return: The code of this ApiErrorDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._code
-
-    @code.setter
-    def code(self, code):
-        """Sets the code of this ApiErrorDto.
-
-
-        :param code: The code of this ApiErrorDto.  # noqa: E501
-        :type: str
-        """
-        if code is None:
-            raise ValueError("Invalid value for `code`, must not be `None`")  # noqa: E501
-
-        self._code = code
-
-    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(ApiErrorDto, 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, ApiErrorDto):
-            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/.jupyter/api_table/models/column_create_dto.py b/.jupyter/api_table/models/column_create_dto.py
deleted file mode 100644
index da2d3b81f6f29594e466d6831c3b76cd85738a22..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/column_create_dto.py
+++ /dev/null
@@ -1,355 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 ColumnCreateDto(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 = {
-        'name': 'str',
-        'type': 'str',
-        'dfid': 'int',
-        'unique': 'bool',
-        'references': 'str',
-        'primary_key': 'bool',
-        'null_allowed': 'bool',
-        'check_expression': 'str',
-        'foreign_key': 'str',
-        'enum_values': 'list[str]'
-    }
-
-    attribute_map = {
-        'name': 'name',
-        'type': 'type',
-        'dfid': 'dfid',
-        'unique': 'unique',
-        'references': 'references',
-        'primary_key': 'primary_key',
-        'null_allowed': 'null_allowed',
-        'check_expression': 'check_expression',
-        'foreign_key': 'foreign_key',
-        'enum_values': 'enum_values'
-    }
-
-    def __init__(self, name=None, type=None, dfid=None, unique=None, references=None, primary_key=None, null_allowed=None, check_expression=None, foreign_key=None, enum_values=None):  # noqa: E501
-        """ColumnCreateDto - a model defined in Swagger"""  # noqa: E501
-        self._name = None
-        self._type = None
-        self._dfid = None
-        self._unique = None
-        self._references = None
-        self._primary_key = None
-        self._null_allowed = None
-        self._check_expression = None
-        self._foreign_key = None
-        self._enum_values = None
-        self.discriminator = None
-        self.name = name
-        self.type = type
-        if dfid is not None:
-            self.dfid = dfid
-        self.unique = unique
-        if references is not None:
-            self.references = references
-        self.primary_key = primary_key
-        self.null_allowed = null_allowed
-        if check_expression is not None:
-            self.check_expression = check_expression
-        if foreign_key is not None:
-            self.foreign_key = foreign_key
-        if enum_values is not None:
-            self.enum_values = enum_values
-
-    @property
-    def name(self):
-        """Gets the name of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The name of this ColumnCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ColumnCreateDto.
-
-
-        :param name: The name of this ColumnCreateDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def type(self):
-        """Gets the type of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The type of this ColumnCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._type
-
-    @type.setter
-    def type(self, type):
-        """Sets the type of this ColumnCreateDto.
-
-
-        :param type: The type of this ColumnCreateDto.  # noqa: E501
-        :type: str
-        """
-        if type is None:
-            raise ValueError("Invalid value for `type`, must not be `None`")  # noqa: E501
-        allowed_values = ["enum", "number", "decimal", "string", "text", "boolean", "date", "timestamp", "blob"]  # noqa: E501
-        if type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `type` ({0}), must be one of {1}"  # noqa: E501
-                .format(type, allowed_values)
-            )
-
-        self._type = type
-
-    @property
-    def dfid(self):
-        """Gets the dfid of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The dfid of this ColumnCreateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._dfid
-
-    @dfid.setter
-    def dfid(self, dfid):
-        """Sets the dfid of this ColumnCreateDto.
-
-
-        :param dfid: The dfid of this ColumnCreateDto.  # noqa: E501
-        :type: int
-        """
-
-        self._dfid = dfid
-
-    @property
-    def unique(self):
-        """Gets the unique of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The unique of this ColumnCreateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._unique
-
-    @unique.setter
-    def unique(self, unique):
-        """Sets the unique of this ColumnCreateDto.
-
-
-        :param unique: The unique of this ColumnCreateDto.  # noqa: E501
-        :type: bool
-        """
-        if unique is None:
-            raise ValueError("Invalid value for `unique`, must not be `None`")  # noqa: E501
-
-        self._unique = unique
-
-    @property
-    def references(self):
-        """Gets the references of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The references of this ColumnCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._references
-
-    @references.setter
-    def references(self, references):
-        """Sets the references of this ColumnCreateDto.
-
-
-        :param references: The references of this ColumnCreateDto.  # noqa: E501
-        :type: str
-        """
-
-        self._references = references
-
-    @property
-    def primary_key(self):
-        """Gets the primary_key of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The primary_key of this ColumnCreateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._primary_key
-
-    @primary_key.setter
-    def primary_key(self, primary_key):
-        """Sets the primary_key of this ColumnCreateDto.
-
-
-        :param primary_key: The primary_key of this ColumnCreateDto.  # noqa: E501
-        :type: bool
-        """
-        if primary_key is None:
-            raise ValueError("Invalid value for `primary_key`, must not be `None`")  # noqa: E501
-
-        self._primary_key = primary_key
-
-    @property
-    def null_allowed(self):
-        """Gets the null_allowed of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The null_allowed of this ColumnCreateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._null_allowed
-
-    @null_allowed.setter
-    def null_allowed(self, null_allowed):
-        """Sets the null_allowed of this ColumnCreateDto.
-
-
-        :param null_allowed: The null_allowed of this ColumnCreateDto.  # noqa: E501
-        :type: bool
-        """
-        if null_allowed is None:
-            raise ValueError("Invalid value for `null_allowed`, must not be `None`")  # noqa: E501
-
-        self._null_allowed = null_allowed
-
-    @property
-    def check_expression(self):
-        """Gets the check_expression of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The check_expression of this ColumnCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._check_expression
-
-    @check_expression.setter
-    def check_expression(self, check_expression):
-        """Sets the check_expression of this ColumnCreateDto.
-
-
-        :param check_expression: The check_expression of this ColumnCreateDto.  # noqa: E501
-        :type: str
-        """
-
-        self._check_expression = check_expression
-
-    @property
-    def foreign_key(self):
-        """Gets the foreign_key of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The foreign_key of this ColumnCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._foreign_key
-
-    @foreign_key.setter
-    def foreign_key(self, foreign_key):
-        """Sets the foreign_key of this ColumnCreateDto.
-
-
-        :param foreign_key: The foreign_key of this ColumnCreateDto.  # noqa: E501
-        :type: str
-        """
-
-        self._foreign_key = foreign_key
-
-    @property
-    def enum_values(self):
-        """Gets the enum_values of this ColumnCreateDto.  # noqa: E501
-
-
-        :return: The enum_values of this ColumnCreateDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._enum_values
-
-    @enum_values.setter
-    def enum_values(self, enum_values):
-        """Sets the enum_values of this ColumnCreateDto.
-
-
-        :param enum_values: The enum_values of this ColumnCreateDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._enum_values = enum_values
-
-    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(ColumnCreateDto, 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, ColumnCreateDto):
-            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/.jupyter/api_table/models/column_dto.py b/.jupyter/api_table/models/column_dto.py
deleted file mode 100644
index 965d0658fd1d0996c37114eaac844cbe3d39f2db..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/column_dto.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 ColumnDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'unique': 'bool',
-        'references': 'str',
-        'internal_name': 'str',
-        'date_format': 'ImageDateDto',
-        'auto_generated': 'bool',
-        'is_primary_key': 'bool',
-        'column_type': 'str',
-        'column_concept': 'ConceptDto',
-        'decimal_digits_before': 'int',
-        'decimal_digits_after': 'int',
-        'is_null_allowed': 'bool',
-        'check_expression': 'str',
-        'foreign_key': 'str',
-        'enum_values': 'list[str]'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'unique': 'unique',
-        'references': 'references',
-        'internal_name': 'internal_name',
-        'date_format': 'date_format',
-        'auto_generated': 'auto_generated',
-        'is_primary_key': 'is_primary_key',
-        'column_type': 'column_type',
-        'column_concept': 'column_concept',
-        'decimal_digits_before': 'decimal_digits_before',
-        'decimal_digits_after': 'decimal_digits_after',
-        'is_null_allowed': 'is_null_allowed',
-        'check_expression': 'check_expression',
-        'foreign_key': 'foreign_key',
-        'enum_values': 'enum_values'
-    }
-
-    def __init__(self, id=None, name=None, unique=None, references=None, internal_name=None, date_format=None, auto_generated=None, is_primary_key=None, column_type=None, column_concept=None, decimal_digits_before=None, decimal_digits_after=None, is_null_allowed=None, check_expression=None, foreign_key=None, enum_values=None):  # noqa: E501
-        """ColumnDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._unique = None
-        self._references = None
-        self._internal_name = None
-        self._date_format = None
-        self._auto_generated = None
-        self._is_primary_key = None
-        self._column_type = None
-        self._column_concept = None
-        self._decimal_digits_before = None
-        self._decimal_digits_after = None
-        self._is_null_allowed = None
-        self._check_expression = None
-        self._foreign_key = None
-        self._enum_values = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.unique = unique
-        if references is not None:
-            self.references = references
-        self.internal_name = internal_name
-        if date_format is not None:
-            self.date_format = date_format
-        self.auto_generated = auto_generated
-        self.is_primary_key = is_primary_key
-        self.column_type = column_type
-        if column_concept is not None:
-            self.column_concept = column_concept
-        if decimal_digits_before is not None:
-            self.decimal_digits_before = decimal_digits_before
-        if decimal_digits_after is not None:
-            self.decimal_digits_after = decimal_digits_after
-        self.is_null_allowed = is_null_allowed
-        if check_expression is not None:
-            self.check_expression = check_expression
-        if foreign_key is not None:
-            self.foreign_key = foreign_key
-        if enum_values is not None:
-            self.enum_values = enum_values
-
-    @property
-    def id(self):
-        """Gets the id of this ColumnDto.  # noqa: E501
-
-
-        :return: The id of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ColumnDto.
-
-
-        :param id: The id of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this ColumnDto.  # noqa: E501
-
-
-        :return: The name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ColumnDto.
-
-
-        :param name: The name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def unique(self):
-        """Gets the unique of this ColumnDto.  # noqa: E501
-
-
-        :return: The unique of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._unique
-
-    @unique.setter
-    def unique(self, unique):
-        """Sets the unique of this ColumnDto.
-
-
-        :param unique: The unique of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if unique is None:
-            raise ValueError("Invalid value for `unique`, must not be `None`")  # noqa: E501
-
-        self._unique = unique
-
-    @property
-    def references(self):
-        """Gets the references of this ColumnDto.  # noqa: E501
-
-
-        :return: The references of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._references
-
-    @references.setter
-    def references(self, references):
-        """Sets the references of this ColumnDto.
-
-
-        :param references: The references of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._references = references
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this ColumnDto.  # noqa: E501
-
-
-        :return: The internal_name of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this ColumnDto.
-
-
-        :param internal_name: The internal_name of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    @property
-    def date_format(self):
-        """Gets the date_format of this ColumnDto.  # noqa: E501
-
-
-        :return: The date_format of this ColumnDto.  # noqa: E501
-        :rtype: ImageDateDto
-        """
-        return self._date_format
-
-    @date_format.setter
-    def date_format(self, date_format):
-        """Sets the date_format of this ColumnDto.
-
-
-        :param date_format: The date_format of this ColumnDto.  # noqa: E501
-        :type: ImageDateDto
-        """
-
-        self._date_format = date_format
-
-    @property
-    def auto_generated(self):
-        """Gets the auto_generated of this ColumnDto.  # noqa: E501
-
-
-        :return: The auto_generated of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._auto_generated
-
-    @auto_generated.setter
-    def auto_generated(self, auto_generated):
-        """Sets the auto_generated of this ColumnDto.
-
-
-        :param auto_generated: The auto_generated of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if auto_generated is None:
-            raise ValueError("Invalid value for `auto_generated`, must not be `None`")  # noqa: E501
-
-        self._auto_generated = auto_generated
-
-    @property
-    def is_primary_key(self):
-        """Gets the is_primary_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_primary_key of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_primary_key
-
-    @is_primary_key.setter
-    def is_primary_key(self, is_primary_key):
-        """Sets the is_primary_key of this ColumnDto.
-
-
-        :param is_primary_key: The is_primary_key of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_primary_key is None:
-            raise ValueError("Invalid value for `is_primary_key`, must not be `None`")  # noqa: E501
-
-        self._is_primary_key = is_primary_key
-
-    @property
-    def column_type(self):
-        """Gets the column_type of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_type of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._column_type
-
-    @column_type.setter
-    def column_type(self, column_type):
-        """Sets the column_type of this ColumnDto.
-
-
-        :param column_type: The column_type of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-        if column_type is None:
-            raise ValueError("Invalid value for `column_type`, must not be `None`")  # noqa: E501
-        allowed_values = ["enum", "number", "decimal", "string", "text", "boolean", "date", "timestamp", "blob"]  # noqa: E501
-        if column_type not in allowed_values:
-            raise ValueError(
-                "Invalid value for `column_type` ({0}), must be one of {1}"  # noqa: E501
-                .format(column_type, allowed_values)
-            )
-
-        self._column_type = column_type
-
-    @property
-    def column_concept(self):
-        """Gets the column_concept of this ColumnDto.  # noqa: E501
-
-
-        :return: The column_concept of this ColumnDto.  # noqa: E501
-        :rtype: ConceptDto
-        """
-        return self._column_concept
-
-    @column_concept.setter
-    def column_concept(self, column_concept):
-        """Sets the column_concept of this ColumnDto.
-
-
-        :param column_concept: The column_concept of this ColumnDto.  # noqa: E501
-        :type: ConceptDto
-        """
-
-        self._column_concept = column_concept
-
-    @property
-    def decimal_digits_before(self):
-        """Gets the decimal_digits_before of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_before
-
-    @decimal_digits_before.setter
-    def decimal_digits_before(self, decimal_digits_before):
-        """Sets the decimal_digits_before of this ColumnDto.
-
-
-        :param decimal_digits_before: The decimal_digits_before of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_before = decimal_digits_before
-
-    @property
-    def decimal_digits_after(self):
-        """Gets the decimal_digits_after of this ColumnDto.  # noqa: E501
-
-
-        :return: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._decimal_digits_after
-
-    @decimal_digits_after.setter
-    def decimal_digits_after(self, decimal_digits_after):
-        """Sets the decimal_digits_after of this ColumnDto.
-
-
-        :param decimal_digits_after: The decimal_digits_after of this ColumnDto.  # noqa: E501
-        :type: int
-        """
-
-        self._decimal_digits_after = decimal_digits_after
-
-    @property
-    def is_null_allowed(self):
-        """Gets the is_null_allowed of this ColumnDto.  # noqa: E501
-
-
-        :return: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._is_null_allowed
-
-    @is_null_allowed.setter
-    def is_null_allowed(self, is_null_allowed):
-        """Sets the is_null_allowed of this ColumnDto.
-
-
-        :param is_null_allowed: The is_null_allowed of this ColumnDto.  # noqa: E501
-        :type: bool
-        """
-        if is_null_allowed is None:
-            raise ValueError("Invalid value for `is_null_allowed`, must not be `None`")  # noqa: E501
-
-        self._is_null_allowed = is_null_allowed
-
-    @property
-    def check_expression(self):
-        """Gets the check_expression of this ColumnDto.  # noqa: E501
-
-
-        :return: The check_expression of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._check_expression
-
-    @check_expression.setter
-    def check_expression(self, check_expression):
-        """Sets the check_expression of this ColumnDto.
-
-
-        :param check_expression: The check_expression of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._check_expression = check_expression
-
-    @property
-    def foreign_key(self):
-        """Gets the foreign_key of this ColumnDto.  # noqa: E501
-
-
-        :return: The foreign_key of this ColumnDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._foreign_key
-
-    @foreign_key.setter
-    def foreign_key(self, foreign_key):
-        """Sets the foreign_key of this ColumnDto.
-
-
-        :param foreign_key: The foreign_key of this ColumnDto.  # noqa: E501
-        :type: str
-        """
-
-        self._foreign_key = foreign_key
-
-    @property
-    def enum_values(self):
-        """Gets the enum_values of this ColumnDto.  # noqa: E501
-
-
-        :return: The enum_values of this ColumnDto.  # noqa: E501
-        :rtype: list[str]
-        """
-        return self._enum_values
-
-    @enum_values.setter
-    def enum_values(self, enum_values):
-        """Sets the enum_values of this ColumnDto.
-
-
-        :param enum_values: The enum_values of this ColumnDto.  # noqa: E501
-        :type: list[str]
-        """
-
-        self._enum_values = enum_values
-
-    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(ColumnDto, 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, ColumnDto):
-            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/.jupyter/api_table/models/concept_dto.py b/.jupyter/api_table/models/concept_dto.py
deleted file mode 100644
index 7e02a3ae796b19f32d86795638fdbbbf467a3f3d..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/concept_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 ConceptDto(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 = {
-        'uri': 'str',
-        'name': 'str',
-        'created': 'datetime'
-    }
-
-    attribute_map = {
-        'uri': 'uri',
-        'name': 'name',
-        'created': 'created'
-    }
-
-    def __init__(self, uri=None, name=None, created=None):  # noqa: E501
-        """ConceptDto - a model defined in Swagger"""  # noqa: E501
-        self._uri = None
-        self._name = None
-        self._created = None
-        self.discriminator = None
-        self.uri = uri
-        self.name = name
-        self.created = created
-
-    @property
-    def uri(self):
-        """Gets the uri of this ConceptDto.  # noqa: E501
-
-
-        :return: The uri of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._uri
-
-    @uri.setter
-    def uri(self, uri):
-        """Sets the uri of this ConceptDto.
-
-
-        :param uri: The uri of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if uri is None:
-            raise ValueError("Invalid value for `uri`, must not be `None`")  # noqa: E501
-
-        self._uri = uri
-
-    @property
-    def name(self):
-        """Gets the name of this ConceptDto.  # noqa: E501
-
-
-        :return: The name of this ConceptDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this ConceptDto.
-
-
-        :param name: The name of this ConceptDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def created(self):
-        """Gets the created of this ConceptDto.  # noqa: E501
-
-
-        :return: The created of this ConceptDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this ConceptDto.
-
-
-        :param created: The created of this ConceptDto.  # noqa: E501
-        :type: datetime
-        """
-        if created is None:
-            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501
-
-        self._created = created
-
-    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(ConceptDto, 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, ConceptDto):
-            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/.jupyter/api_table/models/image_date_dto.py b/.jupyter/api_table/models/image_date_dto.py
deleted file mode 100644
index 7550028900c37eee6f432eb1e8278b9a36a47504..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/image_date_dto.py
+++ /dev/null
@@ -1,245 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 ImageDateDto(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 = {
-        'id': 'int',
-        'example': 'str',
-        'database_format': 'str',
-        'unix_format': 'str',
-        'has_time': 'bool',
-        'created_at': 'datetime'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'example': 'example',
-        'database_format': 'database_format',
-        'unix_format': 'unix_format',
-        'has_time': 'has_time',
-        'created_at': 'created_at'
-    }
-
-    def __init__(self, id=None, example=None, database_format=None, unix_format=None, has_time=None, created_at=None):  # noqa: E501
-        """ImageDateDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._example = None
-        self._database_format = None
-        self._unix_format = None
-        self._has_time = None
-        self._created_at = None
-        self.discriminator = None
-        self.id = id
-        self.example = example
-        self.database_format = database_format
-        self.unix_format = unix_format
-        self.has_time = has_time
-        if created_at is not None:
-            self.created_at = created_at
-
-    @property
-    def id(self):
-        """Gets the id of this ImageDateDto.  # noqa: E501
-
-
-        :return: The id of this ImageDateDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this ImageDateDto.
-
-
-        :param id: The id of this ImageDateDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def example(self):
-        """Gets the example of this ImageDateDto.  # noqa: E501
-
-
-        :return: The example of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._example
-
-    @example.setter
-    def example(self, example):
-        """Sets the example of this ImageDateDto.
-
-
-        :param example: The example of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if example is None:
-            raise ValueError("Invalid value for `example`, must not be `None`")  # noqa: E501
-
-        self._example = example
-
-    @property
-    def database_format(self):
-        """Gets the database_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The database_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._database_format
-
-    @database_format.setter
-    def database_format(self, database_format):
-        """Sets the database_format of this ImageDateDto.
-
-
-        :param database_format: The database_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if database_format is None:
-            raise ValueError("Invalid value for `database_format`, must not be `None`")  # noqa: E501
-
-        self._database_format = database_format
-
-    @property
-    def unix_format(self):
-        """Gets the unix_format of this ImageDateDto.  # noqa: E501
-
-
-        :return: The unix_format of this ImageDateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._unix_format
-
-    @unix_format.setter
-    def unix_format(self, unix_format):
-        """Sets the unix_format of this ImageDateDto.
-
-
-        :param unix_format: The unix_format of this ImageDateDto.  # noqa: E501
-        :type: str
-        """
-        if unix_format is None:
-            raise ValueError("Invalid value for `unix_format`, must not be `None`")  # noqa: E501
-
-        self._unix_format = unix_format
-
-    @property
-    def has_time(self):
-        """Gets the has_time of this ImageDateDto.  # noqa: E501
-
-
-        :return: The has_time of this ImageDateDto.  # noqa: E501
-        :rtype: bool
-        """
-        return self._has_time
-
-    @has_time.setter
-    def has_time(self, has_time):
-        """Sets the has_time of this ImageDateDto.
-
-
-        :param has_time: The has_time of this ImageDateDto.  # noqa: E501
-        :type: bool
-        """
-        if has_time is None:
-            raise ValueError("Invalid value for `has_time`, must not be `None`")  # noqa: E501
-
-        self._has_time = has_time
-
-    @property
-    def created_at(self):
-        """Gets the created_at of this ImageDateDto.  # noqa: E501
-
-
-        :return: The created_at of this ImageDateDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created_at
-
-    @created_at.setter
-    def created_at(self, created_at):
-        """Sets the created_at of this ImageDateDto.
-
-
-        :param created_at: The created_at of this ImageDateDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created_at = created_at
-
-    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(ImageDateDto, 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, ImageDateDto):
-            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/.jupyter/api_table/models/table_brief_dto.py b/.jupyter/api_table/models/table_brief_dto.py
deleted file mode 100644
index a811499bd935581d4021a5783ffd3c5490a9907c..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/table_brief_dto.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 TableBriefDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'creator': 'UserBriefDto',
-        'internal_name': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'creator': 'creator',
-        'internal_name': 'internal_name'
-    }
-
-    def __init__(self, id=None, name=None, creator=None, internal_name=None):  # noqa: E501
-        """TableBriefDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._creator = None
-        self._internal_name = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.creator = creator
-        self.internal_name = internal_name
-
-    @property
-    def id(self):
-        """Gets the id of this TableBriefDto.  # noqa: E501
-
-
-        :return: The id of this TableBriefDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this TableBriefDto.
-
-
-        :param id: The id of this TableBriefDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this TableBriefDto.  # noqa: E501
-
-
-        :return: The name of this TableBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableBriefDto.
-
-
-        :param name: The name of this TableBriefDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def creator(self):
-        """Gets the creator of this TableBriefDto.  # noqa: E501
-
-
-        :return: The creator of this TableBriefDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this TableBriefDto.
-
-
-        :param creator: The creator of this TableBriefDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this TableBriefDto.  # noqa: E501
-
-
-        :return: The internal_name of this TableBriefDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this TableBriefDto.
-
-
-        :param internal_name: The internal_name of this TableBriefDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    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(TableBriefDto, 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, TableBriefDto):
-            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/.jupyter/api_table/models/table_create_dto.py b/.jupyter/api_table/models/table_create_dto.py
deleted file mode 100644
index b80fd32e1fc602b5834e167df02cf02a5dc12c3a..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/table_create_dto.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 TableCreateDto(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 = {
-        'name': 'str',
-        'description': 'str',
-        'columns': 'list[ColumnCreateDto]'
-    }
-
-    attribute_map = {
-        'name': 'name',
-        'description': 'description',
-        'columns': 'columns'
-    }
-
-    def __init__(self, name=None, description=None, columns=None):  # noqa: E501
-        """TableCreateDto - a model defined in Swagger"""  # noqa: E501
-        self._name = None
-        self._description = None
-        self._columns = None
-        self.discriminator = None
-        self.name = name
-        self.description = description
-        self.columns = columns
-
-    @property
-    def name(self):
-        """Gets the name of this TableCreateDto.  # noqa: E501
-
-
-        :return: The name of this TableCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableCreateDto.
-
-
-        :param name: The name of this TableCreateDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def description(self):
-        """Gets the description of this TableCreateDto.  # noqa: E501
-
-
-        :return: The description of this TableCreateDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this TableCreateDto.
-
-
-        :param description: The description of this TableCreateDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def columns(self):
-        """Gets the columns of this TableCreateDto.  # noqa: E501
-
-
-        :return: The columns of this TableCreateDto.  # noqa: E501
-        :rtype: list[ColumnCreateDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this TableCreateDto.
-
-
-        :param columns: The columns of this TableCreateDto.  # noqa: E501
-        :type: list[ColumnCreateDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    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(TableCreateDto, 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, TableCreateDto):
-            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/.jupyter/api_table/models/table_dto.py b/.jupyter/api_table/models/table_dto.py
deleted file mode 100644
index 00af01d052aaddfcda9f0b561dd283325fcd43bd..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/models/table_dto.py
+++ /dev/null
@@ -1,299 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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 TableDto(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 = {
-        'id': 'int',
-        'name': 'str',
-        'creator': 'UserBriefDto',
-        'topic': 'str',
-        'description': 'str',
-        'created': 'datetime',
-        'columns': 'list[ColumnDto]',
-        'internal_name': 'str'
-    }
-
-    attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'creator': 'creator',
-        'topic': 'topic',
-        'description': 'description',
-        'created': 'created',
-        'columns': 'columns',
-        'internal_name': 'internal_name'
-    }
-
-    def __init__(self, id=None, name=None, creator=None, topic=None, description=None, created=None, columns=None, internal_name=None):  # noqa: E501
-        """TableDto - a model defined in Swagger"""  # noqa: E501
-        self._id = None
-        self._name = None
-        self._creator = None
-        self._topic = None
-        self._description = None
-        self._created = None
-        self._columns = None
-        self._internal_name = None
-        self.discriminator = None
-        self.id = id
-        self.name = name
-        self.creator = creator
-        self.topic = topic
-        self.description = description
-        if created is not None:
-            self.created = created
-        self.columns = columns
-        self.internal_name = internal_name
-
-    @property
-    def id(self):
-        """Gets the id of this TableDto.  # noqa: E501
-
-
-        :return: The id of this TableDto.  # noqa: E501
-        :rtype: int
-        """
-        return self._id
-
-    @id.setter
-    def id(self, id):
-        """Sets the id of this TableDto.
-
-
-        :param id: The id of this TableDto.  # noqa: E501
-        :type: int
-        """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
-
-        self._id = id
-
-    @property
-    def name(self):
-        """Gets the name of this TableDto.  # noqa: E501
-
-
-        :return: The name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._name
-
-    @name.setter
-    def name(self, name):
-        """Sets the name of this TableDto.
-
-
-        :param name: The name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
-
-        self._name = name
-
-    @property
-    def creator(self):
-        """Gets the creator of this TableDto.  # noqa: E501
-
-
-        :return: The creator of this TableDto.  # noqa: E501
-        :rtype: UserBriefDto
-        """
-        return self._creator
-
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this TableDto.
-
-
-        :param creator: The creator of this TableDto.  # noqa: E501
-        :type: UserBriefDto
-        """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
-
-        self._creator = creator
-
-    @property
-    def topic(self):
-        """Gets the topic of this TableDto.  # noqa: E501
-
-
-        :return: The topic of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._topic
-
-    @topic.setter
-    def topic(self, topic):
-        """Sets the topic of this TableDto.
-
-
-        :param topic: The topic of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if topic is None:
-            raise ValueError("Invalid value for `topic`, must not be `None`")  # noqa: E501
-
-        self._topic = topic
-
-    @property
-    def description(self):
-        """Gets the description of this TableDto.  # noqa: E501
-
-
-        :return: The description of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._description
-
-    @description.setter
-    def description(self, description):
-        """Sets the description of this TableDto.
-
-
-        :param description: The description of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if description is None:
-            raise ValueError("Invalid value for `description`, must not be `None`")  # noqa: E501
-
-        self._description = description
-
-    @property
-    def created(self):
-        """Gets the created of this TableDto.  # noqa: E501
-
-
-        :return: The created of this TableDto.  # noqa: E501
-        :rtype: datetime
-        """
-        return self._created
-
-    @created.setter
-    def created(self, created):
-        """Sets the created of this TableDto.
-
-
-        :param created: The created of this TableDto.  # noqa: E501
-        :type: datetime
-        """
-
-        self._created = created
-
-    @property
-    def columns(self):
-        """Gets the columns of this TableDto.  # noqa: E501
-
-
-        :return: The columns of this TableDto.  # noqa: E501
-        :rtype: list[ColumnDto]
-        """
-        return self._columns
-
-    @columns.setter
-    def columns(self, columns):
-        """Sets the columns of this TableDto.
-
-
-        :param columns: The columns of this TableDto.  # noqa: E501
-        :type: list[ColumnDto]
-        """
-        if columns is None:
-            raise ValueError("Invalid value for `columns`, must not be `None`")  # noqa: E501
-
-        self._columns = columns
-
-    @property
-    def internal_name(self):
-        """Gets the internal_name of this TableDto.  # noqa: E501
-
-
-        :return: The internal_name of this TableDto.  # noqa: E501
-        :rtype: str
-        """
-        return self._internal_name
-
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this TableDto.
-
-
-        :param internal_name: The internal_name of this TableDto.  # noqa: E501
-        :type: str
-        """
-        if internal_name is None:
-            raise ValueError("Invalid value for `internal_name`, must not be `None`")  # noqa: E501
-
-        self._internal_name = internal_name
-
-    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(TableDto, 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, TableDto):
-            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/.jupyter/api_table/rest.py b/.jupyter/api_table/rest.py
deleted file mode 100644
index 6796e1ae47c980a57126ed5dd684a10cd09e3e00..0000000000000000000000000000000000000000
--- a/.jupyter/api_table/rest.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# coding: utf-8
-
-"""
-    Database Repository Table Service API
-
-    Service that manages the tables  # 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/.jupyter/tuple_publish.ipynb b/.jupyter/tuple_publish.ipynb
index 228ff7dcc40b5bddd3bd750731ae84f0614cc1d0..1c34c2d3f8a3afa3b54511733838020fb3f7bf6a 100644
--- a/.jupyter/tuple_publish.ipynb
+++ b/.jupyter/tuple_publish.ipynb
@@ -15,7 +15,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 1,
    "metadata": {
     "pycharm": {
      "name": "#%%\n"
diff --git a/docker-compose.demo.yml b/docker-compose.demo.yml
index e57deede5a817f994cf72cd2effbef2585b22292..94828639481205c70dd01e5e1abbfcc95afc61df 100644
--- a/docker-compose.demo.yml
+++ b/docker-compose.demo.yml
@@ -1,3 +1,5 @@
+# Docker compose file for the public demo instance
+
 version: "3.6"
 
 volumes:
@@ -96,7 +98,7 @@ services:
       container-service:
         condition: service_healthy
       broker-service:
-        condition: service_healthy
+        condition: service_started
       authentication-service:
         condition: service_healthy
     logging:
@@ -153,7 +155,7 @@ services:
       discovery-service:
         condition: service_healthy
       broker-service:
-        condition: service_healthy
+        condition: service_started
       metadata-db:
         condition: service_healthy
     logging:
@@ -211,7 +213,7 @@ services:
       search-service:
         condition: service_started
       broker-service:
-        condition: service_healthy
+        condition: service_started
     logging:
       driver: json-file
 
@@ -343,6 +345,6 @@ services:
     environment:
       KEY: "${UI_KEY}"
       CERT: "${UI_CERT}"
-      SANDBOX: true
+      SANDBOX: 1
     logging:
       driver: json-file
diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml
index 210e34c6ca96ee4bac1acb8f06d18ec66d3a8463..4c624cc17e1fe28e778b084abfda9223f9e756e8 100644
--- a/docker-compose.prod.yml
+++ b/docker-compose.prod.yml
@@ -96,7 +96,7 @@ services:
       container-service:
         condition: service_healthy
       broker-service:
-        condition: service_healthy
+        condition: service_started
       authentication-service:
         condition: service_healthy
     logging:
@@ -153,7 +153,7 @@ services:
       discovery-service:
         condition: service_healthy
       broker-service:
-        condition: service_healthy
+        condition: service_started
       metadata-db:
         condition: service_healthy
     logging:
@@ -211,7 +211,7 @@ services:
       search-service:
         condition: service_started
       broker-service:
-        condition: service_healthy
+        condition: service_started
     logging:
       driver: json-file
 
diff --git a/docker-compose.yml b/docker-compose.yml
index 7be291c5f0c071bc654eb858ec88a6e0072a2ab2..2a14f634639173017ce604a40a9ebe7ad4344736 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,14 +6,14 @@ volumes:
   fda-broker-service-data:
 
 networks:
-  fda-public:
-    name: fda-public
+  public:
+    name: public
     driver: bridge
     ipam:
       config:
         - subnet: 172.29.0.0/16
-  fda-userdb:
-    name: fda-userdb
+  userdb:
+    name: userdb
     driver: bridge
     ipam:
       config:
@@ -28,7 +28,7 @@ services:
     build: ./fda-metadata-db
     image: fda-metadata-db
     networks:
-      fda-public:
+      public:
     volumes:
       - fda-metadata-db-data:/var/lib/postgresql/data
     ports:
@@ -47,7 +47,7 @@ services:
     build: ./fda-discovery-service
     image: fda-discovery-service
     networks:
-      fda-public:
+      public:
     environment:
       SPRING_PROFILES_ACTIVE: docker
     ports:
@@ -62,7 +62,7 @@ services:
     build: ./fda-gateway-service
     image: fda-gateway-service
     networks:
-      fda-public:
+      public:
     environment:
       SPRING_PROFILES_ACTIVE: docker
     ports:
@@ -80,8 +80,8 @@ services:
     build: ./fda-database-service
     image: fda-database-service
     networks:
-      fda-userdb:
-      fda-public:
+      userdb:
+      public:
     environment:
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
       SEARCH_ENDPOINT: fda-search-service:9200
@@ -107,7 +107,7 @@ services:
     build: ./fda-container-service
     image: fda-container-service
     networks:
-      fda-public:
+      public:
     environment:
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
       SPRING_PROFILES_ACTIVE: docker
@@ -128,7 +128,7 @@ services:
     image: fda-authentication-service
     build: fda-authentication-service
     networks:
-      fda-public:
+      public:
     environment:
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
       WEBSITE: http://localhost:3000
@@ -157,8 +157,8 @@ services:
     build: ./fda-query-service
     image: fda-query-service
     networks:
-      fda-public:
-      fda-userdb:
+      public:
+      userdb:
     environment:
       SPRING_PROFILES_ACTIVE: docker
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
@@ -181,8 +181,8 @@ services:
     build: ./fda-table-service
     image: fda-table-service
     networks:
-      fda-public:
-      fda-userdb:
+      public:
+      userdb:
     environment:
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
       SEARCH_ENDPOINT: fda-search-service:9200
@@ -210,7 +210,7 @@ services:
     build: ./fda-identifier-service
     image: fda-identifier-service
     networks:
-      fda-public:
+      public:
     environment:
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
       SPRING_PROFILES_ACTIVE: docker
@@ -231,8 +231,8 @@ services:
     build: ./fda-analyse-service
     image: fda-analyse-service
     networks:
-      fda-public:
-      fda-userdb:
+      public:
+      userdb:
     command: sh -c "/wait && flask run" # docker-compose should not test the implementation
     environment:
       EUREKA_SERVER: http://fda-discovery-service:9090/eureka/
@@ -255,7 +255,7 @@ services:
     build: ./fda-units-service
     image: fda-units-service
     networks:
-      fda-public:
+      public:
     environment:
       EUREKA_SERVER: http://fda-discovery-service:9090/eureka/
     ports:
@@ -279,7 +279,7 @@ services:
       SPRING_PROFILES_ACTIVE: docker
       GATEWAY_ENDPOINT: http://fda-gateway-service:9095
     networks:
-      fda-public:
+      public:
     ports:
       - "5672:5672"
       - "15672:15672"
@@ -298,7 +298,7 @@ services:
     image: elasticsearch:7.13.4
     command: [ "elasticsearch" ]
     networks:
-      fda-public:
+      public:
     environment:
       - discovery.type=single-node
       - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
@@ -321,7 +321,7 @@ services:
     build: ./fda-ui
     image: fda-ui
     networks:
-      fda-public:
+      public:
     ports:
       - "3000:3000"
     volumes:
diff --git a/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java b/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
index 20e7a4df8d9ee0b3c914adb96d33091c525065ec..99c335de1c3ae5d32962b6e4b4be617f6fd05696 100644
--- a/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
+++ b/fda-container-service/services/src/main/java/at/tuwien/service/impl/ContainerServiceImpl.java
@@ -67,8 +67,7 @@ public class ContainerServiceImpl implements ContainerService {
         }
         final Integer availableTcpPort = SocketUtils.findAvailableTcpPort(10000);
         final HostConfig hostConfig = this.hostConfig
-                .withNetworkMode("fda-userdb")
-                .withLinks(List.of(new Link("fda-database-service", "fda-database-service")))
+                .withNetworkMode("userdb")
                 .withBinds(Bind.parse("/tmp:/tmp"))
                 .withPortBindings(PortBinding.parse(availableTcpPort + ":" + image.get().getDefaultPort()));
         /* save to metadata database */
diff --git a/fda-ui/Dockerfile b/fda-ui/Dockerfile
index 8d99a931eb4c8c1b462945171c7c1c41cc4178a2..e94b6866a56d0116a949dd8a2620449f7ab34179 100644
--- a/fda-ui/Dockerfile
+++ b/fda-ui/Dockerfile
@@ -30,7 +30,7 @@ COPY ./utils ./utils
 
 RUN yarn build > /dev/null
 
-ENV API=http://fda-gateway-service:9095
+ENV API=http://gateway-service:9095
 ENV BROKER_USERNAME=fda
 ENV BROKER_PASSWORD=fda
 ENV SANDBOX=false