---
title: "Flow definition"
description: "A Flow registers its Steps, its persistence schema, and its RPC handlers."
canonical_url: "https://docs.superdurable.io/reference/rust/1.35.x/flows-and-steps/flow-definition/"
source: "docs/reference-rust_versioned_docs/version-1.35.x/flows-and-steps/flow-definition.mdx"
locale: "en"
---

# Flow definition

A Flow registers its Steps, its persistence schema, and its RPC handlers.

- **steps** registers one start Step and every
  other Step type the Flow may reach through Step decision movements. The
  start Step input type is also the Flow start input type. An empty Step list,
  or a list with no start Step, is valid when the Flow is driven entirely by
  RPCs that later move into Steps.
- The persistence schema lists every Attribute and Channel used from Steps or
  RPCs. Dex rejects reads and writes to names that are not declared.
- Return an **RpcList** from **rpcs** to bind RPC definitions to handlers.
  **Rpc::new** declares the durable RPC name explicitly.

Most SDKs derive the **FlowType** and the **StepType** from the native type
name unless you override it.
