{
  "states": [
    "DRAFT",
    "SUBMITTED",
    "ON_HOLD",
    "APPROVED",
    "REJECTED"
  ],
  "initial_state": "DRAFT",
  "terminal_states": [
    "APPROVED",
    "REJECTED"
  ],
  "transitions": [
    {
      "from": "DRAFT",
      "trigger": "submit",
      "to": "SUBMITTED",
      "guard": "has_required_fields"
    },
    {
      "from": "SUBMITTED",
      "trigger": "hold",
      "to": "ON_HOLD",
      "guard": "needs_more_info"
    },
    {
      "from": "ON_HOLD",
      "trigger": "resume",
      "to": "SUBMITTED",
      "guard": "resume_ready"
    },
    {
      "from": "SUBMITTED",
      "trigger": "approve",
      "to": "APPROVED",
      "guard": "approver_authorized"
    },
    {
      "from": "SUBMITTED",
      "trigger": "reject",
      "to": "REJECTED",
      "guard": "approver_authorized"
    }
  ],
  "record_fields": [
    "Current State",
    "Trigger",
    "Guard",
    "Next State",
    "Hold or Terminal",
    "Side Effect",
    "Invalid Alternative",
    "Evidence",
    "Recovery or Resume Rule"
  ]
}
