diff --git a/packages/types/placement.ts b/packages/types/placement.ts index 461a13d..7a54378 100644 --- a/packages/types/placement.ts +++ b/packages/types/placement.ts @@ -133,4 +133,35 @@ export interface PlacementOverview { guiding_goal: number; by_employer: Array<{ employer_id: string; count: number }>; by_cohort_month: Array<{ month: string; count: number }>; -} \ No newline at end of file +} + +/** The application row on the learner status read (base.py + * LearnerApplicationSummary, D-104): the mine-visible fields only — + * ids + status + the apply timestamp (nullable per the v0.6 row). */ +export interface LearnerApplicationSummary { + id: string; + posting_id: string; + learner_id: string; + status: ApplicationStatus; + created_at: string | null; +} + +/** GET /v1/marketplace/applications/{application_id}?learner_id= + * response (base.py LearnerApplicationStatusResponse, REQ-11-005): + * the learner's-own application read — current status + the full + * id-ordered event history for THIS application + the placement + * record when hired (the honest null otherwise, A-304). */ +export interface LearnerApplicationStatus { + application: LearnerApplicationSummary; + events: PlacementEvent[]; + placement: Placement | null; +} + +/** GET /v1/marketplace/applications/mine response (base.py + * MineApplicationResponse, G-322): the panel's application discovery + * on revisit — a 404 renders the apply CTA (the panel never depends + * on client-persisted application_ids). */ +export interface MineApplication { + application_id: string; + status: ApplicationStatus; +}