From 32e4f2f0ecc1225a24a1b96cfda3da8845f3638f Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Wed, 21 Sep 2022 22:59:56 +0200
Subject: [PATCH] Updated the API

---
 .../api/user_endpoint_api.py                  |   8 +-
 .../api_authentication/models/database_dto.py | 492 +++++++------
 .jupyter/api_container/models/database_dto.py | 492 +++++++------
 .jupyter/api_database/__init__.py             |   3 +-
 .jupyter/api_database/api/__init__.py         |   2 +-
 .../api/container_database_endpoint_api.py    | 119 +++-
 .../api_database/api/database_endpoint_api.py | 659 ++++++++++++++++++
 .jupyter/api_database/models/__init__.py      |   1 +
 .../models/database_create_dto.py             |  29 +-
 .jupyter/api_database/models/database_dto.py  | 492 +++++++------
 .../models/database_modify_dto.py             | 119 ++--
 .../models/database_transfer_dto.py           | 111 +++
 .../api_identifier/models/database_dto.py     | 492 +++++++------
 .jupyter/api_query/models/database_dto.py     | 492 +++++++------
 .jupyter/api_table/api/table_endpoint_api.py  |  44 +-
 .jupyter/load_test.py                         |   6 +-
 .../tuwien/gateway/BrokerServiceGateway.java  |  13 -
 .../impl/BrokerServiceGatewayImpl.java        |  26 +-
 .../java/at/tuwien/mapper/UserMapper.java     |  27 +-
 .../java/at/tuwien/service/QueueService.java  |   3 -
 .../java/at/tuwien/service/UserService.java   |   4 +-
 .../tuwien/service/impl/QueueServiceImpl.java |   1 -
 ...aseEndpoint.java => DatabaseEndpoint.java} |  12 +-
 .../service/AmqpServiceIntegrationTest.java   |   3 +-
 .../java/at/tuwien/config/GatewayConfig.java  |  22 +-
 .../tuwien/gateway/BrokerServiceGateway.java  |   3 +-
 .../AuthenticationServiceGatewayImpl.java     |   6 +-
 .../impl/BrokerServiceGatewayImpl.java        |  27 +-
 .../java/at/tuwien/mapper/AmqpMapper.java     |   9 +
 .../tuwien/service/MessageQueueService.java   |   2 +-
 .../service/impl/RabbitMqServiceImpl.java     |  19 +-
 .../at/tuwien/api/amqp/ChannelDetailsDto.java |   8 +-
 .../java/at/tuwien/api/amqp/ConsumerDto.java  |   8 -
 .../at/tuwien/api/amqp/CreateUserDto.java     |   6 +-
 .../tuwien/api/amqp/CreateVirtualHostDto.java |   6 +-
 .../amqp/GrantVirtualHostPermissionsDto.java  |   8 +-
 .../at/tuwien/api/amqp/QueueBriefDto.java     |   5 +-
 .../java/at/tuwien/api/amqp/TupleDto.java     |   6 +-
 .../at/tuwien/api/auth/JwtResponseDto.java    |  10 +-
 .../at/tuwien/api/auth/LoginRequestDto.java   |   5 +-
 .../at/tuwien/api/auth/SignupRequestDto.java  |   7 +-
 .../api/container/ContainerActionTypeDto.java |   1 -
 .../api/container/ContainerBriefDto.java      |  14 +-
 .../container/ContainerCreateRequestDto.java  |  10 +-
 .../at/tuwien/api/container/ContainerDto.java |  16 +-
 .../api/container/ContainerStateDto.java      |  32 +-
 .../api/container/image/ImageBriefDto.java    |   7 +-
 .../api/container/image/ImageChangeDto.java   |  14 +-
 .../api/container/image/ImageCreateDto.java   |  26 +-
 .../api/container/image/ImageDateDto.java     |  11 +-
 .../tuwien/api/container/image/ImageDto.java  |  24 +-
 .../api/container/image/ImageEnvItemDto.java  |  11 +-
 .../container/image/ImageEnvItemTypeDto.java  |  26 +-
 .../tuwien/api/database/DatabaseBriefDto.java |  16 +-
 .../api/database/DatabaseCreateDto.java       |   6 +-
 .../at/tuwien/api/database/DatabaseDto.java   |  34 +-
 .../api/database/DatabaseModifyDto.java       |  15 +-
 .../api/database/DatabaseTransferDto.java     |   4 +-
 .../at/tuwien/api/database/LicenseDto.java    |   6 +-
 .../tuwien/api/database/SubjectModifyDto.java |   5 +-
 .../query/ExecuteInternalQueryDto.java        |   3 +-
 .../database/query/ExecuteStatementDto.java   |   4 +-
 .../tuwien/api/database/query/ImportDto.java  |  12 +-
 .../api/database/query/QueryBriefDto.java     |  18 +-
 .../tuwien/api/database/query/QueryDto.java   |  18 +-
 .../api/database/query/QueryResultDto.java    |   6 +-
 .../api/database/query/SaveStatementDto.java  |   4 +-
 .../api/database/table/TableBriefDto.java     |   8 +-
 .../api/database/table/TableCreateDto.java    |   7 +-
 .../api/database/table/TableCsvDeleteDto.java |   2 -
 .../api/database/table/TableCsvDto.java       |   3 -
 .../table/TableCsvInformationDto.java         |   6 +-
 .../api/database/table/TableCsvUpdateDto.java |   3 -
 .../tuwien/api/database/table/TableDto.java   |  13 +-
 .../api/database/table/TableHistoryDto.java   |   8 +-
 .../table/columns/ColumnBriefDto.java         |   8 +-
 .../table/columns/ColumnCreateDto.java        |  27 +-
 .../api/database/table/columns/ColumnDto.java |  32 +-
 .../api/database/table/columns/SiUnitDto.java |  36 +-
 .../table/columns/concepts/ConceptDto.java    |   5 +-
 .../at/tuwien/api/document/file/EntryDto.java |  40 --
 .../api/document/file/FileAnnounceDto.java    |  37 -
 .../at/tuwien/api/document/file/FileDto.java  |  72 --
 .../api/document/file/FileEntryDto.java       |  43 --
 .../tuwien/api/document/file/FileKeyDto.java  |  23 -
 .../api/document/file/FileStartDto.java       |  41 --
 .../at/tuwien/api/document/links/DoiDto.java  |  28 -
 .../tuwien/api/document/links/LinksDto.java   |  45 --
 .../links/PersistentIdentifiersDto.java       |  19 -
 .../api/document/metadata/AffiliationDto.java |  20 -
 .../api/document/metadata/CreatorDto.java     |  29 -
 .../api/document/metadata/IdentifierDto.java  |  23 -
 .../document/metadata/IdentifierTypeDto.java  |  29 -
 .../api/document/metadata/MetadataDto.java    |  52 --
 .../document/metadata/PersonOrOrgTypeDto.java |  23 -
 .../metadata/PersonOrOrganizationDto.java     |  35 -
 .../document/metadata/ResourceTypeDto.java    |  24 -
 .../api/document/record/AccessOptionsDto.java |  29 -
 .../api/document/record/AccessTypeDto.java    |  23 -
 .../api/document/record/CreateDraftDto.java   |  31 -
 .../api/document/record/DraftVersionsDto.java |  30 -
 .../api/document/record/EmbargoDto.java       |  29 -
 .../api/document/record/FileTypeDto.java      |  23 -
 .../api/document/record/FilesOptionsDto.java  |  24 -
 .../api/document/record/ModifyDraftDto.java   |  22 -
 .../tuwien/api/document/record/RecordDto.java |  64 --
 .../api/document/record/UpdateDraftDto.java   |  35 -
 .../java/at/tuwien/api/error/ApiErrorDto.java |   8 +-
 .../api/identifier/CreatorCreateDto.java      |   8 +-
 .../at/tuwien/api/identifier/CreatorDto.java  |   7 +-
 .../api/identifier/IdentifierCreateDto.java   |  21 +-
 .../tuwien/api/identifier/IdentifierDto.java  |  30 +-
 .../RelatedIdentifierCreateDto.java           |   8 +-
 .../api/identifier/RelatedIdentifierDto.java  |   7 +-
 .../user/ExchangeUpdatePermissionsDto.java    |  28 +
 .../tuwien/api/user/GrantedAuthorityDto.java  |   4 +-
 .../java/at/tuwien/api/user/UserBriefDto.java |  19 +-
 .../at/tuwien/api/user/UserDetailsDto.java    |   8 +-
 .../main/java/at/tuwien/api/user/UserDto.java |  27 +-
 .../java/at/tuwien/api/user/UserEmailDto.java |   4 +-
 .../at/tuwien/api/user/UserForgotDto.java     |   6 +-
 .../api/user/UserModifyPasswordDto.java       |   5 +-
 .../at/tuwien/api/user/UserPasswordDto.java   |   2 -
 .../java/at/tuwien/api/user/UserResetDto.java |   4 -
 .../java/at/tuwien/api/user/UserRolesDto.java |   2 -
 .../at/tuwien/api/user/UserThemeSetDto.java   |   5 +-
 .../tuwien/api/user/UserTokenModifyDto.java   |  22 -
 .../at/tuwien/api/user/UserUpdateDto.java     |  18 +-
 .../api/user/UserUpdatePermissionsDto.java    |  20 +
 .../java/at/tuwien/entities/user/User.java    |   6 +
 .../src/main/resources/application-docker.yml |   2 +-
 .../at/tuwien/endpoints/TableEndpoint.java    |   8 +-
 .../gateway/AuthenticationServiceGateway.java |   1 -
 .../AuthenticationServiceGatewayImpl.java     |   2 +-
 134 files changed, 2874 insertions(+), 2609 deletions(-)
 create mode 100644 .jupyter/api_database/api/database_endpoint_api.py
 create mode 100644 .jupyter/api_database/models/database_transfer_dto.py
 rename fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/{ContainerDatabaseEndpoint.java => DatabaseEndpoint.java} (93%)
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/EntryDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileAnnounceDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileEntryDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileKeyDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileStartDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/DoiDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/LinksDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/PersistentIdentifiersDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/AffiliationDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/CreatorDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierTypeDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/MetadataDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrgTypeDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrganizationDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/ResourceTypeDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessOptionsDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessTypeDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/CreateDraftDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/DraftVersionsDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/EmbargoDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FileTypeDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FilesOptionsDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/ModifyDraftDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/RecordDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/UpdateDraftDto.java
 create mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java
 delete mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserTokenModifyDto.java
 create mode 100644 fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java

diff --git a/.jupyter/api_authentication/api/user_endpoint_api.py b/.jupyter/api_authentication/api/user_endpoint_api.py
index 40ba9632a0..e6a913e114 100644
--- a/.jupyter/api_authentication/api/user_endpoint_api.py
+++ b/.jupyter/api_authentication/api/user_endpoint_api.py
@@ -231,7 +231,7 @@ class UserEndpointApi(object):
         >>> result = thread.get()
 
         :param async_req bool
-        :return: list[UserDto]
+        :return: list[UserBriefDto]
                  If the method is called asynchronously,
                  returns the request thread.
         """
@@ -251,7 +251,7 @@ class UserEndpointApi(object):
         >>> result = thread.get()
 
         :param async_req bool
-        :return: list[UserDto]
+        :return: list[UserBriefDto]
                  If the method is called asynchronously,
                  returns the request thread.
         """
@@ -289,7 +289,7 @@ class UserEndpointApi(object):
             ['*/*'])  # noqa: E501
 
         # Authentication setting
-        auth_settings = ['bearerAuth']  # noqa: E501
+        auth_settings = []  # noqa: E501
 
         return self.api_client.call_api(
             '/api/user', 'GET',
@@ -299,7 +299,7 @@ class UserEndpointApi(object):
             body=body_params,
             post_params=form_params,
             files=local_var_files,
-            response_type='list[UserDto]',  # noqa: E501
+            response_type='list[UserBriefDto]',  # noqa: E501
             auth_settings=auth_settings,
             async_req=params.get('async_req'),
             _return_http_data_only=params.get('_return_http_data_only'),
diff --git a/.jupyter/api_authentication/models/database_dto.py b/.jupyter/api_authentication/models/database_dto.py
index baeaf0e46f..6119a4d801 100644
--- a/.jupyter/api_authentication/models/database_dto.py
+++ b/.jupyter/api_authentication/models/database_dto.py
@@ -28,322 +28,334 @@ class DatabaseDto(object):
                             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',
+        'database_id': 'int',
+        'database_name': 'str',
+        'database_exchange': 'str',
+        'database_creator': 'UserBriefDto',
+        'database_subjects': 'list[str]',
+        'database_language': 'str',
+        'database_license': 'LicenseDto',
+        'database_description': 'str',
+        'database_publisher': 'str',
+        'database_contact_person': 'UserDto',
         'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
+        'database_container_image': 'ImageDto',
         'container': 'ContainerDto',
-        'created': 'datetime',
+        'database_creation_time': 'datetime',
         'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
+        'database_internal_name': 'str',
+        'database_publication_year': 'int',
+        'database_publication_month': 'int',
+        'database_publication_day': 'int',
+        'database_public': 'bool'
     }
 
     attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
+        'database_id': 'database id',
+        'database_name': 'database name',
+        'database_exchange': 'database exchange',
+        'database_creator': 'database creator',
+        'database_subjects': 'database subjects',
+        'database_language': 'database language',
+        'database_license': 'database license',
+        'database_description': 'database description',
+        'database_publisher': 'database publisher',
+        'database_contact_person': 'database contact person',
         'tables': 'tables',
-        'image': 'image',
+        'database_container_image': 'database container image',
         'container': 'container',
-        'created': 'created',
+        'database_creation_time': 'database creation time',
         'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
+        'database_internal_name': 'database internal name',
+        'database_publication_year': 'database publication year',
+        'database_publication_month': 'database publication month',
+        'database_publication_day': 'database publication day',
+        'database_public': 'database 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
+    def __init__(self, database_id=None, database_name=None, database_exchange=None, database_creator=None, database_subjects=None, database_language=None, database_license=None, database_description=None, database_publisher=None, database_contact_person=None, tables=None, database_container_image=None, container=None, database_creation_time=None, deleted=None, database_internal_name=None, database_publication_year=None, database_publication_month=None, database_publication_day=None, database_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._database_id = None
+        self._database_name = None
+        self._database_exchange = None
+        self._database_creator = None
+        self._database_subjects = None
+        self._database_language = None
+        self._database_license = None
+        self._database_description = None
+        self._database_publisher = None
+        self._database_contact_person = None
         self._tables = None
-        self._image = None
+        self._database_container_image = None
         self._container = None
-        self._created = None
+        self._database_creation_time = None
         self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
+        self._database_internal_name = None
+        self._database_publication_year = None
+        self._database_publication_month = None
+        self._database_publication_day = None
+        self._database_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
+        self.database_id = database_id
+        self.database_name = database_name
+        self.database_exchange = database_exchange
+        self.database_creator = database_creator
+        if database_subjects is not None:
+            self.database_subjects = database_subjects
+        if database_language is not None:
+            self.database_language = database_language
+        if database_license is not None:
+            self.database_license = database_license
+        self.database_description = database_description
+        if database_publisher is not None:
+            self.database_publisher = database_publisher
+        if database_contact_person is not None:
+            self.database_contact_person = database_contact_person
         if tables is not None:
             self.tables = tables
-        if image is not None:
-            self.image = image
+        if database_container_image is not None:
+            self.database_container_image = database_container_image
         if container is not None:
             self.container = container
-        if created is not None:
-            self.created = created
+        if database_creation_time is not None:
+            self.database_creation_time = database_creation_time
         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
+        self.database_internal_name = database_internal_name
+        if database_publication_year is not None:
+            self.database_publication_year = database_publication_year
+        if database_publication_month is not None:
+            self.database_publication_month = database_publication_month
+        if database_publication_day is not None:
+            self.database_publication_day = database_publication_day
+        if database_public is not None:
+            self.database_public = database_public
 
     @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
+    def database_id(self):
+        """Gets the database_id of this DatabaseDto.  # noqa: E501
 
 
-        :return: The id of this DatabaseDto.  # noqa: E501
+        :return: The database_id of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._id
+        return self._database_id
 
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
+    @database_id.setter
+    def database_id(self, database_id):
+        """Sets the database_id of this DatabaseDto.
 
 
-        :param id: The id of this DatabaseDto.  # noqa: E501
+        :param database_id: The database_id of this DatabaseDto.  # noqa: E501
         :type: int
         """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
+        if database_id is None:
+            raise ValueError("Invalid value for `database_id`, must not be `None`")  # noqa: E501
 
-        self._id = id
+        self._database_id = database_id
 
     @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
+    def database_name(self):
+        """Gets the database_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The name of this DatabaseDto.  # noqa: E501
+        :return: The database_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._name
+        return self._database_name
 
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
+    @database_name.setter
+    def database_name(self, database_name):
+        """Sets the database_name of this DatabaseDto.
 
 
-        :param name: The name of this DatabaseDto.  # noqa: E501
+        :param database_name: The database_name of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
+        if database_name is None:
+            raise ValueError("Invalid value for `database_name`, must not be `None`")  # noqa: E501
 
-        self._name = name
+        self._database_name = database_name
 
     @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
+    def database_exchange(self):
+        """Gets the database_exchange of this DatabaseDto.  # noqa: E501
 
 
-        :return: The exchange of this DatabaseDto.  # noqa: E501
+        :return: The database_exchange of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._exchange
+        return self._database_exchange
 
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
+    @database_exchange.setter
+    def database_exchange(self, database_exchange):
+        """Sets the database_exchange of this DatabaseDto.
 
 
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
+        :param database_exchange: The database_exchange of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
+        if database_exchange is None:
+            raise ValueError("Invalid value for `database_exchange`, must not be `None`")  # noqa: E501
 
-        self._exchange = exchange
+        self._database_exchange = database_exchange
 
     @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
+    def database_creator(self):
+        """Gets the database_creator of this DatabaseDto.  # noqa: E501
 
 
-        :return: The creator of this DatabaseDto.  # noqa: E501
+        :return: The database_creator of this DatabaseDto.  # noqa: E501
         :rtype: UserBriefDto
         """
-        return self._creator
+        return self._database_creator
 
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
+    @database_creator.setter
+    def database_creator(self, database_creator):
+        """Sets the database_creator of this DatabaseDto.
 
 
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
+        :param database_creator: The database_creator of this DatabaseDto.  # noqa: E501
         :type: UserBriefDto
         """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
+        if database_creator is None:
+            raise ValueError("Invalid value for `database_creator`, must not be `None`")  # noqa: E501
 
-        self._creator = creator
+        self._database_creator = database_creator
 
     @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
+    def database_subjects(self):
+        """Gets the database_subjects of this DatabaseDto.  # noqa: E501
 
 
-        :return: The subjects of this DatabaseDto.  # noqa: E501
+        :return: The database_subjects of this DatabaseDto.  # noqa: E501
         :rtype: list[str]
         """
-        return self._subjects
+        return self._database_subjects
 
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
+    @database_subjects.setter
+    def database_subjects(self, database_subjects):
+        """Sets the database_subjects of this DatabaseDto.
 
 
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
+        :param database_subjects: The database_subjects of this DatabaseDto.  # noqa: E501
         :type: list[str]
         """
 
-        self._subjects = subjects
+        self._database_subjects = database_subjects
 
     @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
+    def database_language(self):
+        """Gets the database_language of this DatabaseDto.  # noqa: E501
 
 
-        :return: The language of this DatabaseDto.  # noqa: E501
+        :return: The database_language of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._language
+        return self._database_language
 
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
+    @database_language.setter
+    def database_language(self, database_language):
+        """Sets the database_language of this DatabaseDto.
 
 
-        :param language: The language of this DatabaseDto.  # noqa: E501
+        :param database_language: The database_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:
+        if database_language not in allowed_values:
             raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
+                "Invalid value for `database_language` ({0}), must be one of {1}"  # noqa: E501
+                .format(database_language, allowed_values)
             )
 
-        self._language = language
+        self._database_language = database_language
 
     @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
+    def database_license(self):
+        """Gets the database_license of this DatabaseDto.  # noqa: E501
 
 
-        :return: The license of this DatabaseDto.  # noqa: E501
+        :return: The database_license of this DatabaseDto.  # noqa: E501
         :rtype: LicenseDto
         """
-        return self._license
+        return self._database_license
 
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
+    @database_license.setter
+    def database_license(self, database_license):
+        """Sets the database_license of this DatabaseDto.
 
 
-        :param license: The license of this DatabaseDto.  # noqa: E501
+        :param database_license: The database_license of this DatabaseDto.  # noqa: E501
         :type: LicenseDto
         """
 
-        self._license = license
+        self._database_license = database_license
 
     @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
+    def database_description(self):
+        """Gets the database_description of this DatabaseDto.  # noqa: E501
 
 
-        :return: The description of this DatabaseDto.  # noqa: E501
+        :return: The database_description of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._description
+        return self._database_description
 
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
+    @database_description.setter
+    def database_description(self, database_description):
+        """Sets the database_description of this DatabaseDto.
 
 
-        :param description: The description of this DatabaseDto.  # noqa: E501
+        :param database_description: The database_description of this DatabaseDto.  # noqa: E501
         :type: str
         """
+        if database_description is None:
+            raise ValueError("Invalid value for `database_description`, must not be `None`")  # noqa: E501
 
-        self._description = description
+        self._database_description = database_description
 
     @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
+    def database_publisher(self):
+        """Gets the database_publisher of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publisher of this DatabaseDto.  # noqa: E501
+        :return: The database_publisher of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._publisher
+        return self._database_publisher
 
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
+    @database_publisher.setter
+    def database_publisher(self, database_publisher):
+        """Sets the database_publisher of this DatabaseDto.
 
 
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
+        :param database_publisher: The database_publisher of this DatabaseDto.  # noqa: E501
         :type: str
         """
 
-        self._publisher = publisher
+        self._database_publisher = database_publisher
 
     @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
+    def database_contact_person(self):
+        """Gets the database_contact_person of this DatabaseDto.  # noqa: E501
 
 
-        :return: The contact of this DatabaseDto.  # noqa: E501
+        :return: The database_contact_person of this DatabaseDto.  # noqa: E501
         :rtype: UserDto
         """
-        return self._contact
+        return self._database_contact_person
 
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
+    @database_contact_person.setter
+    def database_contact_person(self, database_contact_person):
+        """Sets the database_contact_person of this DatabaseDto.
 
 
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
+        :param database_contact_person: The database_contact_person of this DatabaseDto.  # noqa: E501
         :type: UserDto
         """
 
-        self._contact = contact
+        self._database_contact_person = database_contact_person
 
     @property
     def tables(self):
@@ -367,25 +379,25 @@ class DatabaseDto(object):
         self._tables = tables
 
     @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
+    def database_container_image(self):
+        """Gets the database_container_image of this DatabaseDto.  # noqa: E501
 
 
-        :return: The image of this DatabaseDto.  # noqa: E501
+        :return: The database_container_image of this DatabaseDto.  # noqa: E501
         :rtype: ImageDto
         """
-        return self._image
+        return self._database_container_image
 
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
+    @database_container_image.setter
+    def database_container_image(self, database_container_image):
+        """Sets the database_container_image of this DatabaseDto.
 
 
-        :param image: The image of this DatabaseDto.  # noqa: E501
+        :param database_container_image: The database_container_image of this DatabaseDto.  # noqa: E501
         :type: ImageDto
         """
 
-        self._image = image
+        self._database_container_image = database_container_image
 
     @property
     def container(self):
@@ -409,25 +421,25 @@ class DatabaseDto(object):
         self._container = container
 
     @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
+    def database_creation_time(self):
+        """Gets the database_creation_time of this DatabaseDto.  # noqa: E501
 
 
-        :return: The created of this DatabaseDto.  # noqa: E501
+        :return: The database_creation_time of this DatabaseDto.  # noqa: E501
         :rtype: datetime
         """
-        return self._created
+        return self._database_creation_time
 
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
+    @database_creation_time.setter
+    def database_creation_time(self, database_creation_time):
+        """Sets the database_creation_time of this DatabaseDto.
 
 
-        :param created: The created of this DatabaseDto.  # noqa: E501
+        :param database_creation_time: The database_creation_time of this DatabaseDto.  # noqa: E501
         :type: datetime
         """
 
-        self._created = created
+        self._database_creation_time = database_creation_time
 
     @property
     def deleted(self):
@@ -451,71 +463,111 @@ class DatabaseDto(object):
         self._deleted = deleted
 
     @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
+    def database_internal_name(self):
+        """Gets the database_internal_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
+        :return: The database_internal_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._internal_name
+        return self._database_internal_name
 
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
+    @database_internal_name.setter
+    def database_internal_name(self, database_internal_name):
+        """Sets the database_internal_name of this DatabaseDto.
 
 
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
+        :param database_internal_name: The database_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
+        if database_internal_name is None:
+            raise ValueError("Invalid value for `database_internal_name`, must not be `None`")  # noqa: E501
 
-        self._internal_name = internal_name
+        self._database_internal_name = database_internal_name
 
     @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
+    def database_publication_year(self):
+        """Gets the database_publication_year of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_year of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._publication_year
+        return self._database_publication_year
 
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
+    @database_publication_year.setter
+    def database_publication_year(self, database_publication_year):
+        """Sets the database_publication_year of this DatabaseDto.
 
 
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
+        :param database_publication_year: The database_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
+        self._database_publication_year = database_publication_year
 
     @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
+    def database_publication_month(self):
+        """Gets the database_publication_month of this DatabaseDto.  # noqa: E501
 
 
-        :return: The is_public of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_month
+
+    @database_publication_month.setter
+    def database_publication_month(self, database_publication_month):
+        """Sets the database_publication_month of this DatabaseDto.
+
+
+        :param database_publication_month: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_month = database_publication_month
+
+    @property
+    def database_publication_day(self):
+        """Gets the database_publication_day of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_day
+
+    @database_publication_day.setter
+    def database_publication_day(self, database_publication_day):
+        """Sets the database_publication_day of this DatabaseDto.
+
+
+        :param database_publication_day: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_day = database_publication_day
+
+    @property
+    def database_public(self):
+        """Gets the database_public of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_public of this DatabaseDto.  # noqa: E501
         :rtype: bool
         """
-        return self._is_public
+        return self._database_public
 
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
+    @database_public.setter
+    def database_public(self, database_public):
+        """Sets the database_public of this DatabaseDto.
 
 
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
+        :param database_public: The database_public of this DatabaseDto.  # noqa: E501
         :type: bool
         """
 
-        self._is_public = is_public
+        self._database_public = database_public
 
     def to_dict(self):
         """Returns the model properties as a dict"""
diff --git a/.jupyter/api_container/models/database_dto.py b/.jupyter/api_container/models/database_dto.py
index 0aa1b92b3d..95e967060f 100644
--- a/.jupyter/api_container/models/database_dto.py
+++ b/.jupyter/api_container/models/database_dto.py
@@ -28,322 +28,334 @@ class DatabaseDto(object):
                             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',
+        'database_id': 'int',
+        'database_name': 'str',
+        'database_exchange': 'str',
+        'database_creator': 'UserBriefDto',
+        'database_subjects': 'list[str]',
+        'database_language': 'str',
+        'database_license': 'LicenseDto',
+        'database_description': 'str',
+        'database_publisher': 'str',
+        'database_contact_person': 'UserDto',
         'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
+        'database_container_image': 'ImageDto',
         'container': 'ContainerDto',
-        'created': 'datetime',
+        'database_creation_time': 'datetime',
         'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
+        'database_internal_name': 'str',
+        'database_publication_year': 'int',
+        'database_publication_month': 'int',
+        'database_publication_day': 'int',
+        'database_public': 'bool'
     }
 
     attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
+        'database_id': 'database id',
+        'database_name': 'database name',
+        'database_exchange': 'database exchange',
+        'database_creator': 'database creator',
+        'database_subjects': 'database subjects',
+        'database_language': 'database language',
+        'database_license': 'database license',
+        'database_description': 'database description',
+        'database_publisher': 'database publisher',
+        'database_contact_person': 'database contact person',
         'tables': 'tables',
-        'image': 'image',
+        'database_container_image': 'database container image',
         'container': 'container',
-        'created': 'created',
+        'database_creation_time': 'database creation time',
         'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
+        'database_internal_name': 'database internal name',
+        'database_publication_year': 'database publication year',
+        'database_publication_month': 'database publication month',
+        'database_publication_day': 'database publication day',
+        'database_public': 'database 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
+    def __init__(self, database_id=None, database_name=None, database_exchange=None, database_creator=None, database_subjects=None, database_language=None, database_license=None, database_description=None, database_publisher=None, database_contact_person=None, tables=None, database_container_image=None, container=None, database_creation_time=None, deleted=None, database_internal_name=None, database_publication_year=None, database_publication_month=None, database_publication_day=None, database_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._database_id = None
+        self._database_name = None
+        self._database_exchange = None
+        self._database_creator = None
+        self._database_subjects = None
+        self._database_language = None
+        self._database_license = None
+        self._database_description = None
+        self._database_publisher = None
+        self._database_contact_person = None
         self._tables = None
-        self._image = None
+        self._database_container_image = None
         self._container = None
-        self._created = None
+        self._database_creation_time = None
         self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
+        self._database_internal_name = None
+        self._database_publication_year = None
+        self._database_publication_month = None
+        self._database_publication_day = None
+        self._database_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
+        self.database_id = database_id
+        self.database_name = database_name
+        self.database_exchange = database_exchange
+        self.database_creator = database_creator
+        if database_subjects is not None:
+            self.database_subjects = database_subjects
+        if database_language is not None:
+            self.database_language = database_language
+        if database_license is not None:
+            self.database_license = database_license
+        self.database_description = database_description
+        if database_publisher is not None:
+            self.database_publisher = database_publisher
+        if database_contact_person is not None:
+            self.database_contact_person = database_contact_person
         if tables is not None:
             self.tables = tables
-        if image is not None:
-            self.image = image
+        if database_container_image is not None:
+            self.database_container_image = database_container_image
         if container is not None:
             self.container = container
-        if created is not None:
-            self.created = created
+        if database_creation_time is not None:
+            self.database_creation_time = database_creation_time
         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
+        self.database_internal_name = database_internal_name
+        if database_publication_year is not None:
+            self.database_publication_year = database_publication_year
+        if database_publication_month is not None:
+            self.database_publication_month = database_publication_month
+        if database_publication_day is not None:
+            self.database_publication_day = database_publication_day
+        if database_public is not None:
+            self.database_public = database_public
 
     @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
+    def database_id(self):
+        """Gets the database_id of this DatabaseDto.  # noqa: E501
 
 
-        :return: The id of this DatabaseDto.  # noqa: E501
+        :return: The database_id of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._id
+        return self._database_id
 
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
+    @database_id.setter
+    def database_id(self, database_id):
+        """Sets the database_id of this DatabaseDto.
 
 
-        :param id: The id of this DatabaseDto.  # noqa: E501
+        :param database_id: The database_id of this DatabaseDto.  # noqa: E501
         :type: int
         """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
+        if database_id is None:
+            raise ValueError("Invalid value for `database_id`, must not be `None`")  # noqa: E501
 
-        self._id = id
+        self._database_id = database_id
 
     @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
+    def database_name(self):
+        """Gets the database_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The name of this DatabaseDto.  # noqa: E501
+        :return: The database_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._name
+        return self._database_name
 
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
+    @database_name.setter
+    def database_name(self, database_name):
+        """Sets the database_name of this DatabaseDto.
 
 
-        :param name: The name of this DatabaseDto.  # noqa: E501
+        :param database_name: The database_name of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
+        if database_name is None:
+            raise ValueError("Invalid value for `database_name`, must not be `None`")  # noqa: E501
 
-        self._name = name
+        self._database_name = database_name
 
     @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
+    def database_exchange(self):
+        """Gets the database_exchange of this DatabaseDto.  # noqa: E501
 
 
-        :return: The exchange of this DatabaseDto.  # noqa: E501
+        :return: The database_exchange of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._exchange
+        return self._database_exchange
 
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
+    @database_exchange.setter
+    def database_exchange(self, database_exchange):
+        """Sets the database_exchange of this DatabaseDto.
 
 
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
+        :param database_exchange: The database_exchange of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
+        if database_exchange is None:
+            raise ValueError("Invalid value for `database_exchange`, must not be `None`")  # noqa: E501
 
-        self._exchange = exchange
+        self._database_exchange = database_exchange
 
     @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
+    def database_creator(self):
+        """Gets the database_creator of this DatabaseDto.  # noqa: E501
 
 
-        :return: The creator of this DatabaseDto.  # noqa: E501
+        :return: The database_creator of this DatabaseDto.  # noqa: E501
         :rtype: UserBriefDto
         """
-        return self._creator
+        return self._database_creator
 
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
+    @database_creator.setter
+    def database_creator(self, database_creator):
+        """Sets the database_creator of this DatabaseDto.
 
 
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
+        :param database_creator: The database_creator of this DatabaseDto.  # noqa: E501
         :type: UserBriefDto
         """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
+        if database_creator is None:
+            raise ValueError("Invalid value for `database_creator`, must not be `None`")  # noqa: E501
 
-        self._creator = creator
+        self._database_creator = database_creator
 
     @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
+    def database_subjects(self):
+        """Gets the database_subjects of this DatabaseDto.  # noqa: E501
 
 
-        :return: The subjects of this DatabaseDto.  # noqa: E501
+        :return: The database_subjects of this DatabaseDto.  # noqa: E501
         :rtype: list[str]
         """
-        return self._subjects
+        return self._database_subjects
 
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
+    @database_subjects.setter
+    def database_subjects(self, database_subjects):
+        """Sets the database_subjects of this DatabaseDto.
 
 
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
+        :param database_subjects: The database_subjects of this DatabaseDto.  # noqa: E501
         :type: list[str]
         """
 
-        self._subjects = subjects
+        self._database_subjects = database_subjects
 
     @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
+    def database_language(self):
+        """Gets the database_language of this DatabaseDto.  # noqa: E501
 
 
-        :return: The language of this DatabaseDto.  # noqa: E501
+        :return: The database_language of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._language
+        return self._database_language
 
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
+    @database_language.setter
+    def database_language(self, database_language):
+        """Sets the database_language of this DatabaseDto.
 
 
-        :param language: The language of this DatabaseDto.  # noqa: E501
+        :param database_language: The database_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:
+        if database_language not in allowed_values:
             raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
+                "Invalid value for `database_language` ({0}), must be one of {1}"  # noqa: E501
+                .format(database_language, allowed_values)
             )
 
-        self._language = language
+        self._database_language = database_language
 
     @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
+    def database_license(self):
+        """Gets the database_license of this DatabaseDto.  # noqa: E501
 
 
-        :return: The license of this DatabaseDto.  # noqa: E501
+        :return: The database_license of this DatabaseDto.  # noqa: E501
         :rtype: LicenseDto
         """
-        return self._license
+        return self._database_license
 
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
+    @database_license.setter
+    def database_license(self, database_license):
+        """Sets the database_license of this DatabaseDto.
 
 
-        :param license: The license of this DatabaseDto.  # noqa: E501
+        :param database_license: The database_license of this DatabaseDto.  # noqa: E501
         :type: LicenseDto
         """
 
-        self._license = license
+        self._database_license = database_license
 
     @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
+    def database_description(self):
+        """Gets the database_description of this DatabaseDto.  # noqa: E501
 
 
-        :return: The description of this DatabaseDto.  # noqa: E501
+        :return: The database_description of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._description
+        return self._database_description
 
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
+    @database_description.setter
+    def database_description(self, database_description):
+        """Sets the database_description of this DatabaseDto.
 
 
-        :param description: The description of this DatabaseDto.  # noqa: E501
+        :param database_description: The database_description of this DatabaseDto.  # noqa: E501
         :type: str
         """
+        if database_description is None:
+            raise ValueError("Invalid value for `database_description`, must not be `None`")  # noqa: E501
 
-        self._description = description
+        self._database_description = database_description
 
     @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
+    def database_publisher(self):
+        """Gets the database_publisher of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publisher of this DatabaseDto.  # noqa: E501
+        :return: The database_publisher of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._publisher
+        return self._database_publisher
 
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
+    @database_publisher.setter
+    def database_publisher(self, database_publisher):
+        """Sets the database_publisher of this DatabaseDto.
 
 
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
+        :param database_publisher: The database_publisher of this DatabaseDto.  # noqa: E501
         :type: str
         """
 
-        self._publisher = publisher
+        self._database_publisher = database_publisher
 
     @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
+    def database_contact_person(self):
+        """Gets the database_contact_person of this DatabaseDto.  # noqa: E501
 
 
-        :return: The contact of this DatabaseDto.  # noqa: E501
+        :return: The database_contact_person of this DatabaseDto.  # noqa: E501
         :rtype: UserDto
         """
-        return self._contact
+        return self._database_contact_person
 
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
+    @database_contact_person.setter
+    def database_contact_person(self, database_contact_person):
+        """Sets the database_contact_person of this DatabaseDto.
 
 
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
+        :param database_contact_person: The database_contact_person of this DatabaseDto.  # noqa: E501
         :type: UserDto
         """
 
-        self._contact = contact
+        self._database_contact_person = database_contact_person
 
     @property
     def tables(self):
@@ -367,25 +379,25 @@ class DatabaseDto(object):
         self._tables = tables
 
     @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
+    def database_container_image(self):
+        """Gets the database_container_image of this DatabaseDto.  # noqa: E501
 
 
-        :return: The image of this DatabaseDto.  # noqa: E501
+        :return: The database_container_image of this DatabaseDto.  # noqa: E501
         :rtype: ImageDto
         """
-        return self._image
+        return self._database_container_image
 
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
+    @database_container_image.setter
+    def database_container_image(self, database_container_image):
+        """Sets the database_container_image of this DatabaseDto.
 
 
-        :param image: The image of this DatabaseDto.  # noqa: E501
+        :param database_container_image: The database_container_image of this DatabaseDto.  # noqa: E501
         :type: ImageDto
         """
 
-        self._image = image
+        self._database_container_image = database_container_image
 
     @property
     def container(self):
@@ -409,25 +421,25 @@ class DatabaseDto(object):
         self._container = container
 
     @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
+    def database_creation_time(self):
+        """Gets the database_creation_time of this DatabaseDto.  # noqa: E501
 
 
-        :return: The created of this DatabaseDto.  # noqa: E501
+        :return: The database_creation_time of this DatabaseDto.  # noqa: E501
         :rtype: datetime
         """
-        return self._created
+        return self._database_creation_time
 
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
+    @database_creation_time.setter
+    def database_creation_time(self, database_creation_time):
+        """Sets the database_creation_time of this DatabaseDto.
 
 
-        :param created: The created of this DatabaseDto.  # noqa: E501
+        :param database_creation_time: The database_creation_time of this DatabaseDto.  # noqa: E501
         :type: datetime
         """
 
-        self._created = created
+        self._database_creation_time = database_creation_time
 
     @property
     def deleted(self):
@@ -451,71 +463,111 @@ class DatabaseDto(object):
         self._deleted = deleted
 
     @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
+    def database_internal_name(self):
+        """Gets the database_internal_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
+        :return: The database_internal_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._internal_name
+        return self._database_internal_name
 
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
+    @database_internal_name.setter
+    def database_internal_name(self, database_internal_name):
+        """Sets the database_internal_name of this DatabaseDto.
 
 
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
+        :param database_internal_name: The database_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
+        if database_internal_name is None:
+            raise ValueError("Invalid value for `database_internal_name`, must not be `None`")  # noqa: E501
 
-        self._internal_name = internal_name
+        self._database_internal_name = database_internal_name
 
     @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
+    def database_publication_year(self):
+        """Gets the database_publication_year of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_year of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._publication_year
+        return self._database_publication_year
 
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
+    @database_publication_year.setter
+    def database_publication_year(self, database_publication_year):
+        """Sets the database_publication_year of this DatabaseDto.
 
 
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
+        :param database_publication_year: The database_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
+        self._database_publication_year = database_publication_year
 
     @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
+    def database_publication_month(self):
+        """Gets the database_publication_month of this DatabaseDto.  # noqa: E501
 
 
-        :return: The is_public of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_month
+
+    @database_publication_month.setter
+    def database_publication_month(self, database_publication_month):
+        """Sets the database_publication_month of this DatabaseDto.
+
+
+        :param database_publication_month: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_month = database_publication_month
+
+    @property
+    def database_publication_day(self):
+        """Gets the database_publication_day of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_day
+
+    @database_publication_day.setter
+    def database_publication_day(self, database_publication_day):
+        """Sets the database_publication_day of this DatabaseDto.
+
+
+        :param database_publication_day: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_day = database_publication_day
+
+    @property
+    def database_public(self):
+        """Gets the database_public of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_public of this DatabaseDto.  # noqa: E501
         :rtype: bool
         """
-        return self._is_public
+        return self._database_public
 
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
+    @database_public.setter
+    def database_public(self, database_public):
+        """Sets the database_public of this DatabaseDto.
 
 
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
+        :param database_public: The database_public of this DatabaseDto.  # noqa: E501
         :type: bool
         """
 
-        self._is_public = is_public
+        self._database_public = database_public
 
     def to_dict(self):
         """Returns the model properties as a dict"""
diff --git a/.jupyter/api_database/__init__.py b/.jupyter/api_database/__init__.py
index 5da8bf97a4..353709f720 100644
--- a/.jupyter/api_database/__init__.py
+++ b/.jupyter/api_database/__init__.py
@@ -15,7 +15,7 @@
 from __future__ import absolute_import
 
 # import apis into sdk package
-from api_database.api.container_database_endpoint_api import ContainerDatabaseEndpointApi
+from api_database.api.database_endpoint_api import DatabaseEndpointApi
 from api_database.api.license_endpoint_api import LicenseEndpointApi
 # import ApiClient
 from api_database.api_client import ApiClient
@@ -28,6 +28,7 @@ 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.database_transfer_dto import DatabaseTransferDto
 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
diff --git a/.jupyter/api_database/api/__init__.py b/.jupyter/api_database/api/__init__.py
index 959020dc68..3b6a63f77f 100644
--- a/.jupyter/api_database/api/__init__.py
+++ b/.jupyter/api_database/api/__init__.py
@@ -3,5 +3,5 @@ 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.database_endpoint_api import DatabaseEndpointApi
 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
index b2740125af..c05c11e8bb 100644
--- a/.jupyter/api_database/api/container_database_endpoint_api.py
+++ b/.jupyter/api_database/api/container_database_endpoint_api.py
@@ -432,6 +432,119 @@ class ContainerDatabaseEndpointApi(object):
             _request_timeout=params.get('_request_timeout'),
             collection_formats=collection_formats)
 
+    def transfer(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.transfer(body, id, database_id, async_req=True)
+        >>> result = thread.get()
+
+        :param async_req bool
+        :param DatabaseTransferDto body: (required)
+        :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.transfer_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
+        else:
+            (data) = self.transfer_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
+            return data
+
+    def transfer_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.transfer_with_http_info(body, id, database_id, async_req=True)
+        >>> result = thread.get()
+
+        :param async_req bool
+        :param DatabaseTransferDto body: (required)
+        :param int id: (required)
+        :param int database_id: (required)
+        :return: DatabaseDto
+                 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 transfer" % 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 `transfer`")  # 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 `transfer`")  # 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 `transfer`")  # 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}/transfer', 'PUT',
+            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
 
@@ -444,7 +557,7 @@ class ContainerDatabaseEndpointApi(object):
         :param DatabaseModifyDto body: (required)
         :param int id: (required)
         :param int database_id: (required)
-        :return: DatabaseBriefDto
+        :return: DatabaseDto
                  If the method is called asynchronously,
                  returns the request thread.
         """
@@ -467,7 +580,7 @@ class ContainerDatabaseEndpointApi(object):
         :param DatabaseModifyDto body: (required)
         :param int id: (required)
         :param int database_id: (required)
-        :return: DatabaseBriefDto
+        :return: DatabaseDto
                  If the method is called asynchronously,
                  returns the request thread.
         """
@@ -537,7 +650,7 @@ class ContainerDatabaseEndpointApi(object):
             body=body_params,
             post_params=form_params,
             files=local_var_files,
-            response_type='DatabaseBriefDto',  # noqa: E501
+            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'),
diff --git a/.jupyter/api_database/api/database_endpoint_api.py b/.jupyter/api_database/api/database_endpoint_api.py
new file mode 100644
index 0000000000..1ad3383e96
--- /dev/null
+++ b/.jupyter/api_database/api/database_endpoint_api.py
@@ -0,0 +1,659 @@
+# 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 DatabaseEndpointApi(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 transfer(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.transfer(body, id, database_id, async_req=True)
+        >>> result = thread.get()
+
+        :param async_req bool
+        :param DatabaseTransferDto body: (required)
+        :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.transfer_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
+        else:
+            (data) = self.transfer_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
+            return data
+
+    def transfer_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.transfer_with_http_info(body, id, database_id, async_req=True)
+        >>> result = thread.get()
+
+        :param async_req bool
+        :param DatabaseTransferDto body: (required)
+        :param int id: (required)
+        :param int database_id: (required)
+        :return: DatabaseDto
+                 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 transfer" % 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 `transfer`")  # 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 `transfer`")  # 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 `transfer`")  # 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}/transfer', 'PUT',
+            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: DatabaseDto
+                 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: DatabaseDto
+                 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='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)
diff --git a/.jupyter/api_database/models/__init__.py b/.jupyter/api_database/models/__init__.py
index 17ab89a69b..caa6d6454e 100644
--- a/.jupyter/api_database/models/__init__.py
+++ b/.jupyter/api_database/models/__init__.py
@@ -21,6 +21,7 @@ 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.database_transfer_dto import DatabaseTransferDto
 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
diff --git a/.jupyter/api_database/models/database_create_dto.py b/.jupyter/api_database/models/database_create_dto.py
index a1a6d6bc69..abf9898226 100644
--- a/.jupyter/api_database/models/database_create_dto.py
+++ b/.jupyter/api_database/models/database_create_dto.py
@@ -29,24 +29,20 @@ class DatabaseCreateDto(object):
     """
     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
+    def __init__(self, name=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
@@ -72,29 +68,6 @@ class DatabaseCreateDto(object):
 
         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
diff --git a/.jupyter/api_database/models/database_dto.py b/.jupyter/api_database/models/database_dto.py
index 52e21473a2..56899bd105 100644
--- a/.jupyter/api_database/models/database_dto.py
+++ b/.jupyter/api_database/models/database_dto.py
@@ -28,322 +28,334 @@ class DatabaseDto(object):
                             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',
+        'database_id': 'int',
+        'database_name': 'str',
+        'database_exchange': 'str',
+        'database_creator': 'UserBriefDto',
+        'database_subjects': 'list[str]',
+        'database_language': 'str',
+        'database_license': 'LicenseDto',
+        'database_description': 'str',
+        'database_publisher': 'str',
+        'database_contact_person': 'UserDto',
         'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
+        'database_container_image': 'ImageDto',
         'container': 'ContainerDto',
-        'created': 'datetime',
+        'database_creation_time': 'datetime',
         'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
+        'database_internal_name': 'str',
+        'database_publication_year': 'int',
+        'database_publication_month': 'int',
+        'database_publication_day': 'int',
+        'database_public': 'bool'
     }
 
     attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
+        'database_id': 'database id',
+        'database_name': 'database name',
+        'database_exchange': 'database exchange',
+        'database_creator': 'database creator',
+        'database_subjects': 'database subjects',
+        'database_language': 'database language',
+        'database_license': 'database license',
+        'database_description': 'database description',
+        'database_publisher': 'database publisher',
+        'database_contact_person': 'database contact person',
         'tables': 'tables',
-        'image': 'image',
+        'database_container_image': 'database container image',
         'container': 'container',
-        'created': 'created',
+        'database_creation_time': 'database creation time',
         'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
+        'database_internal_name': 'database internal name',
+        'database_publication_year': 'database publication year',
+        'database_publication_month': 'database publication month',
+        'database_publication_day': 'database publication day',
+        'database_public': 'database 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
+    def __init__(self, database_id=None, database_name=None, database_exchange=None, database_creator=None, database_subjects=None, database_language=None, database_license=None, database_description=None, database_publisher=None, database_contact_person=None, tables=None, database_container_image=None, container=None, database_creation_time=None, deleted=None, database_internal_name=None, database_publication_year=None, database_publication_month=None, database_publication_day=None, database_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._database_id = None
+        self._database_name = None
+        self._database_exchange = None
+        self._database_creator = None
+        self._database_subjects = None
+        self._database_language = None
+        self._database_license = None
+        self._database_description = None
+        self._database_publisher = None
+        self._database_contact_person = None
         self._tables = None
-        self._image = None
+        self._database_container_image = None
         self._container = None
-        self._created = None
+        self._database_creation_time = None
         self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
+        self._database_internal_name = None
+        self._database_publication_year = None
+        self._database_publication_month = None
+        self._database_publication_day = None
+        self._database_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
+        self.database_id = database_id
+        self.database_name = database_name
+        self.database_exchange = database_exchange
+        self.database_creator = database_creator
+        if database_subjects is not None:
+            self.database_subjects = database_subjects
+        if database_language is not None:
+            self.database_language = database_language
+        if database_license is not None:
+            self.database_license = database_license
+        self.database_description = database_description
+        if database_publisher is not None:
+            self.database_publisher = database_publisher
+        if database_contact_person is not None:
+            self.database_contact_person = database_contact_person
         if tables is not None:
             self.tables = tables
-        if image is not None:
-            self.image = image
+        if database_container_image is not None:
+            self.database_container_image = database_container_image
         if container is not None:
             self.container = container
-        if created is not None:
-            self.created = created
+        if database_creation_time is not None:
+            self.database_creation_time = database_creation_time
         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
+        self.database_internal_name = database_internal_name
+        if database_publication_year is not None:
+            self.database_publication_year = database_publication_year
+        if database_publication_month is not None:
+            self.database_publication_month = database_publication_month
+        if database_publication_day is not None:
+            self.database_publication_day = database_publication_day
+        if database_public is not None:
+            self.database_public = database_public
 
     @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
+    def database_id(self):
+        """Gets the database_id of this DatabaseDto.  # noqa: E501
 
 
-        :return: The id of this DatabaseDto.  # noqa: E501
+        :return: The database_id of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._id
+        return self._database_id
 
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
+    @database_id.setter
+    def database_id(self, database_id):
+        """Sets the database_id of this DatabaseDto.
 
 
-        :param id: The id of this DatabaseDto.  # noqa: E501
+        :param database_id: The database_id of this DatabaseDto.  # noqa: E501
         :type: int
         """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
+        if database_id is None:
+            raise ValueError("Invalid value for `database_id`, must not be `None`")  # noqa: E501
 
-        self._id = id
+        self._database_id = database_id
 
     @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
+    def database_name(self):
+        """Gets the database_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The name of this DatabaseDto.  # noqa: E501
+        :return: The database_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._name
+        return self._database_name
 
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
+    @database_name.setter
+    def database_name(self, database_name):
+        """Sets the database_name of this DatabaseDto.
 
 
-        :param name: The name of this DatabaseDto.  # noqa: E501
+        :param database_name: The database_name of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
+        if database_name is None:
+            raise ValueError("Invalid value for `database_name`, must not be `None`")  # noqa: E501
 
-        self._name = name
+        self._database_name = database_name
 
     @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
+    def database_exchange(self):
+        """Gets the database_exchange of this DatabaseDto.  # noqa: E501
 
 
-        :return: The exchange of this DatabaseDto.  # noqa: E501
+        :return: The database_exchange of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._exchange
+        return self._database_exchange
 
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
+    @database_exchange.setter
+    def database_exchange(self, database_exchange):
+        """Sets the database_exchange of this DatabaseDto.
 
 
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
+        :param database_exchange: The database_exchange of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
+        if database_exchange is None:
+            raise ValueError("Invalid value for `database_exchange`, must not be `None`")  # noqa: E501
 
-        self._exchange = exchange
+        self._database_exchange = database_exchange
 
     @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
+    def database_creator(self):
+        """Gets the database_creator of this DatabaseDto.  # noqa: E501
 
 
-        :return: The creator of this DatabaseDto.  # noqa: E501
+        :return: The database_creator of this DatabaseDto.  # noqa: E501
         :rtype: UserBriefDto
         """
-        return self._creator
+        return self._database_creator
 
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
+    @database_creator.setter
+    def database_creator(self, database_creator):
+        """Sets the database_creator of this DatabaseDto.
 
 
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
+        :param database_creator: The database_creator of this DatabaseDto.  # noqa: E501
         :type: UserBriefDto
         """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
+        if database_creator is None:
+            raise ValueError("Invalid value for `database_creator`, must not be `None`")  # noqa: E501
 
-        self._creator = creator
+        self._database_creator = database_creator
 
     @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
+    def database_subjects(self):
+        """Gets the database_subjects of this DatabaseDto.  # noqa: E501
 
 
-        :return: The subjects of this DatabaseDto.  # noqa: E501
+        :return: The database_subjects of this DatabaseDto.  # noqa: E501
         :rtype: list[str]
         """
-        return self._subjects
+        return self._database_subjects
 
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
+    @database_subjects.setter
+    def database_subjects(self, database_subjects):
+        """Sets the database_subjects of this DatabaseDto.
 
 
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
+        :param database_subjects: The database_subjects of this DatabaseDto.  # noqa: E501
         :type: list[str]
         """
 
-        self._subjects = subjects
+        self._database_subjects = database_subjects
 
     @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
+    def database_language(self):
+        """Gets the database_language of this DatabaseDto.  # noqa: E501
 
 
-        :return: The language of this DatabaseDto.  # noqa: E501
+        :return: The database_language of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._language
+        return self._database_language
 
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
+    @database_language.setter
+    def database_language(self, database_language):
+        """Sets the database_language of this DatabaseDto.
 
 
-        :param language: The language of this DatabaseDto.  # noqa: E501
+        :param database_language: The database_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:
+        if database_language not in allowed_values:
             raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
+                "Invalid value for `database_language` ({0}), must be one of {1}"  # noqa: E501
+                .format(database_language, allowed_values)
             )
 
-        self._language = language
+        self._database_language = database_language
 
     @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
+    def database_license(self):
+        """Gets the database_license of this DatabaseDto.  # noqa: E501
 
 
-        :return: The license of this DatabaseDto.  # noqa: E501
+        :return: The database_license of this DatabaseDto.  # noqa: E501
         :rtype: LicenseDto
         """
-        return self._license
+        return self._database_license
 
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
+    @database_license.setter
+    def database_license(self, database_license):
+        """Sets the database_license of this DatabaseDto.
 
 
-        :param license: The license of this DatabaseDto.  # noqa: E501
+        :param database_license: The database_license of this DatabaseDto.  # noqa: E501
         :type: LicenseDto
         """
 
-        self._license = license
+        self._database_license = database_license
 
     @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
+    def database_description(self):
+        """Gets the database_description of this DatabaseDto.  # noqa: E501
 
 
-        :return: The description of this DatabaseDto.  # noqa: E501
+        :return: The database_description of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._description
+        return self._database_description
 
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
+    @database_description.setter
+    def database_description(self, database_description):
+        """Sets the database_description of this DatabaseDto.
 
 
-        :param description: The description of this DatabaseDto.  # noqa: E501
+        :param database_description: The database_description of this DatabaseDto.  # noqa: E501
         :type: str
         """
+        if database_description is None:
+            raise ValueError("Invalid value for `database_description`, must not be `None`")  # noqa: E501
 
-        self._description = description
+        self._database_description = database_description
 
     @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
+    def database_publisher(self):
+        """Gets the database_publisher of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publisher of this DatabaseDto.  # noqa: E501
+        :return: The database_publisher of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._publisher
+        return self._database_publisher
 
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
+    @database_publisher.setter
+    def database_publisher(self, database_publisher):
+        """Sets the database_publisher of this DatabaseDto.
 
 
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
+        :param database_publisher: The database_publisher of this DatabaseDto.  # noqa: E501
         :type: str
         """
 
-        self._publisher = publisher
+        self._database_publisher = database_publisher
 
     @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
+    def database_contact_person(self):
+        """Gets the database_contact_person of this DatabaseDto.  # noqa: E501
 
 
-        :return: The contact of this DatabaseDto.  # noqa: E501
+        :return: The database_contact_person of this DatabaseDto.  # noqa: E501
         :rtype: UserDto
         """
-        return self._contact
+        return self._database_contact_person
 
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
+    @database_contact_person.setter
+    def database_contact_person(self, database_contact_person):
+        """Sets the database_contact_person of this DatabaseDto.
 
 
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
+        :param database_contact_person: The database_contact_person of this DatabaseDto.  # noqa: E501
         :type: UserDto
         """
 
-        self._contact = contact
+        self._database_contact_person = database_contact_person
 
     @property
     def tables(self):
@@ -367,25 +379,25 @@ class DatabaseDto(object):
         self._tables = tables
 
     @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
+    def database_container_image(self):
+        """Gets the database_container_image of this DatabaseDto.  # noqa: E501
 
 
-        :return: The image of this DatabaseDto.  # noqa: E501
+        :return: The database_container_image of this DatabaseDto.  # noqa: E501
         :rtype: ImageDto
         """
-        return self._image
+        return self._database_container_image
 
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
+    @database_container_image.setter
+    def database_container_image(self, database_container_image):
+        """Sets the database_container_image of this DatabaseDto.
 
 
-        :param image: The image of this DatabaseDto.  # noqa: E501
+        :param database_container_image: The database_container_image of this DatabaseDto.  # noqa: E501
         :type: ImageDto
         """
 
-        self._image = image
+        self._database_container_image = database_container_image
 
     @property
     def container(self):
@@ -409,25 +421,25 @@ class DatabaseDto(object):
         self._container = container
 
     @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
+    def database_creation_time(self):
+        """Gets the database_creation_time of this DatabaseDto.  # noqa: E501
 
 
-        :return: The created of this DatabaseDto.  # noqa: E501
+        :return: The database_creation_time of this DatabaseDto.  # noqa: E501
         :rtype: datetime
         """
-        return self._created
+        return self._database_creation_time
 
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
+    @database_creation_time.setter
+    def database_creation_time(self, database_creation_time):
+        """Sets the database_creation_time of this DatabaseDto.
 
 
-        :param created: The created of this DatabaseDto.  # noqa: E501
+        :param database_creation_time: The database_creation_time of this DatabaseDto.  # noqa: E501
         :type: datetime
         """
 
-        self._created = created
+        self._database_creation_time = database_creation_time
 
     @property
     def deleted(self):
@@ -451,71 +463,111 @@ class DatabaseDto(object):
         self._deleted = deleted
 
     @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
+    def database_internal_name(self):
+        """Gets the database_internal_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
+        :return: The database_internal_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._internal_name
+        return self._database_internal_name
 
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
+    @database_internal_name.setter
+    def database_internal_name(self, database_internal_name):
+        """Sets the database_internal_name of this DatabaseDto.
 
 
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
+        :param database_internal_name: The database_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
+        if database_internal_name is None:
+            raise ValueError("Invalid value for `database_internal_name`, must not be `None`")  # noqa: E501
 
-        self._internal_name = internal_name
+        self._database_internal_name = database_internal_name
 
     @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
+    def database_publication_year(self):
+        """Gets the database_publication_year of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_year of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._publication_year
+        return self._database_publication_year
 
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
+    @database_publication_year.setter
+    def database_publication_year(self, database_publication_year):
+        """Sets the database_publication_year of this DatabaseDto.
 
 
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
+        :param database_publication_year: The database_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
+        self._database_publication_year = database_publication_year
 
     @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
+    def database_publication_month(self):
+        """Gets the database_publication_month of this DatabaseDto.  # noqa: E501
 
 
-        :return: The is_public of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_month
+
+    @database_publication_month.setter
+    def database_publication_month(self, database_publication_month):
+        """Sets the database_publication_month of this DatabaseDto.
+
+
+        :param database_publication_month: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_month = database_publication_month
+
+    @property
+    def database_publication_day(self):
+        """Gets the database_publication_day of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_day
+
+    @database_publication_day.setter
+    def database_publication_day(self, database_publication_day):
+        """Sets the database_publication_day of this DatabaseDto.
+
+
+        :param database_publication_day: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_day = database_publication_day
+
+    @property
+    def database_public(self):
+        """Gets the database_public of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_public of this DatabaseDto.  # noqa: E501
         :rtype: bool
         """
-        return self._is_public
+        return self._database_public
 
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
+    @database_public.setter
+    def database_public(self, database_public):
+        """Sets the database_public of this DatabaseDto.
 
 
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
+        :param database_public: The database_public of this DatabaseDto.  # noqa: E501
         :type: bool
         """
 
-        self._is_public = is_public
+        self._database_public = database_public
 
     def to_dict(self):
         """Returns the model properties as a dict"""
diff --git a/.jupyter/api_database/models/database_modify_dto.py b/.jupyter/api_database/models/database_modify_dto.py
index f61145aa15..1e74ccca7b 100644
--- a/.jupyter/api_database/models/database_modify_dto.py
+++ b/.jupyter/api_database/models/database_modify_dto.py
@@ -28,40 +28,43 @@ class DatabaseModifyDto(object):
                             and the value is json key in definition.
     """
     swagger_types = {
-        'subject': 'list[str]',
+        'subjects': 'list[str]',
         'description': 'str',
         'publisher': 'str',
         'license': 'LicenseDto',
         'language': 'str',
-        'is_public': 'bool',
-        'publication_year': 'int',
+        'database_publication_year': 'int',
+        'publication_month': 'int',
+        'publication_day': 'int',
         'contact_person': 'str'
     }
 
     attribute_map = {
-        'subject': 'subject',
+        'subjects': 'subjects',
         'description': 'description',
         'publisher': 'publisher',
         'license': 'license',
         'language': 'language',
-        'is_public': 'is_public',
-        'publication_year': 'publication_year',
+        'database_publication_year': 'database publication year',
+        'publication_month': 'publication_month',
+        'publication_day': 'publication_day',
         '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
+    def __init__(self, subjects=None, description=None, publisher=None, license=None, language=None, database_publication_year=None, publication_month=None, publication_day=None, contact_person=None):  # noqa: E501
         """DatabaseModifyDto - a model defined in Swagger"""  # noqa: E501
-        self._subject = None
+        self._subjects = None
         self._description = None
         self._publisher = None
         self._license = None
         self._language = None
-        self._is_public = None
-        self._publication_year = None
+        self._database_publication_year = None
+        self._publication_month = None
+        self._publication_day = None
         self._contact_person = None
         self.discriminator = None
-        if subject is not None:
-            self.subject = subject
+        if subjects is not None:
+            self.subjects = subjects
         self.description = description
         if publisher is not None:
             self.publisher = publisher
@@ -69,31 +72,34 @@ class DatabaseModifyDto(object):
             self.license = license
         if language is not None:
             self.language = language
-        self.is_public = is_public
-        self.publication_year = publication_year
+        self.database_publication_year = database_publication_year
+        if publication_month is not None:
+            self.publication_month = publication_month
+        if publication_day is not None:
+            self.publication_day = publication_day
         if contact_person is not None:
             self.contact_person = contact_person
 
     @property
-    def subject(self):
-        """Gets the subject of this DatabaseModifyDto.  # noqa: E501
+    def subjects(self):
+        """Gets the subjects of this DatabaseModifyDto.  # noqa: E501
 
 
-        :return: The subject of this DatabaseModifyDto.  # noqa: E501
+        :return: The subjects of this DatabaseModifyDto.  # noqa: E501
         :rtype: list[str]
         """
-        return self._subject
+        return self._subjects
 
-    @subject.setter
-    def subject(self, subject):
-        """Sets the subject of this DatabaseModifyDto.
+    @subjects.setter
+    def subjects(self, subjects):
+        """Sets the subjects of this DatabaseModifyDto.
 
 
-        :param subject: The subject of this DatabaseModifyDto.  # noqa: E501
+        :param subjects: The subjects of this DatabaseModifyDto.  # noqa: E501
         :type: list[str]
         """
 
-        self._subject = subject
+        self._subjects = subjects
 
     @property
     def description(self):
@@ -188,50 +194,69 @@ class DatabaseModifyDto(object):
         self._language = language
 
     @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseModifyDto.  # noqa: E501
+    def database_publication_year(self):
+        """Gets the database_publication_year of this DatabaseModifyDto.  # noqa: E501
 
 
-        :return: The is_public of this DatabaseModifyDto.  # noqa: E501
-        :rtype: bool
+        :return: The database_publication_year of this DatabaseModifyDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_year
+
+    @database_publication_year.setter
+    def database_publication_year(self, database_publication_year):
+        """Sets the database_publication_year of this DatabaseModifyDto.
+
+
+        :param database_publication_year: The database_publication_year of this DatabaseModifyDto.  # noqa: E501
+        :type: int
+        """
+        if database_publication_year is None:
+            raise ValueError("Invalid value for `database_publication_year`, must not be `None`")  # noqa: E501
+
+        self._database_publication_year = database_publication_year
+
+    @property
+    def publication_month(self):
+        """Gets the publication_month of this DatabaseModifyDto.  # noqa: E501
+
+
+        :return: The publication_month of this DatabaseModifyDto.  # noqa: E501
+        :rtype: int
         """
-        return self._is_public
+        return self._publication_month
 
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseModifyDto.
+    @publication_month.setter
+    def publication_month(self, publication_month):
+        """Sets the publication_month of this DatabaseModifyDto.
 
 
-        :param is_public: The is_public of this DatabaseModifyDto.  # noqa: E501
-        :type: bool
+        :param publication_month: The publication_month of this DatabaseModifyDto.  # noqa: E501
+        :type: int
         """
-        if is_public is None:
-            raise ValueError("Invalid value for `is_public`, must not be `None`")  # noqa: E501
 
-        self._is_public = is_public
+        self._publication_month = publication_month
 
     @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseModifyDto.  # noqa: E501
+    def publication_day(self):
+        """Gets the publication_day of this DatabaseModifyDto.  # noqa: E501
 
 
-        :return: The publication_year of this DatabaseModifyDto.  # noqa: E501
+        :return: The publication_day of this DatabaseModifyDto.  # noqa: E501
         :rtype: int
         """
-        return self._publication_year
+        return self._publication_day
 
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseModifyDto.
+    @publication_day.setter
+    def publication_day(self, publication_day):
+        """Sets the publication_day of this DatabaseModifyDto.
 
 
-        :param publication_year: The publication_year of this DatabaseModifyDto.  # noqa: E501
+        :param publication_day: The publication_day 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
+        self._publication_day = publication_day
 
     @property
     def contact_person(self):
diff --git a/.jupyter/api_database/models/database_transfer_dto.py b/.jupyter/api_database/models/database_transfer_dto.py
new file mode 100644
index 0000000000..e179371718
--- /dev/null
+++ b/.jupyter/api_database/models/database_transfer_dto.py
@@ -0,0 +1,111 @@
+# 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 DatabaseTransferDto(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 = {
+        'is_public': 'bool'
+    }
+
+    attribute_map = {
+        'is_public': 'is_public'
+    }
+
+    def __init__(self, is_public=None):  # noqa: E501
+        """DatabaseTransferDto - a model defined in Swagger"""  # noqa: E501
+        self._is_public = None
+        self.discriminator = None
+        self.is_public = is_public
+
+    @property
+    def is_public(self):
+        """Gets the is_public of this DatabaseTransferDto.  # noqa: E501
+
+
+        :return: The is_public of this DatabaseTransferDto.  # noqa: E501
+        :rtype: bool
+        """
+        return self._is_public
+
+    @is_public.setter
+    def is_public(self, is_public):
+        """Sets the is_public of this DatabaseTransferDto.
+
+
+        :param is_public: The is_public of this DatabaseTransferDto.  # 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(DatabaseTransferDto, 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, DatabaseTransferDto):
+            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/database_dto.py b/.jupyter/api_identifier/models/database_dto.py
index 0648eb8093..871e9b4091 100644
--- a/.jupyter/api_identifier/models/database_dto.py
+++ b/.jupyter/api_identifier/models/database_dto.py
@@ -28,322 +28,334 @@ class DatabaseDto(object):
                             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',
+        'database_id': 'int',
+        'database_name': 'str',
+        'database_exchange': 'str',
+        'database_creator': 'UserBriefDto',
+        'database_subjects': 'list[str]',
+        'database_language': 'str',
+        'database_license': 'LicenseDto',
+        'database_description': 'str',
+        'database_publisher': 'str',
+        'database_contact_person': 'UserDto',
         'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
+        'database_container_image': 'ImageDto',
         'container': 'ContainerDto',
-        'created': 'datetime',
+        'database_creation_time': 'datetime',
         'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
+        'database_internal_name': 'str',
+        'database_publication_year': 'int',
+        'database_publication_month': 'int',
+        'database_publication_day': 'int',
+        'database_public': 'bool'
     }
 
     attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
+        'database_id': 'database id',
+        'database_name': 'database name',
+        'database_exchange': 'database exchange',
+        'database_creator': 'database creator',
+        'database_subjects': 'database subjects',
+        'database_language': 'database language',
+        'database_license': 'database license',
+        'database_description': 'database description',
+        'database_publisher': 'database publisher',
+        'database_contact_person': 'database contact person',
         'tables': 'tables',
-        'image': 'image',
+        'database_container_image': 'database container image',
         'container': 'container',
-        'created': 'created',
+        'database_creation_time': 'database creation time',
         'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
