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