Exam

Retrieves a list of all exams.

get

Retrieves a list of all exams.

Authorizations
Responses
200

OK

application/json
get
GET /api/Exam HTTP/1.1
Host: 
Authorization: Bearer JWT
Accept: */*
[
  {
    "examId": "123e4567-e89b-12d3-a456-426614174000",
    "title": "text",
    "description": "text",
    "totalPoints": 1,
    "problemSolvingPoints": 1,
    "writtenPoints": 1,
    "mcqPoints": 1,
    "durationMinutes": 1,
    "isPublished": true,
    "status": "text",
    "opensAt": "2025-08-11T02:45:32.163Z",
    "closesAt": "2025-08-11T02:45:32.163Z"
  }
]

Retrieves a specific exam along with all its associated questions.

get

Retrieves a specific exam along with all its associated questions.

Authorizations
Path parameters
examIdstring · uuidRequired

The unique identifier of the exam to retrieve.

Responses
200

OK

application/json
get
GET /api/Exam/{examId} HTTP/1.1
Host: 
Authorization: Bearer JWT
Accept: */*
{
  "exam": {
    "examId": "123e4567-e89b-12d3-a456-426614174000",
    "title": "text",
    "description": "text",
    "totalPoints": 1,
    "problemSolvingPoints": 1,
    "writtenPoints": 1,
    "mcqPoints": 1,
    "durationMinutes": 1,
    "isPublished": true,
    "status": "text",
    "opensAt": "2025-08-11T02:45:32.163Z",
    "closesAt": "2025-08-11T02:45:32.163Z"
  },
  "questions": {
    "problem": [
      {
        "questionId": "123e4567-e89b-12d3-a456-426614174000",
        "examId": "123e4567-e89b-12d3-a456-426614174000",
        "questionType": "ProblemSolving",
        "statementMarkdown": "text",
        "points": 1,
        "difficultyType": "Easy",
        "testCases": [
          {
            "testCaseId": "123e4567-e89b-12d3-a456-426614174000",
            "input": "text",
            "output": "text"
          }
        ]
      }
    ],
    "written": [
      {
        "questionId": "123e4567-e89b-12d3-a456-426614174000",
        "examId": "123e4567-e89b-12d3-a456-426614174000",
        "questionType": "ProblemSolving",
        "hasLongAnswer": true,
        "statementMarkdown": "text",
        "score": 1,
        "difficultyType": "Easy"
      }
    ],
    "mcq": [
      {
        "questionId": "123e4567-e89b-12d3-a456-426614174000",
        "examId": "123e4567-e89b-12d3-a456-426614174000",
        "questionType": "ProblemSolving",
        "statementMarkdown": "text",
        "score": 1,
        "difficultyType": "Easy",
        "mcqOption": {
          "option1": "text",
          "option2": "text",
          "option3": "text",
          "option4": "text",
          "isMultiSelect": true,
          "answerOptions": "text"
        }
      }
    ]
  }
}

Creates a new exam based on the provided details.

post

Creates a new exam based on the provided details.

Authorizations
Body
titlestring | nullableOptional
descriptionstring | nullableOptional
durationMinutesinteger · int32Optional
totalPointsnumber · doubleOptional
opensAtstring · date-timeOptional
closesAtstring · date-timeOptional
Responses
200

OK

application/json
post
POST /api/Exam/Create HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 148

{
  "title": "text",
  "description": "text",
  "durationMinutes": 1,
  "totalPoints": 1,
  "opensAt": "2025-08-11T02:45:32.163Z",
  "closesAt": "2025-08-11T02:45:32.163Z"
}
{
  "examId": "123e4567-e89b-12d3-a456-426614174000",
  "title": "text",
  "description": "text",
  "totalPoints": 1,
  "problemSolvingPoints": 1,
  "writtenPoints": 1,
  "mcqPoints": 1,
  "durationMinutes": 1,
  "isPublished": true,
  "status": "text",
  "opensAt": "2025-08-11T02:45:32.163Z",
  "closesAt": "2025-08-11T02:45:32.163Z"
}

Updates the details of an existing exam.

patch

Updates the details of an existing exam.

Authorizations
Body
examIdstring · uuidOptional
titlestring | nullableOptional
descriptionstring | nullableOptional
durationMinutesinteger · int32 | nullableOptional
totalPointsnumber · double | nullableOptional
opensAtstring · date-time | nullableOptional
closesAtstring · date-time | nullableOptional
Responses
200

OK

application/json
patch
PATCH /api/Exam/Update HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 196

{
  "examId": "123e4567-e89b-12d3-a456-426614174000",
  "title": "text",
  "description": "text",
  "durationMinutes": 1,
  "totalPoints": 1,
  "opensAt": "2025-08-11T02:45:32.163Z",
  "closesAt": "2025-08-11T02:45:32.163Z"
}
{
  "examId": "123e4567-e89b-12d3-a456-426614174000",
  "title": "text",
  "description": "text",
  "totalPoints": 1,
  "problemSolvingPoints": 1,
  "writtenPoints": 1,
  "mcqPoints": 1,
  "durationMinutes": 1,
  "isPublished": true,
  "status": "text",
  "opensAt": "2025-08-11T02:45:32.163Z",
  "closesAt": "2025-08-11T02:45:32.163Z"
}

Publishes an exam, making it available to candidates.

post

Publishes an exam, making it available to candidates.

Authorizations
Query parameters
examIdstring · uuidOptional

The unique identifier of the exam to publish.

Responses
200

OK

post
POST /api/Exam/Publish HTTP/1.1
Host: 
Authorization: Bearer JWT
Accept: */*

No content

Invites a list of candidates to participate in a specific exam.

post

Invites a list of candidates to participate in a specific exam.

Authorizations
Body
examIdstring · uuidOptional
emailsstring[] | nullableOptional
Responses
200

OK

post
POST /api/Exam/Invite/Candidates HTTP/1.1
Host: 
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 67

{
  "examId": "123e4567-e89b-12d3-a456-426614174000",
  "emails": [
    "text"
  ]
}

No content

Deletes a specific exam.

delete

Deletes a specific exam.

Authorizations
Path parameters
examIdstring · uuidRequired

The unique identifier of the exam to delete.

Responses
200

OK

delete
DELETE /api/Exam/Delete/{examId} HTTP/1.1
Host: 
Authorization: Bearer JWT
Accept: */*

No content