quzuu-api-test / Quzuu_API_Collection.postman_collection.json
lifedebugger's picture
Deploy files from GitHub repository
ad01899
{
"info": {
"_postman_id": "a1fb4d7f-5cd2-4460-9e17-d9135a00a524",
"name": "Quzuu API Collection",
"description": "Complete API collection for Quzuu Platform with all endpoints organized by modules.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
"_exporter_id": "43539486",
"_collection_link": "https://go.postman.co/collection/43539486-a1fb4d7f-5cd2-4460-9e17-d9135a00a524?source=collection_link"
},
"item": [
{
"name": "Health Check",
"item": [
{
"name": "Health Check",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/health-check",
"host": [
"{{base_url}}"
],
"path": [
"health-check"
]
},
"description": "Check if the service is up and running"
},
"response": []
},
{
"name": "Welcome",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/",
"host": [
"{{base_url}}"
],
"path": [
""
]
},
"description": "Welcome endpoint"
},
"response": []
}
]
},
{
"name": "Authentication",
"item": [
{
"name": "External Login",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"oauth_id\": \"google_user_id_here\",\n \"oauth_provider\": \"google\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/authentication/external-login",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"authentication",
"external-login"
]
},
"description": "Login using external provider (Google, etc)"
},
"response": []
},
{
"name": "Login",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email_or_username\": \"user@example.com\",\n \"password\": \"password123\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/authentication/login",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"authentication",
"login"
]
},
"description": "Sign in with email and password"
},
"response": []
},
{
"name": "Register",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"New User\",\n \"email\": \"newuser@example.com\",\n \"username\": \"newuser\",\n \"password\": \"password123\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/authentication/register",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"authentication",
"register"
]
},
"description": "Register a new user account"
},
"response": []
},
{
"name": "Change Password",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"old_password\": \"old_password123\",\n \"new_password\": \"new_password123\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/authentication/change-password",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"authentication",
"change-password"
]
},
"description": "Change user password (requires authentication)"
},
"response": []
}
]
},
{
"name": "Forgot Password",
"item": [
{
"name": "Request Password Reset",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/authentication/forgot-password/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"authentication",
"forgot-password",
""
]
},
"description": "Request password reset for an account"
},
"response": []
}
]
},
{
"name": "Account Details",
"item": [
{
"name": "Get Profile",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/account/me",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"account",
"me"
]
},
"description": "Get authenticated user's profile details"
},
"response": []
},
{
"name": "Update Profile",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"full_name\": \"Updated Name\",\n \"school_name\": \"School Name\",\n \"province\": \"Province Name\",\n \"city\": \"City Name\",\n \"avatar\": \"https://example.com/avatar.jpg\",\n \"phone_number\": \"08123456789\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/account/me",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"account",
"me"
]
},
"description": "Update authenticated user's profile details"
},
"response": []
}
]
},
{
"name": "Email Verification",
"item": [
{
"name": "Create Verification",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/email/create-verification",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"email",
"create-verification"
]
},
"description": "Create email verification request"
},
"response": []
},
{
"name": "Verify Email",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\",\n \"token\": 123456\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/email/verify",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"email",
"verify"
]
},
"description": "Verify email with verification code"
},
"response": []
}
]
},
{
"name": "Events",
"item": [
{
"name": "List Events",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/events/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
""
]
},
"description": "List all events"
},
"response": []
},
{
"name": "Get Event Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug"
],
"variable": [
{
"key": "event_slug",
"value": ""
}
]
},
"description": "Get event detail by slug"
},
"response": []
},
{
"name": "Register to Event",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"event_code\": \"event_code\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/events/register-event",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
"register-event"
]
},
"description": "Register user to an event"
},
"response": []
}
]
},
{
"name": "Event Exams",
"item": [
{
"name": "List Event Exams",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug/exam",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug",
"exam"
],
"variable": [
{
"key": "event_slug",
"value": ""
}
]
},
"description": "List exams in an event"
},
"response": []
},
{
"name": "Start Exam Attempt",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug/exam/:exam_slug/attempt",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug",
"exam",
":exam_slug",
"attempt"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
}
]
},
"description": "Start exam attempt"
},
"response": []
},
{
"name": "Answer Question",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"question_id\": \"00000000-0000-0000-0000-000000000000\",\n \"answer\": [\"option_id_or_text\"]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug/exam/:attempt_id/answer_question",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug",
"exam",
":attempt_id",
"answer_question"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "attempt_id",
"value": ""
}
]
},
"description": "Submit answer to a question during exam"
},
"response": []
},
{
"name": "Submit Exam",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{}"
},
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug/exam/:attempt_id/submit",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug",
"exam",
":attempt_id",
"submit"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "attempt_id",
"value": ""
}
]
},
"description": "Submit completed exam"
},
"response": []
},
{
"name": "Event Scoreboard",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug/scoreboard?limit=10&page=1&search=&sortBy=total_score&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug",
"scoreboard"
],
"query": [
{
"key": "limit",
"value": "10",
"description": "Number of items per page (max 100)"
},
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "search",
"value": "",
"description": "Search keyword"
},
{
"key": "sortBy",
"value": "total_score",
"description": "Sort field: 'total_score' (default), 'score', 'username', or 'full_name'"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort order: 'asc' or 'desc'"
},
{
"key": "order",
"value": "desc",
"description": "Alias for sort order (backward compatibility)",
"disabled": true
}
],
"variable": [
{
"key": "event_slug",
"value": ""
}
]
},
"description": "Retrieve a paginated scoreboard of participants ranked by total score across all exams in an event"
},
"response": []
},
{
"name": "Exam Scoreboard",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/events/:event_slug/:exam_slug/scoreboard?limit=10&page=1&search=&sortBy=score&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
":event_slug",
":exam_slug",
"scoreboard"
],
"query": [
{
"key": "limit",
"value": "10",
"description": "Number of items per page (max 100)"
},
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "search",
"value": "",
"description": "Search keyword"
},
{
"key": "sortBy",
"value": "score",
"description": "Sort field: 'score' (default), 'duration', 'username', or 'full_name'"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort order: 'asc' or 'desc'"
},
{
"key": "order",
"value": "desc",
"description": "Alias for sort order (backward compatibility)",
"disabled": true
}
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
}
]
},
"description": "Retrieve a paginated scoreboard of participants ranked by their performance in a specific exam within an event"
},
"response": []
}
]
},
{
"name": "Event Exam Proctoring",
"item": [
{
"name": "Create Proctoring Log",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"violation_score\": 1,\n \"violation_category\": \"tab_switch\",\n \"attachement\": \"https://example.com/screenshot.jpg\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/events/logs/:event_slug/exam/:exam_slug/proctoring",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"events",
"logs",
":event_slug",
"exam",
":exam_slug",
"proctoring"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
}
]
},
"description": "Create proctoring log entry during exam"
},
"response": []
}
]
},
{
"name": "Academy",
"item": [
{
"name": "Information",
"item": [
{
"name": "List Academies",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
""
]
},
"description": "List all academies available to user"
},
"response": []
},
{
"name": "Join Academy",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"code\": \"academy_code\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/academy/join",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
"join"
]
},
"description": "Join academy using academy code"
},
"response": []
},
{
"name": "Get Academy Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug"
],
"variable": [
{
"key": "academy_slug",
"value": ""
}
]
},
"description": "Get academy detail by slug"
},
"response": []
}
]
},
{
"name": "Materials",
"item": [
{
"name": "Get Academy Material",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/:material_slug",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
":material_slug"
],
"variable": [
{
"key": "academy_slug",
"value": ""
},
{
"key": "material_slug",
"value": ""
}
]
},
"description": "Get material details in an academy"
},
"response": []
}
]
},
{
"name": "Progress",
"item": [
{
"name": "Get Academy Content",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/:material_slug/:order",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
":material_slug",
":order"
],
"variable": [
{
"key": "academy_slug",
"value": ""
},
{
"key": "material_slug",
"value": ""
},
{
"key": "order",
"value": ""
}
]
},
"description": "Get specific content in academy material"
},
"response": []
},
{
"name": "Update Content Progress",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"progress\": 100\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/:material_slug/:order",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
":material_slug",
":order"
],
"variable": [
{
"key": "academy_slug",
"value": ""
},
{
"key": "material_slug",
"value": ""
},
{
"key": "order",
"value": ""
}
]
},
"description": "Update progress on academy content"
},
"response": []
}
]
}
]
},
{
"name": "Academy Exams",
"item": [
{
"name": "Exams",
"item": [
{
"name": "List Academy Exams",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/exam?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
"exam"
],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "limit",
"value": "10"
},
{
"key": "search",
"value": ""
},
{
"key": "sortBy",
"value": "created_at"
},
{
"key": "orderBy",
"value": "desc"
}
],
"variable": [
{
"key": "academy_slug",
"value": ""
}
]
},
"description": "List exams in an academy with pagination, search, and sorting"
},
"response": []
},
{
"name": "Start Exam Attempt",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/exam/:exam_slug/attempt",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
"exam",
":exam_slug",
"attempt"
],
"variable": [
{
"key": "academy_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
}
]
},
"description": "Start exam attempt in academy"
},
"response": []
},
{
"name": "Submit Exam",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{}"
},
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/exam/:attempt_id/submit",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
"exam",
":attempt_id",
"submit"
],
"variable": [
{
"key": "academy_slug",
"value": ""
},
{
"key": "attempt_id",
"value": ""
}
]
},
"description": "Submit completed academy exam"
},
"response": []
}
]
},
{
"name": "Contents",
"item": [
{
"name": "List Academy Contents",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/academy/:academy_slug/contents?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"academy",
":academy_slug",
"contents"
],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "limit",
"value": "10"
},
{
"key": "search",
"value": ""
},
{
"key": "sortBy",
"value": "created_at"
},
{
"key": "orderBy",
"value": "desc"
}
],
"variable": [
{
"key": "academy_slug",
"value": ""
}
]
}
},
"response": []
}
]
}
]
},
{
"name": "File Upload",
"item": [
{
"name": "Upload File",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "file",
"type": "file",
"value": ""
}
]
},
"url": {
"raw": "{{base_url}}/api/v1/files/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"files",
""
]
},
"description": "Upload a file"
},
"response": []
},
{
"name": "Get File",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/files/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"files",
":id"
],
"variable": [
{
"key": "id",
"value": ""
}
]
},
"description": "Get file by ID"
},
"response": []
}
]
},
{
"name": "Options & Regions",
"item": [
{
"name": "Create Options (Bulk)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"slug\": \"option_slug\",\n \"options\": [\n {\n \"name\": \"Option 1\",\n \"value\": \"value_1\"\n },\n {\n \"name\": \"Option 2\",\n \"value\": \"value_2\"\n }\n ]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/options/create",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"options",
"create"
]
},
"description": "Create options in bulk by slug"
},
"response": []
},
{
"name": "Get Options by Slug",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/options/list/:slug",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"options",
"list",
":slug"
],
"variable": [
{
"key": "slug",
"value": ""
}
]
},
"description": "Get options list by slug"
},
"response": []
},
{
"name": "List Provinces",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/options/region/provinces",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"options",
"region",
"provinces"
]
},
"description": "List all provinces"
},
"response": []
},
{
"name": "List Cities by Province",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/options/region/cities?province_id={{province_id}}",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"options",
"region",
"cities"
],
"query": [
{
"key": "province_id",
"value": "{{province_id}}"
}
]
},
"description": "List cities by province ID"
},
"response": []
},
{
"name": "Seed Provinces",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{}"
},
"url": {
"raw": "{{base_url}}/api/v1/options/region/seed-provinces",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"options",
"region",
"seed-provinces"
]
},
"description": "Seed provinces data (admin only)"
},
"response": []
},
{
"name": "Seed Cities",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{}"
},
"url": {
"raw": "{{base_url}}/api/v1/options/region/seed-cities",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"options",
"region",
"seed-cities"
]
},
"description": "Seed cities data (admin only)"
},
"response": []
}
]
},
{
"name": "Admin",
"item": [
{
"name": "Admin Statistics",
"item": [
{
"name": "Get Statistics Summary",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/summary",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"summary"
]
}
},
"response": []
},
{
"name": "Get Monthly Growth Statistics",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/monthly-growth?months=6",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"monthly-growth"
],
"query": [
{
"key": "months",
"value": "6"
}
]
}
},
"response": []
},
{
"name": "Event Statistics Overview",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/event",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"event"
]
}
},
"response": []
},
{
"name": "Event Statistics Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/event/:event_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"event",
":event_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
}
},
"response": []
},
{
"name": "Exam Statistics Overview",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/exam",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"exam"
]
}
},
"response": []
},
{
"name": "Exam Statistics Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/exam/:exam_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"exam",
":exam_id"
],
"variable": [
{
"key": "exam_id",
"value": "{{exam_id}}"
}
]
}
},
"response": []
},
{
"name": "Academy Statistics Overview",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/academy",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"academy"
]
}
},
"response": []
},
{
"name": "Academy Statistics Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/academy/:academy_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"academy",
":academy_id"
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
}
},
"response": []
},
{
"name": "ProblemSet Statistics Overview",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/problemset",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"problemset"
]
}
},
"response": []
},
{
"name": "ProblemSet Statistics Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/problemset/:problemset_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"problemset",
":problemset_id"
],
"variable": [
{
"key": "problemset_id",
"value": "{{problemset_id}}"
}
]
}
},
"response": []
},
{
"name": "Question Statistics Overview",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/question",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"question"
]
}
},
"response": []
},
{
"name": "Question Statistics Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/statistics/question/:question_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"statistics",
"question",
":question_id"
],
"variable": [
{
"key": "question_id",
"value": "{{question_id}}"
}
]
}
},
"response": []
}
]
},
{
"name": "Admin Event Management",
"item": [
{
"name": "List Events (Admin View)",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
""
],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "limit",
"value": "10"
},
{
"key": "search",
"value": ""
},
{
"key": "sortBy",
"value": "created_at"
},
{
"key": "order",
"value": "desc"
},
{
"key": "status",
"value": "",
"disabled": true
}
]
},
"description": "Admin view: list all events with participant_count and exam_count. Supports pagination and search."
},
"response": []
},
{
"name": "Create Event",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"National Olympiad 2026\",\n \"start_event\": \"2026-04-01T08:00:00Z\",\n \"end_event\": \"2026-04-02T17:00:00Z\",\n \"overview\": \"Annual national programming olympiad\",\n \"img_banner\": \"https://example.com/banner.jpg\",\n \"event_code\": \"NAT2026\",\n \"is_public\": true,\n \"price\": 100000\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/events/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
""
]
},
"description": "Create a new event."
},
"response": []
},
{
"name": "Update Event",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Updated Event Title\",\n \"overview\": \"Updated overview text\",\n \"is_public\": true,\n \"price\": 100000\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "Update an existing event by ID."
},
"response": []
},
{
"name": "Delete Event",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "Delete an event by ID."
},
"response": []
},
{
"name": "Participants - List",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/participants?page=1&limit=10&search=&sortBy=assigned_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"participants"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by username / full name"
},
{
"key": "sortBy",
"value": "assigned_at",
"description": "Sort field (assigned_at, username, full_name)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "List all participants (with account details) assigned to an event."
},
"response": []
},
{
"name": "Candidates - List",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/candidate?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"candidate"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by username / full name"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (username, full_name, created_at)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "List accounts that are not yet assigned to the event."
},
"response": []
},
{
"name": "Participants - Add (Manual Assign)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"user_id\": \"{{user_id}}\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/participants",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"participants"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "Manually assign a user to an event. Bypasses payment."
},
"response": []
},
{
"name": "Participants - Remove",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/participants/:user_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"participants",
":user_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
},
{
"key": "user_id",
"value": "{{user_id}}"
}
]
},
"description": "Unassign a user from an event."
},
"response": []
},
{
"name": "Exams - List Event Exams",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/exams?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"exams"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search term"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, created_at, duration)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "List all exams assigned to an event, with exam details."
},
"response": []
},
{
"name": "Exams - List Exam Candidates",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/exams/candidate?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"exams",
"candidate"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by exam title / slug"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, created_at, duration)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "List exams that are not yet assigned to the event."
},
"response": []
},
{
"name": "Exams - Remove Exam from Event",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/exams/:exam_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"exams",
":exam_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
},
{
"key": "exam_id",
"value": "{{exam_id}}"
}
]
},
"description": "Unassign an exam from an event."
},
"response": []
},
{
"name": "Results - List Exam Results",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/exams/:exam_id/results?page=1&limit=10&search=&sortBy=final_score&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"exams",
":exam_id",
"results"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by username / full name"
},
{
"key": "sortBy",
"value": "final_score",
"description": "Sort field (final_score, created_at, username, full_name)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
},
{
"key": "exam_id",
"value": "{{exam_id}}"
}
]
},
"description": "List all participant results for a specific exam within an event."
},
"response": []
},
{
"name": "Results - Edit Result",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"final_score\": 95.5\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/exams/:exam_id/results/:result_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"exams",
":exam_id",
"results",
":result_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
},
{
"key": "exam_id",
"value": "{{exam_id}}"
},
{
"key": "result_id",
"value": "{{result_id}}"
}
]
},
"description": "Edit the final score of a participant's exam result."
},
"response": []
},
{
"name": "Results - Delete Result",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/events/:event_id/exams/:exam_id/results/:result_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"events",
":event_id",
"exams",
":exam_id",
"results",
":result_id"
],
"variable": [
{
"key": "event_id",
"value": "{{event_id}}"
},
{
"key": "exam_id",
"value": "{{exam_id}}"
},
{
"key": "result_id",
"value": "{{result_id}}"
}
]
},
"description": "Delete a participant's exam result."
},
"response": []
}
]
},
{
"name": "Proctoring Management",
"item": [
{
"name": "List Proctoring Logs",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/proctoring/events/:event_slug/exam/:exam_slug/proctoring",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"proctoring",
"events",
":event_slug",
"exam",
":exam_slug",
"proctoring"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
}
]
},
"description": "List proctoring logs for an exam (admin)"
},
"response": []
},
{
"name": "Get Proctoring Log Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/proctoring/events/:event_slug/exam/:exam_slug/proctoring/:log_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"proctoring",
"events",
":event_slug",
"exam",
":exam_slug",
"proctoring",
":log_id"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
},
{
"key": "log_id",
"value": ""
}
]
},
"description": "Get proctoring log detail (admin)"
},
"response": []
},
{
"name": "Update Proctoring Log",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"status\": \"reviewed\",\n \"notes\": \"Proctoring notes\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/proctoring/events/:event_slug/exam/:exam_slug/proctoring/:log_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"proctoring",
"events",
":event_slug",
"exam",
":exam_slug",
"proctoring",
":log_id"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
},
{
"key": "log_id",
"value": ""
}
]
},
"description": "Update proctoring log (admin)"
},
"response": []
},
{
"name": "Delete Proctoring Log",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/proctoring/events/:event_slug/exam/:exam_slug/proctoring/:log_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"proctoring",
"events",
":event_slug",
"exam",
":exam_slug",
"proctoring",
":log_id"
],
"variable": [
{
"key": "event_slug",
"value": ""
},
{
"key": "exam_slug",
"value": ""
},
{
"key": "log_id",
"value": ""
}
]
},
"description": "Delete proctoring log (admin)"
},
"response": []
}
]
},
{
"name": "Admin Exam Management",
"item": [
{
"name": "List Exams",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams"
],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "limit",
"value": "10"
},
{
"key": "search",
"value": ""
},
{
"key": "sortBy",
"value": "created_at"
},
{
"key": "order",
"value": "desc"
}
]
},
"description": "Paginated list of all exams with event_count and academy_count. Sort by: title, slug, created_at, duration, event_count, academy_count."
},
"response": []
},
{
"name": "Create Exam",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"slug\": \"exam-slug\",\n \"title\": \"Exam Title\",\n \"description\": \"Exam description\",\n \"duration\": 7200000000000,\n \"randomize\": 0,\n \"allow_retake\": false,\n \"allow_review\": true,\n \"enable_timer\": true,\n \"enable_webcam\": false,\n \"enable_vad\": false,\n \"enable_tab_block\": false,\n \"enable_full_screen\": false,\n \"enable_eye_tracking\": false,\n \"disable_copy_paste\": false,\n \"enable_exam_browser\": false\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/exams",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams"
]
},
"description": "Create a new exam with configuration and proctoring settings."
},
"response": []
},
{
"name": "Get Exam Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
}
]
},
"description": "Retrieve full exam details including configuration and proctoring settings."
},
"response": []
},
{
"name": "Update Exam",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"slug\": \"updated-exam-slug\",\n \"title\": \"Updated Exam Title\",\n \"description\": \"Updated description\",\n \"duration\": 7200000000000,\n \"randomize\": 0,\n \"allow_retake\": false,\n \"allow_review\": true,\n \"enable_timer\": true,\n \"enable_webcam\": false,\n \"enable_vad\": false,\n \"enable_tab_block\": false,\n \"enable_full_screen\": false,\n \"enable_eye_tracking\": false,\n \"disable_copy_paste\": false,\n \"enable_exam_browser\": false\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
}
]
},
"description": "Update an existing exam including configuration and proctoring settings."
},
"response": []
},
{
"name": "Delete Exam",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
}
]
},
"description": "Soft delete an exam by ID."
},
"response": []
},
{
"name": "Events - List Events by Exam",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id/events?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id",
"events"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search term"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, event_code, start_event, end_event, created_at)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
}
]
},
"description": "List all events that have this exam assigned."
},
"response": []
},
{
"name": "Events - Assign Exam to Event",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id/events/:event_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id",
"events",
":event_id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
},
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "Assign an exam to an event. Returns DUPLICATE_DATA if already assigned."
},
"response": []
},
{
"name": "Events - Unassign Exam from Event",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id/events/:event_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id",
"events",
":event_id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
},
{
"key": "event_id",
"value": "{{event_id}}"
}
]
},
"description": "Remove an exam assignment from an event. Returns DATA_NOT_FOUND if not assigned."
},
"response": []
},
{
"name": "Academies - List Academies by Exam",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id/academies?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id",
"academies"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search term"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, code, created_at)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
}
]
},
"description": "List all academies that have this exam assigned."
},
"response": []
},
{
"name": "Academies - Assign Exam to Academy",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id/academies/:academy_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id",
"academies",
":academy_id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
},
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "Assign an exam to an academy. Returns DUPLICATE_DATA if already assigned."
},
"response": []
},
{
"name": "Academies - Unassign Exam from Academy",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:id/academies/:academy_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":id",
"academies",
":academy_id"
],
"variable": [
{
"key": "id",
"value": "{{exam_id}}"
},
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "Remove an exam assignment from an academy. Returns DATA_NOT_FOUND if not assigned."
},
"response": []
},
{
"name": "Problemsets - List Assigned Problemsets",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:exam_id/problemsets?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":exam_id",
"problemsets"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search term"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, created_at)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "exam_id",
"value": "{{exam_id}}"
}
]
},
"description": "List assigned problemsets for an exam."
},
"response": []
},
{
"name": "Problemsets - List Candidate Problemsets",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:exam_id/problemsets/candidate?page=1&limit=10&search=&sortBy=created_at&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":exam_id",
"problemsets",
"candidate"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / description"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, created_at)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "exam_id",
"value": "{{exam_id}}"
}
]
},
"description": "List problemsets that are not yet assigned to the selected exam."
},
"response": []
},
{
"name": "Problemsets - Assign Problemset to Exam",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:exam_id/problemsets/:problemset_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":exam_id",
"problemsets",
":problemset_id"
],
"variable": [
{
"key": "exam_id",
"value": "{{exam_id}}"
},
{
"key": "problemset_id",
"value": "{{problemset_id}}"
}
]
},
"description": "Assign a problemset to an exam."
},
"response": []
},
{
"name": "Problemsets - Unassign Problemset from Exam",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/exams/:exam_id/problemsets/:problemset_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"exams",
":exam_id",
"problemsets",
":problemset_id"
],
"variable": [
{
"key": "exam_id",
"value": "{{exam_id}}"
},
{
"key": "problemset_id",
"value": "{{problemset_id}}"
}
]
},
"description": "Unassign a problemset from an exam."
},
"response": []
}
]
},
{
"name": "Admin Problemset Management",
"item": [
{
"name": "List Problemsets",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets?page=1&limit=10&search=&sortBy=title&orderBy=asc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / description"
},
{
"key": "sortBy",
"value": "title",
"description": "Sort field (title, description, created_at)"
},
{
"key": "orderBy",
"value": "asc",
"description": "Sort direction (asc / desc)"
}
]
}
},
"response": []
},
{
"name": "Create Problemset",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Problemset Title\",\n \"description\": \"Description\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets"
]
}
},
"response": []
},
{
"name": "Update Problemset",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Updated Title\",\n \"description\": \"Updated Description\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id"
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
}
]
}
},
"response": []
},
{
"name": "Delete Problemset",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id"
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
}
]
}
},
"response": []
},
{
"name": "Questions - List",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id/questions?page=1&limit=10&search=&sortBy=id&orderBy=asc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id",
"questions"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by question / type"
},
{
"key": "sortBy",
"value": "id",
"description": "Sort field (id, type, question, corr_mark, incorr_mark, null_mark)"
},
{
"key": "orderBy",
"value": "asc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
}
]
}
},
"response": []
},
{
"name": "Questions - List Candidate",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id/questions/candidate?page=1&limit=10&search=&sortBy=id&order=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id",
"questions",
"candidate"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by question / type"
},
{
"key": "sortBy",
"value": "id",
"description": "Sort field (question, type, corr_mark, incorr_mark, null_mark, id)"
},
{
"key": "order",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
}
]
},
"description": "List candidate questions from other problemsets."
},
"response": []
},
{
"name": "Questions - Add",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"type\": \"multiple_choice\",\n \"question\": \"Question text\",\n \"options\": [\"A\", \"B\", \"C\"],\n \"ans_key\": [\"A\"],\n \"corr_mark\": 1,\n \"incorr_mark\": 0,\n \"null_mark\": 0\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id/questions",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id",
"questions"
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
}
]
}
},
"response": []
},
{
"name": "Questions - Update",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"type\": \"multiple_choice\",\n \"question\": \"Updated question\",\n \"options\": [\"A\", \"B\", \"C\"],\n \"ans_key\": [\"B\"],\n \"corr_mark\": 1,\n \"incorr_mark\": 0,\n \"null_mark\": 0\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id/questions/:question_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id",
"questions",
":question_id"
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
},
{
"key": "question_id",
"value": "{{question_id}}"
}
]
}
},
"response": []
},
{
"name": "Questions - Delete",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id/questions/:question_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id",
"questions",
":question_id"
],
"variable": [
{
"key": "id",
"value": "{{problemset_id}}"
},
{
"key": "question_id",
"value": "{{question_id}}"
}
]
}
},
"response": []
},
{
"name": "Question - Get Question Detail",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50X2lkIjoiZTIxNjBmMzUtZGI5NC00OWYzLWE0M2MtNDllZTQyZmI0MDcyIiwicm9sZSI6InN1cGVyX2FkbWluIn0.ejowue0iKkcK8wzPs8Z9CGkBXw1Mqw4WSWK65jkfyfg",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/admin/problemsets/:id/questions/:question_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"problemsets",
":id",
"questions",
":question_id"
],
"variable": [
{
"key": "id",
"value": "66ea2b03-8c33-4782-8492-3f26d75f1bae"
},
{
"key": "question_id",
"value": "23649852-3684-4689-9935-42f06a2da005"
}
]
}
},
"response": []
}
]
},
{
"name": "Admin Academy Management",
"item": [
{
"name": "Exams",
"item": [
{
"name": "List by Academy",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id/exams?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id",
"exams"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / slug / description"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, duration, created_at)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "List exams for a specific academy (Admin)"
},
"response": []
},
{
"name": "List Candidates by Academy",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id/exam/candidates?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id",
"exam",
"candidates"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / slug / description"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, duration, created_at)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "List exams NOT assigned to a specific academy (Admin)"
},
"response": []
}
]
},
{
"name": "Academy CRUD",
"item": [
{
"name": "Academy - Create",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Academy Title\",\n \"slug\": \"academy-slug\",\n \"code\": \"ACAD01\",\n \"is_public\": true,\n \"description\": \"Academy description\",\n \"image_url\": \"https://example.com/image.jpg\",\n \"price\": 150000\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
""
]
},
"description": "Create new academy (admin)"
},
"response": []
},
{
"name": "Academy - Get Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id/detail",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id",
"detail"
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "Get academy detail by ID (admin)"
},
"response": []
},
{
"name": "Academy - Update",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Updated Academy Title\",\n \"slug\": \"updated-academy-slug\",\n \"description\": \"Updated description\",\n \"image_url\": \"https://example.com/image.jpg\",\n \"is_public\": true,\n \"price\": 150000\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id"
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "Update academy (admin)"
},
"response": []
},
{
"name": "Academy - Delete",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id"
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "Delete academy (admin)"
},
"response": []
},
{
"name": "Academy - List",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
""
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / slug / code"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, code, created_at, is_public)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
]
},
"description": "List all academies (private and public) with pagination (admin)"
},
"response": []
}
]
},
{
"name": "Materials CRUD",
"item": [
{
"name": "Materials - Create",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"academy_id\": \"{{academy_id}}\",\n \"title\": \"Material Title\",\n \"slug\": \"material-slug\",\n \"description\": \"Material description\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/materials",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"materials"
]
},
"description": "Create academy material (admin)"
},
"response": []
},
{
"name": "Materials - Delete",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/materials/id/:material_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"materials",
"id",
":material_id"
],
"variable": [
{
"key": "material_id",
"value": "{{material_id}}"
}
]
},
"description": "Delete academy material (admin)"
},
"response": []
},
{
"name": "Materials - Update",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Updated Material Title\",\n \"slug\": \"updated-material-slug\",\n \"description\": \"Updated description\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/materials/id/:material_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"materials",
"id",
":material_id"
],
"variable": [
{
"key": "material_id",
"value": "{{material_id}}"
}
]
},
"description": "Update an existing material (Admin)"
},
"response": []
},
{
"name": "Materials - List by Academy",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id/materials?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id",
"materials"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / slug / description"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, slug, order, created_at)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "List materials for a specific academy (Admin)"
},
"response": []
},
{
"name": "Materials - Get Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/materials/id/:material_id/detail",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"materials",
"id",
":material_id",
"detail"
],
"variable": [
{
"key": "material_id",
"value": "{{material_id}}"
}
]
},
"description": "Get detailed material information (Admin)"
},
"response": []
}
]
},
{
"name": "Contents CRUD",
"item": [
{
"name": "Contents - Create",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"material_id\": \"{{material_id}}\",\n \"title\": \"Content Title\",\n \"contents\": \"Content body text here\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/contents",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"contents"
]
},
"description": "Create academy content (admin)"
},
"response": []
},
{
"name": "Contents - Delete",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/contents/id/:content_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"contents",
"id",
":content_id"
],
"variable": [
{
"key": "content_id",
"value": "{{content_id}}"
}
]
},
"description": "Delete academy content (admin)"
},
"response": []
},
{
"name": "Contents - List by Material",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/materials/id/:material_id/contents?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"materials",
"id",
":material_id",
"contents"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / contents"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, order, created_at)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "material_id",
"value": "{{material_id}}"
}
]
},
"description": "List contents for a specific material (Admin)"
},
"response": []
},
{
"name": "Contents - Get Detail",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/contents/id/:content_id/detail",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"contents",
"id",
":content_id",
"detail"
],
"variable": [
{
"key": "content_id",
"value": "{{content_id}}"
}
]
},
"description": "Get detailed content information (Admin)"
},
"response": []
},
{
"name": "Contents - Update",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Updated Content Title\",\n \"contents\": \"<p>Updated content body</p>\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/contents/id/:content_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"contents",
"id",
":content_id"
],
"variable": [
{
"key": "content_id",
"value": "{{content_id}}"
}
]
},
"description": "Update an existing content (Admin)"
},
"response": []
},
{
"name": "Contents - List by Academy",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/id/:academy_id/contents?page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"id",
":academy_id",
"contents"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by title / contents / material_title"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (title, order, created_at, material_title)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
],
"variable": [
{
"key": "academy_id",
"value": "{{academy_id}}"
}
]
},
"description": "List contents for a specific academy (Admin)"
},
"response": []
}
]
},
{
"name": "Assignments - Assign Account",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"account_id\": \"account_id\",\n \"academy_id\": \"academy_id\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/assign",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"assign"
]
},
"description": "Assign user account to academy (admin)"
},
"response": []
},
{
"name": "Assignments - Unassign Account",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/assign/:assignment_id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"assign",
":assignment_id"
],
"variable": [
{
"key": "assignment_id",
"value": "{{academy_assignment_id}}"
}
]
},
"description": "Unassign user account from academy (admin)"
},
"response": []
},
{
"name": "Participants - List",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/participants?academy_id={{academy_id}}&page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"participants"
],
"query": [
{
"key": "academy_id",
"value": "{{academy_id}}",
"description": "Academy ID"
},
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by username / full name"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (created_at, username, email, full_name)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
]
},
"description": "List all accounts that are already assigned to an academy."
},
"response": []
},
{
"name": "Candidates - List",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/admin/academy/candidates?academy_id={{academy_id}}&page=1&limit=10&search=&sortBy=created_at&orderBy=desc",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"academy",
"candidates"
],
"query": [
{
"key": "academy_id",
"value": "{{academy_id}}",
"description": "Academy ID"
},
{
"key": "page",
"value": "1",
"description": "Page number"
},
{
"key": "limit",
"value": "10",
"description": "Items per page (max 100)"
},
{
"key": "search",
"value": "",
"description": "Search by username / full name"
},
{
"key": "sortBy",
"value": "created_at",
"description": "Sort field (username, full_name, created_at)"
},
{
"key": "orderBy",
"value": "desc",
"description": "Sort direction (asc / desc)"
}
]
},
"description": "List all accounts that are not yet assigned to an academy."
},
"response": []
}
]
}
]
},
{
"name": "Super Admin",
"item": [
{
"name": "Users Management",
"item": [
{
"name": "List Users",
"request": {
"method": "GET",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/super-admin/users/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"users",
""
]
},
"description": "List all users (super admin)"
},
"response": []
},
{
"name": "Create User",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"New User\",\n \"email\": \"newuser@example.com\",\n \"username\": \"newuser\",\n \"password\": \"password123\",\n \"role\": \"user\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/super-admin/users/",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"users",
""
]
},
"description": "Create user (super admin)"
},
"response": []
},
{
"name": "Bulk Create Users",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "[\n {\n \"name\": \"User One\",\n \"email\": \"user1@example.com\",\n \"username\": \"userone\",\n \"password\": \"password123\",\n \"role\": \"user\"\n },\n {\n \"name\": \"User Two\",\n \"email\": \"user2@example.com\",\n \"username\": \"usertwo\",\n \"password\": \"password123\",\n \"role\": \"user\"\n }\n]"
},
"url": {
"raw": "{{base_url}}/api/v1/super-admin/users/bulk",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"users",
"bulk"
]
},
"description": "Create multiple users at once (super admin)"
},
"response": []
},
{
"name": "Update User",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Updated Name\",\n \"email\": \"newemail@example.com\",\n \"username\": \"updatedusername\",\n \"role\": \"user\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/super-admin/users/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"users",
":id"
],
"variable": [
{
"key": "id",
"value": ""
}
]
},
"description": "Update user (super admin)"
},
"response": []
},
{
"name": "Delete User",
"request": {
"method": "DELETE",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/super-admin/users/:id",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"users",
":id"
],
"variable": [
{
"key": "id",
"value": ""
}
]
},
"description": "Delete user (super admin)"
},
"response": []
}
]
},
{
"name": "Inject",
"item": [
{
"name": "Inject ProblemSet from CSV",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/super-admin/inject/probset",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"inject",
"probset"
]
},
"description": "Inject problem sets and questions from normalized_questions.csv (super admin)"
},
"response": []
}
]
},
{
"name": "Repair",
"item": [
{
"name": "Repair Question Storage Path",
"request": {
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"url": {
"raw": "{{base_url}}/api/v1/super-admin/repair/question/storage_path",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"super-admin",
"repair",
"question",
"storage_path"
]
},
"description": "Repair question storage path placeholders (super admin)"
},
"response": []
}
]
},
{
"name": "Authentication Management",
"item": [
{
"name": "Update User Role",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Bearer {{access_token}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"role\": \"admin\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/admin/authentication/:account_id/assign",
"host": [
"{{base_url}}"
],
"path": [
"api",
"v1",
"admin",
"authentication",
":account_id",
"assign"
],
"variable": [
{
"key": "account_id",
"value": ""
}
]
},
"description": "Update user role (super admin)"
},
"response": []
}
]
}
]
}
],
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"packages": {},
"requests": {},
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"packages": {},
"requests": {},
"exec": [
""
]
}
}
],
"variable": [
{
"key": "base_url",
"value": "http://localhost:8080"
},
{
"key": "access_token",
"value": "your_jwt_token_here"
},
{
"key": "province_id",
"value": ""
},
{
"key": "exam_id",
"value": ""
},
{
"key": "event_id",
"value": ""
},
{
"key": "academy_id",
"value": ""
},
{
"key": "result_id",
"value": ""
},
{
"key": "user_id",
"value": ""
},
{
"key": "material_id",
"value": ""
},
{
"key": "problemset_id",
"value": ""
},
{
"key": "question_id",
"value": ""
}
]
}