| { | |
| "swagger": "2.0", | |
| "info": { | |
| "description": "Backend service for Dinacom 11.0 Hackathon", | |
| "title": "Dinacom 11.0 Backend API", | |
| "termsOfService": "http://swagger.io/terms/", | |
| "contact": { | |
| "name": "API Support", | |
| "email": "support@dinacom.com" | |
| }, | |
| "license": { | |
| "name": "Apache 2.0", | |
| "url": "http://www.apache.org/licenses/LICENSE-2.0.html" | |
| }, | |
| "version": "1.0" | |
| }, | |
| "host": "localhost:8080", | |
| "basePath": "/", | |
| "paths": { | |
| "/api/admin/report/assign": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get all workers with assigned reports", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin" | |
| ], | |
| "summary": "Get Assigned Workers", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.AssignedWorkerResponse" | |
| } | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "patch": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Admin assigns a worker to a report", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin" | |
| ], | |
| "summary": "Assign Worker to Report", | |
| "parameters": [ | |
| { | |
| "description": "Assign Worker Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.AssignWorkerRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/admin/report/verify": { | |
| "patch": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Admin verifies a report with status 'Finish by Worker' to 'finished'", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin" | |
| ], | |
| "summary": "Verify Report by Admin", | |
| "parameters": [ | |
| { | |
| "description": "Verify Report Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.VerifyReportRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/admin/login": { | |
| "post": { | |
| "description": "Login for admins", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Login Admin", | |
| "parameters": [ | |
| { | |
| "description": "Login Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.LoginRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.AuthResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/admin/users": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get all users (Admin only)", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin" | |
| ], | |
| "summary": "Get All Users", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.UserResponse" | |
| } | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/admin/workers": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get all workers (Admin only)", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Admin" | |
| ], | |
| "summary": "Get All Workers", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.UserResponse" | |
| } | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/google": { | |
| "post": { | |
| "description": "Authenticate with Google ID token and get JWT", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Google Authentication", | |
| "parameters": [ | |
| { | |
| "description": "Google Auth Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.GoogleAuthRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.GoogleAuthResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/me": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get current user's profile", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Get Profile", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.UserResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/user/login": { | |
| "post": { | |
| "description": "Login for users", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Login User", | |
| "parameters": [ | |
| { | |
| "description": "Login Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.LoginRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.AuthResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/user/register": { | |
| "post": { | |
| "description": "Register a new user with email verification via OTP", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Register a new user", | |
| "parameters": [ | |
| { | |
| "description": "Register Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.RegisterRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/user/verify-otp": { | |
| "post": { | |
| "description": "Verify OTP to activate user account and get access token", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Verify OTP", | |
| "parameters": [ | |
| { | |
| "description": "Verify OTP Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.VerifyOTPRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.AuthResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/auth/worker/login": { | |
| "post": { | |
| "description": "Login for workers", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Auth" | |
| ], | |
| "summary": "Login Worker", | |
| "parameters": [ | |
| { | |
| "description": "Login Request", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/dto.LoginRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.AuthResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/get_report": { | |
| "get": { | |
| "description": "Get all completed reports with non-good destruct class", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Report" | |
| ], | |
| "summary": "Get Reports", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.ReportLocationResponse" | |
| } | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/user/report": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Submit a new report with image and location data", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Report" | |
| ], | |
| "summary": "Create Report", | |
| "parameters": [ | |
| { | |
| "type": "file", | |
| "description": "Image file (JPG, PNG, JPEG, max 32MB)", | |
| "name": "files", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "default": "{\"longitude\": 106.816666, \"latitude\": -6.200000, \"road_name\": \"Jalan Sudirman\", \"description\": \"Lubang besar di tengah jalan\"}", | |
| "description": "JSON data", | |
| "name": "json", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.ReportResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/user/report/me": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get all reports created by the logged-in user with pagination", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "User" | |
| ], | |
| "summary": "Get User's Reports", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.PaginatedReportsResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/worker/report": { | |
| "patch": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Worker uploads after image and marks report as finished", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Worker" | |
| ], | |
| "summary": "Finish Report by Worker", | |
| "parameters": [ | |
| { | |
| "type": "file", | |
| "description": "After image file", | |
| "name": "files", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "default": "{\"report_id\": \"uuid-here\"}", | |
| "description": "JSON data", | |
| "name": "json", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/worker/report/assign/me": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get all reports assigned to the logged-in worker with pagination", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Worker" | |
| ], | |
| "summary": "Get Worker's Assigned Reports", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.PaginatedReportsResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/worker/report/history/me": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Get worker's completed reports with pagination and status filter", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "Worker" | |
| ], | |
| "summary": "Get Worker's History", | |
| "parameters": [ | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Page number", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 10, | |
| "description": "Items per page", | |
| "name": "limit", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "boolean", | |
| "default": false, | |
| "description": "True: finished, False: Finish by Worker", | |
| "name": "verify_admin", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/dto.PaginatedReportsResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "definitions": { | |
| "dto.AssignWorkerRequest": { | |
| "type": "object", | |
| "required": [ | |
| "report_id", | |
| "worker_id" | |
| ], | |
| "properties": { | |
| "admin_notes": { | |
| "type": "string" | |
| }, | |
| "deadline": { | |
| "type": "string" | |
| }, | |
| "report_id": { | |
| "type": "string" | |
| }, | |
| "worker_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AssignedWorkerResponse": { | |
| "type": "object", | |
| "properties": { | |
| "latitude": { | |
| "type": "number" | |
| }, | |
| "longitude": { | |
| "type": "number" | |
| }, | |
| "road_name": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "worker_name": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.AuthResponse": { | |
| "type": "object", | |
| "properties": { | |
| "token": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.GoogleAuthRequest": { | |
| "type": "object", | |
| "required": [ | |
| "idToken" | |
| ], | |
| "properties": { | |
| "idToken": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.GoogleAuthResponse": { | |
| "type": "object", | |
| "properties": { | |
| "token": { | |
| "type": "string" | |
| }, | |
| "user": { | |
| "$ref": "#/definitions/dto.GoogleUserDetails" | |
| } | |
| } | |
| }, | |
| "dto.GoogleUserDetails": { | |
| "type": "object", | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "fullname": { | |
| "type": "string" | |
| }, | |
| "isNewUser": { | |
| "type": "boolean" | |
| } | |
| } | |
| }, | |
| "dto.LoginRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email", | |
| "password" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.PaginatedReportsResponse": { | |
| "type": "object", | |
| "properties": { | |
| "limit": { | |
| "type": "integer" | |
| }, | |
| "page": { | |
| "type": "integer" | |
| }, | |
| "reports": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/dto.UserReportResponse" | |
| } | |
| }, | |
| "total_count": { | |
| "type": "integer" | |
| }, | |
| "total_pages": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "dto.RegisterRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email", | |
| "fullname", | |
| "password", | |
| "username" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "fullname": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string", | |
| "minLength": 6 | |
| }, | |
| "username": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.ReportLocationResponse": { | |
| "type": "object", | |
| "properties": { | |
| "destruct_class": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "latitude": { | |
| "type": "number" | |
| }, | |
| "longitude": { | |
| "type": "number" | |
| }, | |
| "total_score": { | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "dto.ReportResponse": { | |
| "type": "object", | |
| "properties": { | |
| "after_image_url": { | |
| "type": "string" | |
| }, | |
| "before_image_url": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "destruct_class": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "latitude": { | |
| "type": "number" | |
| }, | |
| "location_score": { | |
| "type": "number" | |
| }, | |
| "longitude": { | |
| "type": "number" | |
| }, | |
| "road_name": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "total_score": { | |
| "type": "number" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.UserReportResponse": { | |
| "type": "object", | |
| "properties": { | |
| "admin_notes": { | |
| "type": "string" | |
| }, | |
| "after_image_url": { | |
| "type": "string" | |
| }, | |
| "before_image_url": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "deadline": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "destruct_class": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "latitude": { | |
| "type": "number" | |
| }, | |
| "location_score": { | |
| "type": "number" | |
| }, | |
| "longitude": { | |
| "type": "number" | |
| }, | |
| "road_name": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "total_score": { | |
| "type": "number" | |
| } | |
| } | |
| }, | |
| "dto.UserResponse": { | |
| "type": "object", | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "fullname": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "role": { | |
| "type": "string" | |
| }, | |
| "username": { | |
| "type": "string" | |
| }, | |
| "verified": { | |
| "type": "boolean" | |
| } | |
| } | |
| }, | |
| "dto.VerifyOTPRequest": { | |
| "type": "object", | |
| "required": [ | |
| "email", | |
| "otp" | |
| ], | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "otp": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "dto.VerifyReportRequest": { | |
| "type": "object", | |
| "required": [ | |
| "report_id" | |
| ], | |
| "properties": { | |
| "report_id": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| }, | |
| "securityDefinitions": { | |
| "BearerAuth": { | |
| "description": "Type \"Bearer\" followed by a space and JWT token.", | |
| "type": "apiKey", | |
| "name": "Authorization", | |
| "in": "header" | |
| } | |
| } | |
| } |