Spaces:
Sleeping
Sleeping
| { | |
| "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": "" | |
| } | |
| ] | |
| } |