// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "contact": { "name": "Abdan Hafidz", "email": "admin@example.com" }, "license": { "name": "MIT", "url": "https://opensource.org/licenses/MIT" }, "version": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.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" } } }` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0.0", Host: "lifedebugger-quzuu-api-test.hf.space", BasePath: "/", Schemes: []string{"https"}, Title: "Go Boilerplate API", Description: "Backend API documentation", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }