diff --git a/README.md b/README.md
new file mode 100644
index 0000000..056713c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+The repository-deposit-base module inlcudes the RepositoryDeposit interface which represents the mechanism of depositing a dmp to any
+repository which mints a persistent digital object identifier (DOI) for each submission, which makes the stored dmps easily citeable.
\ No newline at end of file
diff --git a/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java b/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java
index 80b5bac..aede776 100644
--- a/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java
+++ b/src/main/java/eu/eudat/depositinterface/repository/RepositoryDeposit.java
@@ -2,12 +2,55 @@ package eu.eudat.depositinterface.repository;
import eu.eudat.depositinterface.models.DMPDepositModel;
+/**
+ * The RepositoryDeposit interface represents the mechanism of depositing a dmp to any
+ * repository which mints a persistent digital object identifier (DOI) for each submission,
+ * which makes the stored dmps easily citeable.
+ */
public interface RepositoryDeposit {
+ /**
+ * Returns a string representing the persistent digital object identifier (DOI) which
+ * was created.
+ *
+ * @param dmpDepositModel dmp structure which is to be deposited
+ * @param repositoryAccessToken access token needed for the authentication to the repository
+ * if this is null, another authentication mechanism is used for
+ * that repository e.g. api token which will be fetched from the
+ * repository's configuration
+ * @return a string representing the persistent digital object identifier (DOI)
+ * @throws Exception if an error occurs while trying to deposit the dmp
+ */
String deposit(DMPDepositModel dmpDepositModel, String repositoryAccessToken) throws Exception;
+ /**
+ * Returns the access token from the oauth2 flow.
+ *
+ * @param code oauth2 authorization code
+ * @return the access token or null if no oauth2 protocol is not supported for that repository
+ */
String authenticate(String code);
+ /**
+ * Returns the repository's configuration.
+ *
+ * @return structure representing the configuration of the repository
+ * which includes the following fields:
+ * depositType - an integer representing how the dmp user can deposit in the repository,
+ * 0 stands for system deposition meaning the dmp is deposited using argos credentials to the
+ * repository, 1 stands for user deposition in which the argos user specifies his/her own credentials
+ * to the repository, 2 stands for both ways deposition if the repository allows the deposits of dmps
+ * to be made from both argos and users accounts
+ * repositoryId - unique identifier for the repository
+ * accessToken - access token provided for the system type deposits
+ * repositoryUrl - repository url
+ * repositoryAuthorizationUrl - repository's authorization url
+ * repositoryRecordUrl - repository's record url, this url is used to index dmps that are created
+ * repositoryAccessTokenUrl - repository's access token url
+ * repositoryClientId - repository's client id
+ * repositoryClientSecret - repository's client secret
+ * redirectUri - redirect uri to argos after the oauth2 flow from the repository
+ */
RepositoryDepositConfiguration getConfiguration();
}