---
title: "WorkflowStep"
description: "one step: a tool to run, a wait, a branch on a predicate, or another workflow"
section: concepts
address: /concepts/workflowstep
contract: 0476e35e6e275db5
---

# WorkflowStep

one step: a tool to run, a wait, a branch on a predicate, or another workflow

[figure: WorkflowStep is a value at none scope. The drawing shows its fields and the objects that they point at.]

| property | value |
|---|---|
| kind | value |
| scope | none |
| key | none |
| store | none |
| family | harness |



## Fields


| field | type | required | note |
|---|---|---|---|
| `kind` | `one of tool \| wait \| branch \| workflow \| work` | yes | work is a kind of platform work the platform runs itself, such as the backup, named by its kind row |
| `tool` | `text` | no |  |
| `input` | `json` | no | the serialisation of the tool's input type |
| `work` | [Kind](/concepts/kind) | no | for a work step, the kind of platform work it runs; a kind with no runner in the release makes the workflow not ready |
| `wait` | `duration` | no |  |
| `on_wait_passed` | `text` | no |  |
| `branch` | `hash` | no | a predicate |
| `workflow` | `id` | no |  |



## Routes that use it
No route takes or returns WorkflowStep directly. The record holds it, and the objects that point at it reach it.
