{"info":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"28806175","collectionId":"b77b715d-d4c3-4f8e-8dae-8453483440e3","publishedId":"2sBXVcnYoq","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-01-05T21:23:22.000Z"},"item":[{"name":"Exams","item":[{"name":"fetch exams","id":"8a8f7ab2-7f56-4265-991b-f22b6e68d252","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/exams/","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}},"urlObject":{"path":["api","exams",""],"host":[""],"query":[],"variable":[]}},"response":[{"id":"3ba108f2-ed40-4c08-be01-ab31065fec09","name":"fetch exams","originalRequest":{"method":"GET","header":[],"url":"//api/exams/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Mon, 05 Jan 2026 13:53:03 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.13.5"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept"},{"key":"Allow","value":"GET, HEAD, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"742"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"title\": \"Introduction to Computer Science\",\n        \"description\": \"A basic exam covering Python and CS concepts.\",\n        \"duration\": \"01:00:00\",\n        \"course\": \"CS101\",\n        \"metadata\": {\n            \"level\": \"beginner\"\n        },\n        \"questions\": [\n            {\n                \"id\": 1,\n                \"text\": \"Which data type is immutable in Python?\",\n                \"question_type\": \"MCQ\",\n                \"options\": [\n                    {\n                        \"id\": 1,\n                        \"text\": \"List\"\n                    },\n                    {\n                        \"id\": 2,\n                        \"text\": \"Dictionary\"\n                    },\n                    {\n                        \"id\": 3,\n                        \"text\": \"Tuple\"\n                    },\n                    {\n                        \"id\": 4,\n                        \"text\": \"Set\"\n                    }\n                ]\n            },\n            {\n                \"id\": 2,\n                \"text\": \"What is the output of 2 ** 3?\",\n                \"question_type\": \"MCQ\",\n                \"options\": [\n                    {\n                        \"id\": 5,\n                        \"text\": \"6\"\n                    },\n                    {\n                        \"id\": 6,\n                        \"text\": \"8\"\n                    },\n                    {\n                        \"id\": 7,\n                        \"text\": \"9\"\n                    }\n                ]\n            },\n            {\n                \"id\": 3,\n                \"text\": \"Explain the difference between a list and a tuple.\",\n                \"question_type\": \"SHORT\",\n                \"options\": []\n            },\n            {\n                \"id\": 4,\n                \"text\": \"What does DRY stand for in software engineering?\",\n                \"question_type\": \"SHORT\",\n                \"options\": []\n            }\n        ]\n    }\n]"}],"_postman_id":"8a8f7ab2-7f56-4265-991b-f22b6e68d252"},{"name":"get exam","id":"39e55032-08d7-4622-8416-58c6f8003726","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/exams/1/","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}},"urlObject":{"path":["api","exams","1",""],"host":[""],"query":[],"variable":[]}},"response":[{"id":"9fb54719-1e79-4971-96b9-a2ca6b22ab6b","name":"get exam","originalRequest":{"method":"GET","header":[],"url":"//api/exams/1/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Mon, 05 Jan 2026 17:52:32 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.13.5"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept"},{"key":"Allow","value":"GET, HEAD, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"939"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"title\": \"Introduction to Computer Science\",\n    \"description\": \"A basic exam covering Python and CS concepts.\",\n    \"duration\": \"01:00:00\",\n    \"course\": \"CS101\",\n    \"metadata\": {\n        \"level\": \"beginner\"\n    },\n    \"grading_prompt\": \"Grade the student's answer based on the expected answer. \\nReturn ONLY a numeric score between 0.0 and 1.0. \\nExpected Answer: {expected}\\nStudent Answer: {actual}\\nScore 0.0-1.0:\",\n    \"questions\": [\n        {\n            \"id\": 1,\n            \"text\": \"Which data type is immutable in Python?\",\n            \"question_type\": \"MCQ\",\n            \"options\": [\n                {\n                    \"id\": 1,\n                    \"text\": \"List\"\n                },\n                {\n                    \"id\": 2,\n                    \"text\": \"Dictionary\"\n                },\n                {\n                    \"id\": 3,\n                    \"text\": \"Tuple\"\n                },\n                {\n                    \"id\": 4,\n                    \"text\": \"Set\"\n                }\n            ]\n        },\n        {\n            \"id\": 2,\n            \"text\": \"What is the output of 2 ** 3?\",\n            \"question_type\": \"MCQ\",\n            \"options\": [\n                {\n                    \"id\": 5,\n                    \"text\": \"6\"\n                },\n                {\n                    \"id\": 6,\n                    \"text\": \"8\"\n                },\n                {\n                    \"id\": 7,\n                    \"text\": \"9\"\n                }\n            ]\n        },\n        {\n            \"id\": 3,\n            \"text\": \"Explain the difference between a list and a tuple.\",\n            \"question_type\": \"SHORT\",\n            \"options\": []\n        },\n        {\n            \"id\": 4,\n            \"text\": \"What does DRY stand for in software engineering?\",\n            \"question_type\": \"SHORT\",\n            \"options\": []\n        }\n    ]\n}"}],"_postman_id":"39e55032-08d7-4622-8416-58c6f8003726"}],"id":"5bde3359-b0c6-47a0-971a-e0727f49ea68","_postman_id":"5bde3359-b0c6-47a0-971a-e0727f49ea68","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}}},{"name":"Submissions","item":[{"name":"submit exam","id":"ce2ae652-92ef-4096-9152-1bc6b9094ddb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"exam\": 1,\n  \"answers\": [\n    {\n      \"question\": 1,\n      \"selected_option\": 1\n    },\n    {\n      \"question\": 2,\n      \"selected_option\": 6\n    },\n    {\n      \"question\": 3,\n      \"short_answer_text\": \"list is mutable and defined by square brackets, and tuple is immutable and defined by parentheses\"\n    },\n    {\n      \"question\": 4,\n      \"short_answer_text\": \"don't repeat yourself\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"/api/submissions/","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}},"urlObject":{"path":["api","submissions",""],"host":[""],"query":[],"variable":[]}},"response":[{"id":"2c3fd515-6e97-47f9-b33d-c363eff278bb","name":"submit exam","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"exam\": 1,\n  \"answers\": [\n    {\n      \"question\": 1,\n      \"selected_option\": 1\n    },\n    {\n      \"question\": 2,\n      \"selected_option\": 6\n    },\n    {\n      \"question\": 3,\n      \"short_answer_text\": \"list is mutable and defined by square brackets, and tuple is immutable and defined by parentheses\"\n    },\n    {\n      \"question\": 4,\n      \"short_answer_text\": \"don't repeat yourself\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"/api/submissions/"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Mon, 05 Jan 2026 17:19:53 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.13.5"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept"},{"key":"Allow","value":"GET, POST, HEAD, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"455"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 5,\n    \"exam\": 1,\n    \"grade\": \"75.00\",\n    \"completed_at\": \"2026-01-05T18:06:19.852245+01:00\",\n    \"answers\": [\n        {\n            \"question\": 1,\n            \"selected_option\": 2,\n            \"short_answer_text\": null\n        },\n        {\n            \"question\": 2,\n            \"selected_option\": 6,\n            \"short_answer_text\": null\n        },\n        {\n            \"question\": 3,\n            \"selected_option\": null,\n            \"short_answer_text\": \"list is mutable and defined by square brackets, and tuple is immutable and defined by parentheses\"\n        },\n        {\n            \"question\": 4,\n            \"selected_option\": null,\n            \"short_answer_text\": \"don't repeat yourself\"\n        }\n    ]\n}"}],"_postman_id":"ce2ae652-92ef-4096-9152-1bc6b9094ddb"},{"name":"get submission","id":"1e34fc4e-b34c-4783-97b4-2cf0358e748f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/submissions/5","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}},"urlObject":{"path":["api","submissions","5"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"b6252b47-e899-4d6b-af7b-4ee4cbcd52f1","name":"get submission","originalRequest":{"method":"GET","header":[],"url":"/api/submissions/5"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Mon, 05 Jan 2026 21:20:46 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.13.5"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept"},{"key":"Allow","value":"GET, HEAD, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"974"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 5,\n    \"exam\": 1,\n    \"exam_title\": \"Introduction to Computer Science\",\n    \"student\": \"admin\",\n    \"grade\": \"75.00\",\n    \"is_completed\": true,\n    \"started_at\": \"2026-01-05T21:14:37+01:00\",\n    \"submitted_at\": \"2026-01-05T17:05:00.247233Z\",\n    \"updated_at\": \"2026-01-05T22:17:03.193098+01:00\",\n    \"completed_at\": \"2026-01-05T21:07:39.430556+01:00\",\n    \"answers\": [\n        {\n            \"question\": 1,\n            \"question_text\": \"Which data type is immutable in Python?\",\n            \"selected_option\": 1,\n            \"selected_option_text\": \"List\",\n            \"short_answer_text\": null\n        },\n        {\n            \"question\": 2,\n            \"question_text\": \"What is the output of 2 ** 3?\",\n            \"selected_option\": 6,\n            \"selected_option_text\": \"8\",\n            \"short_answer_text\": null\n        },\n        {\n            \"question\": 3,\n            \"question_text\": \"Explain the difference between a list and a tuple.\",\n            \"selected_option\": null,\n            \"short_answer_text\": \"list is mutable and defined by square brackets, and tuple is immutable and defined by parentheses\"\n        },\n        {\n            \"question\": 4,\n            \"question_text\": \"What does DRY stand for in software engineering?\",\n            \"selected_option\": null,\n            \"short_answer_text\": \"don't repeat yourself\"\n        }\n    ]\n}"}],"_postman_id":"1e34fc4e-b34c-4783-97b4-2cf0358e748f"},{"name":"fetch submissions","id":"1c8f081d-0223-4a1a-8fa5-145228247b70","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"/api/submissions/","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}},"urlObject":{"path":["api","submissions",""],"host":[""],"query":[],"variable":[]}},"response":[{"id":"9c3b8d6c-a283-4f22-ae31-65cf4c6cc018","name":"fetch submissions","originalRequest":{"method":"GET","header":[],"url":"/api/submissions/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Mon, 05 Jan 2026 21:20:57 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.13.5"},{"key":"Content-Type","value":"application/json"},{"key":"Vary","value":"Accept"},{"key":"Allow","value":"GET, POST, HEAD, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"976"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 5,\n        \"exam\": 1,\n        \"exam_title\": \"Introduction to Computer Science\",\n        \"student\": \"admin\",\n        \"grade\": \"75.00\",\n        \"is_completed\": true,\n        \"started_at\": \"2026-01-05T21:14:37+01:00\",\n        \"submitted_at\": \"2026-01-05T17:05:00.247233Z\",\n        \"updated_at\": \"2026-01-05T22:17:03.193098+01:00\",\n        \"completed_at\": \"2026-01-05T21:07:39.430556+01:00\",\n        \"answers\": [\n            {\n                \"question\": 1,\n                \"question_text\": \"Which data type is immutable in Python?\",\n                \"selected_option\": 1,\n                \"selected_option_text\": \"List\",\n                \"short_answer_text\": null\n            },\n            {\n                \"question\": 2,\n                \"question_text\": \"What is the output of 2 ** 3?\",\n                \"selected_option\": 6,\n                \"selected_option_text\": \"8\",\n                \"short_answer_text\": null\n            },\n            {\n                \"question\": 3,\n                \"question_text\": \"Explain the difference between a list and a tuple.\",\n                \"selected_option\": null,\n                \"short_answer_text\": \"list is mutable and defined by square brackets, and tuple is immutable and defined by parentheses\"\n            },\n            {\n                \"question\": 4,\n                \"question_text\": \"What does DRY stand for in software engineering?\",\n                \"selected_option\": null,\n                \"short_answer_text\": \"don't repeat yourself\"\n            }\n        ]\n    }\n]"}],"_postman_id":"1c8f081d-0223-4a1a-8fa5-145228247b70"}],"id":"ef9b782e-3bbd-4967-99ac-9ba715e25dbd","_postman_id":"ef9b782e-3bbd-4967-99ac-9ba715e25dbd","description":"","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]},"isInherited":true,"source":{"_postman_id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","id":"b77b715d-d4c3-4f8e-8dae-8453483440e3","name":"assessment grading engine","type":"collection"}}},{"name":"Auth","item":[{"name":"get-token","id":"36adda42-4aa8-490f-ba9b-c7d26e44dac2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"username\": \"admin\",\n  \"password\": \"Admin@123\"\n}","options":{"raw":{"language":"json"}}},"url":"/api/token-auth/","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"a1c5ab75-7cff-4053-a97b-cae5c4c0787a","id":"a1c5ab75-7cff-4053-a97b-cae5c4c0787a","name":"Auth","type":"folder"}},"urlObject":{"path":["api","token-auth",""],"host":[""],"query":[],"variable":[]}},"response":[{"id":"1ec0d0e2-44ad-4b74-a16f-815403d5d59d","name":"get-token","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n  \"username\": \"admin\",\n  \"password\": \"Password@1\"\n}","options":{"raw":{"language":"json"}}},"url":"/api/token-auth/"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Mon, 05 Jan 2026 21:15:41 GMT"},{"key":"Server","value":"WSGIServer/0.2 CPython/3.13.5"},{"key":"Content-Type","value":"application/json"},{"key":"Allow","value":"POST, OPTIONS"},{"key":"X-Frame-Options","value":"DENY"},{"key":"Content-Length","value":"52"},{"key":"Vary","value":"Cookie"},{"key":"X-Content-Type-Options","value":"nosniff"},{"key":"Referrer-Policy","value":"same-origin"},{"key":"Cross-Origin-Opener-Policy","value":"same-origin"}],"cookie":[],"responseTime":null,"body":"{\n    \"token\": \"60473498fe4dc9801019de3dc97c24d1c247f3c9\"\n}"}],"_postman_id":"36adda42-4aa8-490f-ba9b-c7d26e44dac2"}],"id":"a1c5ab75-7cff-4053-a97b-cae5c4c0787a","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"83b84398-1fbf-4bc9-961b-f897a93656c5","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"bd4078ce-1ae1-4a7c-ba83-b3d6c17747c9","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"_postman_id":"a1c5ab75-7cff-4053-a97b-cae5c4c0787a","description":""}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":""}]}},"event":[{"listen":"prerequest","script":{"id":"eef02c34-d21a-4e22-8b75-2ef548567e2e","type":"text/javascript","packages":{},"requests":{},"exec":[""]}},{"listen":"test","script":{"id":"090a64bc-57ce-4d28-9e2a-26fb78ed12e8","type":"text/javascript","packages":{},"requests":{},"exec":[""]}}],"variable":[{"key":"authToken","value":""},{"key":"baseUrl","value":""}]}