# ....
workflows:
  - workflowId: some-test
    inputs: # This is the JSON Schema for the inputs each property in the inputs object represents a workflow input
      type: object
      properties:
        email:
          type: string
          examples:
            - Trystan_Crooks@hotmail.com # Examples defined will be used as literal values for the test
        firstName:
          type: string
          examples:
            - Trystan
        lastName:
          type: string
          examples:
            - Crooks
    steps:
      - stepId: create
        operationId: createUser
        requestBody:
          contentType: application/json
          payload: {
              "email": "$inputs.email", # The payload will be populated with the literal value defined in the inputs
              "first_name": "$inputs.firstName",
              "last_name": "$inputs.lastName",
            }
        successCriteria:
          - condition: $statusCode == 200
```

**Step references**

Parameters and request body payloads can reference values via [runtime expressions](/openapi/arazzo#runtime-expressions) from previous steps in the workflow. This allows for the generation of tests that are more complex than a simple sequence of operations.

Speakeasy's implementation currently only allows the referencing of a previous step's output, which means you will need to define which values you want to expose to future steps.

```yaml
arazzo: 1.0.0