diff --git a/server/app/apis/questions.py b/server/app/apis/questions.py
index d8e8b701c74715ded26b9d7050e4c9360b7c23be..a82b25eac53f3987dab4ded3586017368b00338f 100644
--- a/server/app/apis/questions.py
+++ b/server/app/apis/questions.py
@@ -54,7 +54,7 @@ class Questions(Resource):
 
     @jwt_required
     def delete(self, CID, QID):
-        item_question = dbc.get.question(CID, QID).first()
+        item_question = dbc.get.question(CID, QID)
         if not item_question:
             return {"response": "No content found"}, codes.NOT_FOUND
 
diff --git a/server/app/apis/teams.py b/server/app/apis/teams.py
index bec6cb6a81005ebf782c212319b0641ca9f3a35a..ac2cc06f1ccb36f6c085ac774082e5eec25d42c9 100644
--- a/server/app/apis/teams.py
+++ b/server/app/apis/teams.py
@@ -3,6 +3,7 @@ import app.core.http_codes as codes
 from app.apis import admin_required, item_response, list_response
 from app.core.dto import TeamDTO
 from app.core.models import Competition, Team
+from app.core.parsers import team_parser
 from flask_jwt_extended import get_jwt_identity, jwt_required
 from flask_restx import Namespace, Resource, reqparse
 
@@ -25,14 +26,10 @@ class TeamsList(Resource):
 
     @jwt_required
     def post(self, CID):
-        parser = reqparse.RequestParser()
-        parser.add_argument("name", type=str, location="json")
-        args = parser.parse_args(strict=True)
-
+        args = team_parser.parse_args(strict=True)
         item_comp = get_comp(CID)
-        dbc.add.team(args["name"], item_comp)
-        dbc.refresh(item_comp)
-        return list_response(list_schema.dump(item_comp.teams))
+        item_team = dbc.add.team(args["name"], item_comp)
+        return item_response(schema.dump(item_team))
 
 
 @api.route("/<TID>")
@@ -46,5 +43,22 @@ class Teams(Resource):
     @jwt_required
     def delete(self, CID, TID):
         item_team = dbc.get.team(CID, TID)
+        if not item_team:
+            api.abort(codes.NOT_FOUND, f"Could not find team with id {TID} in competition with id {CID}.")
+
         dbc.delete.team(item_team)
-        return "deleted"
+        return {}, codes.NO_CONTENT
+
+    @jwt_required
+    def put(self, CID, TID):
+        args = team_parser.parse_args(strict=True)
+        name = args.get("name")
+        competition_id = args.get("competition_id")
+
+        item_team = dbc.get.team(CID, TID)
+        if not item_team:
+            api.abort(codes.NOT_FOUND, f"Could not find team with id {TID} in competition with id {CID}.")
+
+        item_team = dbc.edit.team(item_team, name=name, competition_id=competition_id)
+
+        return item_response(schema.dump(item_team))
diff --git a/server/app/core/controller/edit.py b/server/app/core/controller/edit.py
index 63e67b3cead0f1a9b47cbc8ff58e5507bda314c5..0a1b190f83f2150972e932d9d3bc899c5fe3280a 100644
--- a/server/app/core/controller/edit.py
+++ b/server/app/core/controller/edit.py
@@ -31,6 +31,17 @@ def slide(item, title=None, timer=None):
     return item
 
 
+def team(item_team, name=None, competition_id=None):
+    if name:
+        item_team.name = name
+    if competition_id:
+        item_team.competition_id = competition_id
+
+    db.session.commit()
+    db.session.refresh(item_team)
+    return item_team
+
+
 def competition(item, name=None, year=None, city_id=None):
     if name:
         item.name = name
diff --git a/server/app/core/controller/get.py b/server/app/core/controller/get.py
index 1b31ddda5a84c2796d716bf3aac9db852c7ff303..f695deeea3b4c51b41aa2d639431a27cd59d3ab0 100644
--- a/server/app/core/controller/get.py
+++ b/server/app/core/controller/get.py
@@ -17,7 +17,7 @@ def question(CID, QID):
     slide_ids = set(
         [x.id for x in Slide.query.filter(Slide.competition_id == CID).all()]
     )  # TODO: Filter using database instead of creating a set of slide_ids
-    return Question.query.filter(Question.slide_id.in_(slide_ids) & (Question.id == QID))
+    return Question.query.filter(Question.slide_id.in_(slide_ids) & (Question.id == QID)).first()
 
 
 def _search(query, order_column, page=0, page_size=15, order=1):
diff --git a/server/app/core/parsers.py b/server/app/core/parsers.py
index a3bf2ba088312f911de87755c7adf42e1d13f4dd..f053beb04aa8415343c5d55e047ed13d8873f8c2 100644
--- a/server/app/core/parsers.py
+++ b/server/app/core/parsers.py
@@ -69,3 +69,8 @@ question_search_parser.add_argument("name", type=str, default=None, location="js
 question_search_parser.add_argument("slide_id", type=int, default=None, location="json")
 question_search_parser.add_argument("type_id", type=int, default=None, location="json")
 question_search_parser.add_argument("competition_id", type=int, default=None, location="json")
+
+###TEAM####
+team_parser = reqparse.RequestParser()
+team_parser.add_argument("name", type=str, location="json")
+team_parser.add_argument("competition_id", type=int, location="json")