---
title: "Flow definition"
description: "A Flow registers its Steps, its persistence schema, and its RPC handlers."
canonical_url: "https://docs.superdurable.io/reference/go/1.35.x/flows-and-steps/flow-definition/"
source: "docs/reference-go_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.

- **GetSteps** 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 direct bound methods from **GetRPCs** with **DefineRPC**. The durable
  RPC name is the Go method name. **RPCOptions.Name** can override it.

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