POST /api/v1/unit-instance/{unit}/new-exam

Create a new exam for the unit. Only admins and lecturers can create exams.

Path parameters

  • unit string Required

    UUID of the unit instance (unit offering)

application/json

Body Required

Exam data including title, exam period, release/due dates, duration, and attempts

  • title string Required
  • examPeriodId string Required
  • releaseDate string(date-time) Required
  • dueDate string(date-time) Required
  • durationMinutes number Required
  • maxAttempts number Required

    Default value is 1.

  • status string Required

Responses

  • 201 application/json

    Exam created successfully

  • 400

    Invalid exam data

  • 403

    Forbidden - Admin or Lecturer role required

POST /api/v1/unit-instance/{unit}/new-exam
curl \
 --request POST 'http://localhost:3500/api/v1/unit-instance/123e4567-e89b-12d3-a456-426614174000/new-exam' \
 --header "Content-Type: application/json" \
 --data '{"title":"Final Exam - Data Structures \u0026 Algorithms","status":"DRAFT","dueDate":"2025-12-15T12:00:00Z","maxAttempts":1,"releaseDate":"2025-12-15T09:00:00Z","examPeriodId":"123e4567-e89b-12d3-a456-426614174001","durationMinutes":180}'
Request example
{
  "title": "Final Exam - Data Structures & Algorithms",
  "status": "DRAFT",
  "dueDate": "2025-12-15T12:00:00Z",
  "maxAttempts": 1,
  "releaseDate": "2025-12-15T09:00:00Z",
  "examPeriodId": "123e4567-e89b-12d3-a456-426614174001",
  "durationMinutes": 180
}
Response examples (201)
{
  "exam": {
    "id": "exam-987",
    "title": "Final Exam - Data Structures & Algorithms",
    "status": "DRAFT",
    "dueDate": "2025-12-15T12:00:00Z",
    "createdAt": "2025-11-17T12:00:00Z",
    "maxAttempts": 1,
    "releaseDate": "2025-12-15T09:00:00Z",
    "examPeriodId": "123e4567-e89b-12d3-a456-426614174001",
    "unitOfferingId": "123e4567-e89b-12d3-a456-426614174000",
    "durationMinutes": 180
  },
  "message": "Exam created successfully"
}