---
title: "Update Course Class Schedule"
method: PUT
path: "/teacher/courses/{course_id}/assignment/schedules/{class_id}"
tags: ["Teacher Courses"]
---

# Update Course Class Schedule

`PUT /teacher/courses/{course_id}/assignment/schedules/{class_id}`

## Request

- Base URL: `https://api.excellence-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.excellence-ai.com/teacher/courses/{course_id}/assignment/schedules/{class_id}`
- Auth: OAuth 2 (password, token URL `api/login`)

Set ONE class's dates for this course (decision D11): when the class
sees it, when its knowledge check opens and closes. Fields left out of the
payload are untouched; fields sent as null are cleared. A past class is
read-only.

## Path parameters

- `course_id` string, required
- `class_id` string, required

## Request body

- UpdateCourseClassScheduleRequest: One class's dates. Fields left out are untouched; fields sent as null are cleared.
  - `start_date` string, date-time, nullable
  - `quiz_start_date` string, date-time, nullable
  - `quiz_end_date` string, date-time, nullable

## Response `200`

Successful Response

- CourseAssignmentDetails: Response model for the (single, multi-class) course assignment. Returns `id=None` and empty `class_ids` when no assignment doc exists yet so the frontend can render the management UI without a 404. `class_schedules` is the truth for dates (one per class, decision D11); `start_date` and `knowledge_quiz_settings.start/end` are a legacy mirror.
  - `id` string, nullable
  - `teacher_id` string, nullable
  - `course_id` string, required
  - `class_ids` string[]
  - `class_schedules` CourseClassScheduleOut[]
    - `class_id` string, required
    - `class_name` string
    - `school_year` string, nullable
    - `is_past` boolean
    - `start_date` string, date-time, nullable
    - `quiz_start_date` string, date-time, nullable
    - `quiz_end_date` string, date-time, nullable
    - `bookmark` BookmarkPosition: Where a class's bookmark sits. `unit_id` is set for a `unit` and a `block` position; `block_id` only for a `block` one.
      - `kind` 'unset' | 'nothing' | 'unit' | 'block', required
      - `unit_id` string, nullable
      - `block_id` string, nullable
  - `frozen_school_years` string[]
  - `assigned_at` string, date-time, nullable
  - `start_date` string, date-time, nullable
  - `is_visible_to_students` boolean
  - `due_date` string, date-time, nullable
  - `instructions` string, nullable
  - `sharing_options` CourseComponentSharingOptions: Model for selective sharing options of course components. Defines what parts of a course are shared with students.
    - `include_content_units` boolean
    - `include_qcm_units` boolean
    - `include_flashcard_units` boolean
    - `include_global_flashcards` boolean
    - `include_knowledge_quiz` boolean
    - `excluded_unit_ids` string[]
  - `knowledge_quiz_settings` KnowledgeQuizSettings: Settings for the knowledge quiz on a course assignment. Configurable by the teacher when assigning a course.
    - `is_enabled` boolean
    - `max_attempts` integer, nullable
    - `show_correct_answers_after` boolean
    - `start_date` string, date-time, nullable
    - `end_date` string, date-time, nullable
    - `format` 'paper' | 'app'

## Other responses

- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-10-15** `7925dd21e4d0`: 1 info
  - added the optional property `knowledge_quiz_settings/format` to the response with the `200` status
- **2026-09-30** `518c1e6178a3`: 1 info
  - added the optional property `class_schedules/items/bookmark` to the response with the `200` status

[Operation history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/teacher/courses/:course_id/assignment/schedules/:class_id/put.md)

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) - [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) - [OpenAPI document](https://skmtc.dev/excellence-ai/apis/excellence-learning/revisions/379e4a57dee8?raw)