+        'database_internal_name': 'database internal name',
+        'database_publication_year': 'database publication year',
+        'database_publication_month': 'database publication month',
+        'database_publication_day': 'database publication day',
+        'database_public': 'database 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
+    def __init__(self, database_id=None, database_name=None, database_exchange=None, database_creator=None, database_subjects=None, database_language=None, database_license=None, database_description=None, database_publisher=None, database_contact_person=None, tables=None, database_container_image=None, container=None, database_creation_time=None, deleted=None, database_internal_name=None, database_publication_year=None, database_publication_month=None, database_publication_day=None, database_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._database_id = None
+        self._database_name = None
+        self._database_exchange = None
+        self._database_creator = None
+        self._database_subjects = None
+        self._database_language = None
+        self._database_license = None
+        self._database_description = None
+        self._database_publisher = None
+        self._database_contact_person = None
         self._tables = None
-        self._image = None
+        self._database_container_image = None
         self._container = None
-        self._created = None
+        self._database_creation_time = None
         self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
+        self._database_internal_name = None
+        self._database_publication_year = None
+        self._database_publication_month = None
+        self._database_publication_day = None
+        self._database_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
+        self.database_id = database_id
+        self.database_name = database_name
+        self.database_exchange = database_exchange
+        self.database_creator = database_creator
+        if database_subjects is not None:
+            self.database_subjects = database_subjects
+        if database_language is not None:
+            self.database_language = database_language
+        if database_license is not None:
+            self.database_license = database_license
+        self.database_description = database_description
+        if database_publisher is not None:
+            self.database_publisher = database_publisher
+        if database_contact_person is not None:
+            self.database_contact_person = database_contact_person
         if tables is not None:
             self.tables = tables
-        if image is not None:
-            self.image = image
+        if database_container_image is not None:
+            self.database_container_image = database_container_image
         if container is not None:
             self.container = container
-        if created is not None:
-            self.created = created
+        if database_creation_time is not None:
+            self.database_creation_time = database_creation_time
         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
+        self.database_internal_name = database_internal_name
+        if database_publication_year is not None:
+            self.database_publication_year = database_publication_year
+        if database_publication_month is not None:
+            self.database_publication_month = database_publication_month
+        if database_publication_day is not None:
+            self.database_publication_day = database_publication_day
+        if database_public is not None:
+            self.database_public = database_public
 
     @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
+    def database_id(self):
+        """Gets the database_id of this DatabaseDto.  # noqa: E501
 
 
-        :return: The id of this DatabaseDto.  # noqa: E501
+        :return: The database_id of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._id
+        return self._database_id
 
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
+    @database_id.setter
+    def database_id(self, database_id):
+        """Sets the database_id of this DatabaseDto.
 
 
-        :param id: The id of this DatabaseDto.  # noqa: E501
+        :param database_id: The database_id of this DatabaseDto.  # noqa: E501
         :type: int
         """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
+        if database_id is None:
+            raise ValueError("Invalid value for `database_id`, must not be `None`")  # noqa: E501
 
-        self._id = id
+        self._database_id = database_id
 
     @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
+    def database_name(self):
+        """Gets the database_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The name of this DatabaseDto.  # noqa: E501
+        :return: The database_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._name
+        return self._database_name
 
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
+    @database_name.setter
+    def database_name(self, database_name):
+        """Sets the database_name of this DatabaseDto.
 
 
-        :param name: The name of this DatabaseDto.  # noqa: E501
+        :param database_name: The database_name of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
+        if database_name is None:
+            raise ValueError("Invalid value for `database_name`, must not be `None`")  # noqa: E501
 
-        self._name = name
+        self._database_name = database_name
 
     @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
+    def database_exchange(self):
+        """Gets the database_exchange of this DatabaseDto.  # noqa: E501
 
 
-        :return: The exchange of this DatabaseDto.  # noqa: E501
+        :return: The database_exchange of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._exchange
+        return self._database_exchange
 
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
+    @database_exchange.setter
+    def database_exchange(self, database_exchange):
+        """Sets the database_exchange of this DatabaseDto.
 
 
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
+        :param database_exchange: The database_exchange of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
+        if database_exchange is None:
+            raise ValueError("Invalid value for `database_exchange`, must not be `None`")  # noqa: E501
 
-        self._exchange = exchange
+        self._database_exchange = database_exchange
 
     @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
+    def database_creator(self):
+        """Gets the database_creator of this DatabaseDto.  # noqa: E501
 
 
-        :return: The creator of this DatabaseDto.  # noqa: E501
+        :return: The database_creator of this DatabaseDto.  # noqa: E501
         :rtype: UserBriefDto
         """
-        return self._creator
+        return self._database_creator
 
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
+    @database_creator.setter
+    def database_creator(self, database_creator):
+        """Sets the database_creator of this DatabaseDto.
 
 
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
+        :param database_creator: The database_creator of this DatabaseDto.  # noqa: E501
         :type: UserBriefDto
         """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
+        if database_creator is None:
+            raise ValueError("Invalid value for `database_creator`, must not be `None`")  # noqa: E501
 
-        self._creator = creator
+        self._database_creator = database_creator
 
     @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
+    def database_subjects(self):
+        """Gets the database_subjects of this DatabaseDto.  # noqa: E501
 
 
-        :return: The subjects of this DatabaseDto.  # noqa: E501
+        :return: The database_subjects of this DatabaseDto.  # noqa: E501
         :rtype: list[str]
         """
-        return self._subjects
+        return self._database_subjects
 
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
+    @database_subjects.setter
+    def database_subjects(self, database_subjects):
+        """Sets the database_subjects of this DatabaseDto.
 
 
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
+        :param database_subjects: The database_subjects of this DatabaseDto.  # noqa: E501
         :type: list[str]
         """
 
-        self._subjects = subjects
+        self._database_subjects = database_subjects
 
     @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
+    def database_language(self):
+        """Gets the database_language of this DatabaseDto.  # noqa: E501
 
 
-        :return: The language of this DatabaseDto.  # noqa: E501
+        :return: The database_language of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._language
+        return self._database_language
 
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
+    @database_language.setter
+    def database_language(self, database_language):
+        """Sets the database_language of this DatabaseDto.
 
 
-        :param language: The language of this DatabaseDto.  # noqa: E501
+        :param database_language: The database_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:
+        if database_language not in allowed_values:
             raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
+                "Invalid value for `database_language` ({0}), must be one of {1}"  # noqa: E501
+                .format(database_language, allowed_values)
             )
 
-        self._language = language
+        self._database_language = database_language
 
     @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
+    def database_license(self):
+        """Gets the database_license of this DatabaseDto.  # noqa: E501
 
 
-        :return: The license of this DatabaseDto.  # noqa: E501
+        :return: The database_license of this DatabaseDto.  # noqa: E501
         :rtype: LicenseDto
         """
-        return self._license
+        return self._database_license
 
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
+    @database_license.setter
+    def database_license(self, database_license):
+        """Sets the database_license of this DatabaseDto.
 
 
-        :param license: The license of this DatabaseDto.  # noqa: E501
+        :param database_license: The database_license of this DatabaseDto.  # noqa: E501
         :type: LicenseDto
         """
 
-        self._license = license
+        self._database_license = database_license
 
     @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
+    def database_description(self):
+        """Gets the database_description of this DatabaseDto.  # noqa: E501
 
 
-        :return: The description of this DatabaseDto.  # noqa: E501
+        :return: The database_description of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._description
+        return self._database_description
 
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
+    @database_description.setter
+    def database_description(self, database_description):
+        """Sets the database_description of this DatabaseDto.
 
 
-        :param description: The description of this DatabaseDto.  # noqa: E501
+        :param database_description: The database_description of this DatabaseDto.  # noqa: E501
         :type: str
         """
+        if database_description is None:
+            raise ValueError("Invalid value for `database_description`, must not be `None`")  # noqa: E501
 
-        self._description = description
+        self._database_description = database_description
 
     @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
+    def database_publisher(self):
+        """Gets the database_publisher of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publisher of this DatabaseDto.  # noqa: E501
+        :return: The database_publisher of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._publisher
+        return self._database_publisher
 
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
+    @database_publisher.setter
+    def database_publisher(self, database_publisher):
+        """Sets the database_publisher of this DatabaseDto.
 
 
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
+        :param database_publisher: The database_publisher of this DatabaseDto.  # noqa: E501
         :type: str
         """
 
-        self._publisher = publisher
+        self._database_publisher = database_publisher
 
     @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
+    def database_contact_person(self):
+        """Gets the database_contact_person of this DatabaseDto.  # noqa: E501
 
 
-        :return: The contact of this DatabaseDto.  # noqa: E501
+        :return: The database_contact_person of this DatabaseDto.  # noqa: E501
         :rtype: UserDto
         """
-        return self._contact
+        return self._database_contact_person
 
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
+    @database_contact_person.setter
+    def database_contact_person(self, database_contact_person):
+        """Sets the database_contact_person of this DatabaseDto.
 
 
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
+        :param database_contact_person: The database_contact_person of this DatabaseDto.  # noqa: E501
         :type: UserDto
         """
 
-        self._contact = contact
+        self._database_contact_person = database_contact_person
 
     @property
     def tables(self):
@@ -367,25 +379,25 @@ class DatabaseDto(object):
         self._tables = tables
 
     @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
+    def database_container_image(self):
+        """Gets the database_container_image of this DatabaseDto.  # noqa: E501
 
 
-        :return: The image of this DatabaseDto.  # noqa: E501
+        :return: The database_container_image of this DatabaseDto.  # noqa: E501
         :rtype: ImageDto
         """
-        return self._image
+        return self._database_container_image
 
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
+    @database_container_image.setter
+    def database_container_image(self, database_container_image):
+        """Sets the database_container_image of this DatabaseDto.
 
 
-        :param image: The image of this DatabaseDto.  # noqa: E501
+        :param database_container_image: The database_container_image of this DatabaseDto.  # noqa: E501
         :type: ImageDto
         """
 
-        self._image = image
+        self._database_container_image = database_container_image
 
     @property
     def container(self):
@@ -409,25 +421,25 @@ class DatabaseDto(object):
         self._container = container
 
     @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
+    def database_creation_time(self):
+        """Gets the database_creation_time of this DatabaseDto.  # noqa: E501
 
 
-        :return: The created of this DatabaseDto.  # noqa: E501
+        :return: The database_creation_time of this DatabaseDto.  # noqa: E501
         :rtype: datetime
         """
-        return self._created
+        return self._database_creation_time
 
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
+    @database_creation_time.setter
+    def database_creation_time(self, database_creation_time):
+        """Sets the database_creation_time of this DatabaseDto.
 
 
-        :param created: The created of this DatabaseDto.  # noqa: E501
+        :param database_creation_time: The database_creation_time of this DatabaseDto.  # noqa: E501
         :type: datetime
         """
 
-        self._created = created
+        self._database_creation_time = database_creation_time
 
     @property
     def deleted(self):
@@ -451,71 +463,111 @@ class DatabaseDto(object):
         self._deleted = deleted
 
     @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
+    def database_internal_name(self):
+        """Gets the database_internal_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
+        :return: The database_internal_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._internal_name
+        return self._database_internal_name
 
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
+    @database_internal_name.setter
+    def database_internal_name(self, database_internal_name):
+        """Sets the database_internal_name of this DatabaseDto.
 
 
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
+        :param database_internal_name: The database_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
+        if database_internal_name is None:
+            raise ValueError("Invalid value for `database_internal_name`, must not be `None`")  # noqa: E501
 
-        self._internal_name = internal_name
+        self._database_internal_name = database_internal_name
 
     @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
+    def database_publication_year(self):
+        """Gets the database_publication_year of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_year of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._publication_year
+        return self._database_publication_year
 
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
+    @database_publication_year.setter
+    def database_publication_year(self, database_publication_year):
+        """Sets the database_publication_year of this DatabaseDto.
 
 
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
+        :param database_publication_year: The database_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
+        self._database_publication_year = database_publication_year
 
     @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
+    def database_publication_month(self):
+        """Gets the database_publication_month of this DatabaseDto.  # noqa: E501
 
 
-        :return: The is_public of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_month
+
+    @database_publication_month.setter
+    def database_publication_month(self, database_publication_month):
+        """Sets the database_publication_month of this DatabaseDto.
+
+
+        :param database_publication_month: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_month = database_publication_month
+
+    @property
+    def database_publication_day(self):
+        """Gets the database_publication_day of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_day
+
+    @database_publication_day.setter
+    def database_publication_day(self, database_publication_day):
+        """Sets the database_publication_day of this DatabaseDto.
+
+
+        :param database_publication_day: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_day = database_publication_day
+
+    @property
+    def database_public(self):
+        """Gets the database_public of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_public of this DatabaseDto.  # noqa: E501
         :rtype: bool
         """
-        return self._is_public
+        return self._database_public
 
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
+    @database_public.setter
+    def database_public(self, database_public):
+        """Sets the database_public of this DatabaseDto.
 
 
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
+        :param database_public: The database_public of this DatabaseDto.  # noqa: E501
         :type: bool
         """
 
-        self._is_public = is_public
+        self._database_public = database_public
 
     def to_dict(self):
         """Returns the model properties as a dict"""
diff --git a/.jupyter/api_query/models/database_dto.py b/.jupyter/api_query/models/database_dto.py
index a6cbe93ef8..fb94bfb4d9 100644
--- a/.jupyter/api_query/models/database_dto.py
+++ b/.jupyter/api_query/models/database_dto.py
@@ -28,322 +28,334 @@ class DatabaseDto(object):
                             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',
+        'database_id': 'int',
+        'database_name': 'str',
+        'database_exchange': 'str',
+        'database_creator': 'UserBriefDto',
+        'database_subjects': 'list[str]',
+        'database_language': 'str',
+        'database_license': 'LicenseDto',
+        'database_description': 'str',
+        'database_publisher': 'str',
+        'database_contact_person': 'UserDto',
         'tables': 'list[TableBriefDto]',
-        'image': 'ImageDto',
+        'database_container_image': 'ImageDto',
         'container': 'ContainerDto',
-        'created': 'datetime',
+        'database_creation_time': 'datetime',
         'deleted': 'datetime',
-        'internal_name': 'str',
-        'publication_year': 'int',
-        'is_public': 'bool'
+        'database_internal_name': 'str',
+        'database_publication_year': 'int',
+        'database_publication_month': 'int',
+        'database_publication_day': 'int',
+        'database_public': 'bool'
     }
 
     attribute_map = {
-        'id': 'id',
-        'name': 'name',
-        'exchange': 'exchange',
-        'creator': 'creator',
-        'subjects': 'subjects',
-        'language': 'language',
-        'license': 'license',
-        'description': 'description',
-        'publisher': 'publisher',
-        'contact': 'contact',
+        'database_id': 'database id',
+        'database_name': 'database name',
+        'database_exchange': 'database exchange',
+        'database_creator': 'database creator',
+        'database_subjects': 'database subjects',
+        'database_language': 'database language',
+        'database_license': 'database license',
+        'database_description': 'database description',
+        'database_publisher': 'database publisher',
+        'database_contact_person': 'database contact person',
         'tables': 'tables',
-        'image': 'image',
+        'database_container_image': 'database container image',
         'container': 'container',
-        'created': 'created',
+        'database_creation_time': 'database creation time',
         'deleted': 'deleted',
-        'internal_name': 'internal_name',
-        'publication_year': 'publication_year',
-        'is_public': 'is_public'
+        'database_internal_name': 'database internal name',
+        'database_publication_year': 'database publication year',
+        'database_publication_month': 'database publication month',
+        'database_publication_day': 'database publication day',
+        'database_public': 'database 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
+    def __init__(self, database_id=None, database_name=None, database_exchange=None, database_creator=None, database_subjects=None, database_language=None, database_license=None, database_description=None, database_publisher=None, database_contact_person=None, tables=None, database_container_image=None, container=None, database_creation_time=None, deleted=None, database_internal_name=None, database_publication_year=None, database_publication_month=None, database_publication_day=None, database_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._database_id = None
+        self._database_name = None
+        self._database_exchange = None
+        self._database_creator = None
+        self._database_subjects = None
+        self._database_language = None
+        self._database_license = None
+        self._database_description = None
+        self._database_publisher = None
+        self._database_contact_person = None
         self._tables = None
-        self._image = None
+        self._database_container_image = None
         self._container = None
-        self._created = None
+        self._database_creation_time = None
         self._deleted = None
-        self._internal_name = None
-        self._publication_year = None
-        self._is_public = None
+        self._database_internal_name = None
+        self._database_publication_year = None
+        self._database_publication_month = None
+        self._database_publication_day = None
+        self._database_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
+        self.database_id = database_id
+        self.database_name = database_name
+        self.database_exchange = database_exchange
+        self.database_creator = database_creator
+        if database_subjects is not None:
+            self.database_subjects = database_subjects
+        if database_language is not None:
+            self.database_language = database_language
+        if database_license is not None:
+            self.database_license = database_license
+        self.database_description = database_description
+        if database_publisher is not None:
+            self.database_publisher = database_publisher
+        if database_contact_person is not None:
+            self.database_contact_person = database_contact_person
         if tables is not None:
             self.tables = tables
-        if image is not None:
-            self.image = image
+        if database_container_image is not None:
+            self.database_container_image = database_container_image
         if container is not None:
             self.container = container
-        if created is not None:
-            self.created = created
+        if database_creation_time is not None:
+            self.database_creation_time = database_creation_time
         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
+        self.database_internal_name = database_internal_name
+        if database_publication_year is not None:
+            self.database_publication_year = database_publication_year
+        if database_publication_month is not None:
+            self.database_publication_month = database_publication_month
+        if database_publication_day is not None:
+            self.database_publication_day = database_publication_day
+        if database_public is not None:
+            self.database_public = database_public
 
     @property
-    def id(self):
-        """Gets the id of this DatabaseDto.  # noqa: E501
+    def database_id(self):
+        """Gets the database_id of this DatabaseDto.  # noqa: E501
 
 
-        :return: The id of this DatabaseDto.  # noqa: E501
+        :return: The database_id of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._id
+        return self._database_id
 
-    @id.setter
-    def id(self, id):
-        """Sets the id of this DatabaseDto.
+    @database_id.setter
+    def database_id(self, database_id):
+        """Sets the database_id of this DatabaseDto.
 
 
-        :param id: The id of this DatabaseDto.  # noqa: E501
+        :param database_id: The database_id of this DatabaseDto.  # noqa: E501
         :type: int
         """
-        if id is None:
-            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501
+        if database_id is None:
+            raise ValueError("Invalid value for `database_id`, must not be `None`")  # noqa: E501
 
-        self._id = id
+        self._database_id = database_id
 
     @property
-    def name(self):
-        """Gets the name of this DatabaseDto.  # noqa: E501
+    def database_name(self):
+        """Gets the database_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The name of this DatabaseDto.  # noqa: E501
+        :return: The database_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._name
+        return self._database_name
 
-    @name.setter
-    def name(self, name):
-        """Sets the name of this DatabaseDto.
+    @database_name.setter
+    def database_name(self, database_name):
+        """Sets the database_name of this DatabaseDto.
 
 
-        :param name: The name of this DatabaseDto.  # noqa: E501
+        :param database_name: The database_name of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if name is None:
-            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501
+        if database_name is None:
+            raise ValueError("Invalid value for `database_name`, must not be `None`")  # noqa: E501
 
-        self._name = name
+        self._database_name = database_name
 
     @property
-    def exchange(self):
-        """Gets the exchange of this DatabaseDto.  # noqa: E501
+    def database_exchange(self):
+        """Gets the database_exchange of this DatabaseDto.  # noqa: E501
 
 
-        :return: The exchange of this DatabaseDto.  # noqa: E501
+        :return: The database_exchange of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._exchange
+        return self._database_exchange
 
-    @exchange.setter
-    def exchange(self, exchange):
-        """Sets the exchange of this DatabaseDto.
+    @database_exchange.setter
+    def database_exchange(self, database_exchange):
+        """Sets the database_exchange of this DatabaseDto.
 
 
-        :param exchange: The exchange of this DatabaseDto.  # noqa: E501
+        :param database_exchange: The database_exchange of this DatabaseDto.  # noqa: E501
         :type: str
         """
-        if exchange is None:
-            raise ValueError("Invalid value for `exchange`, must not be `None`")  # noqa: E501
+        if database_exchange is None:
+            raise ValueError("Invalid value for `database_exchange`, must not be `None`")  # noqa: E501
 
-        self._exchange = exchange
+        self._database_exchange = database_exchange
 
     @property
-    def creator(self):
-        """Gets the creator of this DatabaseDto.  # noqa: E501
+    def database_creator(self):
+        """Gets the database_creator of this DatabaseDto.  # noqa: E501
 
 
-        :return: The creator of this DatabaseDto.  # noqa: E501
+        :return: The database_creator of this DatabaseDto.  # noqa: E501
         :rtype: UserBriefDto
         """
-        return self._creator
+        return self._database_creator
 
-    @creator.setter
-    def creator(self, creator):
-        """Sets the creator of this DatabaseDto.
+    @database_creator.setter
+    def database_creator(self, database_creator):
+        """Sets the database_creator of this DatabaseDto.
 
 
-        :param creator: The creator of this DatabaseDto.  # noqa: E501
+        :param database_creator: The database_creator of this DatabaseDto.  # noqa: E501
         :type: UserBriefDto
         """
-        if creator is None:
-            raise ValueError("Invalid value for `creator`, must not be `None`")  # noqa: E501
+        if database_creator is None:
+            raise ValueError("Invalid value for `database_creator`, must not be `None`")  # noqa: E501
 
-        self._creator = creator
+        self._database_creator = database_creator
 
     @property
-    def subjects(self):
-        """Gets the subjects of this DatabaseDto.  # noqa: E501
+    def database_subjects(self):
+        """Gets the database_subjects of this DatabaseDto.  # noqa: E501
 
 
-        :return: The subjects of this DatabaseDto.  # noqa: E501
+        :return: The database_subjects of this DatabaseDto.  # noqa: E501
         :rtype: list[str]
         """
-        return self._subjects
+        return self._database_subjects
 
-    @subjects.setter
-    def subjects(self, subjects):
-        """Sets the subjects of this DatabaseDto.
+    @database_subjects.setter
+    def database_subjects(self, database_subjects):
+        """Sets the database_subjects of this DatabaseDto.
 
 
-        :param subjects: The subjects of this DatabaseDto.  # noqa: E501
+        :param database_subjects: The database_subjects of this DatabaseDto.  # noqa: E501
         :type: list[str]
         """
 
-        self._subjects = subjects
+        self._database_subjects = database_subjects
 
     @property
-    def language(self):
-        """Gets the language of this DatabaseDto.  # noqa: E501
+    def database_language(self):
+        """Gets the database_language of this DatabaseDto.  # noqa: E501
 
 
-        :return: The language of this DatabaseDto.  # noqa: E501
+        :return: The database_language of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._language
+        return self._database_language
 
-    @language.setter
-    def language(self, language):
-        """Sets the language of this DatabaseDto.
+    @database_language.setter
+    def database_language(self, database_language):
+        """Sets the database_language of this DatabaseDto.
 
 
-        :param language: The language of this DatabaseDto.  # noqa: E501
+        :param database_language: The database_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:
+        if database_language not in allowed_values:
             raise ValueError(
-                "Invalid value for `language` ({0}), must be one of {1}"  # noqa: E501
-                .format(language, allowed_values)
+                "Invalid value for `database_language` ({0}), must be one of {1}"  # noqa: E501
+                .format(database_language, allowed_values)
             )
 
-        self._language = language
+        self._database_language = database_language
 
     @property
-    def license(self):
-        """Gets the license of this DatabaseDto.  # noqa: E501
+    def database_license(self):
+        """Gets the database_license of this DatabaseDto.  # noqa: E501
 
 
-        :return: The license of this DatabaseDto.  # noqa: E501
+        :return: The database_license of this DatabaseDto.  # noqa: E501
         :rtype: LicenseDto
         """
-        return self._license
+        return self._database_license
 
-    @license.setter
-    def license(self, license):
-        """Sets the license of this DatabaseDto.
+    @database_license.setter
+    def database_license(self, database_license):
+        """Sets the database_license of this DatabaseDto.
 
 
-        :param license: The license of this DatabaseDto.  # noqa: E501
+        :param database_license: The database_license of this DatabaseDto.  # noqa: E501
         :type: LicenseDto
         """
 
-        self._license = license
+        self._database_license = database_license
 
     @property
-    def description(self):
-        """Gets the description of this DatabaseDto.  # noqa: E501
+    def database_description(self):
+        """Gets the database_description of this DatabaseDto.  # noqa: E501
 
 
-        :return: The description of this DatabaseDto.  # noqa: E501
+        :return: The database_description of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._description
+        return self._database_description
 
-    @description.setter
-    def description(self, description):
-        """Sets the description of this DatabaseDto.
+    @database_description.setter
+    def database_description(self, database_description):
+        """Sets the database_description of this DatabaseDto.
 
 
-        :param description: The description of this DatabaseDto.  # noqa: E501
+        :param database_description: The database_description of this DatabaseDto.  # noqa: E501
         :type: str
         """
+        if database_description is None:
+            raise ValueError("Invalid value for `database_description`, must not be `None`")  # noqa: E501
 
-        self._description = description
+        self._database_description = database_description
 
     @property
-    def publisher(self):
-        """Gets the publisher of this DatabaseDto.  # noqa: E501
+    def database_publisher(self):
+        """Gets the database_publisher of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publisher of this DatabaseDto.  # noqa: E501
+        :return: The database_publisher of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._publisher
+        return self._database_publisher
 
-    @publisher.setter
-    def publisher(self, publisher):
-        """Sets the publisher of this DatabaseDto.
+    @database_publisher.setter
+    def database_publisher(self, database_publisher):
+        """Sets the database_publisher of this DatabaseDto.
 
 
-        :param publisher: The publisher of this DatabaseDto.  # noqa: E501
+        :param database_publisher: The database_publisher of this DatabaseDto.  # noqa: E501
         :type: str
         """
 
-        self._publisher = publisher
+        self._database_publisher = database_publisher
 
     @property
-    def contact(self):
-        """Gets the contact of this DatabaseDto.  # noqa: E501
+    def database_contact_person(self):
+        """Gets the database_contact_person of this DatabaseDto.  # noqa: E501
 
 
-        :return: The contact of this DatabaseDto.  # noqa: E501
+        :return: The database_contact_person of this DatabaseDto.  # noqa: E501
         :rtype: UserDto
         """
-        return self._contact
+        return self._database_contact_person
 
-    @contact.setter
-    def contact(self, contact):
-        """Sets the contact of this DatabaseDto.
+    @database_contact_person.setter
+    def database_contact_person(self, database_contact_person):
+        """Sets the database_contact_person of this DatabaseDto.
 
 
-        :param contact: The contact of this DatabaseDto.  # noqa: E501
+        :param database_contact_person: The database_contact_person of this DatabaseDto.  # noqa: E501
         :type: UserDto
         """
 
-        self._contact = contact
+        self._database_contact_person = database_contact_person
 
     @property
     def tables(self):
@@ -367,25 +379,25 @@ class DatabaseDto(object):
         self._tables = tables
 
     @property
-    def image(self):
-        """Gets the image of this DatabaseDto.  # noqa: E501
+    def database_container_image(self):
+        """Gets the database_container_image of this DatabaseDto.  # noqa: E501
 
 
-        :return: The image of this DatabaseDto.  # noqa: E501
+        :return: The database_container_image of this DatabaseDto.  # noqa: E501
         :rtype: ImageDto
         """
-        return self._image
+        return self._database_container_image
 
-    @image.setter
-    def image(self, image):
-        """Sets the image of this DatabaseDto.
+    @database_container_image.setter
+    def database_container_image(self, database_container_image):
+        """Sets the database_container_image of this DatabaseDto.
 
 
-        :param image: The image of this DatabaseDto.  # noqa: E501
+        :param database_container_image: The database_container_image of this DatabaseDto.  # noqa: E501
         :type: ImageDto
         """
 
-        self._image = image
+        self._database_container_image = database_container_image
 
     @property
     def container(self):
@@ -409,25 +421,25 @@ class DatabaseDto(object):
         self._container = container
 
     @property
-    def created(self):
-        """Gets the created of this DatabaseDto.  # noqa: E501
+    def database_creation_time(self):
+        """Gets the database_creation_time of this DatabaseDto.  # noqa: E501
 
 
-        :return: The created of this DatabaseDto.  # noqa: E501
+        :return: The database_creation_time of this DatabaseDto.  # noqa: E501
         :rtype: datetime
         """
-        return self._created
+        return self._database_creation_time
 
-    @created.setter
-    def created(self, created):
-        """Sets the created of this DatabaseDto.
+    @database_creation_time.setter
+    def database_creation_time(self, database_creation_time):
+        """Sets the database_creation_time of this DatabaseDto.
 
 
-        :param created: The created of this DatabaseDto.  # noqa: E501
+        :param database_creation_time: The database_creation_time of this DatabaseDto.  # noqa: E501
         :type: datetime
         """
 
-        self._created = created
+        self._database_creation_time = database_creation_time
 
     @property
     def deleted(self):
@@ -451,71 +463,111 @@ class DatabaseDto(object):
         self._deleted = deleted
 
     @property
-    def internal_name(self):
-        """Gets the internal_name of this DatabaseDto.  # noqa: E501
+    def database_internal_name(self):
+        """Gets the database_internal_name of this DatabaseDto.  # noqa: E501
 
 
-        :return: The internal_name of this DatabaseDto.  # noqa: E501
+        :return: The database_internal_name of this DatabaseDto.  # noqa: E501
         :rtype: str
         """
-        return self._internal_name
+        return self._database_internal_name
 
-    @internal_name.setter
-    def internal_name(self, internal_name):
-        """Sets the internal_name of this DatabaseDto.
+    @database_internal_name.setter
+    def database_internal_name(self, database_internal_name):
+        """Sets the database_internal_name of this DatabaseDto.
 
 
-        :param internal_name: The internal_name of this DatabaseDto.  # noqa: E501
+        :param database_internal_name: The database_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
+        if database_internal_name is None:
+            raise ValueError("Invalid value for `database_internal_name`, must not be `None`")  # noqa: E501
 
-        self._internal_name = internal_name
+        self._database_internal_name = database_internal_name
 
     @property
-    def publication_year(self):
-        """Gets the publication_year of this DatabaseDto.  # noqa: E501
+    def database_publication_year(self):
+        """Gets the database_publication_year of this DatabaseDto.  # noqa: E501
 
 
-        :return: The publication_year of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_year of this DatabaseDto.  # noqa: E501
         :rtype: int
         """
-        return self._publication_year
+        return self._database_publication_year
 
-    @publication_year.setter
-    def publication_year(self, publication_year):
-        """Sets the publication_year of this DatabaseDto.
+    @database_publication_year.setter
+    def database_publication_year(self, database_publication_year):
+        """Sets the database_publication_year of this DatabaseDto.
 
 
-        :param publication_year: The publication_year of this DatabaseDto.  # noqa: E501
+        :param database_publication_year: The database_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
+        self._database_publication_year = database_publication_year
 
     @property
-    def is_public(self):
-        """Gets the is_public of this DatabaseDto.  # noqa: E501
+    def database_publication_month(self):
+        """Gets the database_publication_month of this DatabaseDto.  # noqa: E501
 
 
-        :return: The is_public of this DatabaseDto.  # noqa: E501
+        :return: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_month
+
+    @database_publication_month.setter
+    def database_publication_month(self, database_publication_month):
+        """Sets the database_publication_month of this DatabaseDto.
+
+
+        :param database_publication_month: The database_publication_month of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_month = database_publication_month
+
+    @property
+    def database_publication_day(self):
+        """Gets the database_publication_day of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :rtype: int
+        """
+        return self._database_publication_day
+
+    @database_publication_day.setter
+    def database_publication_day(self, database_publication_day):
+        """Sets the database_publication_day of this DatabaseDto.
+
+
+        :param database_publication_day: The database_publication_day of this DatabaseDto.  # noqa: E501
+        :type: int
+        """
+
+        self._database_publication_day = database_publication_day
+
+    @property
+    def database_public(self):
+        """Gets the database_public of this DatabaseDto.  # noqa: E501
+
+
+        :return: The database_public of this DatabaseDto.  # noqa: E501
         :rtype: bool
         """
-        return self._is_public
+        return self._database_public
 
-    @is_public.setter
-    def is_public(self, is_public):
-        """Sets the is_public of this DatabaseDto.
+    @database_public.setter
+    def database_public(self, database_public):
+        """Sets the database_public of this DatabaseDto.
 
 
-        :param is_public: The is_public of this DatabaseDto.  # noqa: E501
+        :param database_public: The database_public of this DatabaseDto.  # noqa: E501
         :type: bool
         """
 
-        self._is_public = is_public
+        self._database_public = database_public
 
     def to_dict(self):
         """Returns the model properties as a dict"""
diff --git a/.jupyter/api_table/api/table_endpoint_api.py b/.jupyter/api_table/api/table_endpoint_api.py
index ca2f072bd0..55049efced 100644
--- a/.jupyter/api_table/api/table_endpoint_api.py
+++ b/.jupyter/api_table/api/table_endpoint_api.py
@@ -32,16 +32,17 @@ class TableEndpointApi(object):
             api_client = ApiClient()
         self.api_client = api_client
 
-    def create(self, body, id, database_id, **kwargs):  # noqa: E501
+    def create(self, body, authorization, 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)
+        >>> thread = api.create(body, authorization, id, database_id, async_req=True)
         >>> result = thread.get()
 
         :param async_req bool
         :param TableCreateDto body: (required)
+        :param str authorization: (required)
         :param int id: (required)
         :param int database_id: (required)
         :return: TableBriefDto
@@ -50,21 +51,22 @@ class TableEndpointApi(object):
         """
         kwargs['_return_http_data_only'] = True
         if kwargs.get('async_req'):
-            return self.create_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
+            return self.create_with_http_info(body, authorization, id, database_id, **kwargs)  # noqa: E501
         else:
-            (data) = self.create_with_http_info(body, id, database_id, **kwargs)  # noqa: E501
+            (data) = self.create_with_http_info(body, authorization, id, database_id, **kwargs)  # noqa: E501
             return data
 
-    def create_with_http_info(self, body, id, database_id, **kwargs):  # noqa: E501
+    def create_with_http_info(self, body, authorization, 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)
+        >>> thread = api.create_with_http_info(body, authorization, id, database_id, async_req=True)
         >>> result = thread.get()
 
         :param async_req bool
         :param TableCreateDto body: (required)
+        :param str authorization: (required)
         :param int id: (required)
         :param int database_id: (required)
         :return: TableBriefDto
@@ -72,7 +74,7 @@ class TableEndpointApi(object):
                  returns the request thread.
         """
 
-        all_params = ['body', 'id', 'database_id']  # noqa: E501
+        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')
@@ -91,6 +93,10 @@ class TableEndpointApi(object):
         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):
@@ -111,6 +117,8 @@ class TableEndpointApi(object):
         query_params = []
 
         header_params = {}
+        if 'authorization' in params:
+            header_params['Authorization'] = params['authorization']  # noqa: E501
 
         form_params = []
         local_var_files = {}
@@ -145,47 +153,49 @@ class TableEndpointApi(object):
             _request_timeout=params.get('_request_timeout'),
             collection_formats=collection_formats)
 
-    def delete(self, id, database_id, table_id, **kwargs):  # noqa: E501
+    def delete(self, id, database_id, table_id, authorization, **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)
+        >>> thread = api.delete(id, database_id, table_id, authorization, 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 str authorization: (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
+            return self.delete_with_http_info(id, database_id, table_id, authorization, **kwargs)  # noqa: E501
         else:
-            (data) = self.delete_with_http_info(id, database_id, table_id, **kwargs)  # noqa: E501
+            (data) = self.delete_with_http_info(id, database_id, table_id, authorization, **kwargs)  # noqa: E501
             return data
 
-    def delete_with_http_info(self, id, database_id, table_id, **kwargs):  # noqa: E501
+    def delete_with_http_info(self, id, database_id, table_id, authorization, **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)
+        >>> thread = api.delete_with_http_info(id, database_id, table_id, authorization, 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 str authorization: (required)
         :return: None
                  If the method is called asynchronously,
                  returns the request thread.
         """
 
-        all_params = ['id', 'database_id', 'table_id']  # noqa: E501
+        all_params = ['id', 'database_id', 'table_id', 'authorization']  # noqa: E501
         all_params.append('async_req')
         all_params.append('_return_http_data_only')
         all_params.append('_preload_content')
@@ -212,6 +222,10 @@ class TableEndpointApi(object):
         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
+        # 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 `delete`")  # noqa: E501
 
         collection_formats = {}
 
@@ -226,6 +240,8 @@ class TableEndpointApi(object):
         query_params = []
 
         header_params = {}
+        if 'authorization' in params:
+            header_params['Authorization'] = params['authorization']  # noqa: E501
 
         form_params = []
         local_var_files = {}
diff --git a/.jupyter/load_test.py b/.jupyter/load_test.py
index 1336060476..f607e9b0c1 100755
--- a/.jupyter/load_test.py
+++ b/.jupyter/load_test.py
@@ -93,7 +93,6 @@ def start_container(container_id):
 def create_database(container_id, is_public=True):
     response = database.create({
         "name": "Airquality " + str(uuid.uuid1()),
-        "description": "Hourly measurements in Zürich, Switzerland",
         "is_public": is_public
     }, container_id)
     print("created database with id %d" % response.id)
@@ -106,7 +105,7 @@ def find_database(container_id, database_id):
     return response
 
 
-def update_database(container_id, database_id, is_public=True):
+def update_database(container_id, database_id):
     response = database.update({
         "description": "This dataset includes daily values from 1983 to the current day, divided into annual files. This includes the maximum hourly average and the number of times the hourly average limit value for ozone was exceeded and the daily averages for sulfur dioxide (SO2), carbon monoxide (CO), nitrogen oxide (NOx), nitrogen monoxide (NO), nitrogen dioxide (NO2), particulate matter (PM10 and PM2.5). ) and particle number (PN), provided that they are of sufficient quality. The values of the completed day for the current year are updated every 30 minutes after midnight (UTC+1).",
         "publisher": "Technical University of Vienna",
@@ -115,7 +114,6 @@ def update_database(container_id, database_id, is_public=True):
             "uri": "https://creativecommons.org/publicdomain/zero/1.0/legalcode"
         },
         "language": "en",
-        "is_public": is_public,
         "publication_year": 2022
     }, container_id, database_id)
     print("updated database with id %d" % response.id)
@@ -340,7 +338,7 @@ if __name__ == '__main__':
     cid = create_container().id
     start_container(cid)
     dbid = create_database(cid, False).id
