Skip to main content
Every review on a source request reports a status that moves through a fixed state machine. A review starts in DRAFT when the reviewer creates it and ends at one of three terminal states when they submit. Use the submit review endpoint to leave DRAFT. Any transition that is not allowed returns 409 Conflict. Status changes are recorded with timestamps (changes_requested_at, approved_at, rejected_at). The parent request has its own lifecycle — see Request status lifecycle.

State diagram

States

Transitions

  • Creating a review starts it in DRAFT. Calling create again while a draft exists for that reviewer resumes that draft instead of creating a duplicate.
  • PATCH on a review is allowed only while it is in DRAFT.
  • submit with approve, request_changes, or reject moves the review out of DRAFT and advances the parent request with the same event.
  • Submitted reviews are immutable.
For the full API recipe, see Review source changes.