Catalog/workflow-fsm-unreachable

Workflow

FSM unreachable states API

Detects FSM states never reachable from the initial state and states that cannot reach any final state, to catch dead logic. Answers 'Are any states unreachable?', 'Can every state still finish?'.

Price$0.02per request
MethodPOST
Route/v1/workflow/fsm-unreachable
StatusLive
MIME typeapplication/json
Rate limit120/minute
Cache0s public
fsmstate-machineunreachabledead-statevalidatereachabilityautomataworkflow
API URLhttps://x402.hexl.dev/v1/workflow/fsm-unreachable
Integration docs
Example request
{
  "states": [
    "idle",
    "running",
    "done",
    "orphan"
  ],
  "initial": "idle",
  "transitions": [
    {
      "from": "idle",
      "on": "start",
      "to": "running"
    },
    {
      "from": "running",
      "on": "finish",
      "to": "done"
    }
  ],
  "finals": [
    "done"
  ]
}
Example response
{
  "unreachableStates": [
    "orphan"
  ],
  "cannotReachFinalStates": [
    "orphan"
  ],
  "allReachable": false,
  "interpretation": "Unreachable from initial: orphan."
}
Input schema
{
  "type": "object",
  "required": [
    "states",
    "initial",
    "transitions"
  ],
  "properties": {
    "states": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "examples": [
        [
          "idle",
          "running",
          "done",
          "orphan"
        ]
      ]
    },
    "initial": {
      "type": "string",
      "examples": [
        "idle"
      ]
    },
    "transitions": {
      "type": "array",
      "examples": [
        [
          {
            "from": "idle",
            "on": "start",
            "to": "running"
          },
          {
            "from": "running",
            "on": "finish",
            "to": "done"
          }
        ]
      ]
    },
    "finals": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "examples": [
        [
          "done"
        ]
      ]
    }
  }
}
Output schema
{
  "type": "object",
  "additionalProperties": true
}