Spaces:
Running
Running
| { | |
| "schemes": [ | |
| "https" | |
| ], | |
| "swagger": "2.0", | |
| "info": { | |
| "description": "Backend API documentation", | |
| "title": "Go Boilerplate API", | |
| "contact": { | |
| "name": "Abdan Hafidz", | |
| "email": "admin@example.com" | |
| }, | |
| "license": { | |
| "name": "MIT", | |
| "url": "https://opensource.org/licenses/MIT" | |
| }, | |
| "version": "1.0.0" | |
| }, | |
| "host": "api.quzuu.id", | |
| "basePath": "/", | |
| "paths": { | |
| "/api/v1/academy/join": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Join an academy using a unique code", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Academy" | |
| ], | |
| "summary": "Join Academy by Code", | |
| "parameters": [ | |
| { | |
| "description": "Join Academy by Code Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.JoinAcademyByCodeRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AcademyMiniDetailResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "402": { | |
| "description": "Payment Required", | |
| "schema": { | |
| "$ref": "#/definitions/dto.RegisterAcademyPaymentActionRequiredResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/academy/{academy_slug}": { | |
| "get": { | |
| "description": "Retrieve academy details using its slug", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Academy" | |
| ], | |
| "summary": "Get Academy by Slug", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy Slug", | |
| "name": "academy_slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/academy/{academy_slug}/contents": { | |
| "get": { | |
| "description": "Retrieve a paginated list of all contents in a specific academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Content" | |
| ], | |
| "summary": "List Contents by Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy Slug", | |
| "name": "academy_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by content title/body or material title", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, order, created_at, material_title)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_AcademyContent" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/academy/{academy_slug}/exam/{exam_slug}/attempt": { | |
| "get": { | |
| "description": "Start an attempt for a specific exam in an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Academy Exam" | |
| ], | |
| "summary": "Attempt Academy Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy Slug", | |
| "name": "academy_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_AcademyExamAttempt" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/academy/{academy_slug}/{material_slug}": { | |
| "get": { | |
| "description": "Retrieve material details using its slug", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Material" | |
| ], | |
| "summary": "Get Material by Slug", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy Slug", | |
| "name": "academy_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Material Slug", | |
| "name": "material_slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_MaterialDetailResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/academy/{academy_slug}/{material_slug}/{order}": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update the progress of a content within a material", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Progress" | |
| ], | |
| "summary": "Update Content Progress", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy Slug", | |
| "name": "academy_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Material Slug", | |
| "name": "material_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "description": "Content Order", | |
| "name": "order", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/account/me": { | |
| "put": { | |
| "description": "Update detailed information about the authenticated user's account", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Account Detail" | |
| ], | |
| "summary": "Update Account Detail", | |
| "parameters": [ | |
| { | |
| "description": "Update Account Detail Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateAccountDetailRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AccountDetailResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all academies (private and public)", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: List Academies", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / slug / code", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, code, created_at, is_public)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Academy" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Create Academy", | |
| "parameters": [ | |
| { | |
| "description": "Create Academy Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateAcademyRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/assign": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Assign an account to an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Assign Account to Academy", | |
| "parameters": [ | |
| { | |
| "description": "Assign Account to Academy Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.AssignRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/assign/{assignment_id}": { | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Unassign an account from an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Unassign Account from Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Assignment ID", | |
| "name": "assignment_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/candidates": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List accounts that are not yet assigned to an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: List Academy Candidates", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "query", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by username / full name", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (username, full_name, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Account" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/contents": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new content for a material", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Create Content", | |
| "parameters": [ | |
| { | |
| "description": "Create Content Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateContentRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/contents/id/{content_id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update an existing content", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Update Content", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Content ID", | |
| "name": "content_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Content Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateContentRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete an existing content", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Delete Content", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Content ID", | |
| "name": "content_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/contents/id/{content_id}/detail": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve detailed content information using its ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Get Content Detail by ID", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Content ID", | |
| "name": "content_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/id/{academy_id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update an existing academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Update Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Academy Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateAcademyRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete an existing academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Delete Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/id/{academy_id}/contents": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all contents in a specific academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: List Contents by Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / contents / material_title", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, order, created_at, material_title)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_AcademyContent" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/id/{academy_id}/detail": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve detailed academy information using its ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Get Academy Detail by ID", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/id/{academy_id}/exam/candidates": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all exams NOT assigned to a specific academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: List Exam Candidates by Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / slug / description", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, duration, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/id/{academy_id}/exams": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all exams assigned to a specific academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: List Exams by Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / slug / description", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, duration, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/id/{academy_id}/materials": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve a list of materials for a specific academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "List Materials by Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / slug / description", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, order, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/materials": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new material for an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Create Material", | |
| "parameters": [ | |
| { | |
| "description": "Create Material Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateMaterialRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/materials/id/{material_id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update an existing material", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Update Material", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Material ID", | |
| "name": "material_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Material Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateMaterialRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete an existing material", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Delete Material", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Material ID", | |
| "name": "material_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/materials/id/{material_id}/contents": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve a list of contents for a specific material", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "List Contents by Material", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Material ID", | |
| "name": "material_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / contents", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, order, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/materials/id/{material_id}/detail": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve detailed material information using its ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Get Material Detail by ID", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Material ID", | |
| "name": "material_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/participants": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all participants assigned to an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: List Academy Participants", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "query", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by username / full name", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (created_at, username, email, full_name)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_AcademyAssign" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/academy/{academy_id}/attempts/{attempt_id}/{user_id}/review": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Review a specific participant attempt for an academy exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin Academy" | |
| ], | |
| "summary": "Admin: Review Academy Exam Attempt", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Attempt ID", | |
| "name": "attempt_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AdminExamReviewResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/authentication/{account_id}/assign": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update the role of a user account", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Authentication" | |
| ], | |
| "summary": "Update User Role", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Account ID", | |
| "name": "accountId", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update User Role Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateUserRoleRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Account" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Admin view of all events with participant count, exam count and optional filters/pagination", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: List Events", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title / slug / event code", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, start_event, end_event, created_at, participant_count, exam_count)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Filter by status (UPCOMING, ONGOING, ENDED)", | |
| "name": "status", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_dto_AdminEventResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Create Event", | |
| "parameters": [ | |
| { | |
| "description": "Create Event Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateEventRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Events" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update an existing event by ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Update Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Event Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateEventRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Events" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete an event by ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Delete Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/attempts/{attempt_id}/{user_id}/review": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Review a specific participant attempt for an event exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Review Exam Attempt", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Attempt ID", | |
| "name": "attempt_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AdminExamReviewResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/candidate": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List accounts that are not yet assigned to the event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: List of Event Candidates", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by username / full name", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (username, full_name, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Account" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/exams": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all exams assigned to an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: List Event Exams", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by exam title / slug", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, created_at, duration)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_EventExamAssign" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/exams/candidate": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List exams that are not yet assigned to the event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: List Exam Candidates for Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by exam title / slug", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, created_at, duration)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "orderBy", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/exams/{exam_id}": { | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Unassign an exam from an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Remove Exam from Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/exams/{exam_id}/results": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve all participant results for a specific exam within an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: List Exam Results for an Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by username / full name", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (final_score, created_at, username, full_name)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Result" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/exams/{exam_id}/results/{result_id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Edit the final score of a participant's exam result", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Update Exam Result", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Result ID", | |
| "name": "result_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Result Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateResultRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Result" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete a participant's exam result", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Delete Exam Result", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Result ID", | |
| "name": "result_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/participants": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all participants assigned to an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: List Event Participants", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by username / full name", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (assigned_at, username, email, full_name)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_EventAssign" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Manually assign a user to an event (bypasses payment)", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Add Participant to Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Add Participant Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.AddParticipantRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_EventAssign" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/events/{event_id}/participants/{user_id}": { | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Unassign a user from an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminEvent" | |
| ], | |
| "summary": "Admin: Remove Participant from Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve a paginated list of exams with event and academy assignment counts", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: List Exams", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by title or slug", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, created_at, duration, event_count, academy_count)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_dto_AdminExamResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new exam with configuration and proctoring settings", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Create Exam", | |
| "parameters": [ | |
| { | |
| "description": "Create Exam Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateExamRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve full exam details including configuration and proctoring", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Get Exam Detail", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update an existing exam including configuration and proctoring settings", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Update Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Exam Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateExamRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Soft delete an exam by ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Delete Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/academies": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all academies that have this exam assigned", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: List Academies by Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by academy title / slug / code", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, code, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_AcademyExamAssign" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/academies/{academy_id}": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Assign an exam to an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Assign Exam to Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Remove an exam assignment from an academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Unassign Exam from Academy", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/events": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all events that have this exam assigned", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: List Events by Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search by event title / slug / event code", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field (title, slug, event_code, start_event, end_event, created_at)", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort direction (asc / desc)", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_EventExamAssign" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/events/{event_id}": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Assign an exam to an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Assign Exam to Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Remove an exam assignment from an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminExam" | |
| ], | |
| "summary": "Admin: Unassign Exam from Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-map_string_bool" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/problemsets": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List problem sets assigned to an exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: List Problem Sets by Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/problemsets/candidate": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List problem sets that can be assigned to an exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: List Candidate Problem Sets by Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/exams/{exam_id}/problemsets/{problemset_id}": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Assign a problem set to an exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Assign Problem Set to Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "problemset_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Remove a problem set assignment from an exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Unassign Problem Set from Exam", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "problemset_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/problemsets": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List all problem sets", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: List Problem Sets", | |
| "responses": {} | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Create Problem Set", | |
| "parameters": [ | |
| { | |
| "description": "Create Problem Set Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateProblemSetRequest" | |
| } | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/problemsets/{id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update an existing problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Update Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Problem Set Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateProblemSetRequest" | |
| } | |
| } | |
| ], | |
| "responses": {} | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Delete Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/problemsets/{id}/questions": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "List questions that belong to a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: List Questions in Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a question inside a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Add Question to Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Create Question Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateQuestionRequest" | |
| } | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/problemsets/{id}/questions/bulk": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update multiple questions in a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Bulk Update Questions in Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Bulk Update Questions Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.BulkUpdateQuestionsRequest" | |
| } | |
| } | |
| ], | |
| "responses": {} | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create multiple questions inside a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Bulk Add Questions to Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Bulk Create Questions Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.BulkCreateQuestionsRequest" | |
| } | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/problemsets/{id}/questions/{question_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get a single question from a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Get Question Detail in Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Question ID", | |
| "name": "question_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| }, | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update a question in a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Update Question in Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Question ID", | |
| "name": "question_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update Question Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateQuestionRequest" | |
| } | |
| } | |
| ], | |
| "responses": {} | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete a question from a problem set", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin ProblemSet" | |
| ], | |
| "summary": "Admin: Delete Question from Problem Set", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Problem Set ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Question ID", | |
| "name": "question_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/proctoring/events/{event_slug}/exam/{exam_slug}/proctoring": { | |
| "get": { | |
| "description": "List proctoring logs by account, exam, or event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event Exam Proctoring" | |
| ], | |
| "summary": "List Proctoring Logs", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Account ID", | |
| "name": "account_id", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_EventExamProctoringLogs" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/proctoring/events/{event_slug}/exam/{exam_slug}/proctoring/{log_id}": { | |
| "get": { | |
| "description": "Get details of a specific proctoring log", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event Exam Proctoring" | |
| ], | |
| "summary": "Get Proctoring Log By ID", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Log ID", | |
| "name": "log_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_EventExamProctoringLogs" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "put": { | |
| "description": "Update an existing proctoring log", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event Exam Proctoring" | |
| ], | |
| "summary": "Update Proctoring Log", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Log ID", | |
| "name": "log_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "description": "Violation Score", | |
| "name": "violation_score", | |
| "in": "formData" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Violation Category", | |
| "name": "violation_category", | |
| "in": "formData" | |
| }, | |
| { | |
| "type": "file", | |
| "description": "Attachment File", | |
| "name": "file", | |
| "in": "formData" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Account ID (required for upload context)", | |
| "name": "id_account", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-string" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "description": "Delete a proctoring log entry", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event Exam Proctoring" | |
| ], | |
| "summary": "Delete Proctoring Log", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Log ID", | |
| "name": "log_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-string" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/statistics/academy": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for all academies", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Academy Statistics Overview", | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/academy/{academy_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for a single academy", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Academy Statistics Detail", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Academy ID", | |
| "name": "academy_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/event": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for all events", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Event Statistics Overview", | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/event/{event_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for a single event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Event Statistics Detail", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "event_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/exam": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for all exams", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Exam Statistics Overview", | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/exam/{exam_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for a single exam", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Exam Statistics Detail", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "exam_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/monthly-growth": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve monthly growth trend for users, academies, events, exams, and problemsets", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Monthly Growth Statistics", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 6, | |
| "description": "How many months to include", | |
| "name": "months", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.AdminStatisticMonthlyGrowthResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/admin/statistics/problemset": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for all problemsets", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get ProblemSet Statistics Overview", | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/problemset/{problemset_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for a single problemset", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get ProblemSet Statistics Detail", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "ProblemSet ID", | |
| "name": "problemset_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/question": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for all questions", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Question Statistics Overview", | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/question/{question_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Aggregate statistics for a single question", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Question Statistics Detail", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Question ID", | |
| "name": "question_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": {} | |
| } | |
| }, | |
| "/api/v1/admin/statistics/summary": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve aggregate statistics for dashboard cards such as users, academies, events, exams, problemsets, attempts, and payment metrics", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "AdminStatistic" | |
| ], | |
| "summary": "Admin: Get Statistics Summary", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.AdminStatisticSummaryResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/authentication/change-password": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Change the password of the authenticated user", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Authentication" | |
| ], | |
| "summary": "Change User Password", | |
| "parameters": [ | |
| { | |
| "description": "Change Password Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.ChangePasswordRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AuthenticatedUser" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/authentication/external-login": { | |
| "post": { | |
| "description": "Authenticate user using external OAuth provider", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Authentication" | |
| ], | |
| "summary": "External Authentication", | |
| "parameters": [ | |
| { | |
| "description": "External Auth Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.ExternalAuthRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AuthenticatedUser" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/authentication/login": { | |
| "post": { | |
| "description": "Authenticate user and obtain access token", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Authentication" | |
| ], | |
| "summary": "User Login", | |
| "parameters": [ | |
| { | |
| "description": "Sign In Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.SignInRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AuthenticatedUser" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/authentication/register": { | |
| "post": { | |
| "description": "Register a new user account", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Authentication" | |
| ], | |
| "summary": "User Registration", | |
| "parameters": [ | |
| { | |
| "description": "Sign Up Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.SignUpRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Account" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/authentication/seed-superadmin": { | |
| "post": { | |
| "description": "Seed a super admin account using predefined credentials", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Authentication" | |
| ], | |
| "summary": "Seed Super Admin", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/email/create-verification": { | |
| "post": { | |
| "description": "Generate a verification token and send it to the specified email address", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Email Verification" | |
| ], | |
| "summary": "Create Email Verification Token", | |
| "parameters": [ | |
| { | |
| "description": "Create Email Verification Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateEmailVerificationRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_CreateEmailVerificationResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/email/verify": { | |
| "post": { | |
| "description": "Validate the provided verification token for the specified email address", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Email Verification" | |
| ], | |
| "summary": "Validate Email Verification Token", | |
| "parameters": [ | |
| { | |
| "description": "Validate Verify Email Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.ValidateVerifyEmailRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events": { | |
| "get": { | |
| "description": "Retrieve a paginated list of events with optional filters", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event" | |
| ], | |
| "summary": "List Events", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Number of items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search term for event titles", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Field to sort by (e.g., 'date', 'title')", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort order ('asc' or 'desc')", | |
| "name": "order", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "description": "Filter by registration status", | |
| "name": "registerStatus", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Filter by event status (upcoming, ongoing, ended)", | |
| "name": "status", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Events" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/logs/{event_slug}/exam/{exam_slug}/proctoring": { | |
| "post": { | |
| "description": "Create a new proctoring log entry with optional file attachment", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event Exam Proctoring" | |
| ], | |
| "summary": "Create Proctoring Log", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event ID", | |
| "name": "id_event", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam ID", | |
| "name": "id_exam", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Account ID", | |
| "name": "id_account", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "description": "Violation Score", | |
| "name": "violation_score", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Violation Category", | |
| "name": "violation_category", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "file", | |
| "description": "Attachment File", | |
| "name": "file", | |
| "in": "formData" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-string" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/register-event": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Register the authenticated user for an event using an event code", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event" | |
| ], | |
| "summary": "Join Event", | |
| "parameters": [ | |
| { | |
| "description": "Join Event Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.JoinEventRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_EventDetailResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "402": { | |
| "description": "Payment Required", | |
| "schema": { | |
| "$ref": "#/definitions/dto.RegisterEventPaymentActionRequiredResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/{event_slug}": { | |
| "get": { | |
| "description": "Retrieve detailed information about a specific event using its slug", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Event" | |
| ], | |
| "summary": "Get Event Detail by Slug", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_EventDetailResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/{event_slug}/exam": { | |
| "get": { | |
| "description": "Retrieve a list of exams associated with a specific event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Exam Event" | |
| ], | |
| "summary": "List Exams by Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_Exam" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/{event_slug}/exam/{attempt_id}/answer_question": { | |
| "post": { | |
| "description": "Submit an answer for a specific question in an exam attempt", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Exam Event" | |
| ], | |
| "summary": "Answer Exam Event Question", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Attempt ID", | |
| "name": "attempt_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Answer Exam Event Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.AnswerEventExamRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_AnswerEventExamRequest" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/{event_slug}/exam/{exam_slug}/attempt": { | |
| "get": { | |
| "description": "Start an attempt for a specific exam in an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Exam Event" | |
| ], | |
| "summary": "Attempt Exam Event", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_EventExamAttempt" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/{event_slug}/scoreboard": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve a paginated scoreboard of participants based on total score across all exams in an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Exam Event" | |
| ], | |
| "summary": "Event Scoreboard", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Number of items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search keyword", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field: 'total_score' (default), 'username', or 'full_name'", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort order: 'asc' or 'desc'", | |
| "name": "orderBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort order alias: 'asc' or 'desc'", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_dto_EventScoreboardItem" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/events/{event_slug}/{exam_slug}/scoreboard": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve a paginated scoreboard of participants ranked by their performance in a specific exam within an event", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Exam Event" | |
| ], | |
| "summary": "Exam Scoreboard", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Event Slug", | |
| "name": "event_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Exam Slug", | |
| "name": "exam_slug", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Number of items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Search keyword", | |
| "name": "search", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort field: 'score' (default) or 'duration'", | |
| "name": "sortBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort order: 'asc' or 'desc'", | |
| "name": "orderBy", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Sort order alias: 'asc' or 'desc'", | |
| "name": "order", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_dto_ExamScoreboardItem" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/files": { | |
| "post": { | |
| "description": "Upload one or more files to the server", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Upload" | |
| ], | |
| "summary": "Upload Files", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Upload Context (e.g., image, submission, material)", | |
| "name": "context", | |
| "in": "formData" | |
| }, | |
| { | |
| "type": "file", | |
| "description": "Files to upload (multiple allowed)", | |
| "name": "files", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "schema": { | |
| "$ref": "#/definitions/dto.FileUploadResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "422": { | |
| "description": "Unprocessable Entity", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/files/{id}": { | |
| "get": { | |
| "description": "Retrieve file details using its ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Upload" | |
| ], | |
| "summary": "Get File by ID", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "File ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.FileResponseSingle" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/options/create": { | |
| "post": { | |
| "description": "Create multiple options in bulk", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Option" | |
| ], | |
| "summary": "Create Bulk Options", | |
| "parameters": [ | |
| { | |
| "description": "Bulk Options Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.OptionsRequest" | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/options/list/{slug}": { | |
| "get": { | |
| "description": "Retrieve option details using its slug", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Option" | |
| ], | |
| "summary": "Get Option by Slug", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Option Slug", | |
| "name": "slug", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-models_Options" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/options/region/cities": { | |
| "get": { | |
| "description": "Retrieve a list of cities within a specific province", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Region" | |
| ], | |
| "summary": "List Cities by Province", | |
| "parameters": [ | |
| { | |
| "description": "Province ID", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "province_id": { | |
| "type": "integer" | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_RegionCity" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/options/region/provinces": { | |
| "get": { | |
| "description": "Retrieve a list of all provinces", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Region" | |
| ], | |
| "summary": "List Provinces", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_RegionProvince" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/options/region/seed-cities": { | |
| "post": { | |
| "description": "Seed multiple cities into the system", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Region" | |
| ], | |
| "summary": "Seed Cities", | |
| "parameters": [ | |
| { | |
| "description": "Seed Cities Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.RegionCity" | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_models_RegionCity" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/options/region/seed-provinces": { | |
| "post": { | |
| "description": "Seed multiple provinces into the system", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Region" | |
| ], | |
| "summary": "Seed Provinces", | |
| "parameters": [ | |
| { | |
| "description": "Seed Provinces Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.RegionProvince" | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/super-admin/inject/probset": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Inject problem sets and questions from an uploaded CSV (normalized_questions.csv format)", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Inject" | |
| ], | |
| "summary": "Super Admin: Inject Problem Sets from CSV Upload", | |
| "parameters": [ | |
| { | |
| "type": "file", | |
| "description": "CSV file (normalized_questions.csv format)", | |
| "name": "file", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_ProblemSetInjectResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "409": { | |
| "description": "Conflict", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/super-admin/repair/question/storage_path": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Replace @@PLUGINFILE@@ placeholders in questions with the storage URL and problem set ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Repair" | |
| ], | |
| "summary": "Super Admin: Repair Question Storage Path", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_RepairQuestionStoragePathResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/super-admin/users": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Retrieve a paginated list of all users with optional role filter. Supports pagination parameters (page, limit) and can filter by user role.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Users Management" | |
| ], | |
| "summary": "List All Users with Pagination", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "description": "Page number for pagination. Minimum value is 1. Default is 1.", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "description": "Number of items per page. Minimum 1, Maximum 50. Default is 10.", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Filter users by role. Allowed values: user, admin, super_admin. Leave empty for no filter.", | |
| "name": "role", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-array_dto_UserResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create a new user account by providing user details", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Users Management" | |
| ], | |
| "summary": "Create Single User", | |
| "parameters": [ | |
| { | |
| "description": "Create User Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.CreateUserRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_UserResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/super-admin/users/bulk": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Create multiple user accounts at once", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Users Management" | |
| ], | |
| "summary": "Bulk Create Users", | |
| "parameters": [ | |
| { | |
| "description": "Bulk Create User Requests", | |
| "name": "requests", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.CreateUserRequest" | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_CreateUserRequest" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/super-admin/users/{id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Update user information by ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Users Management" | |
| ], | |
| "summary": "Edit User", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Update User Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.UpdateUserRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-dto_UserResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Delete a user account by ID", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Super Admin Users Management" | |
| ], | |
| "summary": "Delete User", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.SuccessResponse-any" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ErrorResponse" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "definitions": { | |
| "dto.AcademyMiniDetailResponse": { | |
| "type": "object", | |
| "required": [ | |
| "register_status" | |
| ], | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Academy" | |
| }, | |
| "payment": { | |
| "$ref": "#/definitions/models.AcademyPaymentTransaction" | |
| }, | |
| "register_status": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.AccountDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "details": { | |
| "$ref": "#/definitions/models.AccountDetail" | |
| } | |
| } | |
| }, | |
| "dto.AddParticipantRequest": { | |
| "type": "object", | |
| "required": [ | |
| "user_id" | |
| ], | |
| "properties": { | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AdminEventResponse": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "end_event": { | |
| "type": "string" | |
| }, | |
| "event_code": { | |
| "type": "string" | |
| }, | |
| "exam_count": { | |
| "type": "integer" | |
| }, | |
| "id_event": { | |
| "type": "string" | |
| }, | |
| "img_banner": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "overview": { | |
| "type": "string" | |
| }, | |
| "participant_count": { | |
| "type": "integer" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "register_status": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "start_event": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AdminExamResponse": { | |
| "type": "object", | |
| "properties": { | |
| "academy_count": { | |
| "type": "integer" | |
| }, | |
| "configuration": { | |
| "$ref": "#/definitions/models.ExamConfiguration" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "duration": { | |
| "type": "integer" | |
| }, | |
| "event_count": { | |
| "type": "integer" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "proctoring": { | |
| "$ref": "#/definitions/models.ExamProctoring" | |
| }, | |
| "randomize": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AdminExamReviewAnswer": { | |
| "type": "object", | |
| "properties": { | |
| "answer": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "question": { | |
| "$ref": "#/definitions/dto.AdminExamReviewQuestion" | |
| }, | |
| "question_id": { | |
| "type": "string" | |
| }, | |
| "score": { | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "dto.AdminExamReviewQuestion": { | |
| "type": "object", | |
| "properties": { | |
| "ans_key": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "options": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "question": { | |
| "type": "string" | |
| }, | |
| "solution": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AdminExamReviewResponse": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "answers": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.AdminExamReviewAnswer" | |
| } | |
| }, | |
| "attempt_id": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "due_at": { | |
| "type": "string" | |
| }, | |
| "event_id": { | |
| "type": "string" | |
| }, | |
| "exam_id": { | |
| "type": "string" | |
| }, | |
| "exam_title": { | |
| "type": "string" | |
| }, | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "score": { | |
| "type": "number" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "submitted": { | |
| "type": "boolean" | |
| }, | |
| "time_remaining": { | |
| "type": "integer" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AdminStatisticMonthlyGrowth": { | |
| "type": "object", | |
| "properties": { | |
| "month": { | |
| "type": "string" | |
| }, | |
| "new_academies": { | |
| "type": "integer" | |
| }, | |
| "new_events": { | |
| "type": "integer" | |
| }, | |
| "new_exams": { | |
| "type": "integer" | |
| }, | |
| "new_problemsets": { | |
| "type": "integer" | |
| }, | |
| "new_users": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.AdminStatisticMonthlyGrowthResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.AdminStatisticMonthlyGrowth" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AdminStatisticSummary": { | |
| "type": "object", | |
| "properties": { | |
| "avg_exams_per_event": { | |
| "type": "number" | |
| }, | |
| "avg_participants_per_event": { | |
| "type": "number" | |
| }, | |
| "paid_academy_revenue": { | |
| "type": "number" | |
| }, | |
| "paid_event_revenue": { | |
| "type": "number" | |
| }, | |
| "total_academies": { | |
| "type": "integer" | |
| }, | |
| "total_academy_exam_assignments": { | |
| "type": "integer" | |
| }, | |
| "total_academy_exam_attempts": { | |
| "type": "integer" | |
| }, | |
| "total_academy_participants": { | |
| "type": "integer" | |
| }, | |
| "total_academy_results": { | |
| "type": "integer" | |
| }, | |
| "total_admins": { | |
| "type": "integer" | |
| }, | |
| "total_event_exam_assignments": { | |
| "type": "integer" | |
| }, | |
| "total_event_exam_attempts": { | |
| "type": "integer" | |
| }, | |
| "total_event_participants": { | |
| "type": "integer" | |
| }, | |
| "total_event_results": { | |
| "type": "integer" | |
| }, | |
| "total_events": { | |
| "type": "integer" | |
| }, | |
| "total_exams": { | |
| "type": "integer" | |
| }, | |
| "total_paid_academy_transactions": { | |
| "type": "integer" | |
| }, | |
| "total_paid_event_transactions": { | |
| "type": "integer" | |
| }, | |
| "total_paid_revenue": { | |
| "type": "number" | |
| }, | |
| "total_problemsets": { | |
| "type": "integer" | |
| }, | |
| "total_questions": { | |
| "type": "integer" | |
| }, | |
| "total_super_admins": { | |
| "type": "integer" | |
| }, | |
| "total_users": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.AdminStatisticSummaryResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.AdminStatisticSummary" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AnswerEventExamRequest": { | |
| "type": "object", | |
| "required": [ | |
| "question_id" | |
| ], | |
| "properties": { | |
| "answer": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "question_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AssignRequest": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AuthenticatedUser": { | |
| "type": "object", | |
| "properties": { | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "token": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.BulkCreateQuestionsRequest": { | |
| "type": "object", | |
| "required": [ | |
| "questions" | |
| ], | |
| "properties": { | |
| "questions": { | |
| "type": "array", | |
| "minItems": 1, | |
| "items": { | |
| "$ref": "#/definitions/dto.CreateQuestionRequest" | |
| } | |
| } | |
| } | |
| }, | |
| "dto.BulkUpdateQuestionItemRequest": { | |
| "type": "object", | |
| "required": [ | |
| "id_question" | |
| ], | |
| "properties": { | |
| "ans_key": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "corr_mark": { | |
| "type": "number" | |
| }, | |
| "id_question": { | |
| "type": "string" | |
| }, | |
| "incorr_mark": { | |
| "type": "number" | |
| }, | |
| "null_mark": { | |
| "type": "number" | |
| }, | |
| "options": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "question": { | |
| "type": "string" | |
| }, | |
| "solution": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.BulkUpdateQuestionsRequest": { | |
| "type": "object", | |
| "required": [ | |
| "questions" | |
| ], | |
| "properties": { | |
| "questions": { | |
| "type": "array", | |
| "minItems": 1, | |
| "items": { | |
| "$ref": "#/definitions/dto.BulkUpdateQuestionItemRequest" | |
| } | |
| } | |
| } | |
| }, | |
| "dto.ChangePasswordRequest": { | |
| "type": "object", | |
| "required": [ | |
| "new_password", | |
| "old_password" | |
| ], | |
| "properties": { | |
| "new_password": { | |
| "type": "string" | |
| }, | |
| "old_password": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.ContentDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "string" | |
| }, | |
| "order": { | |
| "type": "integer" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateAcademyRequest": { | |
| "type": "object", | |
| "required": [ | |
| "title" | |
| ], | |
| "properties": { | |
| "code": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "image_url": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateContentRequest": { | |
| "type": "object", | |
| "required": [ | |
| "material_id", | |
| "title" | |
| ], | |
| "properties": { | |
| "contents": { | |
| "type": "string" | |
| }, | |
| "material_id": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateEmailVerificationRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateEmailVerificationResponse": { | |
| "type": "object", | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "expired_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateEventRequest": { | |
| "type": "object", | |
| "required": [ | |
| "end_event", | |
| "img_banner", | |
| "overview", | |
| "start_event", | |
| "title" | |
| ], | |
| "properties": { | |
| "end_event": { | |
| "type": "string" | |
| }, | |
| "event_code": { | |
| "type": "string" | |
| }, | |
| "img_banner": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "overview": { | |
| "type": "string" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "start_event": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateExamRequest": { | |
| "type": "object", | |
| "properties": { | |
| "allow_retake": { | |
| "type": "boolean" | |
| }, | |
| "allow_review": { | |
| "type": "boolean" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "disable_copy_paste": { | |
| "type": "boolean" | |
| }, | |
| "duration": { | |
| "type": "integer" | |
| }, | |
| "enable_exam_browser": { | |
| "type": "boolean" | |
| }, | |
| "enable_eye_tracking": { | |
| "type": "boolean" | |
| }, | |
| "enable_full_screen": { | |
| "type": "boolean" | |
| }, | |
| "enable_tab_block": { | |
| "type": "boolean" | |
| }, | |
| "enable_timer": { | |
| "type": "boolean" | |
| }, | |
| "enable_vad": { | |
| "type": "boolean" | |
| }, | |
| "enable_webcam": { | |
| "type": "boolean" | |
| }, | |
| "randomize": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateMaterialRequest": { | |
| "type": "object", | |
| "required": [ | |
| "academy_id", | |
| "title" | |
| ], | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateProblemSetRequest": { | |
| "type": "object", | |
| "required": [ | |
| "title" | |
| ], | |
| "properties": { | |
| "description": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateQuestionRequest": { | |
| "type": "object", | |
| "required": [ | |
| "question", | |
| "type" | |
| ], | |
| "properties": { | |
| "ans_key": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "corr_mark": { | |
| "type": "number" | |
| }, | |
| "incorr_mark": { | |
| "type": "number" | |
| }, | |
| "null_mark": { | |
| "type": "number" | |
| }, | |
| "options": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "question": { | |
| "type": "string" | |
| }, | |
| "solution": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.CreateUserRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email", | |
| "name", | |
| "password", | |
| "role", | |
| "username" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string" | |
| }, | |
| "role": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.DeleteEmailVerificationRequest": { | |
| "type": "object", | |
| "required": [ | |
| "token" | |
| ], | |
| "properties": { | |
| "token": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.ErrorResponse": { | |
| "type": "object", | |
| "properties": { | |
| "errors": { | |
| "type": "string" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.EventDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Events" | |
| }, | |
| "event_payment": { | |
| "$ref": "#/definitions/models.EventPaymentTransaction" | |
| }, | |
| "register_status": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.EventScoreboardItem": { | |
| "type": "object", | |
| "properties": { | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "total_score": { | |
| "type": "number" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.ExamScoreboardItem": { | |
| "type": "object", | |
| "properties": { | |
| "duration": { | |
| "type": "string" | |
| }, | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "score": { | |
| "type": "number" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.ExternalAuthRequest": { | |
| "type": "object", | |
| "required": [ | |
| "oauth_id", | |
| "oauth_provider" | |
| ], | |
| "properties": { | |
| "oauth_id": { | |
| "type": "string" | |
| }, | |
| "oauth_provider": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.FileResponse": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "mime_type": { | |
| "type": "string" | |
| }, | |
| "original_name": { | |
| "type": "string" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| }, | |
| "url": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.FileResponseSingle": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.FileResponse" | |
| }, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.FileUploadResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.FileResponse" | |
| } | |
| }, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.JoinAcademyByCodeRequest": { | |
| "type": "object", | |
| "required": [ | |
| "code" | |
| ], | |
| "properties": { | |
| "code": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.JoinEventRequest": { | |
| "type": "object", | |
| "required": [ | |
| "event_code" | |
| ], | |
| "properties": { | |
| "event_code": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.MaterialDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "contents": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.ContentDetailResponse" | |
| } | |
| }, | |
| "contents_count": { | |
| "type": "integer" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "meta": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "order": { | |
| "type": "integer" | |
| }, | |
| "progress": { | |
| "$ref": "#/definitions/dto.MaterialProgressResponse" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.MaterialProgressResponse": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "completed_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "material_id": { | |
| "type": "string" | |
| }, | |
| "progress": { | |
| "type": "number" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "total_completed_contents": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.OptionsRequest": { | |
| "type": "object", | |
| "required": [ | |
| "option_name", | |
| "option_values" | |
| ], | |
| "properties": { | |
| "option_name": { | |
| "type": "string" | |
| }, | |
| "option_values": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| }, | |
| "dto.ProblemSetInjectResponse": { | |
| "type": "object", | |
| "properties": { | |
| "file": { | |
| "type": "string" | |
| }, | |
| "problem_sets": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.ProblemSetInjectSummary" | |
| } | |
| }, | |
| "problem_sets_created": { | |
| "type": "integer" | |
| }, | |
| "questions_created": { | |
| "type": "integer" | |
| }, | |
| "total_rows": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.ProblemSetInjectSummary": { | |
| "type": "object", | |
| "properties": { | |
| "id_problem_set": { | |
| "type": "string" | |
| }, | |
| "question_count": { | |
| "type": "integer" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.RegisterAcademyPaymentActionRequiredData": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "amount": { | |
| "type": "number" | |
| }, | |
| "expired_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "invoice_id": { | |
| "type": "string" | |
| }, | |
| "invoice_url": { | |
| "type": "string" | |
| }, | |
| "mayar_transaction_id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "transaction_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.RegisterAcademyPaymentActionRequiredResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.RegisterAcademyPaymentActionRequiredData" | |
| }, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "meta_data": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.RegisterEventPaymentActionRequiredData": { | |
| "type": "object", | |
| "properties": { | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "amount": { | |
| "type": "number" | |
| }, | |
| "event_id": { | |
| "type": "string" | |
| }, | |
| "expired_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "invoice_id": { | |
| "type": "string" | |
| }, | |
| "invoice_url": { | |
| "type": "string" | |
| }, | |
| "mayar_transaction_id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "transaction_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.RegisterEventPaymentActionRequiredResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.RegisterEventPaymentActionRequiredData" | |
| }, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "meta_data": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.RepairQuestionStoragePathResponse": { | |
| "type": "object", | |
| "properties": { | |
| "updated_rows": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.ResetPasswordRequest": { | |
| "type": "object", | |
| "required": [ | |
| "new_password", | |
| "token" | |
| ], | |
| "properties": { | |
| "new_password": { | |
| "type": "string" | |
| }, | |
| "token": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.SignInRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email_or_username", | |
| "password" | |
| ], | |
| "properties": { | |
| "email_or_username": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SignUpRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email", | |
| "password", | |
| "username" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-any": { | |
| "type": "object", | |
| "properties": { | |
| "data": {}, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_dto_AdminEventResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.AdminEventResponse" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_dto_AdminExamResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.AdminExamResponse" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_dto_EventScoreboardItem": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.EventScoreboardItem" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_dto_ExamScoreboardItem": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.ExamScoreboardItem" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_dto_UserResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.UserResponse" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_Academy": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Academy" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_AcademyAssign": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyAssign" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_AcademyContent": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyContent" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_AcademyExamAssign": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyExamAssign" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_AcademyMaterial": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyMaterial" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_Account": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Account" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_EventAssign": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.EventAssign" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_EventExamAssign": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.EventExamAssign" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_EventExamProctoringLogs": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.EventExamProctoringLogs" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_Events": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Events" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_Exam": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Exam" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_RegionCity": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.RegionCity" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_RegionProvince": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.RegionProvince" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-array_models_Result": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Result" | |
| } | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_AcademyMiniDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.AcademyMiniDetailResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_AccountDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.AccountDetailResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_AdminExamReviewResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.AdminExamReviewResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_AnswerEventExamRequest": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.AnswerEventExamRequest" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_AuthenticatedUser": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.AuthenticatedUser" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_CreateEmailVerificationResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.CreateEmailVerificationResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_CreateUserRequest": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.CreateUserRequest" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_EventDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.EventDetailResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_MaterialDetailResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.MaterialDetailResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_ProblemSetInjectResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.ProblemSetInjectResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_RepairQuestionStoragePathResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.RepairQuestionStoragePathResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-dto_UserResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/dto.UserResponse" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-map_string_bool": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/map_string_bool" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_Academy": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Academy" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_AcademyAssign": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.AcademyAssign" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_AcademyContent": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.AcademyContent" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_AcademyExamAttempt": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.AcademyExamAttempt" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_AcademyMaterial": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.AcademyMaterial" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_Account": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_EventAssign": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.EventAssign" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_EventExamAttempt": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.EventExamAttempt" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_EventExamProctoringLogs": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.EventExamProctoringLogs" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_Events": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Events" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_Exam": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Exam" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_Options": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Options" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-models_Result": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Result" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.SuccessResponse-string": { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "string" | |
| }, | |
| "message": {}, | |
| "meta_data": {}, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateAcademyRequest": { | |
| "type": "object", | |
| "properties": { | |
| "description": { | |
| "type": "string" | |
| }, | |
| "image_url": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateAccountDetailRequest": { | |
| "type": "object", | |
| "properties": { | |
| "avatar": { | |
| "type": "string" | |
| }, | |
| "city": { | |
| "type": "string" | |
| }, | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "phone_number": { | |
| "type": "string" | |
| }, | |
| "province": { | |
| "type": "string" | |
| }, | |
| "school_name": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateContentRequest": { | |
| "type": "object", | |
| "properties": { | |
| "contents": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateEventRequest": { | |
| "type": "object", | |
| "properties": { | |
| "end_event": { | |
| "type": "string" | |
| }, | |
| "img_banner": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "overview": { | |
| "type": "string" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "start_event": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateMaterialRequest": { | |
| "type": "object", | |
| "properties": { | |
| "description": { | |
| "type": "string" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateProblemSetRequest": { | |
| "type": "object", | |
| "properties": { | |
| "description": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateQuestionRequest": { | |
| "type": "object", | |
| "properties": { | |
| "ans_key": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "corr_mark": { | |
| "type": "number" | |
| }, | |
| "incorr_mark": { | |
| "type": "number" | |
| }, | |
| "null_mark": { | |
| "type": "number" | |
| }, | |
| "options": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "question": { | |
| "type": "string" | |
| }, | |
| "solution": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateResultRequest": { | |
| "type": "object", | |
| "required": [ | |
| "final_score" | |
| ], | |
| "properties": { | |
| "final_score": { | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "dto.UpdateUserRequest": { | |
| "type": "object", | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string" | |
| }, | |
| "role": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UpdateUserRoleRequest": { | |
| "type": "object", | |
| "required": [ | |
| "role" | |
| ], | |
| "properties": { | |
| "role": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UserResponse": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": {}, | |
| "email": { | |
| "type": "string" | |
| }, | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "is_detail_completed": { | |
| "type": "boolean" | |
| }, | |
| "is_email_verified": { | |
| "type": "boolean" | |
| }, | |
| "role": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.ValidateVerifyEmailRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email", | |
| "token" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "token": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "map_string_bool": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "boolean" | |
| } | |
| }, | |
| "models.Academy": { | |
| "type": "object", | |
| "properties": { | |
| "academy_progress": { | |
| "$ref": "#/definitions/models.AcademyProgress" | |
| }, | |
| "code": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "image_url": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "materials": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyMaterial" | |
| } | |
| }, | |
| "materials_count": { | |
| "type": "integer" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "register_status": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyAssign": { | |
| "type": "object", | |
| "properties": { | |
| "academy": { | |
| "$ref": "#/definitions/models.Academy" | |
| }, | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyContent": { | |
| "type": "object", | |
| "properties": { | |
| "academy_content_progress": { | |
| "$ref": "#/definitions/models.AcademyContentProgress" | |
| }, | |
| "contents": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "material_id": { | |
| "type": "string" | |
| }, | |
| "order": { | |
| "type": "integer" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyContentProgress": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "completed_at": { | |
| "type": "string" | |
| }, | |
| "content_id": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "material_id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyExamAnswer": { | |
| "type": "object", | |
| "properties": { | |
| "answer": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "exam_attempt": { | |
| "$ref": "#/definitions/models.AcademyExamAttempt" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "id_attempt": { | |
| "type": "string" | |
| }, | |
| "id_question": { | |
| "type": "string" | |
| }, | |
| "score": { | |
| "type": "number" | |
| }, | |
| "updated_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyExamAssign": { | |
| "type": "object", | |
| "properties": { | |
| "academy": { | |
| "$ref": "#/definitions/models.Academy" | |
| }, | |
| "exam": { | |
| "$ref": "#/definitions/models.Exam" | |
| }, | |
| "id_academy": { | |
| "type": "string" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "id_exam_academy_assign": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyExamAttempt": { | |
| "type": "object", | |
| "properties": { | |
| "academy": { | |
| "$ref": "#/definitions/models.Academy" | |
| }, | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "answers": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyExamAnswer" | |
| } | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "due_at": { | |
| "type": "string" | |
| }, | |
| "exam": { | |
| "$ref": "#/definitions/models.Exam" | |
| }, | |
| "id_academy": { | |
| "type": "string" | |
| }, | |
| "id_account": { | |
| "type": "string" | |
| }, | |
| "id_attempt": { | |
| "type": "string" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "mark": { | |
| "type": "number" | |
| }, | |
| "questions": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Questions" | |
| } | |
| }, | |
| "remaining_time": { | |
| "type": "integer" | |
| }, | |
| "submitted": { | |
| "type": "boolean" | |
| } | |
| } | |
| }, | |
| "models.AcademyMaterial": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "academy_material_progress": { | |
| "$ref": "#/definitions/models.AcademyMaterialProgress" | |
| }, | |
| "contents": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.AcademyContent" | |
| } | |
| }, | |
| "contents_count": { | |
| "type": "integer" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "order": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyMaterialProgress": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "completed_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "material_id": { | |
| "type": "string" | |
| }, | |
| "progress": { | |
| "type": "number" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "total_completed_contents": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "models.AcademyPaymentTransaction": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "amount": { | |
| "type": "number" | |
| }, | |
| "expired_at": { | |
| "type": "string" | |
| }, | |
| "external_transaction_id": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "invoice_id": { | |
| "type": "string" | |
| }, | |
| "invoice_url": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "transaction_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AcademyProgress": { | |
| "type": "object", | |
| "properties": { | |
| "academy_id": { | |
| "type": "string" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "completed_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "progress": { | |
| "type": "number" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "total_completed_materials": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "models.Account": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "email": { | |
| "type": "string" | |
| }, | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "is_detail_completed": { | |
| "type": "boolean" | |
| }, | |
| "is_email_verified": { | |
| "type": "boolean" | |
| }, | |
| "role": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.AccountDetail": { | |
| "type": "object", | |
| "properties": { | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "avatar": { | |
| "type": "string" | |
| }, | |
| "city": { | |
| "type": "string" | |
| }, | |
| "full_name": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "phone_number": { | |
| "type": "string" | |
| }, | |
| "province": { | |
| "type": "string" | |
| }, | |
| "school_name": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.EventAssign": { | |
| "type": "object", | |
| "properties": { | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "assigned_at": { | |
| "type": "string" | |
| }, | |
| "event": { | |
| "$ref": "#/definitions/models.Events" | |
| }, | |
| "id_account": { | |
| "type": "string" | |
| }, | |
| "id_assign": { | |
| "type": "string" | |
| }, | |
| "id_event": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.EventExamAnswer": { | |
| "type": "object", | |
| "properties": { | |
| "answer": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "exam_attempt": { | |
| "$ref": "#/definitions/models.EventExamAttempt" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "id_attempt": { | |
| "type": "string" | |
| }, | |
| "id_question": { | |
| "type": "string" | |
| }, | |
| "score": { | |
| "type": "number" | |
| }, | |
| "updated_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.EventExamAssign": { | |
| "type": "object", | |
| "properties": { | |
| "event": { | |
| "$ref": "#/definitions/models.Events" | |
| }, | |
| "exam": { | |
| "$ref": "#/definitions/models.Exam" | |
| }, | |
| "id_event": { | |
| "type": "string" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "id_exam_event_assign": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.EventExamAttempt": { | |
| "type": "object", | |
| "properties": { | |
| "account": { | |
| "$ref": "#/definitions/models.Account" | |
| }, | |
| "answers": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.EventExamAnswer" | |
| } | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "due_at": { | |
| "type": "string" | |
| }, | |
| "event": { | |
| "$ref": "#/definitions/models.Events" | |
| }, | |
| "exam": { | |
| "$ref": "#/definitions/models.Exam" | |
| }, | |
| "id_account": { | |
| "type": "string" | |
| }, | |
| "id_attempt": { | |
| "type": "string" | |
| }, | |
| "id_event": { | |
| "type": "string" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "mark": { | |
| "type": "number" | |
| }, | |
| "questions": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.Questions" | |
| } | |
| }, | |
| "remaining_time": { | |
| "type": "integer" | |
| }, | |
| "submitted": { | |
| "type": "boolean" | |
| } | |
| } | |
| }, | |
| "models.EventExamProctoringLogs": { | |
| "type": "object", | |
| "properties": { | |
| "attachement": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "id_account": { | |
| "type": "string" | |
| }, | |
| "id_event": { | |
| "type": "string" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "id_result": { | |
| "type": "string" | |
| }, | |
| "violation_category": { | |
| "type": "string" | |
| }, | |
| "violation_score": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "models.EventPaymentTransaction": { | |
| "type": "object", | |
| "properties": { | |
| "account_id": { | |
| "type": "string" | |
| }, | |
| "amount": { | |
| "type": "number" | |
| }, | |
| "event_id": { | |
| "type": "string" | |
| }, | |
| "expired_at": { | |
| "type": "string" | |
| }, | |
| "external_transaction_id": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "invoice_id": { | |
| "type": "string" | |
| }, | |
| "invoice_url": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "transaction_at": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Events": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "end_event": { | |
| "type": "string" | |
| }, | |
| "event_code": { | |
| "type": "string" | |
| }, | |
| "id_event": { | |
| "type": "string" | |
| }, | |
| "img_banner": { | |
| "type": "string" | |
| }, | |
| "is_public": { | |
| "type": "boolean" | |
| }, | |
| "overview": { | |
| "type": "string" | |
| }, | |
| "price": { | |
| "type": "number" | |
| }, | |
| "register_status": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "start_event": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Exam": { | |
| "type": "object", | |
| "properties": { | |
| "configuration": { | |
| "$ref": "#/definitions/models.ExamConfiguration" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "duration": { | |
| "type": "integer" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "proctoring": { | |
| "$ref": "#/definitions/models.ExamProctoring" | |
| }, | |
| "randomize": { | |
| "type": "integer" | |
| }, | |
| "slug": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.ExamConfiguration": { | |
| "type": "object", | |
| "properties": { | |
| "allow_retake": { | |
| "type": "boolean" | |
| }, | |
| "allow_review": { | |
| "type": "boolean" | |
| }, | |
| "enable_timer": { | |
| "type": "boolean" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "id_result": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.ExamProctoring": { | |
| "type": "object", | |
| "properties": { | |
| "disable_copy_paste": { | |
| "type": "boolean" | |
| }, | |
| "enable_exam_browser": { | |
| "type": "boolean" | |
| }, | |
| "enable_eye_tracking": { | |
| "type": "boolean" | |
| }, | |
| "enable_full_screen": { | |
| "type": "boolean" | |
| }, | |
| "enable_tab_block": { | |
| "type": "boolean" | |
| }, | |
| "enable_vad": { | |
| "type": "boolean" | |
| }, | |
| "enable_webcam": { | |
| "type": "boolean" | |
| }, | |
| "id_exam": { | |
| "type": "string" | |
| }, | |
| "id_result": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.OptionCategory": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "integer" | |
| }, | |
| "option_name": { | |
| "type": "string" | |
| }, | |
| "option_slug": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.OptionValues": { | |
| "type": "object", | |
| "properties": { | |
| "id": { | |
| "type": "integer" | |
| }, | |
| "option_category_id": { | |
| "type": "integer" | |
| }, | |
| "option_value": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Options": { | |
| "type": "object", | |
| "properties": { | |
| "option_category": { | |
| "$ref": "#/definitions/models.OptionCategory" | |
| }, | |
| "option_values": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.OptionValues" | |
| } | |
| } | |
| } | |
| }, | |
| "models.ProblemSet": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deleted_at": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "id_problem_set": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Questions": { | |
| "type": "object", | |
| "properties": { | |
| "ans_key": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "corr_mark": { | |
| "type": "number" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "id_problem_set": { | |
| "type": "string" | |
| }, | |
| "id_question": { | |
| "type": "string" | |
| }, | |
| "incorr_mark": { | |
| "type": "number" | |
| }, | |
| "null_mark": { | |
| "type": "number" | |
| }, | |
| "options": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "problem_set": { | |
| "$ref": "#/definitions/models.ProblemSet" | |
| }, | |
| "question": { | |
| "type": "string" | |
| }, | |
| "solution": { | |
| "type": "string" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.RegionCity": { | |
| "type": "object", | |
| "properties": { | |
| "code": { | |
| "type": "string" | |
| }, | |
| "full_code": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "integer" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "province_id": { | |
| "type": "integer" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.RegionProvince": { | |
| "type": "object", | |
| "properties": { | |
| "code": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "integer" | |
| }, | |
| "name": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Result": { | |
| "type": "object", | |
| "properties": { | |
| "exam_attempt": { | |
| "$ref": "#/definitions/models.EventExamAttempt" | |
| }, | |
| "final_score": { | |
| "type": "number" | |
| }, | |
| "id_attempt": { | |
| "type": "string" | |
| }, | |
| "id_result": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| }, | |
| "securityDefinitions": { | |
| "BearerAuth": { | |
| "type": "apiKey", | |
| "name": "Authorization", | |
| "in": "header" | |
| } | |
| } | |
| } | |