---
title: "S14 bindings"
description: "Data-binding map of Plan · 14-day plan: every field to its source, and what each required state shows."
source: "design/hifi/S14/bindings.md"
---

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

# Data-binding map: S14 Plan · 14-day plan

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

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

| Field | Source (endpoint or local state) | Format | Fallback |
|---|---|---|---|
| focus title | `api GET /plan target_micro_skill` · `plan.target_micro_skill` → micro-skill title (API, Accept-Language; fallback `micro.*`) | — | — |
| baseline | `api GET /plan baseline_overall` · `plan.baseline_overall` | integer | — |
| reason | `derived weakest_dimension` · the weakest dimension of the diagnostic (`derived:` lowest `assessment.dimensions.<key>.score`), its label (`dimension.<key>`) and `assessment.dimensions.<weakest>.note` | `plan.reason` | omit sentence |
| reason | `api GET /attempts/{attempt_id} assessment.dimensions.key_info.note` |  |  |
| reason | `api GET /attempts/{attempt_id} assessment.dimensions.structure.note` |  |  |
| reason | `api GET /attempts/{attempt_id} assessment.dimensions.efficiency.note` |  |  |
| reason | `api GET /attempts/{attempt_id} assessment.dimensions.fluency.note` |  |  |
| tags | `api GET /me onboarding.answers.weekly_days` · weekly days (**CCR-7**), `me.settings.reminder_time`, `session.language` | — | hide tag |
| tags | `api GET /me settings.reminder_time` |  |  |
| tags | `api GET /sessions/{session_id} language` |  |  |
| day rows | `api GET /plan days[].day` · `plan.days[].day / date / title / status` | date via `Date.FormatStyle` (`10月17日` / `Oct 17`) | `GET /v1/plan` 404 → plan not ready: spinner + retry |
| day rows | `api GET /plan days[].date` |  |  |
| day rows | `api GET /plan days[].title` |  |  |
| day rows | `api GET /plan days[].status` |  |  |
| `diagnostic assessment.dimensions.structure.note` | `api GET /attempts/{attempt_id} assessment.dimensions.structure.note` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding answers weekly_days (CCR-7)` | `api GET /me onboarding.answers.weekly_days` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[0]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[0].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[0].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[10]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[10].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[10].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[11]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[11].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[11].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[12]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[12].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[12].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[13]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[13].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[13].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[1]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[1].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[1].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[2]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[2].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[2].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[3]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[3].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[3].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[4]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[4].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[4].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[5]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[5].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[5].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[6]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[6].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[6].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[7]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[7].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[7].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[8]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[8].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[8].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[9]` | `api GET /plan days[]` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[9].date` | `api GET /plan days[].date` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.days[9].title` | `api GET /plan days[].title` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `plan.target_micro_skill → micro-skill title (Accept-Language)` | `api GET /plan target_micro_skill` · 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 |
|---|---|---|
| `weakest_dimension` | `api GET /attempts/{attempt_id} assessment.dimensions.key_info.score`, `api GET /attempts/{attempt_id} assessment.dimensions.structure.score`, `api GET /attempts/{attempt_id} assessment.dimensions.efficiency.score`, `api GET /attempts/{attempt_id} assessment.dimensions.fluency.score` | The diagnostic's lowest-scoring dimension; the plan explains its focus with it. |

## Binds on the boards

The `data-bind` values across every state.

- `diagnostic assessment.dimensions.structure.note`
- `me.settings.reminder_time`
- `onboarding answers weekly_days (CCR-7)`
- `plan.baseline_overall`
- `plan.days[0]`
- `plan.days[0].date`
- `plan.days[0].title`
- `plan.days[10]`
- `plan.days[10].date`
- `plan.days[10].title`
- `plan.days[11]`
- `plan.days[11].date`
- `plan.days[11].title`
- `plan.days[12]`
- `plan.days[12].date`
- `plan.days[12].title`
- `plan.days[13]`
- `plan.days[13].date`
- `plan.days[13].title`
- `plan.days[1]`
- `plan.days[1].date`
- `plan.days[1].title`
- `plan.days[2]`
- `plan.days[2].date`
- `plan.days[2].title`
- `plan.days[3]`
- `plan.days[3].date`
- `plan.days[3].title`
- `plan.days[4]`
- `plan.days[4].date`
- `plan.days[4].title`
- `plan.days[5]`
- `plan.days[5].date`
- `plan.days[5].title`
- `plan.days[6]`
- `plan.days[6].date`
- `plan.days[6].title`
- `plan.days[7]`
- `plan.days[7].date`
- `plan.days[7].title`
- `plan.days[8]`
- `plan.days[8].date`
- `plan.days[8].title`
- `plan.days[9]`
- `plan.days[9].date`
- `plan.days[9].title`
- `plan.target_micro_skill → micro-skill title (Accept-Language)`
- `session.language`

## States

- Loading: From [states.md](/design/states/index.md) (Plan): spinner (plan job may lag the diagnostic)
- Empty: From [states.md](/design/states/index.md) (Plan): —
- Error (retryable / not): From [states.md](/design/states/index.md) (Plan): 404 "no plan yet" → poll 3× then Retry · fatal: generic error
- Offline: From [states.md](/design/states/index.md) (Plan): cached plan
