> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nevatal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Doctor Schedule

> Partial update — each field present replaces its full counterpart

Partial semantics at the field level: sending `workingDays` replaces the whole
block set; sending `exceptions` replaces the whole exception list; an omitted
field is left untouched. Requires **Manage** permission on the Appointments
module.

The same validation as Save applies to any submitted `workingDays`: assigned
locations only, no same-day overlaps across locations, `"HH:MM"` formats,
lunch inside the block.

## Path Parameters

<ParamField path="doctorId" type="string" required>The doctor's user ID</ParamField>

## Body

<ParamField body="workingDays" type="array">
  Replacement block set (same shape as Save Doctor Schedule).
</ParamField>

<ParamField body="exceptions" type="array">
  Replacement list of ISO 8601 unavailability dates (doctor-wide).
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X PUT "https://api.nevatal.com/api/v1/appointments/doctors/schedule/66dc441b8208f63a0269eecf" \
    -H "Authorization: Bearer nvtl_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{ "exceptions": ["2026-08-07", "2026-12-25"] }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "doctorId": "66dc441b8208f63a0269eecf",
      "workingDays": [
        { "day": "monday", "locationId": "69616b710ea6a551535841bb", "locationName": "Armenia", "startTime": "08:00", "endTime": "17:00" }
      ],
      "exceptions": ["2026-08-07", "2026-12-25"]
    },
    "message": "Horario del doctor actualizado exitosamente"
  }
  ```
</ResponseExample>
