---
title: "S32 bindings"
description: "Data-binding map of Global · Offline toast: every field to its source, and what each required state shows."
source: "design/hifi/S32/bindings.md"
---

> Part of [Brand and design](/design/llms.txt). Every page: [llms.txt](/llms.txt).

# Data-binding map: S32 Global · Offline toast

> Generated by `botgumi-design index` from `../../screens.json`. Edit that file, not this page.

Every field [S32](/design/hifi/s32/index.md) shows and where it comes from.

| Field | Source (endpoint or local state) | Format | Fallback |
|---|---|---|---|
| offline toast | `device network` · `NWPathMonitor.status` | — | — |
| `NWPathMonitor.status = unsatisfied` | `device network` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `derived: recorder.effectiveMs ≥ session.min_valid_ms` | `derived recording_long_enough` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `local:recorder.effectiveMs` | `local recorder.effectiveMs` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `local:recorder.state` | `local recorder.state` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `session.attempts[round=1].duration_ms` | `api GET /sessions/{session_id} attempts[].duration_ms` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `session.max_round2_ms` | `api GET /sessions/{session_id} max_round2_ms` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `session.round1_assessment.one_action.example_sentence` | `api GET /sessions/{session_id} round1_assessment.one_action.example_sentence` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `session.round1_assessment.one_action.instruction` | `api GET /sessions/{session_id} round1_assessment.one_action.instruction` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `session.stage → derived step` | `api GET /sessions/{session_id} stage` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |

## Derived values

Computed on device; each from the sources it names.

| Value | From | How |
|---|---|---|
| `recording_long_enough` | `local recorder.effectiveMs`, `api GET /sessions/{session_id} min_valid_ms` | Stop is enabled once the recording reaches the minimum valid length. |

## Binds on the boards

The `data-bind` values across every state.

- `NWPathMonitor.status = unsatisfied`
- `derived: recorder.effectiveMs ≥ session.min_valid_ms`
- `local:recorder.effectiveMs`
- `local:recorder.state`
- `session.attempts[round=1].duration_ms`
- `session.max_round2_ms`
- `session.round1_assessment.one_action.example_sentence`
- `session.round1_assessment.one_action.instruction`
- `session.stage → derived step`

## States

- Loading: From [states.md](/design/states/index.md) (Global sheets): —
- Empty: From [states.md](/design/states/index.md) (Global sheets): —
- Error (retryable / not): From [states.md](/design/states/index.md) (Global sheets): — · fatal: [error--generic](/design/gallery/global/error--generic.html), [force-update--default](/design/gallery/global/force-update--default.html)
- Offline: From [states.md](/design/states/index.md) (Global sheets): [offline--toast](/design/gallery/global/offline--toast.html)
