openapi: 3.0.3 info: { title: Quiz API, version: 1.0.0 } servers: [ { url: https://your-domain.com/api/v1 } ] tags: [ { name: Quizzes } ] security: [ { bearerAuth: [] } ] paths: /quizzes: get: tags: [Quizzes] summary: List quizzes parameters: - in: query name: page schema: { type: integer, default: 1 } - in: query name: per_page schema: { type: integer, default: 20 } - in: query name: student_id schema: { type: integer } - in: query name: class_section_id schema: { type: integer } responses: "200": { description: Quizzes retrieved } post: tags: [Quizzes] summary: Create quiz row requestBody: required: true content: application/json: schema: type: object required: [student_id, class_section_id, quiz_index] properties: student_id: { type: integer } class_section_id: { type: integer } quiz_index: { type: integer } score: { type: number } comment: { type: string } responses: "201": { description: Quiz created } /quizzes/{id}: get: tags: [Quizzes] summary: Get quiz by ID parameters: - in: path name: id required: true schema: { type: integer } responses: "200": { description: Quiz } "404": { description: Not found } put: tags: [Quizzes] summary: Update quiz row parameters: - in: path name: id required: true schema: { type: integer } requestBody: required: true content: application/json: schema: type: object properties: score: { type: number } comment: { type: string } quiz_index: { type: integer } responses: "200": { description: Quiz updated } /quizzes/student/{id}: get: tags: [Quizzes] summary: Get quizzes by student parameters: - in: path name: id required: true schema: { type: integer } responses: "200": { description: Student quizzes list }