diff --git a/lib/opcodes.py b/lib/opcodes.py
index e1d40ad28bb75172e4b0413f16f8698aa148d930..11a1ac2ddad4bce9194cb46cc2164ce65545e595 100644
--- a/lib/opcodes.py
+++ b/lib/opcodes.py
@@ -413,11 +413,17 @@ class OpCode(BaseOpCode):
   # pylint: disable-msg=E1101
   # as OP_ID is dynamically defined
   WITH_LU = True
+  _T_JOB_DEP = \
+    ht.TAnd(ht.TIsLength(2),
+            ht.TItems([ht.TJobId,
+                       ht.TListOf(ht.TElemOf(constants.JOBS_FINALIZED))]))
   OP_PARAMS = [
     ("dry_run", None, ht.TMaybeBool, "Run checks only, don't execute"),
     ("debug_level", None, ht.TOr(ht.TNone, ht.TPositiveInt), "Debug level"),
     ("priority", constants.OP_PRIO_DEFAULT,
      ht.TElemOf(constants.OP_PRIO_SUBMIT_VALID), "Opcode priority"),
+    ("depends", None, ht.TOr(ht.TNone, ht.TListOf(_T_JOB_DEP)),
+     "Job dependencies"),
     ]
 
   def __getstate__(self):