---
title: "CRM minor family-session state"
method: GET
path: "/api/appointments/crm/family-sessions"
tags: ["appointments"]
---

# CRM minor family-session state

`GET /api/appointments/crm/family-sessions`

## Request

- Base URL: `https://api.corabea.it` (the document declares no server; this is the origin it was published from)
- URL: `https://api.corabea.it/api/appointments/crm/family-sessions`
- Auth: HTTP bearer

For a minor patient, when each assigned expert in scope is next due to meet the family (a family session, or a reason given in its place) and the reasons given so far. Empty when the rule does not apply.

## Query parameters

- `patient_id` string, uuid, required: Patient UUID

## Response `200`

Successful Response

- CrmFamilySessionsResponse: A minor patient's family-session state, per assigned expert in scope.
  - `patient_id` string, uuid, required: Patient UUID
  - `items` FamilySessionState[]: Empty when the rule does not apply (adult, no session done yet, path not ongoing)
    - `patient_id` string, uuid, required: Patient UUID
    - `patient_name` string: Patient full name
    - `operator_id` string, uuid, required: The assigned expert
    - `path_type` string, required: PSICOLOGO or NUTRIZIONISTA
    - `status` 'ok' | 'due_soon' | 'overdue' | 'exempt', required: Where a minor's expert stands with the next family session.
    - `due_at` string, date-time, nullable: By when a family session (or a reason) is due; none while exempt
    - `exempt_until` string, date-time, nullable: While exempt: when the exception ends; none when it is for good
    - `last_family_at` string, date-time, nullable: Latest family session, to do or done
    - `last_reason` string, nullable: Latest reason given in place of one
    - `last_reason_at` string, date-time, nullable: When the latest reason was given
    - `last_reason_status` 'pending' | 'accepted' | 'rejected': An admin's review of an expert's reason for not meeting the family.
    - `last_review_note` string, nullable: The admin's note on the latest reason
    - `reasons_count` integer: Reasons given so far
  - `reasons` FamilySessionReasonItem[]: Reasons given so far by the experts in scope, newest first
    - `id` string, uuid, required: Reason UUID
    - `operator_id` string, uuid, required: The expert who gave it
    - `reason` string, required: The reason
    - `created_at` string, date-time, required: When it was given
    - `status` 'pending' | 'accepted' | 'rejected', required: An admin's review of an expert's reason for not meeting the family.
    - `review_note` string, nullable: The admin's note, required on a rejection
    - `reviewed_at` string, date-time, nullable: When it was reviewed
    - `exempt` boolean: Accepted as an exception to the rule
    - `exempt_until` string, date-time, nullable: When the exception ends (or ended); none for good

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-26** `f23730d7b735`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/corabea/apis/corabea-api/changes/api/appointments/crm/family-sessions/get.md)

---

[API](https://skmtc.dev/corabea/apis/corabea-api.md) · [All operations](https://skmtc.dev/corabea/apis/corabea-api/llms.txt) · [OpenAPI document](https://skmtc.dev/corabea/apis/corabea-api/revisions/4a8dd89893b8?raw)
