diff --git a/api/lib/perm/acl/user.py b/api/lib/perm/acl/user.py
index 178502c..fd152db 100644
--- a/api/lib/perm/acl/user.py
+++ b/api/lib/perm/acl/user.py
@@ -43,10 +43,10 @@ class UserCRUD(object):
         return User.create(**kwargs)
 
     @staticmethod
-    def update(rid, **kwargs):
-        user = User.get_by_id(rid) or abort(404, "User <{0}> does not exist".format(rid))
+    def update(uid, **kwargs):
+        user = User.get_by_id(uid) or abort(404, "User <{0}> does not exist".format(uid))
 
-        UserCache.clean(rid)
+        UserCache.clean(uid)
 
         return user.update(**kwargs)
 
diff --git a/api/views/acl/resources.py b/api/views/acl/resources.py
index 94241cf..72876a5 100644
--- a/api/views/acl/resources.py
+++ b/api/views/acl/resources.py
@@ -6,12 +6,55 @@ from api.lib.decorator import args_required
 from api.lib.perm.acl import validate_app
 from api.lib.perm.acl.resource import ResourceCRUD
 from api.lib.perm.acl.resource import ResourceGroupCRUD
+from api.lib.perm.acl.resource import ResourceTypeCRUD
 from api.lib.utils import get_page
 from api.lib.utils import get_page_size
 from api.lib.utils import handle_arg_list
 from api.resource import APIView
 
 
+class ResourceTypeView(APIView):
+    url_prefix = ("/resource_types", "/resource_types/<int:type_id>")
+
+    @args_required('app_id')
+    @validate_app
+    def get(self):
+        page = get_page(request.values.get("page", 1))
+        page_size = get_page_size(request.values.get("page_size"))
+        q = request.values.get('q')
+        app_id = request.values.get('app_id')
+
+        numfound, res = ResourceTypeCRUD.search(q, app_id, page, page_size)
+
+        return self.jsonify(numfound=numfound,
+                            page=page,
+                            page_size=page_size,
+                            groups=[i.to_dict() for i in res])
+
+    @args_required('name')
+    @args_required('app_id')
+    @args_required('perms')
+    @validate_app
+    def post(self):
+        name = request.values.get('name')
+        app_id = request.values.get('app_id')
+        perms = request.values.get('perms')
+
+        rt = ResourceTypeCRUD.add(name, app_id, perms)
+
+        return self.jsonify(rt.to_dict())
+
+    def put(self, type_id):
+        rt = ResourceTypeCRUD.update(type_id, **request.values)
+
+        return self.jsonify(rt.to_dict())
+
+    def delete(self, type_id):
+        ResourceTypeCRUD.delete(type_id)
+
+        return self.jsonify(type_id=type_id)
+
+
 class ResourceView(APIView):
     url_prefix = ("/resources", "/resources/<int:resource_id>")