---
title: "Get one immutable weekly report"
method: GET
path: "/patients/{patient_id}/weekly-reports/{report_id}"
tags: ["weekly_reports"]
---

# Get one immutable weekly report

`GET /patients/{patient_id}/weekly-reports/{report_id}`

## Request

- Base URL: `https://api.rxfoodapp.com/api`
- URL: `https://api.rxfoodapp.com/api/patients/{patient_id}/weekly-reports/{report_id}`
- Auth: HTTP bearer

## Path parameters

- `patient_id` integer, required
- `report_id` string, uuid, required

## Response `200`

successful operation

- union
  - WeeklyReportDetailResponseV1
    - `data` object, required
    - `id` string, uuid, required
    - `kind` string, required
    - `schema_version` 'v1', required
    - `snapshot_version` integer, required
  - WeeklyReportDetailResponseV2
    - `data` WeeklyReportData, required: Frozen weekly nutrition report display payload. Properties remain optional for v1 compatibility.
      - `blueprint` WeeklyReportBlueprint
        - `active_metric_ids` string[], required
        - `effective_date` string, date, required
        - `metrics` WeeklyReportBlueprintMetric[], required
          - `id` string, required
          - `statistics` WeeklyReportStatistic, required
            - `average` number, nullable, required
            - `high` number, nullable, required
            - `low` number, nullable, required
            - `tracked_day_count` integer, required
          - `target` WeeklyReportBlueprintTarget
            - `metric_id` string, required
            - `range_high` number, nullable, required
            - `range_low` number, nullable, required
            - `range_type` string, nullable, required
          - `values` WeeklyReportDatedValue[], required
            - `date` string, date, required
            - `value` number, nullable, required
        - `resolved_targets` WeeklyReportBlueprintTarget[], required
          - `metric_id` string, required
          - `range_high` number, nullable, required
          - `range_low` number, nullable, required
          - `range_type` string, nullable, required
        - `revision_number` integer, required
        - `selection_mode` string, required
      - `body_clock` WeeklyReportBodyClock
        - `bands` WeeklyReportBodyClockBand[], required
          - `assessment` WeeklyReportBodyClockAssessment, required
            - `kind` 'calories_before_4pm' | 'daytime_window_share', required
            - `maximum_share` number
            - `minimum_share` number, required
            - `result` string, nullable
            - `share` number, nullable
          - `coverage` WeeklyReportBodyClockCoverage, required
            - `period_date_count` integer, required
            - `required_timed_date_count` integer, required
            - `timed_date_count` integer, required
          - `nutrient` 'calories' | 'protein' | 'fibre', required
          - `nutrient_label` string, required
          - `sparse_data` boolean, required
          - `total` number, nullable, required
          - `unit_label` string, required
          - `windows` WeeklyReportBodyClockWindow[], required
            - `key` 'morning' | 'midday' | 'afternoon_evening' | 'night', required
            - `label` string, required
            - `time_range_label` string, required
            - `context` string, nullable, required
            - `result` string, nullable, required
            - `share` number, nullable, required
            - `value` number, nullable, required
          - `zero_total` boolean, required
        - `period_end` string, date, required
        - `period_start` string, date, required
        - `time_basis` 'patient_local_meal_date_time', required
        - `timezone` string, required
        - `version` integer, required
        - `windows` WeeklyReportBodyClockWindowDefinition[], required
          - `key` 'morning' | 'midday' | 'afternoon_evening' | 'night', required
          - `label` string, required
          - `time_range_label` string, required
      - `detailed_report_reference` WeeklyReportDetailedReportReference
        - `id` integer, required
        - `period_end` string, date, required
        - `period_start` string, date, required
      - `diet_quality` WeeklyReportDietQuality
        - `date_since` string, date, required
        - `date_until` string, date, required
        - `series` WeeklyReportDietQualityPoint[], required
          - `has_data` boolean, required
          - `log_date` string, date, required
          - `max_score` number, required
          - `total_score` number, nullable
          - `window_end_date` string, date, required
          - `window_start_date` string, date, required
        - `version` string, required
        - `window_days` integer, required
      - `narrative` WeeklyReportNarrative: Immutable generated or deterministic fallback prose. Prompt, model, locale, attempts and input provenance are private audit metadata.
        - `behavior_patterns` string[]: Four validated behavior-oriented weekly highlights. Omitted atomically when the generated collection is unsupported or invalid.
        - `body` string, required: Two-to-four-sentence Summary based on frozen Blueprint priorities.
        - `body_clock_headline` string, required
        - `body_clock_insight` string, required: Observational weekly insight; excludes deterministic per-nutrient assessments.
        - `diet_quality_overview` string, required: Observational overview of the frozen diet quality series.
        - `focus_for_next_week` string: Independently validated next-week focus from frozen Blueprint facts. Present on newly generated snapshot version 3 and later; omitted from older immutable snapshots.
        - `headline` string, required: Independently validated Summary headline.
        - `pinned_nutrient_commentary` WeeklyReportNarrativeCommentary[], required: Exactly one item per frozen pin in snapshot order; sparse or unavailable pins use deterministic copy.
          - `commentary` string, required
          - `metric_id` string, required
        - `suggested_questions` string[]: Three-to-five validated practical questions that may be opened as unsent Mia drafts. Omitted atomically when the generated collection is unsupported or invalid.
        - `wins_this_week` string: Independently validated positive progress from frozen facts. Present on newly generated snapshot version 3 and later; omitted from older immutable snapshots.
      - `pinned_nutrients` WeeklyReportPinnedNutrient[]
        - `display_name` string, required
        - `facts` object: Versioned factual pin contract documented in docs/weekly-report-pins.md. Display strings are for MNT narrative use; mobile owns localized formatting.
        - `nutrient_key` string, required
        - `target` WeeklyReportPinnedNutrientTarget, required
          - `aggregator` string, required
          - `period` string, required
          - `range_high` number, nullable, required
          - `range_low` number, nullable, required
          - `range_type` string, nullable, required
          - `value_basis` string, required
        - `unit` string, nullable
        - `values` WeeklyReportDatedValue[]: Frozen logged daily sums; absent days are not imputed as zero.
          - `date` string, date, required
          - `value` number, nullable, required
        - `weeks` WeeklyReportPinnedWeek[], required
          - `period_end` string, date, required
          - `period_start` string, date, required
          - `statistics` WeeklyReportStatistic, required
            - `average` number, nullable, required
            - `high` number, nullable, required
            - `low` number, nullable, required
            - `tracked_day_count` integer, required
      - `report` WeeklyReportPeriod
        - `period_end` string, date, required
        - `period_start` string, date, required
        - `timezone` string, required
      - `source_meals` WeeklyReportSourceMeal[]
        - `id` integer, required
        - `navigation_available` boolean, required
      - `spotlights` WeeklyReportMealSpotlight[]
        - `commentary` NutritionPlanSpotlightCommentaryResponse[], nullable: Ordered commentary copied from the Blueprint meal spotlight into the immutable snapshot.
          - `sentiment` 'positive' | 'neutral' | 'negative', required
          - `text` string, required
        - `impact_direction` string, nullable
        - `meal_id` integer, nullable
        - `metric_amount` number, nullable
        - `metric_id` string, required
        - `navigation_available` boolean
        - `reason` 'commentary_unavailable' | 'meal_spotlight_unavailable' | 'no_qualified_candidate' | 'metric_not_meal_based', nullable
        - `source_window` WeeklyReportSourceWindow
          - `date_since` string, date, required
          - `date_until` string, date, required
        - `status` 'ready' | 'partial' | 'unavailable', required: Terminal availability of this component in the immutable report. Partial retains the selected meal but omits unavailable generated commentary.
        - `suggested_question` string, nullable
      - `version` integer
    - `id` string, uuid, required
    - `kind` string, required
    - `schema_version` 'v2', required
    - `snapshot_version` integer, required

