diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java
index edc1f50..cd7b086 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAO.java
@@ -27,5 +27,5 @@
 public interface AuditDAO {
     void save(AuditDTO audit);
 
-    List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, String dateStart, String dateEnd, int pageNumber, int pageSize);
+    List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, List<String> resourceTypes, String dateStart, String dateEnd, int pageNumber, int pageSize);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
index cde9380..6ae8cbf 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/AuditDAOImpl.java
@@ -73,11 +73,11 @@
     }
 
     @Override
-    public List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, String dateStart, String dateEnd,
+    public List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, List<String> resourceTypes, String dateStart, String dateEnd,
                                              int pageNumber, int pageSize) {
         List<Bson> valuesPipeline = new ArrayList<>();
         List<Bson> countPipeline = new ArrayList<>();
-        List<Bson> matchCriteria = matchCriteria(users, projects, resourceNames, dateStart, dateEnd);
+        List<Bson> matchCriteria = matchCriteria(users, projects, resourceNames, resourceTypes, dateStart, dateEnd);
         if (!matchCriteria.isEmpty()) {
             Bson match = match(Filters.and(matchCriteria));
             valuesPipeline.add(match);
@@ -99,11 +99,12 @@
                 .collect(Collectors.toList());
     }
 
-    private List<Bson> matchCriteria(List<String> users, List<String> projects, List<String> resourceNames, String dateStart, String dateEnd) {
+    private List<Bson> matchCriteria(List<String> users, List<String> projects, List<String> resourceNames, List<String> resourceTypes, String dateStart, String dateEnd) {
         List<Bson> searchCriteria = new ArrayList<>();
         inCriteria(searchCriteria, users, USER);
         inCriteria(searchCriteria, projects, PROJECT);
         inCriteria(searchCriteria, resourceNames, RESOURCE_NAME_FIELD);
+        inCriteria(searchCriteria, resourceTypes, RESOURCE_TYPE_FIELD);
         if (StringUtils.isNotEmpty(dateStart)) {
             Instant from = getInstant(dateStart);
             searchCriteria.add(gte(TIMESTAMP_FIELD, from));
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java
index c08350e..188f80d 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/AuditResource.java
@@ -58,12 +58,13 @@
                              @QueryParam("users") StringList users,
                              @QueryParam("projects") StringList projects,
                              @QueryParam("resource-names") StringList resourceNames,
+                             @QueryParam("resource-types") StringList resourceTypes,
                              @QueryParam("date-start") String dateStart,
                              @QueryParam("date-end") String dateEnd,
                              @QueryParam("page-number") int pageNumber,
                              @QueryParam("page-size") int pageSize) {
         return Response
-                .ok(auditService.getAudit(users, projects, resourceNames, dateStart, dateEnd, pageNumber, pageSize))
+                .ok(auditService.getAudit(users, projects, resourceNames, resourceTypes, dateStart, dateEnd, pageNumber, pageSize))
                 .build();
     }
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java
index 8ea9afd..81bbec7 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/AuditService.java
@@ -30,5 +30,5 @@
 
     void save(String user, AuditCreateDTO audit);
 
-    List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, String dateStart, String dateEnd, int pageNumber, int pageSize);
+    List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, List<String> resourceTypes, String dateStart, String dateEnd, int pageNumber, int pageSize);
 }
diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
index 6c86411..0e7aebc 100644
--- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
+++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/AuditServiceImpl.java
@@ -57,7 +57,8 @@
     }
 
     @Override
-    public List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, String dateStart, String dateEnd, int pageNumber, int pageSize) {
-        return auditDAO.getAudit(users, projects, resourceNames, dateStart, dateEnd, pageNumber, pageSize);
+    public List<AuditPaginationDTO> getAudit(List<String> users, List<String> projects, List<String> resourceNames, List<String> resourceTypes,
+                                             String dateStart, String dateEnd, int pageNumber, int pageSize) {
+        return auditDAO.getAudit(users, projects, resourceNames, resourceTypes, dateStart, dateEnd, pageNumber, pageSize);
     }
 }
