Skip to content

Steps

A step is one thing that happens. There are three forms.

Step Meaning
a -> b: label A packet travels from a to b.
at a: label Node a does something. It pulses and shows the caption.
par: [ ... ] The steps inside start together. See parallel steps.
HTTP request / responseData accessQueue / brokerDashed: planned
Loading diagram…
steps:
- browser -> api: { label: GET /items, note: The default kind is a request. }
- api -> cache: { label: GET items, kind: lookup }
- cache -> api: { label: miss, kind: error }
- at api: { label: build the answer }
- api -> queue: { label: items.read, kind: event }
- api -> browser: 200 OK

a -> b: label sends a packet from a to b. A bare string is a label. Use a map for options: a -> b: { label: GET /items, kind: lookup }.

Steps use the edges you declared. If there is no direct edge, the packet takes the shortest route, hop by hop. See routes.

Flying against an edge makes the packet a response, so redis -> catalog over a catalog -> redis edge is drawn green without you saying so. You rarely need to set kind: response yourself.

at a: label makes one node do something: validate a token, authorise a card, write a row. The node pulses and the label appears beside it. A self step needs a label or a title.

- at stripe: { label: authorise card, note: The slowest step, and the only one we do not control. }

kind colours the packet and says what sort of step it is.

Kind Draws as Use it for
request A teal packet. The default. The call going out.
response A green packet. The answer coming back. Set automatically against an edge.
error A red packet. A failure: a miss, a decline, a timeout.
lookup A grey packet. A quick read of a store.
event An amber packet. Something published for others to react to.

In the story view, a lookup becomes a dashed side box beside the step that asked, so reads of stores do not interrupt the main line of the story.

Step kinds are separate from edge kinds: a data edge can carry a lookup step.

Option Meaning
label The text on the packet and in the timeline.
kind request (default), response, error, lookup or event.
note Markdown explaining the step, shown in the timeline.
status planned draws the step dashed, with a tag.
hold Extra seconds to pause on the step.
via Force the route through these nodes. Flow steps only.
title The box heading in the story view. Defaults to the label.
detail One to three short lines under the heading in the story view. Defaults to from → to.

A step that touches something that is not built yet is drawn dashed:

- queue -> mailer: { label: send receipt, status: planned, note: Planned. Receipts are not sent yet. }
HTTP request / responseData accessQueue / brokerDashed: planned
Loading diagram…
Message Cause
Not a recognised step The step is not a -> b, at node or par. Check the arrow and the spacing.
A step with at needs a label or a title at x: needs text: at x: what happens.
"x" is not a node A typo in a step. The hint names the nearest id.
Invalid option: expected one of "request"|"response"... kind is not a step kind. Edge kinds such as data do not apply to steps.

See errors and warnings for the full list.