GET /api/v1/student/{studentId}/exams/{examId}/questions

Retrieves exam questions with strict access control. Only available when exam is RELEASED (within timeframe) or COMPLETED.

Path parameters

  • studentId string Required

    Unique identifier of the student

  • examId string Required

    Unique identifier of the exam

Responses

  • 200 application/json

    Exam questions retrieved successfully

  • 400

    Cannot access exam questions (wrong status, outside timeframe, not enrolled)

  • 404

    Student or exam not found

GET /api/v1/student/{studentId}/exams/{examId}/questions
curl \
 --request GET 'http://localhost:3500/api/v1/student/uuid-string/exams/uuid-string/questions'
Response examples (200)
{
  "exam": {
    "id": "uuid",
    "title": "Final Exam",
    "status": "RELEASED",
    "dueDate": "2025-12-01T11:00:00.000Z",
    "unitCode": "CS101",
    "questions": [
      {
        "id": "uuid",
        "type": "ESSAY",
        "options": [],
        "maxScore": 20,
        "question": "Explain the concept of object-oriented programming"
      }
    ],
    "unitTitle": "Introduction to Programming",
    "maxAttempts": 1,
    "releaseDate": "2025-12-01T08:00:00.000Z",
    "attemptsUsed": 0,
    "durationMinutes": 180
  },
  "message": "Exam questions retrieved successfully",
  "success": true,
  "canAttempt": true
}