---
url: /docs/api/core/variables/plannedSessionSchema.md
---
[**@kaiord/core**](../README.md)

***

[@kaiord/core](../README.md) / plannedSessionSchema

# Variable: plannedSessionSchema

> `const` **plannedSessionSchema**: `ZodObject`<{ `coach_notes`: `ZodOptional`<`ZodString`>; `completion_percent`: `ZodOptional`<`ZodNumber`>; `date`: `ZodISODate`; `duration_seconds`: `ZodOptional`<`ZodNumber`>; `intensity`: `ZodOptional`<`ZodNumber`>; `kind`: `ZodLiteral`<`"planned_session"`>; `source`: `ZodString`; `source_id`: `ZodString`; `sport`: `ZodString`; `status`: `ZodEnum`<{ `completed`: `"completed"`; `pending`: `"pending"`; `skipped`: `"skipped"`; }>; `title`: `ZodString`; `workload`: `ZodOptional`<`ZodNumber`>; }, `$strip`>

Defined in: [packages/core/src/domain/schemas/planned-session.ts:26](https://github.com/pablo-albaladejo/kaiord/blob/3eacbe62ef72342d970523967cc5155b5935bb85/packages/core/src/domain/schemas/planned-session.ts#L26)

Zod schema for a `planned-session` — a single coach-prescribed session
(what Train2Go delivers per calendar day). Replaces the decorative
`training-plan` managed type: the routable unit is the individual
session; the "plan" is the collection of sessions on the calendar.

Snake_case per the domain schema convention. Fields are derived from the
persisted `CoachingActivityRecord` so a coaching activity maps to a
planned session without loss: external identity, date, sport, prescribed
load/intensity, coach notes, and workflow status.
