# Retrieve a member's medical information

`GET /api/members/{memberId}/medical-details`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`)
- **Features:** Front of House Generic Access (`FOHGENERIC`)

HTML version: [Retrieve a member's medical information](https://support.gladstonesoftware.cloud/reference/members/retrieve-a-members-medical-information)

## Overview

Returns the medical conditions recorded against one member: for each, the condition type it was filed under and any free-text note held with it.

This is health data about an identified person — special-category personal data. Access is restricted accordingly: the member id in the route must be the member the token was issued for, or a member linked to them. Anything else is refused with 403 and the message `The given member ID does not belong to the logged in member`. A newly created link can take a short time to be recognised, so a call for a member linked moments earlier may be refused and then succeed on a retry.

Condition types are configuration. Each entry gives you both `medicalConditionTypeId` and the resolved `medicalConditionType` name, so you can display a condition without a second call; the full set of types, including ones no longer offered, comes from `GET /api/configuration/medical-types`.

Use the `id` on each condition, not the type id, when you go on to update or delete that record.

## Endpoint

`GET {base_url}/api/members/{memberId}/medical-details`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `memberId` | integer (int32) | Yes | The member whose medical conditions you want. Must be the member your token was issued for, or one linked to them — any other id is refused with 403, not an empty result. An id no member matches returns 400. |

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/members/{memberId}/medical-details' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `memberId` | integer (int32) | Echoes the member the conditions belong to, matching the `memberId` you sent in the path. Useful for keying a cache or confirming which record a stored response relates to. |
| `medicalConditions` | array of object | The member's recorded medical conditions, one entry per stored record. Empty when nothing is recorded for the member. |
| `medicalConditions[].id` | integer (int32) | Identifies this individual condition record. This is the value you pass when updating or deleting the record — an update against an id that does not exist fails with `No existing medical condition to update`. It is not the condition type id — passing the type id here will target the wrong record or none at all. |
| `medicalConditions[].medicalConditionTypeId` | integer (int32) | The configured condition type this record was filed under, matching an `id` from `GET /api/configuration/medical-types`. Types in use cannot be deleted, only deactivated, so a value here may point at a type that is no longer offered when creating new records — do not assume every id you read back will still be selectable. |
| `medicalConditions[].medicalConditionType` | string | The condition type's name, resolved from `medicalConditionTypeId` so you can display the condition without calling the medical types endpoint. Match on the id rather than this text if you are comparing conditions programmatically. |
| `medicalConditions[].medicalNote` | string | Free-text detail entered alongside the condition type — the specifics a member of staff typed in, rather than a coded value. No validation or maximum length is applied, so treat it as arbitrary user-entered text and escape it before rendering. |

## Sample response

```json title="200 OK"
{
  "memberId": 12345,
  "medicalConditions": [
    {
      "id": 12345,
      "medicalConditionTypeId": 12345,
      "medicalConditionType": "string",
      "medicalNote": "string"
    }
  ]
}
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `400` | Bad request | MemberId: {memberId} does not exist. |
| `500` | Internal server error | |