## Other responses

- `404`: report not found
- `426`: app update required for this report schema

## Changes

- **2026-09-24** `a61b77b30e63`: 4 info
  - added the optional property `oneOf[#/components/schemas/WeeklyReportDetailResponseV2]/data/narrative/behavior_patterns` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/WeeklyReportDetailResponseV2]/data/narrative/focus_for_next_week` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/WeeklyReportDetailResponseV2]/data/narrative/suggested_questions` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/WeeklyReportDetailResponseV2]/data/narrative/wins_this_week` to the response with the `200` status
- **2026-09-15** `8d4f658e79b1`: 1 breaking
  - the `oneOf[#/components/schemas/WeeklyReportDetailResponseV2]/data/spotlights/items/commentary` response's property type changed from `string` to `array` for status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/rxfoodapp/apis/inneranalytics-mnt-server/changes/patients/:patient_id/weekly-reports/:report_id/get.md)

---

[API](https://skmtc.dev/rxfoodapp/apis/inneranalytics-mnt-server.md) - [All operations](https://skmtc.dev/rxfoodapp/apis/inneranalytics-mnt-server/llms.txt) - [OpenAPI document](https://skmtc.dev/rxfoodapp/apis/inneranalytics-mnt-server/revisions/c3d8e22b22e8?raw)
