    :replica-version ReplicaVersion
    :epoch Epoch})
 
+(s/defschema OutputResumeMode 
+  {:mode (s/eq :resume) 
+   :tenancy-id TenancyId
+   :job-id JobId
+   :task-id TaskId
+   :slot-migration SlotMigration
+   :replica-version ReplicaVersion
+   :epoch Epoch})
+
 (s/defschema WindowResumeMode 
   {:mode (s/eq :resume) 
    :tenancy-id TenancyId


(s/defschema ResumePoint
  {TaskId {(s/optional-key :input) InputResumeDefinition
           (s/optional-key :windows) {WindowId WindowResumeDefinition}}})

(s/defschema Job

                 #(= :resume (:mode %))
                 InputResumeMode))

(s/defschema OutputResumeDefinition 
  (s/conditional #(= :initialize (:mode %))
                 InitialiseMode
                 #(= :resume (:mode %))
                 OutputResumeMode))

(s/defschema WindowResumeDefinition 
  (s/conditional #(= :initialize (:mode %))
                 InitialiseMode