-    update_database(cid, dbid, is_public=False)
+    update_database(cid, dbid)
     tid = create_table(cid, dbid).id
     tname = find_table(cid, dbid, tid).internal_name
     fill_table(cid, dbid, tid)
diff --git a/fda-authentication-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java b/fda-authentication-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java
index ca0d5caa86..d0b2323164 100644
--- a/fda-authentication-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java
+++ b/fda-authentication-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java
@@ -2,12 +2,7 @@ package at.tuwien.gateway;
 
 
 import at.tuwien.api.amqp.CreateUserDto;
-import at.tuwien.api.user.UserModifyPasswordDto;
-import at.tuwien.api.user.UserPasswordDto;
-import at.tuwien.exception.AuthenticationInvalidException;
 import at.tuwien.exception.BrokerUserCreationException;
-import at.tuwien.exception.UserEmailNotVerifiedException;
-import at.tuwien.exception.UserNotFoundException;
 
 
 public interface BrokerServiceGateway {
@@ -21,14 +16,6 @@ public interface BrokerServiceGateway {
      */
     void createUser(String username, CreateUserDto data) throws BrokerUserCreationException;
 
-    /**
-     * Grants all permissions on a virtual host
-     *
-     * @param username The user name.
-     * @throws BrokerUserCreationException The broker did not grant permissions for a user.
-     */
-    void grantUserHost(String username) throws BrokerUserCreationException;
-
     /**
      * Modify a user password for a user at the Queue Service
      *
diff --git a/fda-authentication-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java b/fda-authentication-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java
index a70f8ff45d..9a2acc6586 100644
--- a/fda-authentication-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java
+++ b/fda-authentication-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java
@@ -1,12 +1,9 @@
 package at.tuwien.gateway.impl;
 
 import at.tuwien.api.amqp.CreateUserDto;
-import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto;
 import at.tuwien.config.AmqpConfig;
-import at.tuwien.config.GatewayConfig;
 import at.tuwien.exception.BrokerUserCreationException;
 import at.tuwien.gateway.BrokerServiceGateway;
-import at.tuwien.mapper.UserMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,25 +11,19 @@ import org.springframework.http.*;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
-import java.net.URI;
 import java.nio.charset.Charset;
 
 @Slf4j
 @Service
 public class BrokerServiceGatewayImpl implements BrokerServiceGateway {
 
-    private final UserMapper userMapper;
     private final AmqpConfig amqpConfig;
     private final RestTemplate restTemplate;
-    private final GatewayConfig gatewayConfig;
 
     @Autowired
-    public BrokerServiceGatewayImpl(UserMapper userMapper, RestTemplate restTemplate, AmqpConfig amqpConfig,
-                                    GatewayConfig gatewayConfig) {
-        this.userMapper = userMapper;
+    public BrokerServiceGatewayImpl(RestTemplate restTemplate, AmqpConfig amqpConfig) {
         this.amqpConfig = amqpConfig;
         this.restTemplate = restTemplate;
-        this.gatewayConfig = gatewayConfig;
     }
 
     @Override
@@ -48,21 +39,6 @@ public class BrokerServiceGatewayImpl implements BrokerServiceGateway {
         log.info("Created user at broker service with username {}", username);
     }
 
-    @Override
-    public void grantUserHost(String username) throws BrokerUserCreationException {
-        /* grant */
-        final URI grantUrl = URI.create(gatewayConfig.getGatewayEndpoint() + "/api/broker/permissions/%2F/" + username);
-        final GrantVirtualHostPermissionsDto grantDto = userMapper.signupRequestDtoToGrantComponentDto();
-        final ResponseEntity<Void> grantResponse = restTemplate.exchange(grantUrl, HttpMethod.PUT,
-                new HttpEntity<>(grantDto, getHeaders()), Void.class);
-        if (!grantResponse.getStatusCode().equals(HttpStatus.CREATED)) {
-            log.error("Failed to grant permissions at queue service: {}", grantResponse.getStatusCode());
-            throw new BrokerUserCreationException("Failed to grant permissions at queue service");
-        }
-        log.info("Granted user permissions at queue service for username {}", username);
-        log.debug("granted user permissions at queue service {}", grantDto);
-    }
-
     @Override
     public void modifyUserPassword(String username, CreateUserDto data) throws BrokerUserCreationException {
         /* modify at broker service */
diff --git a/fda-authentication-service/services/src/main/java/at/tuwien/mapper/UserMapper.java b/fda-authentication-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
index c3cd21fcff..dd5c761b5b 100644
--- a/fda-authentication-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
+++ b/fda-authentication-service/services/src/main/java/at/tuwien/mapper/UserMapper.java
@@ -6,6 +6,9 @@ import at.tuwien.api.auth.JwtResponseDto;
 import at.tuwien.api.auth.LoginRequestDto;
 import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.user.*;
+import at.tuwien.entities.container.Container;
+import at.tuwien.entities.database.Database;
+import at.tuwien.entities.database.table.Table;
 import at.tuwien.entities.user.RoleType;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.OrcidMalformedException;
@@ -17,6 +20,8 @@ import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.security.Principal;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -116,11 +121,25 @@ public interface UserMapper {
                 .toString();
     }
 
-    default GrantVirtualHostPermissionsDto signupRequestDtoToGrantComponentDto() {
+    default GrantVirtualHostPermissionsDto signupRequestDtoToGrantVirtualHostPermissionsDto() {
         return GrantVirtualHostPermissionsDto.builder()
-                .configure(".*")
-                .write(".*")
-                .read(".*")
+                .configure("")
+                .write("")
+                .read("")
+                .build();
+    }
+
+    default GrantVirtualHostPermissionsDto userToGrantVirtualHostPermissionsDto(User data) {
+        final List<Database> databases = new LinkedList<>();
+        data.getContainers()
+                .forEach(container -> databases.addAll(container.getDatabases()));
+        final String permissions = "^[" + databases.stream()
+                .map(Database::getExchange)
+                .collect(Collectors.joining("|")) + "]";
+        return GrantVirtualHostPermissionsDto.builder()
+                .configure("")
+                .write(permissions)
+                .read(permissions)
                 .build();
     }
 
diff --git a/fda-authentication-service/services/src/main/java/at/tuwien/service/QueueService.java b/fda-authentication-service/services/src/main/java/at/tuwien/service/QueueService.java
index cc1332c32b..4100c95def 100644
--- a/fda-authentication-service/services/src/main/java/at/tuwien/service/QueueService.java
+++ b/fda-authentication-service/services/src/main/java/at/tuwien/service/QueueService.java
@@ -3,10 +3,7 @@ package at.tuwien.service;
 import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.user.UserPasswordDto;
 import at.tuwien.entities.user.User;
-import at.tuwien.exception.AuthenticationInvalidException;
 import at.tuwien.exception.BrokerUserCreationException;
-import at.tuwien.exception.UserEmailNotVerifiedException;
-import at.tuwien.exception.UserNotFoundException;
 import org.springframework.stereotype.Service;
 
 
diff --git a/fda-authentication-service/services/src/main/java/at/tuwien/service/UserService.java b/fda-authentication-service/services/src/main/java/at/tuwien/service/UserService.java
index 695ff08f25..22d767106f 100644
--- a/fda-authentication-service/services/src/main/java/at/tuwien/service/UserService.java
+++ b/fda-authentication-service/services/src/main/java/at/tuwien/service/UserService.java
@@ -4,9 +4,7 @@ import at.tuwien.api.auth.SignupRequestDto;
 import at.tuwien.api.user.*;
 import at.tuwien.entities.user.User;
 import at.tuwien.exception.*;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.security.Principal;
 import java.util.List;
 
 public interface UserService {
@@ -52,7 +50,7 @@ public interface UserService {
      * @param user The information.
      * @return The created user.
      * @throws UserEmailExistsException The email in the information exists already.
-     * @throws UserNameExistsException  The user name extists already.
+     * @throws UserNameExistsException  The username exists already.
      * @throws RoleNotFoundException    The role specified was not found.
      */
     User create(SignupRequestDto user) throws UserEmailExistsException, UserNameExistsException, RoleNotFoundException;
diff --git a/fda-authentication-service/services/src/main/java/at/tuwien/service/impl/QueueServiceImpl.java b/fda-authentication-service/services/src/main/java/at/tuwien/service/impl/QueueServiceImpl.java
index d4e10dcb82..65a223006d 100644
--- a/fda-authentication-service/services/src/main/java/at/tuwien/service/impl/QueueServiceImpl.java
+++ b/fda-authentication-service/services/src/main/java/at/tuwien/service/impl/QueueServiceImpl.java
@@ -29,7 +29,6 @@ public class QueueServiceImpl implements QueueService {
                 .tags("")
                 .build();
         brokerServiceGateway.createUser(username, userDto);
-        brokerServiceGateway.grantUserHost(username);
     }
 
     @Override
diff --git a/fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerDatabaseEndpoint.java b/fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
similarity index 93%
rename from fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerDatabaseEndpoint.java
rename to fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
index be02b5e9da..4837272952 100644
--- a/fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/ContainerDatabaseEndpoint.java
+++ b/fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java
@@ -30,21 +30,19 @@ import java.util.stream.Collectors;
 @RestController
 @CrossOrigin(origins = "*")
 @RequestMapping("/api/container/{id}/database")
-public class ContainerDatabaseEndpoint extends AbstractEndpoint {
+public class DatabaseEndpoint extends AbstractEndpoint {
 
-    private final UserService userService;
     private final DatabaseMapper databaseMapper;
     private final MariaDbServiceImpl databaseService;
     private final QueryStoreService queryStoreService;
     private final MessageQueueService messageQueueService;
 
     @Autowired
-    public ContainerDatabaseEndpoint(DatabaseMapper databaseMapper, ContainerService containerService,
-                                     UserService userService, MariaDbServiceImpl databaseService,
-                                     QueryStoreService queryStoreService, MessageQueueService messageQueueService) {
+    public DatabaseEndpoint(DatabaseMapper databaseMapper, ContainerService containerService,
+                            MariaDbServiceImpl databaseService, QueryStoreService queryStoreService,
+                            MessageQueueService messageQueueService) {
         super(databaseService, containerService);
         this.databaseMapper = databaseMapper;
-        this.userService = userService;
         this.databaseService = databaseService;
         this.queryStoreService = queryStoreService;
         this.messageQueueService = messageQueueService;
@@ -73,7 +71,7 @@ public class ContainerDatabaseEndpoint extends AbstractEndpoint {
             throws ImageNotSupportedException, ContainerNotFoundException, DatabaseMalformedException,
             AmqpException, ContainerConnectionException, UserNotFoundException,
             DatabaseNotFoundException, DatabaseNameExistsException, DatabaseConnectionException,
-            QueryMalformedException, NotAllowedException {
+            QueryMalformedException, NotAllowedException, BrokerVirtualHostCreationException {
         if (!hasContainerPermission(containerId, "CREATE_DATABASE", principal)) {
             log.error("Missing database create permission");
             throw new NotAllowedException("Missing database create permission");
diff --git a/fda-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java b/fda-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java
index c56e5b1563..3a80f1fae4 100644
--- a/fda-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java
+++ b/fda-database-service/rest-service/src/test/java/at/tuwien/service/AmqpServiceIntegrationTest.java
@@ -3,6 +3,7 @@ package at.tuwien.service;
 import at.tuwien.BaseUnitTest;
 import at.tuwien.config.ReadyConfig;
 import at.tuwien.exception.AmqpException;
+import at.tuwien.exception.BrokerVirtualHostCreationException;
 import at.tuwien.repository.jpa.DatabaseRepository;
 import at.tuwien.service.impl.RabbitMqServiceImpl;
 import com.github.dockerjava.api.command.CreateContainerResponse;
@@ -108,7 +109,7 @@ public class AmqpServiceIntegrationTest extends BaseUnitTest {
     }
 
     @Test
-    public void createExchange_succeeds() throws AmqpException, IOException {
+    public void createExchange_succeeds() throws AmqpException, IOException, BrokerVirtualHostCreationException {
         final Principal principal = new BasicUserPrincipal(USER_1_USERNAME);
 
         /* mock */
diff --git a/fda-database-service/services/src/main/java/at/tuwien/config/GatewayConfig.java b/fda-database-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
index a6a8a2003e..488ac8bffe 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/config/GatewayConfig.java
@@ -1,21 +1,39 @@
 package at.tuwien.config;
 
+import lombok.Getter;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.support.BasicAuthenticationInterceptor;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.util.DefaultUriBuilderFactory;
 
+@Getter
 @Configuration
 public class GatewayConfig {
 
     @Value("${fda.gateway.endpoint}")
     private String gatewayEndpoint;
 
+    @Value("${spring.rabbitmq.username}")
+    private String brokerUsername;
+
+    @Value("${spring.rabbitmq.password}")
+    private String brokerPassword;
+
+    @Bean
+    public RestTemplate authenticationRestTemplate() {
+        final RestTemplate restTemplate = new RestTemplate();
+        restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(gatewayEndpoint));
+        return restTemplate;
+    }
+
     @Bean
-    public RestTemplate restTemplate() {
-        final RestTemplate restTemplate =  new RestTemplate();
+    public RestTemplate brokerRestTemplate() {
+        final RestTemplate restTemplate = new RestTemplate();
         restTemplate.setUriTemplateHandler(new DefaultUriBuilderFactory(gatewayEndpoint));
+        restTemplate.getInterceptors()
+                .add(new BasicAuthenticationInterceptor(brokerUsername, brokerPassword));
         return restTemplate;
     }
 
diff --git a/fda-database-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java b/fda-database-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java
index 099dc1839a..bdaf5d14d8 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/gateway/BrokerServiceGateway.java
@@ -3,6 +3,7 @@ package at.tuwien.gateway;
 
 import at.tuwien.api.amqp.CreateVirtualHostDto;
 import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto;
+import at.tuwien.api.user.ExchangeUpdatePermissionsDto;
 import at.tuwien.exception.BrokerVirtualHostCreationException;
 
 public interface BrokerServiceGateway {
@@ -22,6 +23,6 @@ public interface BrokerServiceGateway {
      * @param data     The grant data.
      * @throws BrokerVirtualHostCreationException The queue service did not respond within the 3s timeout.
      */
-    void grantPermission(String username, GrantVirtualHostPermissionsDto data)
+    void grantPermission(String username, ExchangeUpdatePermissionsDto data)
             throws BrokerVirtualHostCreationException;
 }
diff --git a/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java b/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java
index 30507c4b6e..4fda21f844 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java
@@ -4,6 +4,7 @@ import at.tuwien.api.user.UserDto;
 import at.tuwien.gateway.AuthenticationServiceGateway;
 import at.tuwien.mapper.UserMapper;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
@@ -19,7 +20,8 @@ public class AuthenticationServiceGatewayImpl implements AuthenticationServiceGa
     private final RestTemplate restTemplate;
 
     @Autowired
-    public AuthenticationServiceGatewayImpl(UserMapper userMapper, RestTemplate restTemplate) {
+    public AuthenticationServiceGatewayImpl(UserMapper userMapper,
+                                            @Qualifier("authenticationRestTemplate") RestTemplate restTemplate) {
         this.userMapper = userMapper;
         this.restTemplate = restTemplate;
     }
@@ -29,7 +31,7 @@ public class AuthenticationServiceGatewayImpl implements AuthenticationServiceGa
         final HttpHeaders headers = new HttpHeaders();
         headers.set("Authorization", "Bearer " + token);
         final ResponseEntity<UserDto> response = restTemplate.exchange("/api/auth", HttpMethod.PUT,
-                new HttpEntity<>("", headers), UserDto.class);
+                new HttpEntity<>(null, headers), UserDto.class);
         return userMapper.userDtoToUserDetailsDto(response.getBody());
     }
 
diff --git a/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java b/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java
index f8b88ccfb1..e803ac2fd8 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/gateway/impl/BrokerServiceGatewayImpl.java
@@ -1,11 +1,13 @@
 package at.tuwien.gateway.impl;
 
 import at.tuwien.api.amqp.CreateVirtualHostDto;
-import at.tuwien.api.amqp.GrantVirtualHostPermissionsDto;
+import at.tuwien.api.user.ExchangeUpdatePermissionsDto;
+import at.tuwien.config.GatewayConfig;
 import at.tuwien.exception.BrokerVirtualHostCreationException;
 import at.tuwien.gateway.BrokerServiceGateway;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatus;
@@ -13,37 +15,46 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import java.net.URI;
+
 @Slf4j
 @Service
 public class BrokerServiceGatewayImpl implements BrokerServiceGateway {
 
     private final RestTemplate restTemplate;
+    private final GatewayConfig gatewayConfig;
 
     @Autowired
-    public BrokerServiceGatewayImpl(RestTemplate restTemplate) {
+    public BrokerServiceGatewayImpl(@Qualifier("brokerRestTemplate") RestTemplate restTemplate,
+                                    GatewayConfig gatewayConfig) {
         this.restTemplate = restTemplate;
+        this.gatewayConfig = gatewayConfig;
     }
 
     @Override
     public void createVirtualHost(CreateVirtualHostDto data) throws BrokerVirtualHostCreationException {
-        log.debug("create virtual host at broker service {}", data);
         final ResponseEntity<Void> response = restTemplate.exchange("/api/broker/vhost", HttpMethod.POST,
                 new HttpEntity<>(data), Void.class);
-        if (!response.getStatusCode().equals(HttpStatus.ACCEPTED)) {
+        if (!response.getStatusCode().equals(HttpStatus.CREATED)) {
             log.error("Failed to create virtual host: {}", response.getStatusCode());
             throw new BrokerVirtualHostCreationException("Failed to create virtual host");
         }
+        log.info("Create virtual host with name {}", data.getName());
+        log.debug("create virtual host {}", data);
     }
 
     @Override
-    public void grantPermission(String username, GrantVirtualHostPermissionsDto data)
+    public void grantPermission(String username, ExchangeUpdatePermissionsDto data)
             throws BrokerVirtualHostCreationException {
-        final ResponseEntity<Void> response = restTemplate.exchange("/api/broker/user/" + username + "/permission",
-                HttpMethod.PUT, new HttpEntity<>(data), Void.class);
-        if (!response.getStatusCode().equals(HttpStatus.ACCEPTED)) {
+        final URI grantUri = URI.create(gatewayConfig.getGatewayEndpoint() + "/api/broker/topic-permissions/%2F/" + username);
+        final ResponseEntity<Void> response = restTemplate.exchange(grantUri, HttpMethod.PUT,
+                new HttpEntity<>(data), Void.class);
+        if (!response.getStatusCode().equals(HttpStatus.CREATED) && !response.getStatusCode().equals(HttpStatus.NO_CONTENT)) {
             log.error("Failed to grant virtual host: {}", response.getStatusCode());
             throw new BrokerVirtualHostCreationException("Failed to grant virtual host");
         }
+        log.info("Grant permission for user with username {}", username);
+        log.debug("grant permission {}", data);
     }
 
 }
diff --git a/fda-database-service/services/src/main/java/at/tuwien/mapper/AmqpMapper.java b/fda-database-service/services/src/main/java/at/tuwien/mapper/AmqpMapper.java
index f09ec94c32..6df6e4d5a3 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/mapper/AmqpMapper.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/mapper/AmqpMapper.java
@@ -1,5 +1,6 @@
 package at.tuwien.mapper;
 
+import at.tuwien.api.user.ExchangeUpdatePermissionsDto;
 import at.tuwien.entities.database.Database;
 import org.mapstruct.Mapper;
 
@@ -10,4 +11,12 @@ public interface AmqpMapper {
         return database.getInternalName();
     }
 
+    default ExchangeUpdatePermissionsDto exchangeToExchangeUpdatePermissionsDto(String exchange) {
+        return ExchangeUpdatePermissionsDto.builder()
+                .exchange(exchange)
+                .read(".*")
+                .write(".*")
+                .build();
+    }
+
 }
diff --git a/fda-database-service/services/src/main/java/at/tuwien/service/MessageQueueService.java b/fda-database-service/services/src/main/java/at/tuwien/service/MessageQueueService.java
index 4736252727..96db86c292 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/service/MessageQueueService.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/service/MessageQueueService.java
@@ -14,7 +14,7 @@ public interface MessageQueueService {
      * @param principal The user.
      * @throws AmqpException Could not create the exchange.
      */
-    void createExchange(Database database, Principal principal) throws AmqpException;
+    void createExchange(Database database, Principal principal) throws AmqpException, BrokerVirtualHostCreationException;
 
     /**
      * Deletes an exchange for a database.
diff --git a/fda-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java b/fda-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java
index 487a04f4ed..4f530f784f 100644
--- a/fda-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java
+++ b/fda-database-service/services/src/main/java/at/tuwien/service/impl/RabbitMqServiceImpl.java
@@ -1,8 +1,12 @@
 package at.tuwien.service.impl;
 
+import at.tuwien.api.user.ExchangeUpdatePermissionsDto;
 import at.tuwien.config.AmqpConfig;
 import at.tuwien.entities.database.Database;
 import at.tuwien.exception.AmqpException;
+import at.tuwien.exception.BrokerVirtualHostCreationException;
+import at.tuwien.gateway.BrokerServiceGateway;
+import at.tuwien.mapper.AmqpMapper;
 import at.tuwien.repository.jpa.DatabaseRepository;
 import at.tuwien.service.MessageQueueService;
 import com.rabbitmq.client.BuiltinExchangeType;
@@ -23,17 +27,22 @@ public class RabbitMqServiceImpl implements MessageQueueService {
 
     private final Channel channel;
     private final AmqpConfig amqpConfig;
+    private final AmqpMapper amqpMapper;
     private final DatabaseRepository databaseRepository;
+    private final BrokerServiceGateway brokerServiceGateway;
 
     @Autowired
-    public RabbitMqServiceImpl(Channel channel, AmqpConfig amqpConfig, DatabaseRepository databaseRepository) {
+    public RabbitMqServiceImpl(Channel channel, AmqpConfig amqpConfig, AmqpMapper amqpMapper,
+                               DatabaseRepository databaseRepository, BrokerServiceGateway brokerServiceGateway) {
         this.channel = channel;
         this.amqpConfig = amqpConfig;
+        this.amqpMapper = amqpMapper;
         this.databaseRepository = databaseRepository;
+        this.brokerServiceGateway = brokerServiceGateway;
     }
 
     @PostConstruct
-    public void init() throws AmqpException {
+    public void init() throws AmqpException, BrokerVirtualHostCreationException {
         final List<Database> databases = databaseRepository.findAll();
         final Principal principal = new BasicUserPrincipal(amqpConfig.getAmpqUsername());
         for (Database database : databases) {
@@ -42,7 +51,8 @@ public class RabbitMqServiceImpl implements MessageQueueService {
     }
 
     @Override
-    public void createExchange(Database database, Principal principal) throws AmqpException {
+    public void createExchange(Database database, Principal principal) throws AmqpException,
+            BrokerVirtualHostCreationException {
         try {
             channel.exchangeDeclare(database.getExchange(), BuiltinExchangeType.FANOUT, true);
             log.info("Declared exchange {}", database.getExchange());
@@ -50,6 +60,9 @@ public class RabbitMqServiceImpl implements MessageQueueService {
             log.error("Failed to declare exchange {}", database.getExchange());
             throw new AmqpException("Failed to declare exchange", e);
         }
+        final ExchangeUpdatePermissionsDto permissions = amqpMapper.exchangeToExchangeUpdatePermissionsDto(
+                database.getExchange());
+        brokerServiceGateway.grantPermission(principal.getName(), permissions);
     }
 
     @Override
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java
index 7aac059270..c04f00ca75 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ChannelDetailsDto.java
@@ -2,6 +2,7 @@ package at.tuwien.api.amqp;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -16,34 +17,27 @@ public class ChannelDetailsDto {
 
     @NotNull
     @JsonProperty("connection_name")
-    @Parameter(name = "connection name")
     private String connectionName;
 
     @NotNull
-    @Parameter(name = "channel name")
     private String name;
 
     @NotNull
-    @Parameter(name = "channel node")
     private String node;
 
     @NotNull
     @JsonProperty("number")
-    @Parameter(name = "channel number")
     private Integer number;
 
     @NotNull
     @JsonProperty("peer_host")
-    @Parameter(name = "channel peer host")
     private String peerHost;
 
     @NotNull
     @JsonProperty("peer_port")
-    @Parameter(name = "channel peer port")
     private Integer peerPort;
 
     @NotNull
-    @Parameter(name = "channel user")
     private String user;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java
index cdef980445..0b97d003fb 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/ConsumerDto.java
@@ -16,39 +16,31 @@ public class ConsumerDto {
 
     @NotNull
     @JsonProperty("ack_required")
-    @Parameter(name = "acknowledge required")
     private Boolean ackRequired;
 
     @NotNull
-    @Parameter(name = "active")
     private Boolean active;
 
     @NotNull
     @JsonProperty("activity_status")
-    @Parameter(name = "activity status")
     private String activityStatus;
 
     @NotNull
     @JsonProperty("channel_details")
-    @Parameter(name = "channel details")
     private ChannelDetailsDto channelDetails;
 
     @NotNull
     @JsonProperty("consumer_tag")
-    @Parameter(name = "consumer tag")
     private String consumerTag;
 
     @NotNull
-    @Parameter(name = "exclusive")
     private Boolean exclusive;
 
     @NotNull
     @JsonProperty("prefetch_count")
-    @Parameter(name = "prefetch count")
     private Integer prefetchCount;
 
     @NotNull
-    @Parameter(name = "queue")
     private QueueBriefDto queue;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java
index 5c5e89c07a..d38ff94644 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateUserDto.java
@@ -1,9 +1,8 @@
 package at.tuwien.api.amqp;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import javax.validation.constraints.Email;
 import javax.validation.constraints.NotNull;
 
 @Getter
@@ -16,10 +15,9 @@ public class CreateUserDto {
 
     @NotNull
     @ToString.Exclude
-    @Parameter(name = "user password")
     private String password;
 
-    @Parameter(name = "user tags")
+    @Schema(example = "administrator")
     private String tags;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java
index 937f0442ad..faa08c26d5 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/CreateVirtualHostDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.amqp;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -14,13 +14,11 @@ import javax.validation.constraints.NotNull;
 public class CreateVirtualHostDto {
 
     @NotNull
-    @Parameter(name = "virtual host name")
+    @Schema(example = "air")
     private String name;
 
-    @Parameter(name = "virtual host description")
     private String description;
 
-    @Parameter(name = "virtual host tags")
     private String tags;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java
index 36befe2a1b..2bd94cdbbc 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/GrantVirtualHostPermissionsDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.amqp;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -13,15 +13,15 @@ import javax.validation.constraints.NotNull;
 @NoArgsConstructor
 public class GrantVirtualHostPermissionsDto {
     @NotNull
-    @Parameter(name = "configure permission", example = ".*")
+    @Schema(example = ".*")
     private String configure;
 
     @NotNull
-    @Parameter(name = "write permission", example = ".*")
+    @Schema(example = ".*")
     private String write;
 
     @NotNull
-    @Parameter(name = "read permission", example = ".*")
+    @Schema(example = ".*")
     private String read;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java
index 44364c1991..95713bad69 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/QueueBriefDto.java
@@ -1,6 +1,7 @@
 package at.tuwien.api.amqp;
 
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -14,11 +15,11 @@ import javax.validation.constraints.NotNull;
 public class QueueBriefDto {
 
     @NotNull
-    @Parameter(name = "queue vhost")
+    @Schema(example = "%2F")
     private String vhost;
 
     @NotNull
-    @Parameter(name = "queue name")
+    @Schema(example = "air")
     private String name;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java
index 9f57f9ef02..caf19dbc93 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/amqp/TupleDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.amqp;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -14,11 +14,11 @@ import javax.validation.constraints.NotNull;
 public class TupleDto {
 
     @NotNull
-    @Parameter(name = "key", example = "name")
+    @Schema(example = "name")
     private String k;
 
     @NotNull
-    @Parameter(name = "value", example = "Max Mustermann")
+    @Schema(example = "Max Mustermann")
     private String v;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java
index d561528856..c92b4913c8 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/JwtResponseDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.auth;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -16,22 +16,18 @@ public class JwtResponseDto {
 
     @NotNull
     @ToString.Exclude
-    @Parameter(name = "jwt")
     private String token;
 
-    @Parameter(name = "user type")
     private String type;
 
-    @Parameter(name = "id")
     private Long id;
 
-    @Parameter(name = "user name")
+    @Schema(example = "user")
     private String username;
 
-    @Parameter(name = "user email")
+    @Schema(example = "user@example.com")
     private String email;
 
-    @Parameter(name = "user roles")
     private List<String> roles;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java
index 2701beedd6..87d34649f9 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/LoginRequestDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.auth;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -14,12 +14,11 @@ import javax.validation.constraints.NotNull;
 public class LoginRequestDto {
 
     @NotNull
-    @Parameter(name = "user name")
+    @Schema(example = "user")
     private String username;
 
     @NotNull
     @ToString.Exclude
-    @Parameter(name = "password hash")
     private String password;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java
index bebaba12dd..7f6f3937bc 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/auth/SignupRequestDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.auth;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.Email;
@@ -17,17 +17,16 @@ public class SignupRequestDto {
 
     @NotNull
     @Pattern(regexp = "^[a-z0-9]{3,}$")
-    @Parameter(name = "user name")
+    @Schema(example = "user")
     private String username;
 
     @NotNull
     @Email
-    @Parameter(name = "user email")
+    @Schema(example = "user@example.com")
     private String email;
 
     @NotNull
     @ToString.Exclude
-    @Parameter(name = "password hash")
     private String password;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java
index e49a313e24..9d641d510d 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerActionTypeDto.java
@@ -2,7 +2,6 @@ package at.tuwien.api.container;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Getter;
-import lombok.ToString;
 
 @Getter
 public enum ContainerActionTypeDto {
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
index b0f03a60a6..c8a6ff55aa 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerBriefDto.java
@@ -1,17 +1,14 @@
 package at.tuwien.api.container;
 
 import at.tuwien.api.user.UserBriefDto;
-import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.time.Instant;
-import java.time.LocalDateTime;
 
 @Getter
 @Setter
@@ -22,26 +19,23 @@ import java.time.LocalDateTime;
 public class ContainerBriefDto {
 
     @NotNull
-    @Parameter(name = "id", example = "1")
     private Long id;
 
     @NotNull
-    @Parameter(name = "container hash", example = "f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50")
+    @Schema(example = "f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50")
     private String hash;
 
     @NotBlank
-    @Parameter(name = "container name", example = "Weather World")
+    @Schema(example = "Air Quality")
     private String name;
 
-    @Parameter(name = "container creator")
     private UserBriefDto creator;
 
     @NotBlank
     @JsonProperty("internal_name")
-    @Parameter(name = "container internal name", example = "weather-world")
+    @Schema(example = "air-quality")
     private String internalName;
 
-    @Parameter(name = "container created")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java
index e859f85b1b..50b82adab8 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerCreateRequestDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.container;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -14,15 +14,15 @@ import javax.validation.constraints.NotBlank;
 public class ContainerCreateRequestDto {
 
     @NotBlank
-    @Parameter(name = "name", example = "Weather World")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank
-    @Parameter(name = "repository", example = "postgres")
+    @Schema(example = "mariadb")
     private String repository;
 
     @NotBlank
-    @Parameter(name = "tag", example = "latest")
-    private String tag = "latest";
+    @Schema(example = "10.5")
+    private String tag;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java
index cacac095d0..fef1d04e42 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerDto.java
@@ -7,6 +7,7 @@ import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -23,40 +24,37 @@ import java.util.List;
 public class ContainerDto {
 
     @NotNull
-    @Parameter(name = "id", example = "1")
     private Long id;
 
     @NotNull
-    @Parameter(name = "container hash", example = "f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50")
+    @Schema(example = "f829dd8a884182d0da846f365dee1221fd16610a14c81b8f9f295ff162749e50")
     private String hash;
 
     @NotBlank
-    @Parameter(name = "container name", example = "Weather World")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank
     @JsonProperty("internal_name")
-    @Parameter(name = "container internal name", example = "weather-world")
+    @Schema(example = "air-quality")
     private String internalName;
 
-    @Parameter(name = "state", example = "RUNNING")
+    @Schema(example = "running")
     private ContainerStateDto state;
 
     @ToString.Exclude
-    @Parameter(name = "databases")
+    @Schema
     private List<DatabaseDto> databases;
 
     @JsonProperty("ip_address")
     private String ipAddress;
 
-    @Parameter(name = "container image")
     private ImageBriefDto image;
 
-    @Parameter(name = "container port")
     private Integer port;
 
     @NotNull
-    @Parameter(name = "start time", example = "2021-03-12T15:26:21.678396092Z")
+    @Schema(example = "2021-03-12T15:26:21.678396092Z")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java
index de8a968c91..faf2c5bcf1 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/ContainerStateDto.java
@@ -1,10 +1,38 @@
 package at.tuwien.api.container;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Getter;
 import lombok.ToString;
 
 @Getter
-@ToString
 public enum ContainerStateDto {
-    CREATED, RESTARTING, RUNNING, PAUSED, EXITED, DEAD
+
+    @JsonProperty("created")
+    CREATED("created"),
+
+    @JsonProperty("restarting")
+    RESTARTING("restarting"),
+
+    @JsonProperty("running")
+    RUNNING("running"),
+
+    @JsonProperty("paused")
+    PAUSED("paused"),
+
+    @JsonProperty("exited")
+    EXITED("exited"),
+
+    @JsonProperty("dead")
+    DEAD("dead");
+
+    private String name;
+
+    ContainerStateDto(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
index 0624a29e77..036a254605 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageBriefDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.container.image;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -15,15 +15,14 @@ import javax.validation.constraints.NotNull;
 public class ImageBriefDto {
 
     @NotNull
-    @Parameter(required = true, example = "1")
     private Long id;
 
     @NotBlank
-    @Parameter(required = true, example = "mariadb")
+    @Schema(example = "mariadb")
     private String repository;
 
     @NotBlank
-    @Parameter(required = true, example = "10.5")
+    @Schema(example = "10.5")
     private String tag;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java
index c4a4e51bd3..427627006b 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageChangeDto.java
@@ -1,7 +1,7 @@
 package at.tuwien.api.container.image;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.Max;
@@ -18,27 +18,23 @@ public class ImageChangeDto {
 
     @Min(value = 1024, message = "only user ports are allowed 1024-65535")
     @Max(value = 65535, message = "only user ports are allowed 1024-65535")
-    @Parameter(example = "5432")
+    @Schema(example = "5432")
     private Integer defaultPort;
 
     private ImageEnvItemDto[] environment;
 
     @NotBlank
     @JsonProperty("driver_class")
-    @Parameter(required = true, example = "org.postgresql.Driver")
+    @Schema(example = "org.postgresql.Driver")
     private String driverClass;
 
     @NotBlank
-    @Parameter(required = true, example = "base64:aaaa")
-    private String logo;
-
-    @NotBlank
-    @Parameter(required = true, example = "Postgres")
+    @Schema(example = "Postgres")
     private String dialect;
 
     @NotBlank
     @JsonProperty("jdbc_method")
-    @Parameter(required = true, example = "postgresql")
+    @Schema(example = "postgresql")
     private String jdbcMethod;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java
index 19198bae1c..78a4c5f3dc 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageCreateDto.java
@@ -2,11 +2,12 @@ package at.tuwien.api.container.image;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import javax.persistence.Column;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Getter
 @Setter
@@ -17,41 +18,32 @@ import javax.validation.constraints.NotNull;
 public class ImageCreateDto {
 
     @NotBlank
-    @Parameter(required = true, example = "postgres")
+    @Schema(example = "mariadb")
     private String repository;
 
     @NotBlank
-    @Parameter(required = true, example = "latest")
+    @Parameter(example = "10.5")
     private String tag;
 
     @NotBlank
     @JsonProperty("driver_class")
-    @Parameter(required = true, example = "org.postgresql.Driver")
+    @Parameter(example = "'org.mariadb.jdbc.Driver")
     private String driverClass;
 
     @NotBlank
-    @Parameter(required = true, example = "POSTGRES")
+    @Parameter(required = true, example = "org.hibernate.dialect.MariaDBDialect")
     private String dialect;
 
-    @NotBlank
-    @Parameter(required = true, example = "base64:aaaa")
-    private String logo;
-
     @NotBlank
     @JsonProperty("jdbc_method")
-    @Parameter(required = true, example = "postgresql")
+    @Parameter(required = true, example = "mariadb")
     private String jdbcMethod;
 
-    @NotNull
-    @Parameter(required = true, example = "false")
-    private Boolean local;
-
     @NotNull
     @JsonProperty("default_port")
-    @Parameter(required = true, example = "5432")
+    @Parameter(required = true, example = "3006")
     private Integer defaultPort;
 
-    @Parameter(required = true, example = "[{\"key\":\"POSTGRES_USER\",\"value\":\"postgres\",\"type\":USERNAME},{\"key\":\"POSTGRES_PASSWORD\",\"value\":\"postgres\",\"type\":PASSWORD}]")
-    private ImageEnvItemDto[] environment;
+    private List<ImageEnvItemDto> environment;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java
index 77769f05dd..4db420f6f7 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDateDto.java
@@ -2,7 +2,7 @@ package at.tuwien.api.container.image;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -18,26 +18,25 @@ import java.time.Instant;
 public class ImageDateDto {
 
     @NotNull
-    @Parameter(required = true, example = "1")
     private Long id;
 
     @NotBlank
-    @Parameter(required = true, example = "30.01.2022")
+    @Schema(example = "30.01.2022")
     private String example;
 
     @NotBlank
     @JsonProperty("database_format")
-    @Parameter(required = true, example = "%d.%c.%Y")
+    @Schema(example = "%d.%c.%Y")
     private String databaseFormat;
 
     @NotBlank
     @JsonProperty("unix_format")
-    @Parameter(required = true, example = "dd.MM.YYYY")
+    @Schema(example = "dd.MM.YYYY")
     private String unixFormat;
 
     @NotNull
     @JsonProperty("has_time")
-    @Parameter(required = true)
+    @Schema(example = "false")
     private Boolean hasTime;
 
     @JsonProperty("created_at")
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
index 832d2e586c..7c76a0c181 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageDto.java
@@ -2,7 +2,7 @@ package at.tuwien.api.container.image;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -20,51 +20,49 @@ import java.util.List;
 public class ImageDto {
 
     @NotNull
-    @Parameter(required = true, example = "1")
     private Long id;
 
     @NotBlank
-    @Parameter(required = true, example = "mariadb")
+    @Schema(example = "mariadb")
     private String repository;
 
     @NotBlank
-    @Parameter(required = true, example = "10.5")
+    @Schema(example = "10.5")
     private String tag;
 
     @NotBlank
     @JsonProperty("driver_class")
-    @Parameter(required = true, example = "org.postgresql.Driver")
+    @Schema(example = "org.mariadb.jdbc.Driver")
     private String driverClass;
 
     @JsonProperty("date_formats")
     private List<ImageDateDto> dateFormats;
 
     @NotBlank
-    @Parameter(required = true, example = "Postgres")
+    @Schema(example = "org.hibernate.dialect.MariaDBDialect")
     private String dialect;
 
     @NotBlank
     @JsonProperty("jdbc_method")
-    @Parameter(required = true, example = "postgres")
+    @Schema(example = "mariadb")
     private String jdbcMethod;
 
-    @Parameter(required = true, example = "sha256:c5ec7353d87dfc35067e7bffeb25d6a0d52dad41e8b7357213e3b12d6e7ff78e")
+    @Schema(example = "sha256:c5ec7353d87dfc35067e7bffeb25d6a0d52dad41e8b7357213e3b12d6e7ff78e")
     private String hash;
 
-    @Parameter(required = true, example = "2021-03-12T15:26:21.678396092Z")
+    @Schema(example = "2021-03-12T15:26:21.678396092Z")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant compiled;
 
-    @Parameter(required = true, example = "314295447")
+    @Schema(example = "314295447")
     private BigInteger size;
 
     @NotNull
     @JsonProperty("default_port")
-    @Parameter(required = true, example = "5432")
+    @Schema(example = "3306")
     private Integer defaultPort;
 
     @NotNull
-    @Parameter(required = true)
-    private ImageEnvItemDto[] environment;
+    private List<ImageEnvItemDto> environment;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java
index c70af43f0e..934d6479a9 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.container.image;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -15,19 +15,18 @@ import javax.validation.constraints.NotNull;
 public class ImageEnvItemDto {
 
     @NotNull
-    @Parameter(required = true, example = "1")
     private Long iid;
 
     @NotBlank
-    @Parameter(required = true, example = "POSTGRES_USER")
+    @Schema(example = "MARIADB_ROOT_PASSWORD")
     private String key;
 
     @NotBlank
-    @Parameter(required = true, example = "postgres")
+    @Schema(example = "mariadb")
     private String value;
 
-    @NonNull
-    @Parameter(required = true, example = "USERNAME")
+    @NotNull
+    @Schema(example = "PRIVILEGED_PASSWORD")
     private ImageEnvItemTypeDto type;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java
index a447593468..4141175ee6 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/container/image/ImageEnvItemTypeDto.java
@@ -1,5 +1,29 @@
 package at.tuwien.api.container.image;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public enum ImageEnvItemTypeDto {
-    USERNAME, PASSWORD, PRIVILEGED_USERNAME, PRIVILEGED_PASSWORD;
+
+    @JsonProperty("username")
+    USERNAME("username"),
+
+    @JsonProperty("password")
+    PASSWORD("password"),
+
+    @JsonProperty("privileged_username")
+    PRIVILEGED_USERNAME("privileged_username"),
+
+    @JsonProperty("privileged_password")
+    PRIVILEGED_PASSWORD("privileged_password");
+
+    private String name;
+
+    ImageEnvItemTypeDto(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
index 813f9af3c0..4a2e5974ef 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseBriefDto.java
@@ -1,12 +1,11 @@
 package at.tuwien.api.database;
 
 import at.tuwien.api.container.ContainerBriefDto;
-import at.tuwien.api.container.ContainerDto;
 import at.tuwien.api.user.UserBriefDto;
-import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -22,30 +21,27 @@ import java.time.Instant;
 public class DatabaseBriefDto {
 
     @NotNull(message = "database id is required")
-    @Parameter(name = "database id", example = "1")
     private Long id;
 
     @NotBlank(message = "name is required")
-    @Parameter(name = "database name", example = "Weather Australia")
+    @Schema(example = "Air Quality")
     private String name;
 
-    @Parameter(name = "database description", example = "Weather in Australia")
+    @Schema(example = "Air Quality in Austria")
     private String description;
 
     @JsonProperty("is_public")
-    @Parameter(name = "database visibility")
+    @Schema(example = "true")
     private Boolean isPublic;
 
-    @Parameter(name = "database engine", example = "mariadb:latest")
+    @Schema(example = "mariadb:10.5")
     private String engine;
 
-    @Parameter(name = "container")
     private ContainerBriefDto container;
 
-    @Parameter(name = "database creator")
     private UserBriefDto creator;
 
-    @Parameter(name = "database creation time", example = "2020-08-04 11:12:00")
+    @Schema(example = "2020-08-04 11:12:00")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java
index cd78401fc6..766e2a97e2 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseCreateDto.java
@@ -1,7 +1,7 @@
 package at.tuwien.api.database;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -16,12 +16,12 @@ import javax.validation.constraints.NotNull;
 public class DatabaseCreateDto {
 
     @NotBlank(message = "database name is required")
-    @Parameter(name = "database name", example = "Weather Australia")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotNull(message = "public attribute is required")
     @JsonProperty("is_public")
-    @Parameter(name = "database publicity", example = "true")
+    @Schema(example = "true")
     private Boolean isPublic;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
index 7bf7d1dfb9..9378f16272 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java
@@ -7,7 +7,6 @@ import at.tuwien.api.user.UserBriefDto;
 import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
@@ -25,75 +24,68 @@ import java.util.List;
 public class DatabaseDto {
 
     @NotNull
-    @Schema(name = "database id", example = "1")
     private Long id;
 
     @NotBlank
-    @Schema(name = "database name", example = "Weather Australia")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank
-    @Schema(name = "database exchange")
+    @Schema(example = "air_quality")
     private String exchange;
 
     @NotNull
-    @Schema(name = "database creator")
     private UserBriefDto creator;
 
     @NotBlank
     @JsonProperty("internal_name")
-    @Schema(name = "database internal name", example = "weather_australia")
+    @Schema(example = "air_quality")
     private String internalName;
 
-    @Schema(name = "database subjects")
+    @Schema(description = "database subjects")
     private List<String> subjects;
 
-    @Schema(name = "database language", example = "EN")
+    @Schema(example = "en")
     private LanguageTypeDto language;
 
-    @Schema(name = "database license", example = "MIT2")
     private LicenseDto license;
 
     @NotBlank
-    @Schema(name = "database description", example = "Weather Australia 2009-2021")
+    @Schema(example = "Air Quality in Austria")
     private String description;
 
-    @Schema(name = "database publisher", example = "TU Wien")
+    @Schema(example = "TU Wien")
     private String publisher;
 
-    @Schema(name = "database contact person")
     private UserDto contact;
 
     @JsonProperty("publication_year")
-    @Schema(name = "database publication year")
+    @Schema(description = "database publication year", example = "2022")
     private Integer publicationYear;
 
     @JsonProperty("publication_month")
-    @Schema(name = "database publication month")
+    @Schema(description = "database publication month", example = "12")
     private Integer publicationMonth;
 
     @JsonProperty("publication_day")
-    @Schema(name = "database publication day")
+    @Schema(description = "database publication day", example = "15")
     private Integer publicationDay;
 
-    @Schema(name = "tables")
     private List<TableBriefDto> tables;
 
     @JsonProperty("is_public")
-    @Schema(name = "database public")
+    @Schema(description = "database publicity", example = "true")
     private Boolean isPublic;
 
-    @Schema(name = "database container image")
     private ImageDto image;
 
-    @Schema(name = "container")
     private ContainerDto container;
 
-    @Schema(name = "database creation time", example = "2020-08-04 11:12:00")
+    @Schema(example = "2020-08-04 11:12:00")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
-    @Parameter(name = "database deletion time", example = "2020-08-04 11:13:00")
+    @Schema(example = "2020-08-04 11:13:00")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant deleted;
 
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyDto.java
index 9b834f6f3a..d3b4d2f1d7 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseModifyDto.java
@@ -20,41 +20,38 @@ import java.util.List;
 @NoArgsConstructor
 public class DatabaseModifyDto {
 
-    @Parameter(name = "database subjects", example = "[\"test\"]")
     private List<String> subjects;
 
     @NotBlank
-    @Parameter(name = "database description", example = "Sample")
+    @Schema(example = "Air Quality in Austria")
     private String description;
 
-    @Parameter(name = "database publisher", example = "TU Wien")
+    @Schema(example = "TU Wien")
     private String publisher;
 
     @NotNull
     @JsonProperty("publication_year")
-    @Schema(name = "database publication year")
+    @Schema(description = "database publication year", example = "2022")
     private Integer publicationYear;
 
     @Min(1)
     @Max(12)
     @JsonProperty("publication_month")
-    @Parameter(name = "database publication month")
+    @Schema(description = "database publication month", example = "12")
     private Integer publicationMonth;
 
     @Min(1)
     @Max(31)
     @JsonProperty("publication_day")
-    @Parameter(name = "database publication day")
+    @Schema(description = "database publication day", example = "15")
     private Integer publicationDay;
 
-    @Parameter(name = "database license")
     private LicenseDto license;
 
-    @Parameter(name = "database language", example = "EN")
+    @Schema(example = "en")
     private LanguageTypeDto language;
 
     @JsonProperty("contact_person")
-    @Parameter(name = "database contact person")
     private String contactPerson;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java
index 3150b3e6f2..d9257f4bd0 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseTransferDto.java
@@ -1,7 +1,7 @@
 package at.tuwien.api.database;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -16,7 +16,7 @@ public class DatabaseTransferDto {
 
     @NotNull
     @JsonProperty("is_public")
-    @Parameter(name = "database publicity", example = "true")
+    @Schema(example = "true")
     private Boolean isPublic;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java
index 5906f76b4c..b95215f060 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/LicenseDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.database;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -15,11 +15,11 @@ import javax.validation.constraints.NotNull;
 public class LicenseDto {
 
     @NotNull
-    @Parameter(name = "license identifier")
+    @Schema(example = "MIT")
     private String identifier;
 
     @NotBlank
-    @Parameter(name = "license uri")
+    @Schema(name = "https://opensource.org/licenses/MIT")
     private String uri;
 
 }
\ No newline at end of file
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java
index e15b49f5fb..c66c869091 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/SubjectModifyDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.database;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -13,11 +13,10 @@ import javax.validation.constraints.NotNull;
 @NoArgsConstructor
 public class SubjectModifyDto {
 
-    @Parameter(name = "subject id")
     private Long id;
 
     @NotNull
-    @Parameter(name = "subject name")
+    @Schema(example = "air")
     private String name;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java
index 0922183be2..c6434cfbf8 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteInternalQueryDto.java
@@ -12,10 +12,9 @@ import lombok.*;
 @ToString
 public class ExecuteInternalQueryDto {
 
-    @JsonProperty("ContainerID")
+    @JsonProperty("container_id")
     private String containerId;
 
-    @JsonProperty("Query")
     private String query;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java
index 50588942bd..5b5afb5272 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ExecuteStatementDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.database.query;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -15,6 +15,6 @@ import javax.validation.constraints.NotBlank;
 public class ExecuteStatementDto {
 
     @NotBlank(message = "statement is required")
-    @Parameter(name = "sql query")
+    @Schema(example = "SELECT `id` FROM `air_quality`")
     private String statement;
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java
index bd2a4c8700..77bad91c8b 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/ImportDto.java
@@ -2,6 +2,7 @@ package at.tuwien.api.database.query;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.Min;
@@ -18,30 +19,27 @@ import javax.validation.constraints.NotNull;
 public class ImportDto {
 
     @NotBlank(message = "location is required")
-    @Parameter(name = "csv location")
+    @Schema(example = "/tmp/file.csv")
     private String location;
 
     @Min(value = 0L)
     @JsonProperty("skip_lines")
-    @Parameter(name = "number of lines to skip when importing", example = "0")
     private Long skipLines;
 
     @JsonProperty("false_element")
-    @Parameter(name = "element denoting boolean false when importing", example = "0")
     private String falseElement;
 
     @JsonProperty("true_element")
-    @Parameter(name = "element denoting boolean true when importing", example = "1")
     private String trueElement;
 
     @JsonProperty("null_element")
-    @Parameter(name = "element denoting boolean null when importing", example = "NA")
+    @Schema(example = "NA")
     private String nullElement;
 
     @NotNull
-    @Parameter(name = "csv separator when importing", required = true, example = ",")
+    @Schema(example = ",")
     private Character separator;
 
-    @Parameter(name = "csv quote character when importing", example = "\"")
+    @Schema(example = "\"")
     private Character quote;
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
index 421e23ff38..60d4ba0f59 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryBriefDto.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -22,48 +23,43 @@ import java.time.Instant;
 public class QueryBriefDto {
 
     @NotNull(message = "id is required")
-    @Parameter(name = "query id", example = "1")
     private Long id;
 
     @NotNull(message = "container id is required")
-    @Parameter(name = "container id", example = "1")
     private Long cid;
 
     @NotNull(message = "database id is required")
-    @Parameter(name = "database id", example = "1")
     private Long dbid;
 
     @JsonIgnore
     @NotNull(message = "created by is required")
-    @Parameter(name = "creator id", example = "1")
     private Long createdBy;
 
     @NotNull(message = "creator is required")
-    @Parameter(name = "creator")
     private UserDto creator;
 
-    @Parameter(name = "execution time", example = "2022-01-01 08:00:00.000")
+    @Schema(example = "2022-01-01 08:00:00.000")
     private Instant execution;
 
     @NotBlank(message = "statement is required")
-    @Parameter(name = "query raw", example = "select * from table")
+    @Schema(example = "SELECT `id` FROM `air_quality`")
     private String query;
 
     @JsonProperty("query_normalized")
-    @Parameter(name = "query normalized", example = "select id, name from table")
+    @Schema(example = "SELECT `id` FROM `air_quality`")
     private String queryNormalized;
 
     @NotBlank(message = "query hash is required")
     @JsonProperty("query_hash")
-    @Parameter(name = "query hash sha256", example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
+    @Schema(example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
     private String queryHash;
 
     @JsonProperty("result_hash")
-    @Parameter(name = "result hash sha256", example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
+    @Schema(example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
     private String resultHash;
 
     @JsonProperty("result_number")
-    @Parameter(name = "result number of records", example = "1")
+    @Schema(example = "1")
     private Long resultNumber;
 
     @NotNull(message = "created timestamp is required")
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
index b13507e723..b1b267d6e6 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryDto.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -22,48 +23,43 @@ import java.time.Instant;
 public class QueryDto {
 
     @NotNull(message = "id is required")
-    @Parameter(name = "query id", example = "1")
     private Long id;
 
     @NotNull(message = "container id is required")
-    @Parameter(name = "container id", example = "1")
     private Long cid;
 
     @NotNull(message = "database id is required")
-    @Parameter(name = "database id", example = "1")
     private Long dbid;
 
     @JsonIgnore
     @NotNull(message = "created by is required")
-    @Parameter(name = "creator id", example = "1")
     private Long createdBy;
 
     @NotNull(message = "creator is required")
-    @Parameter(name = "creator")
     private UserDto creator;
 
-    @Parameter(name = "execution time", example = "2022-01-01 08:00:00.000")
+    @Schema(example = "2022-01-01 08:00:00.000")
     private Instant execution;
 
     @NotBlank(message = "statement is required")
-    @Parameter(name = "query raw", example = "select * from table")
+    @Schema(example = "SELECT `id` FROM `air_quality`")
     private String query;
 
     @JsonProperty("query_normalized")
-    @Parameter(name = "query normalized", example = "select id, name from table")
+    @Schema(example = "SELECT `id` FROM `air_quality`")
     private String queryNormalized;
 
     @NotBlank(message = "query hash is required")
     @JsonProperty("query_hash")
-    @Parameter(name = "query hash sha256", example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
+    @Parameter(example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
     private String queryHash;
 
     @JsonProperty("result_hash")
-    @Parameter(name = "result hash sha256", example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
+    @Parameter(example = "17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76")
     private String resultHash;
 
     @JsonProperty("result_number")
-    @Parameter(name = "result number of records", example = "1")
+    @Schema(example = "1")
     private Long resultNumber;
 
     @NotNull(message = "created timestamp is required")
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java
index 0f1f5d6292..02dcd5ffb6 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/QueryResultDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.database.query;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -17,14 +17,12 @@ import java.util.Map;
 public class QueryResultDto {
 
     @NotNull(message = "result set is required")
-    @Parameter(name = "query result")
     private List<Map<String, Object>> result;
 
     @NotNull(message = "query id is required")
-    @Parameter(name = "query id")
     private Long id;
 
-    @Parameter(name = "result number")
+    @Schema(example = "1")
     private Long resultNumber;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java
index 6be1c026d3..eaf459ba16 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/query/SaveStatementDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.database.query;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -15,6 +15,6 @@ import javax.validation.constraints.NotBlank;
 public class SaveStatementDto {
 
     @NotBlank(message = "statement is required")
-    @Parameter(name = "sql query")
+    @Schema(example = "SELECT `id` FROM `air_quality`")
     private String statement;
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
index dcbc043ca2..13b7bf9538 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableBriefDto.java
@@ -2,7 +2,7 @@ package at.tuwien.api.database.table;
 
 import at.tuwien.api.user.UserBriefDto;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -17,20 +17,18 @@ import javax.validation.constraints.NotNull;
 public class TableBriefDto {
 
     @NotNull(message = "id is required")
-    @Parameter(name = "table id", example = "1")
     private Long id;
 
     @NotBlank(message = "name is required")
-    @Parameter(name = "table name", example = "Weather Australia")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank(message = "internal name is required")
     @JsonProperty("internal_name")
-    @Parameter(name = "table internal name", example = "weather_australia")
+    @Schema(example = "air_quality")
     private String internalName;
 
     @NotNull(message = "creator is required")
-    @Parameter(name = "table creator")
     private UserBriefDto creator;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java
index 8d57bc8c5b..aa232704f4 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCreateDto.java
@@ -1,7 +1,7 @@
 package at.tuwien.api.database.table;
 
 import at.tuwien.api.database.table.columns.ColumnCreateDto;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -17,15 +17,14 @@ import java.util.List;
 public class TableCreateDto {
 
     @NotBlank
-    @Parameter(name = "name", example = "Weather Australia")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank
-    @Parameter(name = "table description", required = true, example = "Predict next-day rain in Australia")
+    @Schema(example = "Air Quality in Austria")
     private String description;
 
     @NotNull
-    @Parameter(name = "table columns", required = true)
     private List<ColumnCreateDto> columns;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java
index 968574ae97..77350153d8 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDeleteDto.java
@@ -1,6 +1,5 @@
 package at.tuwien.api.database.table;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -15,7 +14,6 @@ import java.util.Map;
 public class TableCsvDeleteDto {
 
     @NotNull(message = "primary key columns are required")
-    @Parameter(name = "keys")
     private Map<String, Object> keys;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java
index 20293efd21..cec90849d4 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvDto.java
@@ -1,10 +1,8 @@
 package at.tuwien.api.database.table;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
-import java.util.List;
 import java.util.Map;
 
 @Getter
@@ -16,7 +14,6 @@ import java.util.Map;
 public class TableCsvDto {
 
     @NotNull(message = "data is required")
-    @Parameter(name = "data")
     private Map<String, Object> data;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java
index f48e43d5cb..6857fb96ba 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvInformationDto.java
@@ -2,7 +2,7 @@ package at.tuwien.api.database.table;
 
 import at.tuwien.api.database.table.columns.ColumnTypeDto;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -17,11 +17,11 @@ import java.util.List;
 public class TableCsvInformationDto {
 
     @NotBlank
-    @Parameter(name = "name", example = "Fundamentals")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank
-    @Parameter(name = "table description", required = true, example = "SEC 10K annual fillings (2016-2012) ")
+    @Schema(example = "Air Quality in Austria")
     private String description;
 
     @NotNull
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java
index f6c6707ce5..43c74af87f 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableCsvUpdateDto.java
@@ -1,6 +1,5 @@
 package at.tuwien.api.database.table;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -15,11 +14,9 @@ import java.util.Map;
 public class TableCsvUpdateDto {
 
     @NotNull(message = "data is required")
-    @Parameter(name = "data")
     private Map<String, Object> data;
 
     @NotNull(message = "primary key columns are required")
-    @Parameter(name = "keys")
     private Map<String, Object> keys;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
index 07c3205f3c..72d1379b37 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java
@@ -6,6 +6,7 @@ import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -22,36 +23,32 @@ import java.util.List;
 public class TableDto {
 
     @NotNull
-    @Parameter(name = "table id", example = "1")
     private Long id;
 
     @NotBlank
-    @Parameter(name = "table name", example = "Weather Australia")
+    @Schema(example = "Air Quality")
     private String name;
 
     @NotBlank
     @JsonProperty("internal_name")
-    @Parameter(name = "table internal name", example = "weather_australia")
+    @Schema(example = "air_quality")
     private String internalName;
 
     @NotNull
-    @Parameter(name = "database creator")
     private UserBriefDto creator;
 
     @NotBlank
-    @Parameter(name = "topic name", example = "fda.c1.d1.t1")
+    @Schema(example = "air_quality")
     private String topic;
 
     @NotBlank
-    @Parameter(name = "table description", example = "Predict next-day rain in Australia")
+    @Schema(example = "Air Quality in Austria")
     private String description;
 
-    @Parameter(name = "table creation time")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 
     @NotNull
-    @Parameter(name = "table columns")
     private List<ColumnDto> columns;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java
index 92278bebd2..f0cacdcfa0 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableHistoryDto.java
@@ -1,6 +1,7 @@
 package at.tuwien.api.database.table;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -15,15 +16,14 @@ import java.time.Instant;
 public class TableHistoryDto {
 
     @NotNull(message = "event timestamp is required")
-    @Parameter(name = "event timestamp")
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant timestamp;
 
     @NotNull(message = "event name is required")
-    @Parameter(name = "event name")
     private String event;
 
     @NotNull(message = "total number is required")
-    @Parameter(name = "total number")
+    @Schema(example = "1")
     private Long total;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
index 7a09636bab..cc8672d5f9 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnBriefDto.java
@@ -2,6 +2,7 @@ package at.tuwien.api.database.table.columns;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -16,21 +17,20 @@ import javax.validation.constraints.NotNull;
 public class ColumnBriefDto {
 
     @NotNull(message = "id is required")
-    @Parameter(name = "id", example = "1", required = true)
     private Long id;
 
     @NotBlank(message = "name is required")
-    @Parameter(name = "name", example = "Date", required = true)
+    @Schema(example = "date")
     private String name;
 
     @NotBlank(message = "internal name is required")
     @JsonProperty("internal_name")
-    @Parameter(name = "internal name", example = "mdb_date", required = true)
+    @Schema(example = "mdb_date")
     private String internalName;
 
     @NotNull
     @JsonProperty("column_type")
-    @Parameter(name = "type", required = true)
+    @Schema(example = "date")
     private ColumnTypeDto columnType;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java
index a7f852c774..0ad794410e 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnCreateDto.java
@@ -2,6 +2,7 @@ package at.tuwien.api.database.table.columns;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.persistence.Column;
@@ -17,43 +18,41 @@ import javax.validation.constraints.NotNull;
 public class ColumnCreateDto {
 
     @NotBlank
-    @Parameter(name = "name", example = "Date")
+    @Schema(example = "Date")
     private String name;
 
     @NotNull
     @JsonProperty("primary_key")
-    @Parameter(name = "primary key", example = "true")
-    private Boolean primaryKey = false;
+    @Schema(example = "false")
+    private Boolean primaryKey;
 
     @NotNull
-    @Parameter(name = "column type", example = "STRING")
+    @Schema(example = "string")
     private ColumnTypeDto type;
 
     @NotNull
     @JsonProperty("null_allowed")
-    @Parameter(name = "null value", example = "false")
-    private Boolean nullAllowed = true;
+    @Schema(example = "true")
+    private Boolean nullAllowed;
 
-    @Parameter(name = "date format id", example = "1")
+    @Schema(description = "date format id")
     private Long dfid;
 
     @NotNull
-    @Parameter(name = "unique", example = "true")
-    private Boolean unique = false;
+    @Schema(example = "false")
+    private Boolean unique;
 
     @JsonProperty("check_expression")
-    @Parameter(name = "check expression", example = "null")
-    private String checkExpression = null;
+    private String checkExpression;
 
     @JsonProperty("foreign_key")
-    @Parameter(name = "foreign key", example = "null")
     private String foreignKey = null;
 
-    @Parameter(name = "foreign key reference, only considered when foreignKey != null", example = "null")
+    @Parameter(description = "foreign key reference, only considered when foreignKey != null")
     private String references = null;
 
     @JsonProperty("enum_values")
-    @Parameter(name = "enum values, only considered when type = ENUM", example = "[\"male\",\"female\",\"other\"]")
+    @Parameter(description = "enum values, only considered when type = ENUM")
     private String[] enumValues = null;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
index 9c69230acd..2d2fde68f6 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java
@@ -4,6 +4,7 @@ import at.tuwien.api.container.image.ImageDateDto;
 import at.tuwien.api.database.table.columns.concepts.ConceptDto;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -19,71 +20,58 @@ import java.util.List;
 public class ColumnDto {
 
     @NotNull
-    @Parameter(name = "id", example = "1", required = true)
     private Long id;
 
     @NotBlank
-    @Parameter(name = "name", example = "Date", required = true)
+    @Schema(example = "Date")
     private String name;
 
     @NotBlank
     @JsonProperty("internal_name")
-    @Parameter(name = "internal name", example = "mdb_date", required = true)
+    @Schema(example = "mdb_date")
     private String internalName;
 
     @JsonProperty("date_format")
-    @Parameter(name = "date format", example = "1")
     private ImageDateDto dateFormat;
 
     @NotNull
     @JsonProperty("auto_generated")
-    @Parameter(name = "column autogenerated", example = "false")
+    @Schema(example = "false")
     private Boolean autoGenerated;
 
     @NotNull
     @JsonProperty("is_primary_key")
-    @Parameter(name = "primary key", example = "true", required = true)
+    @Schema(example = "true")
     private Boolean isPrimaryKey;
 
     @NotNull
     @JsonProperty("column_type")
-    @Parameter(name = "type", example = "STRING", required = true)
+    @Schema(example = "string")
     private ColumnTypeDto columnType;
 
-    @Parameter(name = "unique", example = "true", required = true)
     @JsonProperty("column_concept")
     private ConceptDto concept;
 
     @NotNull
-    @Parameter(name = "unique", example = "true", required = true)
+    @Schema(example = "true")
     private Boolean unique;
 
-    @JsonProperty("decimal_digits_before")
-    @Parameter(name = "decimal digits before point", example = "3")
-    private Long decimalDigitsBefore;
-
-    @JsonProperty("decimal_digits_after")
-    @Parameter(name = "decimal digits after point", example = "0")
-    private Long decimalDigitsAfter;
-
     @NotNull
     @JsonProperty("is_null_allowed")
-    @Parameter(name = "null allowed", example = "true", required = true)
+    @Schema(example = "false")
     private Boolean isNullAllowed;
 
     @JsonProperty("check_expression")
-    @Parameter(name = "check constraint", example = "Price Limit > 0", hidden = true)
     private String checkExpression;
 
     @JsonProperty("foreign_key")
-    @Parameter(name = "foreign key", hidden = true)
     private String foreignKey;
 
-    @Parameter(name = "foreign key reference, only considered when foreignKey != null", example = "null")
+    @Parameter(description = "foreign key reference, only considered when foreignKey != null")
     private String references;
 
     @JsonProperty("enum_values")
-    @Parameter(name = "enum values, only considered when type = ENUM", example = "[\"male\",\"female\",\"other\"]")
+    @Parameter(description = "enum values, only considered when type = ENUM")
     private String[] enumValues;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java
index 679755b15b..70da894411 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/SiUnitDto.java
@@ -1,10 +1,40 @@
 package at.tuwien.api.database.table.columns;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Getter;
-import lombok.ToString;
 
 @Getter
-@ToString
 public enum SiUnitDto {
-    SECOND, METER, KILOGRAM, AMPERE, KELVIN, MOLE, CANDELA
+
+    @JsonProperty("second")
+    SECOND("second"),
+
+    @JsonProperty("meter")
+    METER("meter"),
+
+    @JsonProperty("kilogram")
+    KILOGRAM("kilogram"),
+
+    @JsonProperty("ampere")
+    AMPERE("ampere"),
+
+    @JsonProperty("kelvin")
+    KELVIN("kelvin"),
+
+    @JsonProperty("mole")
+    MOLE("mole"),
+
+    @JsonProperty("candela")
+    CANDELA("candela");
+
+    private String name;
+
+    SiUnitDto(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String toString() {
+        return this.name;
+    }
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
index e71c51b9c1..a229dd2f1f 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/concepts/ConceptDto.java
@@ -2,6 +2,7 @@ package at.tuwien.api.database.table.columns.concepts;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -16,15 +17,13 @@ import java.time.Instant;
 public class ConceptDto {
 
     @NotNull
-    @Parameter(name = "uri", required = true)
     private String uri;
 
     @NotNull
-    @Parameter(name = "name", required = true)
     private String name;
 
     @NotNull
-    @Parameter(name = "created", required = true)
+    @Schema(required = true)
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant created;
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/EntryDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/EntryDto.java
deleted file mode 100644
index 60e5efa689..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/EntryDto.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package at.tuwien.api.document.file;
-
-import at.tuwien.api.document.links.LinksDto;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import java.time.Instant;
-
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class EntryDto {
-
-    @Parameter(name = "key", description = "Filename")
-    private String key;
-
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSSSSS", timezone = "UTC")
-    @Parameter(name = "updated")
-    private Instant updated;
-
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSSSSS", timezone = "UTC")
-    @Parameter(name = "created")
-    private Instant created;
-
-    @Parameter(name = "metadata")
-    private String metadata;
-
-    @Parameter(name = "status", description = "Upload status")
-    private String status;
-
-    @Parameter(name = "links")
-    private LinksDto links;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileAnnounceDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileAnnounceDto.java
deleted file mode 100644
index c2941ccdec..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileAnnounceDto.java
+++ /dev/null
@@ -1,37 +0,0 @@
-
-package at.tuwien.api.document.file;
-
-import at.tuwien.api.document.links.LinksDto;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class FileAnnounceDto {
-
-    @JsonProperty("default_preview")
-    @Parameter(name = "file name")
-    private String defaultPreview;
-
-    @NotNull
-    @Parameter(name = "file enabled")
-    private Boolean enabled;
-
-    @NotNull
-    @Parameter(name = "file entries")
-    private List<FileEntryDto> entries;
-
-    @Parameter(name = "file links")
-    private LinksDto links;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileDto.java
deleted file mode 100644
index fc7c9867e9..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileDto.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package at.tuwien.api.document.file;
-
-import at.tuwien.api.document.links.LinksDto;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.time.Instant;
-
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class FileDto {
-
-    @NotBlank
-    @JsonProperty("bucket_id")
-    @Parameter(name = "bucket id", description = "Bucket id.")
-    private String bucketId;
-
-    @NotBlank
-    @Parameter(name = "file checksum", description = "File checksum.", example = "md5:ef8fcf1f046bb24f1db1f1a376ddbfbb")
-    private String checksum;
-
-    @NotNull
-    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX", timezone = "UTC")
-    @Parameter(name = "file creation timestamp")
-    private Instant created;
-
-    @NotNull
-    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX", timezone = "UTC")
-    @Parameter(name = "file updated timestamp")
-    private Instant updated;
-
-    @NotBlank
-    @JsonProperty("file_id")
-    @Parameter(name = "file id")
-    private String fileId;
-
-    @NotBlank
-    @Parameter(name = "file key", example = "mock.png")
-    private String key;
-
-    @NotNull
-    @Parameter(name = "file links")
-    private LinksDto links;
-
-    @Parameter(name = "file mimetype")
-    private String mimetype;
-
-    @Parameter(name = "file size")
-    private Long size;
-
-    @Parameter(name = "file status")
-    private String status;
-
-    @JsonProperty("storage_class")
-    @Parameter(name = "file storage class", example = "S")
-    private String storageClass;
-
-    @JsonProperty("version_id")
-    @Parameter(name = "file version id")
-    private String versionId;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileEntryDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileEntryDto.java
deleted file mode 100644
index e6692fdce8..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileEntryDto.java
+++ /dev/null
@@ -1,43 +0,0 @@
-
-package at.tuwien.api.document.file;
-
-import at.tuwien.api.document.links.LinksDto;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.time.Instant;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class FileEntryDto {
-
-    @NotBlank
-    @Parameter(name = "file name", description = "Name of the file.")
-    private String key;
-
-    @NotNull
-    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX", timezone = "UTC")
-    @Parameter(name = "file updated")
-    private Instant updated;
-
-    @NotNull
-    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX", timezone = "UTC")
-    @Parameter(name = "file created")
-    private Instant created;
-
-    @Parameter(name = "file status")
-    private String status;
-
-    @Parameter(name = "file links")
-    private LinksDto links;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileKeyDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileKeyDto.java
deleted file mode 100644
index 79c7f3d7b7..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileKeyDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-
-package at.tuwien.api.document.file;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class FileKeyDto {
-
-    @NotBlank
-    @Parameter(name = "file name", description = "Name of the file.", example = "mock.png")
-    private String key;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileStartDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileStartDto.java
deleted file mode 100644
index 27451242b5..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/file/FileStartDto.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package at.tuwien.api.document.file;
-
-import at.tuwien.api.document.links.LinksDto;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class FileStartDto {
-
-    @JsonProperty("default_preview")
-    @Parameter(name = "default preview", description = "Filename of file to be previewed by default.")
-    private String defaultPreview;
-
-    @NotNull(message = "enabled is required")
-    @Parameter(name = "enabled", description = "Should (and can) files be attached to this record or not.")
-    private Boolean enabled;
-
-    @NotNull(message = "entries is required")
-    @Parameter(name = "entries")
-    private List<EntryDto> entries;
-
-    @NotNull(message = "links is required")
-    @Parameter(name = "links")
-    private LinksDto links;
-
-    @Parameter(name = "order", description = "Array of filename strings in display order.")
-    private List<String> order;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/DoiDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/DoiDto.java
deleted file mode 100644
index 6fe993813d..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/DoiDto.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package at.tuwien.api.document.links;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class DoiDto {
-
-    @Parameter(name = "client")
-    private String client;
-
-    @NotBlank(message = "identifier is required")
-    @Parameter(name = "identifier")
-    private String identifier;
-
-    @Parameter(name = "provider")
-    private String provider;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/LinksDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/LinksDto.java
deleted file mode 100644
index aac5dfc48b..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/LinksDto.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package at.tuwien.api.document.links;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class LinksDto {
-
-    @Parameter(name = "latest")
-    private String latest;
-
-    @Parameter(name = "versions")
-    private String versions;
-
-    @JsonProperty("self_html")
-    @Parameter(name = "self html")
-    private String selfHtml;
-
-    @Parameter(name = "publish")
-    private String publish;
-
-    @JsonProperty("latest_html")
-    @Parameter(name = "latest html")
-    private String latestHtml;
-
-    @Parameter(name = "self")
-    private String self;
-
-    @Parameter(name = "files")
-    private String files;
-
-    @Parameter(name = "commit")
-    private String commit;
-
-    @JsonProperty("access_links")
-    @Parameter(name = "access links")
-    private String accessLinks;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/PersistentIdentifiersDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/PersistentIdentifiersDto.java
deleted file mode 100644
index c7626b8c85..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/links/PersistentIdentifiersDto.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package at.tuwien.api.document.links;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class PersistentIdentifiersDto {
-
-    @Parameter(name = "doi")
-    private DoiDto doi;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/AffiliationDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/AffiliationDto.java
deleted file mode 100644
index b150e61387..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/AffiliationDto.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class AffiliationDto {
-
-    @Parameter(name = "id", description = "The organizational or institutional id from the controlled vocabulary.")
-    private String id;
-
-    @Parameter(name = "name", description = "The name of the organisation or institution.")
-    private String name;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/CreatorDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/CreatorDto.java
deleted file mode 100644
index 5ead5d487c..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/CreatorDto.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class CreatorDto {
-
-    @JsonProperty("person_or_org")
-    @NotNull(message = "person or organization is required")
-    @Parameter(name = "person or organization", description = "The person or organization.")
-    private PersonOrOrganizationDto personOrOrganization;
-
-    @Parameter(name = "role", description = "The role of the person or organisation selected from a customizable " +
-            "controlled vocabulary.")
-    private String role;
-
-    @Parameter(name = "affiliations", description = "Affilations if person_or_org.type is personal.")
-    private List<AffiliationDto> affiliations;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierDto.java
deleted file mode 100644
index 7ef178644d..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class IdentifierDto {
-
-    @NotNull(message = "scheme is required")
-    @Parameter(name = "scheme", description = "The identifier scheme.")
-    private IdentifierTypeDto scheme;
-
-    @NotNull(message = "identifier is required")
-    @Parameter(name = "identifier", description = "Actual value of the identifier.")
-    private String identifier;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierTypeDto.java
deleted file mode 100644
index 282aa63be6..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/IdentifierTypeDto.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public enum IdentifierTypeDto {
-
-    @JsonProperty("orcid")
-    ORCID("orcid"),
-
-    @JsonProperty("gnd")
-    GND("gnd"),
-
-    @JsonProperty("isni")
-    ISNI("isni"),
-
-    @JsonProperty("ror")
-    ROR("ror");
-
-    private final String type;
-
-    IdentifierTypeDto(String type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return type;
-    }
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/MetadataDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/MetadataDto.java
deleted file mode 100644
index 5ad3d586e5..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/MetadataDto.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.util.Date;
-import java.util.List;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class MetadataDto {
-
-    @JsonProperty("resource_type")
-    @NotNull(message = "enabled is required")
-    @Parameter(name = "files enabled", description = "Should (and can) files be attached to this record or not.")
-    private ResourceTypeDto resourceType;
-
-    /**
-     * The field is compatible with 2. Creator in DataCite. In addition we are adding the possiblity of associating a
-     * role (like for contributors). This is specifically for cases where e.g. an editor needs to be credited for the
-     * work, while authors of individual articles will be listed under contributors.
-     */
-    @NotNull(message = "creators is required")
-    @Parameter(name = "creators")
-    private List<CreatorDto> creators;
-
-    /**
-     * The fields is compatible with 3. Title in DataCite. Compared to DataCite, the field does not support specifying
-     * the language of the title.
-     */
-    @NotBlank(message = "title is required")
-    @Parameter(name = "title")
-    private String title;
-
-    /**
-     * The field is compatible 5. PublicationYear in DataCite. In case of time intervals, the earliest date is used
-     * for DataCite.
-     */
-    @JsonProperty("publication_date")
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @NotNull(message = "publication date is required")
-    @Parameter(name = "publication date")
-    private Date publicationDate;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrgTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrgTypeDto.java
deleted file mode 100644
index 6eb4b9c2f3..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrgTypeDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public enum PersonOrOrgTypeDto {
-
-    @JsonProperty("personal")
-    PERSONAL("personal"),
-
-    @JsonProperty("organizational")
-    ORGANIZATIONAL("organizational");
-
-    private final String type;
-
-    PersonOrOrgTypeDto(String type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return type;
-    }
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrganizationDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrganizationDto.java
deleted file mode 100644
index 67a5514de1..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/PersonOrOrganizationDto.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-import java.util.List;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class PersonOrOrganizationDto {
-    
-    @NotNull(message = "type is required")
-    @Parameter(name = "type", description = "The type of name. Either personal or organizational.")
-    private PersonOrOrgTypeDto type;
-
-    @JsonProperty("given_name")
-    @Parameter(name = "given name", description = "Given name(s).")
-    private String givenName;
-
-    @JsonProperty("family_name")
-    @Parameter(name = "family name", description = "Family name.")
-    private String familyName;
-
-    @Parameter(name = "name", description = "The full name of the organisation. For a person, this field is generated from given_name and family_name")
-    private String name;
-
-    @Parameter(name = "identifers", description = "Person or organisation identifiers.")
-    private List<IdentifierDto> identifiers;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/ResourceTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/ResourceTypeDto.java
deleted file mode 100644
index 7b6edacf87..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/metadata/ResourceTypeDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.tuwien.api.document.metadata;
-
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class ResourceTypeDto {
-
-    /**
-     * When interfacing with Datacite, this field is converted to a format compatible with 10. Resource Type (i.e.
-     * type and subtype). DataCite allows free text for the subtype, however InvenioRDM requires this to come from a
-     * customizable controlled vocabulary.
-     */
-    @NotNull(message = "id is required")
-    @Parameter(name = "id", description = "The resource type id from the controlled vocabulary.")
-    private String id;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessOptionsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessOptionsDto.java
deleted file mode 100644
index fbb501c9d3..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessOptionsDto.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class AccessOptionsDto {
-
-    @NotNull(message = "record access type is required")
-    @Parameter(name = "record access type")
-    private AccessTypeDto record;
-
-    @NotNull(message = "files is required")
-    @Parameter(name = "files")
-    private FileTypeDto files;
-
-    @Parameter(name = "embargo options")
-    private EmbargoDto embargo;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessTypeDto.java
deleted file mode 100644
index 9816ba4f9f..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/AccessTypeDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public enum AccessTypeDto {
-
-    @JsonProperty("public")
-    PUBLIC("public"),
-
-    @JsonProperty("restricted")
-    RESTRICTED("restricted");
-
-    private final String type;
-
-    AccessTypeDto(String type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return type;
-    }
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/CreateDraftDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/CreateDraftDto.java
deleted file mode 100644
index 623286d9a2..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/CreateDraftDto.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package at.tuwien.api.document.record;
-
-import at.tuwien.api.document.metadata.MetadataDto;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class CreateDraftDto {
-
-    @NotNull(message = "access is required")
-    @Parameter(name = "access")
-    private AccessOptionsDto access;
-
-    @NotNull(message = "files options is required")
-    @Parameter(name = "files options")
-    private FilesOptionsDto files;
-
-    @NotNull(message = "metadata is required")
-    @Parameter(name = "metadata")
-    private MetadataDto metadata;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/DraftVersionsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/DraftVersionsDto.java
deleted file mode 100644
index ae3109911b..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/DraftVersionsDto.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class DraftVersionsDto {
-
-    @Parameter(name = "index")
-    private Long index;
-
-    @JsonProperty("is_latest")
-    @Parameter(name = "is latest version")
-    private Boolean isLatest;
-
-    @JsonProperty("is_latest_draft")
-    @Parameter(name = "is latest draft")
-    private Boolean isLatestDraft;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/EmbargoDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/EmbargoDto.java
deleted file mode 100644
index 82e417393a..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/EmbargoDto.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-import java.util.Date;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class EmbargoDto {
-
-    @NotNull(message = "embargo active is required")
-    @Parameter(name = "embargo active")
-    private Boolean active;
-
-    @Parameter(name = "embargo until date")
-    private Date until;
-
-    @Parameter(name = "embargo explanation")
-    private String reason;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FileTypeDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FileTypeDto.java
deleted file mode 100644
index 97536d9081..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FileTypeDto.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public enum FileTypeDto {
-
-    @JsonProperty("public")
-    PUBLIC("public"),
-
-    @JsonProperty("restricted")
-    RESTRICTED("restricted");
-
-    private final String type;
-
-    FileTypeDto(String type) {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return type;
-    }
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FilesOptionsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FilesOptionsDto.java
deleted file mode 100644
index 7ccebb72a6..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/FilesOptionsDto.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class FilesOptionsDto {
-
-    @NotNull(message = "enabled is required")
-    @Parameter(name = "files enabled", description = "Should (and can) files be attached to this record or not.")
-    private Boolean enabled;
-
-    @Parameter(name = "files preview", description = "Filename of file to be previewed by default.")
-    private String default_preview;
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/ModifyDraftDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/ModifyDraftDto.java
deleted file mode 100644
index 6e1a8af30e..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/ModifyDraftDto.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package at.tuwien.api.document.record;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class ModifyDraftDto {
-
-    @NotNull(message = "identifier is required")
-    @Parameter(name = "identifier", description = "Identifier of the record, e.g. 4d0ns-ntd89")
-    private String id;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/RecordDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/RecordDto.java
deleted file mode 100644
index 993a069079..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/RecordDto.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package at.tuwien.api.document.record;
-
-import at.tuwien.api.document.links.PersistentIdentifiersDto;
-import at.tuwien.api.document.metadata.MetadataDto;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-import java.time.Instant;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class RecordDto {
-
-    @NotNull(message = "access is required")
-    @Parameter(name = "access")
-    private AccessOptionsDto access;
-
-    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX", timezone = "UTC")
-    private Instant created;
-
-    @NotNull(message = "files options is required")
-    @Parameter(name = "files options")
-    private FilesOptionsDto files;
-
-    @NotNull(message = "id is required")
-    @Parameter(name = "id")
-    private String id;
-
-    @JsonProperty("is_published")
-    @NotNull(message = "is published is required")
-    @Parameter(name = "is published")
-    private Boolean isPublished;
-
-    @NotNull(message = "metadata is required")
-    @Parameter(name = "metadata")
-    private MetadataDto metadata;
-
-    @JsonProperty("revision_id")
-    @NotNull(message = "revision id is required")
-    @Parameter(name = "revision id")
-    private Long revisionId;
-
-    @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX", timezone = "UTC")
-    @Parameter(name = "updated date")
-    private Instant updated;
-
-    @NotNull(message = "versions is required")
-    @Parameter(name = "revisions")
-    private DraftVersionsDto versions;
-
-    @NotNull(message = "pids is required")
-    @Parameter(name = "pids")
-    private PersistentIdentifiersDto pids;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/UpdateDraftDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/UpdateDraftDto.java
deleted file mode 100644
index cce7e853f0..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/document/record/UpdateDraftDto.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package at.tuwien.api.document.record;
-
-import at.tuwien.api.document.metadata.MetadataDto;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotNull;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class UpdateDraftDto {
-
-    @NotNull(message = "identifier is required")
-    @Parameter(name = "identifier", description = "Identifier of the record, e.g. 4d0ns-ntd89")
-    private String id;
-    
-    @NotNull(message = "access is required")
-    @Parameter(name = "access")
-    private AccessOptionsDto access;
-
-    @NotNull(message = "files options is required")
-    @Parameter(name = "files options")
-    private FilesOptionsDto files;
-
-    @NotNull(message = "metadata is required")
-    @Parameter(name = "metadata")
-    private MetadataDto metadata;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java
index bd089e3128..d8f0aa2795 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/error/ApiErrorDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.error;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import org.springframework.http.HttpStatus;
 
@@ -15,15 +15,15 @@ import javax.validation.constraints.NotNull;
 public class ApiErrorDto {
 
     @NotNull(message = "http status is required")
-    @Parameter(name = "http status", example = "NOT_FOUND")
+    @Schema(example = "NOT_FOUND")
     private HttpStatus status;
 
     @NotNull(message = "message is required")
-    @Parameter(name = "message", example = "Could not find container")
+    @Schema(example = "Could not find container")
     private String message;
 
     @NotNull(message = "code is required")
-    @Parameter(name = "code", example = "error.container.notfound")
+    @Schema(example = "error.container.notfound")
     private String code;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java
index 40ea15199e..db94f11a60 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorCreateDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.identifier;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Getter;
@@ -17,13 +17,13 @@ import javax.validation.constraints.NotBlank;
 public class CreatorCreateDto {
 
     @NotBlank
-    @Parameter(name = "name", example = "Mustermann, Maximilian")
+    @Schema(example = "Carberry, Josiah")
     private String name;
 
-    @Parameter(name = "affiliation", example = "TU Wien")
+    @Schema(example = "Wesleyan University")
     private String affiliation;
 
-    @Parameter(name = "orcid", example = "ORCID")
+    @Schema(example = "0000-0002-1825-0097")
     private String orcid;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
index 0410849a33..8bf0149b8b 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/CreatorDto.java
@@ -3,6 +3,7 @@ package at.tuwien.api.identifier;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotBlank;
@@ -19,13 +20,13 @@ public class CreatorDto {
     private Long id;
 
     @NotBlank
-    @Parameter(name = "name", example = "Mustermann, Maximilian")
+    @Schema(example = "Carberry, Josiah")
     private String name;
 
-    @Parameter(name = "affiliation", example = "TU Wien")
+    @Schema(example = "Wesleyan University")
     private String affiliation;
 
-    @Parameter(name = "orcid", example = "ORCID")
+    @Schema(example = "0000-0002-1825-0097")
     private String orcid;
 
     @NotNull
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java
index a35fc8b47a..ab58a4f560 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierCreateDto.java
@@ -1,7 +1,7 @@
 package at.tuwien.api.identifier;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Getter;
@@ -10,54 +10,49 @@ import lombok.extern.jackson.Jacksonized;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
-import java.time.Instant;
 import java.util.List;
 
 @Data
 @Getter
 @Setter
 @Builder
-@Jacksonized
 public class IdentifierCreateDto {
 
     @NotNull
-    @Parameter(name = "query id", example = "1")
     private Long qid;
 
     @NotBlank
-    @Parameter(name = "query title", example = "Select all weather events for 2012")
+    @Schema(example = "Airquality Stephansplatz, Vienna, Austria")
     private String title;
 
     @NotBlank
-    @Parameter(name = "query description", example = "Returns a list of measurements for the year 2012")
+    @Schema(example = "Air quality reports at Stephansplatz, Vienna")
     private String description;
 
     @NotNull
-    @Parameter(name = "query result visibility")
+    @Schema(example = "everyone")
     private VisibilityTypeDto visibility;
 
-    @Parameter(name = "doi", example = "Digital Object Identifier")
+    @Schema(example = "10.1038/nphys1170")
     private String doi;
 
     @JsonProperty("publication_day")
-    @Parameter(name = "publication day")
+    @Schema(example = "15")
     private Integer publicationDay;
 
     @JsonProperty("publication_month")
-    @Parameter(name = "publication month")
+    @Schema(example = "12")
     private Integer publicationMonth;
 
     @NotNull
     @JsonProperty("publication_year")
-    @Parameter(name = "publication year")
+    @Schema(example = "2022")
     private Integer publicationYear;
 
     @NotNull
-    @Parameter(name = "creators")
     private List<CreatorCreateDto> creators;
 
     @JsonProperty("related_identifiers")
-    @Parameter(name = "related identifiers")
     private List<RelatedIdentifierCreateDto> relatedIdentifiers;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
index 42763f8c31..bffecf49c3 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/IdentifierDto.java
@@ -4,6 +4,7 @@ import at.tuwien.api.user.UserDto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Builder;
 import lombok.Data;
 import lombok.Getter;
@@ -23,45 +24,40 @@ public class IdentifierDto {
     private Long id;
 
     @NotNull
-    @Parameter(name = "container id", example = "1")
     private Long cid;
 
     @NotNull
-    @Parameter(name = "database id", example = "1")
     private Long dbid;
 
     @NotNull
-    @Parameter(name = "query id", example = "1")
     private Long qid;
 
     @NotBlank
-    @Parameter(name = "query title", example = "Select all weather events for 2012")
+    @Schema(example = "Airquality Stephansplatz, Vienna, Austria")
     private String title;
 
     @NotBlank
-    @Parameter(name = "query description", example = "Returns a list of measurements for the year 2012")
+    @Schema(example = "Air quality reports at Stephansplatz, Vienna")
     private String description;
 
     @NotBlank
-    @Parameter(name = "query")
+    @Schema(example = "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location` = \"09:STEF\"")
     private String query;
 
     @NotBlank
     @JsonProperty("query_normalized")
-    @Parameter(name = "query normalized")
+    @Schema(example = "SELECT `id`, `value`, `location` FROM `air_quality` WHERE `location` = \"09:STEF\"")
     private String queryNormalized;
 
     @JsonProperty("related")
-    @Parameter(name = "related identifiers")
     private List<RelatedIdentifierDto> related;
 
     @NotBlank
     @JsonProperty("query_hash")
-    @Parameter(name = "query hash in sha512")
+    @Parameter(description = "query hash in sha512")
     private String queryHash;
 
     @NotNull
-    @Parameter(name = "query execution time")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
     private Instant execution;
 
@@ -72,35 +68,33 @@ public class IdentifierDto {
 
     @NotNull
     @JsonProperty("result_number")
-    @Parameter(name = "query result number")
+    @Schema(example = "1")
     private Long resultNumber;
 
     @NotNull
-    @Parameter(name = "query result visibility")
+    @Schema(example = "everyone")
     private VisibilityTypeDto visibility;
 
-    @Parameter(name = "doi", example = "Digital Object Identifier")
+    @Schema(example = "10.1038/nphys1170")
     private String doi;
 
     @NotNull
-    @Parameter(name = "database creator")
     private UserDto creator;
 
     @JsonProperty("publication_day")
-    @Parameter(name = "publication day")
+    @Schema(example = "15")
     private Integer publicationDay;
 
     @JsonProperty("publication_month")
-    @Parameter(name = "publication month")
+    @Schema(example = "12")
     private Integer publicationMonth;
 
     @NotNull
     @JsonProperty("publication_year")
-    @Parameter(name = "publication year")
+    @Schema(example = "2022")
     private Integer publicationYear;
 
     @NotNull
-    @Parameter(name = "creators")
     private List<CreatorDto> creators;
 
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java
index 2b31e9a3a2..f6e9e1c312 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierCreateDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.identifier;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.extern.jackson.Jacksonized;
 
@@ -14,13 +14,13 @@ import javax.validation.constraints.NotNull;
 public class RelatedIdentifierCreateDto {
 
     @NotNull
-    @Parameter(name = "identifier", example = "10.70124/dc4zh-9ce78")
+    @Schema(example = "10.70124/dc4zh-9ce78")
     private String value;
 
-    @Parameter(name = "type", example = "DOI")
+    @Schema(example = "DOI")
     private RelatedTypeDto type;
 
-    @Parameter(name = "relation", example = "Cites")
+    @Schema(example = "Cites")
     private RelationTypeDto relation;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
index caf2bd5fde..c6d5c13bf1 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/identifier/RelatedIdentifierDto.java
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -24,13 +25,13 @@ public class RelatedIdentifierDto {
     private Long iid;
 
     @NotNull
-    @Parameter(name = "identifier", example = "10.70124/dc4zh-9ce78")
+    @Schema(example = "10.70124/dc4zh-9ce78")
     private String value;
 
-    @Parameter(name = "type", example = "DOI")
+    @Schema(example = "DOI")
     private RelatedTypeDto type;
 
-    @Parameter(name = "relation", example = "Cites")
+    @Schema(example = "Cites")
     private RelationTypeDto relation;
 
     @ToString.Exclude
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java
new file mode 100644
index 0000000000..57d639f916
--- /dev/null
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/ExchangeUpdatePermissionsDto.java
@@ -0,0 +1,28 @@
+package at.tuwien.api.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotBlank;
+
+@Getter
+@Setter
+@ToString
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class ExchangeUpdatePermissionsDto {
+
+    @NotBlank
+    @Schema(example = "airquality")
+    private String exchange;
+
+    @NotBlank
+    @Schema(example = ".*")
+    private String write;
+
+    @NotBlank
+    @Schema(example = ".*")
+    private String read;
+
+}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java
index 2003d721fb..ec6dc13ee2 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/GrantedAuthorityDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 @Getter
@@ -11,7 +11,7 @@ import lombok.*;
 @NoArgsConstructor
 public class GrantedAuthorityDto {
 
-    @Parameter(name = "authority name")
+    @Schema(example = "ROLE_RESEARCHER")
     private String authority;
 
 
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
index 72f9bfd29e..8bd0bab047 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserBriefDto.java
@@ -2,6 +2,7 @@ package at.tuwien.api.user;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -15,41 +16,39 @@ import javax.validation.constraints.NotNull;
 public class UserBriefDto {
 
     @NotNull
-    @Parameter(name = "id")
     private Long id;
 
     @NotNull
-    @Parameter(name = "user name")
+    @Schema(example = "user", description = "Only contains lowercase characters")
     private String username;
 
     @JsonProperty("titles_before")
-    @Parameter(name = "titles before the first name")
+    @Schema(example = "Prof.")
     private String titlesBefore;
 
     @JsonProperty("titles_after")
-    @Parameter(name = "titles after the last name")
     private String titlesAfter;
 
-    @Parameter(name = "first name")
+    @Schema(example = "Josiah")
     private String firstname;
 
-    @Parameter(name = "last name")
+    @Schema(example = "Carberry")
     private String lastname;
 
-    @Parameter(name = "affiliation")
+    @Schema(example = "Brown University")
     private String affiliation;
 
-    @Parameter(name = "orcid")
+    @Schema(example = "0000-0002-1825-0097")
     private String orcid;
 
     @NotNull
     @JsonProperty("theme_dark")
-    @Parameter(name = "theme dark")
+    @Schema(example = "true")
     private Boolean themeDark;
 
     @NotNull
     @JsonProperty("email_verified")
-    @Parameter(name = "mail address verified")
+    @Schema(example = "true")
     private Boolean emailVerified;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java
index 0d6053c3cd..e99cff9a90 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDetailsDto.java
@@ -1,10 +1,10 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
+import javax.validation.constraints.Email;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
@@ -16,23 +16,19 @@ import java.util.List;
 @NoArgsConstructor
 public class UserDetailsDto implements UserDetails {
 
-    @Parameter(name = "id")
     private Long id;
 
-    @Parameter(name = "user authorities")
     private List<? extends GrantedAuthority> authorities;
 
     @NotNull
-    @Parameter(name = "user name")
     private String username;
 
     @NotNull
     @ToString.Exclude
-    @Parameter(name = "password hash")
     private String password;
 
     @NotNull
-    @Parameter(name = "mail address")
+    @Email
     private String email;
 
     @Override
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
index 490af62b4e..87e543d769 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java
@@ -3,7 +3,7 @@ package at.tuwien.api.user;
 import at.tuwien.api.container.ContainerDto;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -18,63 +18,56 @@ import java.util.List;
 public class UserDto {
 
     @NotNull
-    @Parameter(name = "id")
     private Long id;
 
     @ToString.Exclude
-    @Parameter(name = "user authorities")
     private List<GrantedAuthorityDto> authorities;
 
     @NotNull
-    @Parameter(name = "user name")
+    @Schema(example = "jcarberry", description = "Only contains lowercase characters")
     private String username;
 
     @JsonProperty("titles_before")
-    @Parameter(name = "titles before the first name")
+    @Schema(example = "Prof.")
     private String titlesBefore;
 
     @JsonProperty("titles_after")
-    @Parameter(name = "titles after the last name")
     private String titlesAfter;
 
-    @Parameter(name = "first name")
+    @Schema(example = "Josiah")
     private String firstname;
 
-    @Parameter(name = "last name")
+    @Schema(example = "Carberry")
     private String lastname;
 
-    @Parameter(name = "affiliation")
+    @Schema(example = "Brown University")
     private String affiliation;
 
-    @Parameter(name = "orcid")
+    @Schema(example = "0000-0002-1825-0097")
     private String orcid;
 
     @NotNull
     @JsonProperty("theme_dark")
-    @Parameter(name = "theme dark")
+    @Schema(example = "true")
     private Boolean themeDark;
 
-    @Parameter(name = "list of containers")
     private List<ContainerDto> containers;
 
-    @Parameter(name = "list of databases")
     private List<ContainerDto> databases;
 
-    @Parameter(name = "list of identifiers")
     private List<ContainerDto> identifiers;
 
     @ToString.Exclude
     @JsonIgnore
-    @Parameter(name = "password hash")
     private String password;
 
     @NotNull
-    @Parameter(name = "mail address")
+    @Schema(example = "jcarberry@brown.edu")
     private String email;
 
     @NotNull
     @JsonProperty("email_verified")
-    @Parameter(name = "mail address verified")
+    @Schema(example = "true")
     private Boolean emailVerified;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java
index e343de450c..b0bda4ebfe 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserEmailDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.Email;
@@ -16,7 +16,7 @@ public class UserEmailDto {
 
     @NotNull
     @Email
-    @Parameter(name = "user email")
+    @Schema(example = "jcarberry@brown.edu")
     private String email;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java
index 177b86beb1..2a6bf21283 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserForgotDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.Email;
@@ -13,11 +13,11 @@ import javax.validation.constraints.Email;
 @NoArgsConstructor
 public class UserForgotDto {
 
-    @Parameter(name = "user username")
+    @Schema(example = "jcarberry")
     private String username;
 
     @Email
-    @Parameter(name = "user email")
+    @Schema(example = "jcarberry@brown.edu")
     private String email;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java
index 83a5c95f4c..78d9c32846 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserModifyPasswordDto.java
@@ -1,6 +1,6 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -14,11 +14,10 @@ import javax.validation.constraints.NotNull;
 public class UserModifyPasswordDto {
 
     @NotNull
-    @Parameter(name = "user name")
+    @Schema(example = "jcarberry")
     private String username;
 
     @NotNull
-    @Parameter(name = "user password")
     private String password;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java
index 795bf56815..b5c70ad502 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserPasswordDto.java
@@ -1,6 +1,5 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -14,7 +13,6 @@ import javax.validation.constraints.NotNull;
 public class UserPasswordDto {
 
     @NotNull
-    @Parameter(name = "user password")
     private String password;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java
index c910792e43..938d38ae5d 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserResetDto.java
@@ -1,9 +1,7 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
-import javax.validation.constraints.Email;
 import javax.validation.constraints.NotNull;
 
 @Getter
@@ -15,11 +13,9 @@ import javax.validation.constraints.NotNull;
 public class UserResetDto {
 
     @NotNull
-    @Parameter(name = "user password")
     private String password;
 
     @NotNull
-    @Parameter(name = "token")
     private String token;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java
index ee507531ac..e4955891b0 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserRolesDto.java
@@ -1,6 +1,5 @@
 package at.tuwien.api.user;
 
-import io.swagger.v3.oas.annotations.Parameter;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
@@ -15,7 +14,6 @@ import java.util.List;
 public class UserRolesDto {
 
     @NotNull
-    @Parameter(name = "user roles")
     private List<String> roles;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java
index e329522dcd..ab700636b8 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserThemeSetDto.java
@@ -1,10 +1,9 @@
 package at.tuwien.api.user;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 @Getter
@@ -17,6 +16,6 @@ public class UserThemeSetDto {
 
     @NotNull
     @JsonProperty("theme_dark")
-    @Parameter(name = "theme dark")
+    @Schema(example = "true")
     private Boolean themeDark;
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserTokenModifyDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserTokenModifyDto.java
deleted file mode 100644
index 6278811dca..0000000000
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserTokenModifyDto.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package at.tuwien.api.user;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
-import lombok.*;
-
-import javax.validation.constraints.NotBlank;
-
-@Getter
-@Setter
-@ToString
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class UserTokenModifyDto {
-
-    @NotBlank
-    @JsonProperty("invenio_token")
-    @Parameter(name = "invenio token")
-    private String invenioToken;
-
-}
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java
index e7fb05063f..108b54902e 100644
--- a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdateDto.java
@@ -1,12 +1,9 @@
 package at.tuwien.api.user;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
 @Getter
 @Setter
 @ToString
@@ -16,25 +13,22 @@ import javax.validation.constraints.NotNull;
 public class UserUpdateDto {
 
     @JsonProperty("titles_before")
-    @Parameter(name = "titles before the first name")
+    @Schema(example = "Prof.")
     private String titlesBefore;
 
     @JsonProperty("titles_after")
-    @Parameter(name = "titles after the last name")
     private String titlesAfter;
 
-    @NotBlank
-    @Parameter(name = "first name")
+    @Schema(example = "Josiah")
     private String firstname;
 
-    @NotBlank
-    @Parameter(name = "last name")
+    @Schema(example = "Carberry")
     private String lastname;
 
-    @Parameter(name = "affiliation")
+    @Schema(example = "Brown University")
     private String affiliation;
 
-    @Parameter(name = "orcid")
+    @Schema(example = "0000-0002-1825-0097")
     private String orcid;
 
 }
diff --git a/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java
new file mode 100644
index 0000000000..dc6b9e44f3
--- /dev/null
+++ b/fda-metadata-db/api/src/main/java/at/tuwien/api/user/UserUpdatePermissionsDto.java
@@ -0,0 +1,20 @@
+package at.tuwien.api.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotBlank;
+
+@Getter
+@Setter
+@ToString
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserUpdatePermissionsDto {
+
+    @NotBlank
+    @Schema(example = "jcarberry")
+    private String username;
+
+}
diff --git a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
index ed8e20acdd..1041e8b89f 100644
--- a/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
+++ b/fda-metadata-db/entities/src/main/java/at/tuwien/entities/user/User.java
@@ -1,5 +1,6 @@
 package at.tuwien.entities.user;
 
+import at.tuwien.entities.container.Container;
 import lombok.*;
 import org.hibernate.annotations.ColumnDefault;
 import org.hibernate.annotations.GenericGenerator;
@@ -80,6 +81,11 @@ public class User {
     @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "user")
     private List<Token> tokens;
 
+    @Transient
+    @ToString.Exclude
+    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "creator")
+    private List<Container> containers;
+
     @CreatedDate
     @Column(nullable = false, updatable = false)
     private Instant created;
diff --git a/fda-query-service/rest-service/src/main/resources/application-docker.yml b/fda-query-service/rest-service/src/main/resources/application-docker.yml
index 031d6cc3bf..77c04460c1 100644
--- a/fda-query-service/rest-service/src/main/resources/application-docker.yml
+++ b/fda-query-service/rest-service/src/main/resources/application-docker.yml
@@ -30,7 +30,7 @@ logging:
   level:
     root: warn
     at.tuwien.: debug
-    at.tuwien.mapper.: trace
+    at.tuwien.mapper.: debug
     at.tuwien.service.: debug
     at.tuwien.config.: debug
     at.tuwien.auth.UserPermissionEvaluator: trace
diff --git a/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java b/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
index cdeca68350..fee65a55bf 100644
--- a/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
+++ b/fda-table-service/rest-service/src/main/java/at/tuwien/endpoints/TableEndpoint.java
@@ -65,7 +65,8 @@ public class TableEndpoint extends AbstractEndpoint {
     public ResponseEntity<TableBriefDto> create(@NotNull @PathVariable("id") Long containerId,
                                                 @NotNull @PathVariable("databaseId") Long databaseId,
                                                 @NotNull @Valid @RequestBody TableCreateDto createDto,
-                                                @NotNull Principal principal)
+                                                @NotNull Principal principal,
+                                                @NotNull @RequestHeader(name = "Authorization") String authorization)
             throws ImageNotSupportedException, DatabaseNotFoundException, TableMalformedException, AmqpException,
             TableNameExistsException, ContainerNotFoundException, UserNotFoundException, QueryMalformedException {
         if (!hasDatabasePermission(containerId, databaseId, "TABLE_CREATE", principal)) {
@@ -104,7 +105,7 @@ public class TableEndpoint extends AbstractEndpoint {
     public ResponseEntity<TableBriefDto> update(@NotNull @PathVariable("id") Long containerId,
                                                 @NotNull @PathVariable("databaseId") Long databaseId,
                                                 @NotNull @PathVariable("tableId") Long tableId,
-                                                Principal principal) {
+                                                @NotNull Principal principal) {
         if (!hasTablePermission(containerId, databaseId, tableId, "TABLE_UPDATE", principal)) {
             log.error("Missing table update permission");
             throw new NotAllowedException("Missing table update permission");
@@ -119,7 +120,8 @@ public class TableEndpoint extends AbstractEndpoint {
     public void delete(@NotNull @PathVariable("id") Long containerId,
                        @NotNull @PathVariable("databaseId") Long databaseId,
                        @NotNull @PathVariable("tableId") Long tableId,
-                       Principal principal)
+                       @NotNull Principal principal,
+                       @NotNull @RequestHeader(name = "Authorization") String authorization)
             throws TableNotFoundException, DatabaseNotFoundException, ImageNotSupportedException,
             DataProcessingException, ContainerNotFoundException, TableMalformedException, QueryMalformedException {
         if (!hasTablePermission(containerId, databaseId, tableId, "TABLE_DELETE", principal)) {
diff --git a/fda-table-service/services/src/main/java/at/tuwien/gateway/AuthenticationServiceGateway.java b/fda-table-service/services/src/main/java/at/tuwien/gateway/AuthenticationServiceGateway.java
index 9bb239ebc9..fc47ce246d 100644
--- a/fda-table-service/services/src/main/java/at/tuwien/gateway/AuthenticationServiceGateway.java
+++ b/fda-table-service/services/src/main/java/at/tuwien/gateway/AuthenticationServiceGateway.java
@@ -11,5 +11,4 @@ public interface AuthenticationServiceGateway {
      * @return User details on success
      */
     UserDetails validate(String token);
-
 }
diff --git a/fda-table-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java b/fda-table-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java
index 56d691a6c8..9b94b6b4f4 100644
--- a/fda-table-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java
+++ b/fda-table-service/services/src/main/java/at/tuwien/gateway/impl/AuthenticationServiceGatewayImpl.java
@@ -31,7 +31,7 @@ public class AuthenticationServiceGatewayImpl implements AuthenticationServiceGa
         final HttpHeaders headers = new HttpHeaders();
         headers.set("Authorization", "Bearer " + token);
         final ResponseEntity<UserDto> response = restTemplate.exchange("/api/auth", HttpMethod.PUT,
-                new HttpEntity<>("", headers), UserDto.class);
+                new HttpEntity<>(null, headers), UserDto.class);
         return userMapper.userDtoToUserDetailsDto(response.getBody());
     }
 
-- 
GitLab