{ "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\": \"

Updated content body

\"\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": "" } ] }