1091 lines
28 KiB
YAML
1091 lines
28 KiB
YAML
openapi: 3.0.4
|
|
info:
|
|
title: Quiz Maker API
|
|
description: API documentation for Quiz App
|
|
version: 1.0.0
|
|
|
|
servers:
|
|
- url: http://127.0.0.1:5000/api
|
|
description: Local Server
|
|
- url: http://api.example.com/api
|
|
description: Production Server
|
|
|
|
tags:
|
|
- name: Auth
|
|
description: Authentication endpoints
|
|
- name: User
|
|
description: User data endpoints
|
|
- name: Quiz
|
|
description: Quiz endpoints
|
|
- name: History
|
|
description: Quiz history endpoints
|
|
- name: Subject
|
|
description: Subject management endpoints
|
|
- name: Session
|
|
description: Session management endpoints
|
|
|
|
paths:
|
|
/login:
|
|
post:
|
|
summary: Login
|
|
tags: [Auth]
|
|
requestBody:
|
|
$ref: "#/components/requestBodies/LoginRequest"
|
|
responses:
|
|
"200":
|
|
$ref: "#/components/responses/AuthTokenResponse"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequestLogin"
|
|
|
|
/login/google:
|
|
post:
|
|
summary: Login with Google
|
|
tags: [Auth]
|
|
requestBody:
|
|
$ref: "#/components/requestBodies/GoogleLoginRequest"
|
|
responses:
|
|
"200":
|
|
$ref: "#/components/responses/AuthTokenResponse"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequestGoogleLogin"
|
|
|
|
/logout:
|
|
post:
|
|
summary: Logout
|
|
tags: [Auth]
|
|
responses:
|
|
"200":
|
|
$ref: "#/components/responses/LogoutSuccess"
|
|
|
|
/register:
|
|
post:
|
|
summary: Register
|
|
tags: [User]
|
|
requestBody:
|
|
$ref: "#/components/requestBodies/RegisterRequest"
|
|
responses:
|
|
"200":
|
|
$ref: "#/components/responses/UserCreated"
|
|
"409":
|
|
$ref: "#/components/responses/UserExists"
|
|
|
|
/user:
|
|
get:
|
|
summary: Get User
|
|
tags: [User]
|
|
responses:
|
|
"200":
|
|
$ref: "#/components/responses/UserData"
|
|
|
|
put:
|
|
summary: Update User
|
|
tags: [User]
|
|
requestBody:
|
|
$ref: "#/components/requestBodies/UpdateUserRequest"
|
|
responses:
|
|
"200":
|
|
$ref: "#/components/responses/UserUpdated"
|
|
|
|
/quiz:
|
|
post:
|
|
summary: Create a new quiz
|
|
tags: [Quiz]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/QuizCreateRequest"
|
|
responses:
|
|
"201":
|
|
description: Quiz created successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: Quiz created successfully
|
|
quiz_id:
|
|
type: string
|
|
example: "60f6c2d2e1f1c4567a123abc"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
|
|
/quiz/{id}:
|
|
get:
|
|
summary: Get quiz by ID
|
|
tags: [Quiz]
|
|
parameters:
|
|
- name: id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 68283dc9806020760d14e963
|
|
responses:
|
|
"200":
|
|
description: Quiz found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: Quiz Found
|
|
data:
|
|
$ref: "#/components/schemas/QuizDetails"
|
|
meta:
|
|
type: object
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
/quiz/user/{user_id}:
|
|
get:
|
|
summary: Get quizzes by user ID
|
|
description: Returns a list of quizzes created by a specific user
|
|
tags: [Quiz]
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
- name: page
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
example: 1
|
|
responses:
|
|
"200":
|
|
description: List of quizzes
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: Quiz list retrieved successfully
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/QuizDetails"
|
|
meta:
|
|
$ref: "#/components/schemas/PaginationMeta"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
/quiz/recomendation:
|
|
get:
|
|
summary: Get recommended quizzes
|
|
description: Returns a list of recommended quizzes for the user
|
|
tags: [Quiz]
|
|
parameters:
|
|
- $ref: "#/components/parameters/PageParam"
|
|
- $ref: "#/components/parameters/LimitParam"
|
|
responses:
|
|
"200":
|
|
description: Successfully retrieved recommendation quiz list
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: success retrieve recommendation quiz
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/RecommendedQuiz"
|
|
|
|
/quiz/search:
|
|
get:
|
|
summary: Search quizzes by keyword
|
|
description: Returns a list of quizzes matching the search keyword
|
|
tags: [Quiz]
|
|
parameters:
|
|
- name: keyword
|
|
in: query
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: Sejarah
|
|
- $ref: "#/components/parameters/PageParam"
|
|
- $ref: "#/components/parameters/LimitParam"
|
|
responses:
|
|
"200":
|
|
description: Search result
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: success
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/RecommendedQuiz"
|
|
meta:
|
|
$ref: "#/components/schemas/SearchMeta"
|
|
|
|
/quiz/ai:
|
|
post:
|
|
summary: Generate labeling quiz from passage
|
|
description: Generate quiz-style labeled data from a given historical passage
|
|
tags: [Quiz]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
sentence:
|
|
type: string
|
|
example: >
|
|
Ratu Sima adalah penguasa di Kerajaan Kalingga. Ia digambarkan sebagai seorang pemimpin wanita yang tegas dan taat terhadap peraturan...
|
|
responses:
|
|
"200":
|
|
description: Successfully labeled the quiz data
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: succes labeling
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/LabeledQuestion"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
|
|
/quiz/answer:
|
|
post:
|
|
summary: Submit quiz answers
|
|
description: Submit answers for a specific quiz session
|
|
tags: [Quiz]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/QuizAnswerSubmission"
|
|
responses:
|
|
"200":
|
|
description: Answers submitted successfully
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SuccessResponse"
|
|
"400":
|
|
$ref: "#/components/responses/BadRequest"
|
|
|
|
/quiz/answer/session:
|
|
post:
|
|
summary: Get submitted quiz answers by session
|
|
description: Retrieve user's quiz answers using session ID and user ID
|
|
tags: [Quiz]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
session_id:
|
|
type: string
|
|
example: 682a26b3bedac6c20a215452
|
|
user_id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
responses:
|
|
"200":
|
|
description: Successfully retrieved the answer
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: Successfully retrieved the answer
|
|
data:
|
|
$ref: "#/components/schemas/UserAnswerSession"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
/history/{user_id}:
|
|
get:
|
|
summary: Get quiz answer history by user
|
|
description: Retrieve a list of all quiz history for a given user
|
|
tags: [History]
|
|
parameters:
|
|
- name: user_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
responses:
|
|
"200":
|
|
description: Successfully retrieved history data
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: retrive history data
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/AnswerHistoryItem"
|
|
"404":
|
|
$ref: "#/components/responses/NotFound"
|
|
|
|
/history/detail/{answer_id}:
|
|
get:
|
|
summary: Get detail quiz history
|
|
description: Retrieve detailed quiz answer history for a specific answer ID
|
|
tags: [History]
|
|
parameters:
|
|
- name: answer_id
|
|
in: path
|
|
required: true
|
|
schema:
|
|
type: string
|
|
example: 6828bcddb5418bf21ab424b2
|
|
responses:
|
|
"200":
|
|
description: success retrive detail history data
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: success retrive detail history data
|
|
data:
|
|
$ref: "#/components/schemas/AnswerDetailData"
|
|
|
|
/subject:
|
|
get:
|
|
summary: Get all subjects
|
|
description: Retrieve a list of all available subjects
|
|
tags: [Subject]
|
|
responses:
|
|
"200":
|
|
description: success retrieve subject
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: success retrieve subject
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/Subject"
|
|
|
|
post:
|
|
summary: Create a new subject
|
|
tags: [Subject]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
example: Teknik Kimia
|
|
alias:
|
|
type: string
|
|
example: KIM
|
|
description:
|
|
type: string
|
|
example: basic Kimia
|
|
required:
|
|
- name
|
|
- alias
|
|
- description
|
|
responses:
|
|
"200":
|
|
description: Subject successfully created
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: Subject created
|
|
data:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: 683178ffac911e8a9d04bb0e
|
|
meta:
|
|
type: object
|
|
nullable: true
|
|
example: null
|
|
|
|
/session:
|
|
post:
|
|
summary: Create a new quiz session
|
|
tags: [Session]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
quiz_id:
|
|
type: string
|
|
example: 6815da9f37a1ce472ba72819
|
|
host_id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
limit_participan:
|
|
type: integer
|
|
example: 2
|
|
required:
|
|
- quiz_id
|
|
- host_id
|
|
- limit_participan
|
|
responses:
|
|
"200":
|
|
description: Successfully created a session
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: succes create room
|
|
data:
|
|
type: object
|
|
properties:
|
|
session_id:
|
|
type: string
|
|
example: 68317a6a48d97464ec3aaf1c
|
|
session_code:
|
|
type: string
|
|
example: AE5AFE
|
|
meta:
|
|
type: object
|
|
nullable: true
|
|
example: null
|
|
|
|
components:
|
|
parameters:
|
|
PageParam:
|
|
name: page
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
example: 1
|
|
|
|
LimitParam:
|
|
name: limit
|
|
in: query
|
|
required: false
|
|
schema:
|
|
type: integer
|
|
example: 4
|
|
|
|
requestBodies:
|
|
LoginRequest:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Login"
|
|
|
|
GoogleLoginRequest:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/GoogleLogin"
|
|
|
|
RegisterRequest:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Register"
|
|
|
|
UpdateUserRequest:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/UpdateUser"
|
|
|
|
responses:
|
|
AuthTokenResponse:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
token:
|
|
type: string
|
|
example: <jwt_token>
|
|
|
|
BadRequestLogin:
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorMessage"
|
|
example:
|
|
message: Invalid email or password
|
|
|
|
BadRequestGoogleLogin:
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorMessage"
|
|
example:
|
|
message: Invalid token
|
|
|
|
LogoutSuccess:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SuccessMessage"
|
|
example:
|
|
message: Logout successfully
|
|
|
|
UserCreated:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SuccessMessage"
|
|
example:
|
|
message: User created successfully
|
|
|
|
UserExists:
|
|
description: Conflict
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorMessage"
|
|
example:
|
|
message: Email already registered
|
|
|
|
UserData:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/User"
|
|
|
|
UserUpdated:
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/SuccessMessage"
|
|
example:
|
|
message: User updated successfully
|
|
|
|
BadRequest:
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorMessage"
|
|
|
|
NotFound:
|
|
description: Not Found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/ErrorMessage"
|
|
example:
|
|
message: Resource not found
|
|
|
|
schemas:
|
|
Login:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
example: user@example.com
|
|
password:
|
|
type: string
|
|
example: rahasia
|
|
|
|
GoogleLogin:
|
|
type: object
|
|
properties:
|
|
token_id:
|
|
type: string
|
|
example: <google_token>
|
|
|
|
Register:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
example: user@example.com
|
|
password:
|
|
type: string
|
|
example: secure_password
|
|
name:
|
|
type: string
|
|
example: John Doe
|
|
birth_date:
|
|
type: string
|
|
example: 1990-01-01
|
|
|
|
UpdateUser:
|
|
type: object
|
|
properties:
|
|
email:
|
|
type: string
|
|
example: newemail@example.com
|
|
|
|
User:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
name:
|
|
type: string
|
|
example: John Doe
|
|
email:
|
|
type: string
|
|
example: user@example.com
|
|
|
|
SuccessMessage:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
|
|
SuccessResponse:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: Operation completed successfully
|
|
|
|
ErrorMessage:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
example: An error occurred
|
|
|
|
PaginationMeta:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: integer
|
|
example: 25
|
|
page:
|
|
type: integer
|
|
example: 1
|
|
per_page:
|
|
type: integer
|
|
example: 10
|
|
|
|
QuizCreateRequest:
|
|
type: object
|
|
properties:
|
|
title:
|
|
type: string
|
|
example: Sejarah Indonesia
|
|
description:
|
|
type: string
|
|
example: Kuis tentang sejarah Indonesia
|
|
is_public:
|
|
type: boolean
|
|
example: true
|
|
author_id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
subject_id:
|
|
type: string
|
|
example: 68131eac43a09ed7dbb2cf44
|
|
questions:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/QuizQuestion"
|
|
|
|
QuizQuestion:
|
|
type: object
|
|
properties:
|
|
index:
|
|
type: integer
|
|
example: 1
|
|
question:
|
|
type: string
|
|
example: Siapakah ketua Wali Songo yang juga dikenal sebagai Sunan Gresik?
|
|
target_answer:
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
- type: integer
|
|
example: Maulana Malik Ibrahim
|
|
duration:
|
|
type: integer
|
|
example: 30
|
|
type:
|
|
type: string
|
|
enum: [fill_the_blank, true_false, option]
|
|
example: fill_the_blank
|
|
options:
|
|
type: array
|
|
items:
|
|
type: string
|
|
nullable: true
|
|
example: null
|
|
|
|
QuizDetails:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: 68283dc9806020760d14e963
|
|
author_id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
subject_id:
|
|
type: string
|
|
example: 68131eac43a09ed7dbb2cf44
|
|
subject_alias:
|
|
type: string
|
|
example: IPA
|
|
title:
|
|
type: string
|
|
example: Sejarah Indonesia - Proklamasi dan Kemerdekaan
|
|
description:
|
|
type: string
|
|
example: Kuis ini membahas peristiwa penting seputar proklamasi dan kemerdekaan Indonesia serta tokoh-tokoh terkait.
|
|
is_public:
|
|
type: boolean
|
|
example: true
|
|
date:
|
|
type: string
|
|
example: 17-May-2025
|
|
time:
|
|
type: string
|
|
example: 14:30
|
|
total_quiz:
|
|
type: integer
|
|
example: 10
|
|
limit_duration:
|
|
type: integer
|
|
example: 300
|
|
question_listings:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/QuizQuestion"
|
|
|
|
RecommendedQuiz:
|
|
type: object
|
|
properties:
|
|
quiz_id:
|
|
type: string
|
|
example: 68283dc9806020760d14e963
|
|
author_id:
|
|
type: string
|
|
example: 680e5a6d2f480bd75db17a09
|
|
author_name:
|
|
type: string
|
|
example: robbani
|
|
title:
|
|
type: string
|
|
example: Sejarah Indonesia - Proklamasi dan Kemerdekaan
|
|
description:
|
|
type: string
|
|
example: Kuis ini membahas peristiwa penting seputar proklamasi dan kemerdekaan Indonesia serta tokoh-tokoh terkait.
|
|
date:
|
|
type: string
|
|
example: 17-May-2025
|
|
total_quiz:
|
|
type: integer
|
|
example: 10
|
|
duration:
|
|
type: integer
|
|
example: 300
|
|
|
|
SearchMeta:
|
|
type: object
|
|
properties:
|
|
total_page:
|
|
type: integer
|
|
example: 3
|
|
current_page:
|
|
type: integer
|
|
example: 2
|
|
total_data:
|
|
type: integer
|
|
example: 4
|
|
total_all_data:
|
|
type: integer
|
|
example: 9
|
|
|
|
LabeledQuestion:
|
|
type: object
|
|
properties:
|
|
qustion:
|
|
type: string
|
|
example: kerajaan kalingga disebutkan di di sungai
|
|
answer:
|
|
type: string
|
|
example: true
|
|
|
|
AnswerHistoryItem:
|
|
type: object
|
|
properties:
|
|
quiz_id:
|
|
type: string
|
|
example: 68283dc9806020760d14e963
|
|
answer_id:
|
|
type: string
|
|
example: 6828bcddb5418bf21ab424b2
|
|
title:
|
|
type: string
|
|
example: Sejarah Indonesia - Proklamasi dan Kemerdekaan
|
|
description:
|
|
type: string
|
|
example: Kuis ini membahas peristiwa penting seputar proklamasi dan kemerdekaan Indonesia serta tokoh-tokoh terkait.
|
|
total_correct:
|
|
type: integer
|
|
example: 8
|
|
total_question:
|
|
type: integer
|
|
example: 10
|
|
date:
|
|
type: string
|
|
example: 2025-05-18 19:02:02
|
|
|
|
QuizAnswerSubmission:
|
|
type: object
|
|
properties:
|
|
session_id:
|
|
type: string
|
|
example: abc123-session-id
|
|
quiz_id:
|
|
type: string
|
|
example: 6815da9f37a1ce472ba72819
|
|
user_id:
|
|
type: string
|
|
example: 68163d981f2241b7d8210c21
|
|
answered_at:
|
|
type: string
|
|
format: date-time
|
|
example: 2025-04-25T10:15:00Z
|
|
answers:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/QuizAnswerItem"
|
|
|
|
QuizAnswerItem:
|
|
type: object
|
|
properties:
|
|
question_index:
|
|
type: integer
|
|
example: 1
|
|
answer:
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
- type: integer
|
|
example: Maulana Malik Ibrahim
|
|
is_correct:
|
|
type: boolean
|
|
example: true
|
|
time_spent:
|
|
type: number
|
|
format: float
|
|
example: 6.5
|
|
|
|
UserAnswerSession:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: 682a26e6bedac6c20a215453
|
|
session_id:
|
|
type: string
|
|
example: 682a26b3bedac6c20a215452
|
|
quiz_id:
|
|
type: string
|
|
example: 682a120f18339f4cc31318e4
|
|
user_id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
answered_at:
|
|
type: string
|
|
example: 2025-05-19 01:28:22
|
|
answers:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/AnswerDetail"
|
|
total_score:
|
|
type: integer
|
|
example: 100
|
|
total_correct:
|
|
type: integer
|
|
example: 1
|
|
|
|
AnswerDetail:
|
|
type: object
|
|
properties:
|
|
index:
|
|
type: integer
|
|
example: 1
|
|
question:
|
|
type: string
|
|
example: Siapakah ketua Wali Songo yang juga dikenal sebagai Sunan Gresik?
|
|
target_answer:
|
|
type: string
|
|
example: Maulana Malik Ibrahim
|
|
duration:
|
|
type: integer
|
|
example: 30
|
|
type:
|
|
type: string
|
|
enum: [fill_the_blank, true_false, option]
|
|
example: fill_the_blank
|
|
options:
|
|
type: array
|
|
items:
|
|
type: string
|
|
nullable: true
|
|
example: null
|
|
answer:
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
- type: integer
|
|
example: Maulana Malik Ibrahim
|
|
is_correct:
|
|
type: boolean
|
|
example: true
|
|
time_spent:
|
|
type: number
|
|
format: float
|
|
example: 8.0
|
|
|
|
AnswerDetailData:
|
|
type: object
|
|
properties:
|
|
answer_id:
|
|
type: string
|
|
example: 6828bcddb5418bf21ab424b2
|
|
quiz_id:
|
|
type: string
|
|
example: 68283dc9806020760d14e963
|
|
title:
|
|
type: string
|
|
example: Sejarah Indonesia - Proklamasi dan Kemerdekaan
|
|
description:
|
|
type: string
|
|
example: Kuis ini membahas peristiwa penting seputar proklamasi dan kemerdekaan Indonesia serta tokoh-tokoh terkait.
|
|
author_id:
|
|
type: string
|
|
example: 680f0e63180b5c19b3751d42
|
|
answered_at:
|
|
type: string
|
|
example: 17-May-2025
|
|
total_correct:
|
|
type: integer
|
|
example: 8
|
|
total_score:
|
|
type: integer
|
|
example: 80
|
|
total_solve_time:
|
|
type: number
|
|
example: 240.5
|
|
question_listings:
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/AnsweredQuestion"
|
|
|
|
AnsweredQuestion:
|
|
type: object
|
|
properties:
|
|
index:
|
|
type: integer
|
|
example: 1
|
|
question:
|
|
type: string
|
|
example: Siapakah ketua Wali Songo yang juga dikenal sebagai Sunan Gresik?
|
|
type:
|
|
type: string
|
|
enum: [fill_the_blank, true_false, option]
|
|
example: fill_the_blank
|
|
target_answer:
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
- type: integer
|
|
example: Maulana Malik Ibrahim
|
|
user_answer:
|
|
oneOf:
|
|
- type: string
|
|
- type: boolean
|
|
- type: integer
|
|
example: Maulana Malik Ibrahim
|
|
is_correct:
|
|
type: boolean
|
|
example: true
|
|
time_spent:
|
|
type: number
|
|
example: 25.3
|
|
options:
|
|
type: array
|
|
items:
|
|
type: string
|
|
nullable: true
|
|
example: null
|
|
|
|
Subject:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
example: 68131eac43a09ed7dbb2cf44
|
|
name:
|
|
type: string
|
|
example: Ilmu Pengetahuan Alam
|
|
alias:
|
|
type: string
|
|
example: IPA
|
|
description:
|
|
type: string
|
|
example: Pelajaran tentang sains dan alam
|