// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "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": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/api/admin/auth/assign": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Assign worker role to a user (Admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Assign Worker Role", "parameters": [ { "description": "Assign Worker Role Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.AssignWorkerRoleRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "403": { "description": "Forbidden", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/admin/report": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all reports with optional status filter and pagination", "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Get All Reports (Admin)", "parameters": [ { "type": "string", "description": "Filter by status (pending, assigned, finish by worker, verified, complete)", "name": "status", "in": "query" }, { "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/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/detail": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get complete report details by report ID", "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Get Full Report Detail (Admin)", "parameters": [ { "type": "string", "description": "Report ID", "name": "report_id", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.FullReportDetailResponse" } }, "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/admin/worker": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new worker account (Admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Create Worker", "parameters": [ { "description": "Create Worker Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.CreateWorkerRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.WorkerResponse" } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/admin/worker/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get worker details by ID (Admin only)", "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Get Worker By ID", "parameters": [ { "type": "string", "description": "Worker ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.WorkerResponse" } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update worker details (Admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Update Worker", "parameters": [ { "type": "string", "description": "Worker ID", "name": "id", "in": "path", "required": true }, { "description": "Update Worker Request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.UpdateWorkerRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.WorkerResponse" } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a worker (Admin only)", "produces": [ "application/json" ], "tags": [ "Admin" ], "summary": "Delete Worker", "parameters": [ { "type": "string", "description": "Worker ID", "name": "id", "in": "path", "required": true } ], "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/achievements": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all achievements with unlock status for the logged-in user", "produces": [ "application/json" ], "tags": [ "Achievements" ], "summary": "Get All Achievements", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.AchievementListResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/achievements/check": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Trigger achievement check and unlock any new achievements", "produces": [ "application/json" ], "tags": [ "Achievements" ], "summary": "Check Achievements", "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/dto.NewAchievementResponse" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/achievements/unlocked": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get only unlocked achievements for the logged-in user", "produces": [ "application/json" ], "tags": [ "Achievements" ], "summary": "Get Unlocked Achievements", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.AchievementListResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/leaderboard": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get top users by XP (default limit 10)", "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Get Leaderboard", "parameters": [ { "type": "integer", "description": "Limit (default 10)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/dto.LeaderboardEntry" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/notifications": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get paginated notifications for authenticated user", "produces": [ "application/json" ], "tags": [ "Notification" ], "summary": "Get User Notifications", "parameters": [ { "type": "integer", "description": "Page number (default: 1)", "name": "page", "in": "query" }, { "type": "integer", "description": "Items per page (default: 20)", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.NotificationListResponse" } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/notifications/read": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Mark a specific notification as read", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Notification" ], "summary": "Mark Notification as Read", "parameters": [ { "description": "Notification ID", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/dto.MarkNotificationReadRequest" } } ], "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/notifications/read-all": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Mark all notifications as read for authenticated user", "produces": [ "application/json" ], "tags": [ "Notification" ], "summary": "Mark All Notifications as Read", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/notifications/unread-count": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get count of unread notifications", "produces": [ "application/json" ], "tags": [ "Notification" ], "summary": "Get Unread Count", "responses": { "200": { "description": "OK", "schema": { "type": "object", "additionalProperties": { "type": "integer", "format": "int64" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/user/rank": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get the logged-in user's rank, level, XP progress", "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Get User Rank", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UserRankResponse" } }, "401": { "description": "Unauthorized", "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/user/report/stats": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get report statistics for the authenticated user", "produces": [ "application/json" ], "tags": [ "User" ], "summary": "Get User Report Stats", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.UserReportStatsResponse" } }, "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/detail": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get assigned report detail for worker", "produces": [ "application/json" ], "tags": [ "Worker" ], "summary": "Get Report Detail", "parameters": [ { "type": "string", "description": "Report ID", "name": "report_id", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.ReportDetailResponse" } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/api/worker/report/assign/image": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get before image URL for assigned report", "produces": [ "application/json" ], "tags": [ "Worker" ], "summary": "Get Report Image", "parameters": [ { "type": "string", "description": "Report ID", "name": "report_id", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/dto.ReportImageResponse" } }, "400": { "description": "Bad Request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Unauthorized", "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.AchievementListResponse": { "type": "object", "properties": { "achievements": { "type": "array", "items": { "$ref": "#/definitions/dto.AchievementResponse" } }, "total_count": { "type": "integer" }, "unlocked_count": { "type": "integer" } } }, "dto.AchievementResponse": { "type": "object", "properties": { "badge_url": { "type": "string" }, "category": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "unlocked": { "type": "boolean" }, "unlocked_at": { "type": "string" }, "xp_reward": { "type": "integer" } } }, "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.AssignWorkerRoleRequest": { "type": "object", "required": [ "worker_id" ], "properties": { "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.CreateWorkerRequest": { "type": "object", "required": [ "email", "fullname", "password", "username" ], "properties": { "email": { "type": "string" }, "fullname": { "type": "string" }, "password": { "type": "string", "minLength": 6 }, "username": { "type": "string" } } }, "dto.FullReportDetailResponse": { "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" }, "user_id": { "type": "string" }, "worker_id": { "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.LeaderboardEntry": { "type": "object", "properties": { "fullname": { "type": "string" }, "level": { "type": "integer" }, "rank": { "type": "integer" }, "rank_name": { "type": "string" }, "total_xp": { "type": "integer" }, "user_id": { "type": "string" } } }, "dto.LoginRequest": { "type": "object", "required": [ "email", "password" ], "properties": { "email": { "type": "string" }, "password": { "type": "string" } } }, "dto.MarkNotificationReadRequest": { "type": "object", "required": [ "notification_id" ], "properties": { "notification_id": { "type": "string" } } }, "dto.NewAchievementResponse": { "type": "object", "properties": { "achievement_id": { "type": "string" }, "badge_url": { "type": "string" }, "description": { "type": "string" }, "name": { "type": "string" }, "xp_reward": { "type": "integer" } } }, "dto.NotificationListResponse": { "type": "object", "properties": { "notifications": { "type": "array", "items": { "$ref": "#/definitions/dto.NotificationResponse" } }, "total": { "type": "integer" }, "unread_count": { "type": "integer" } } }, "dto.NotificationResponse": { "type": "object", "properties": { "created_at": { "type": "string" }, "data": { "type": "string" }, "id": { "type": "string" }, "is_read": { "type": "boolean" }, "message": { "type": "string" }, "title": { "type": "string" }, "type": { "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.ReportDetailResponse": { "type": "object", "properties": { "admin_notes": { "type": "string" }, "before_image_url": { "type": "string" }, "deadline": { "type": "string" }, "destruct_class": { "type": "string" }, "road_name": { "type": "string" }, "total_score": { "type": "number" } } }, "dto.ReportImageResponse": { "type": "object", "properties": { "before_image_url": { "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.UpdateWorkerRequest": { "type": "object", "properties": { "email": { "type": "string" }, "fullname": { "type": "string" }, "password": { "type": "string" }, "username": { "type": "string" } } }, "dto.UserRankResponse": { "type": "object", "properties": { "current_xp": { "type": "integer" }, "level": { "type": "integer" }, "next_level": { "type": "integer" }, "progress": { "type": "number" }, "rank": { "type": "integer" }, "rank_name": { "type": "string" }, "total_xp": { "type": "integer" }, "xp_to_next": { "type": "integer" } } }, "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.UserReportStatsResponse": { "type": "object", "properties": { "in_progress": { "type": "integer" }, "total": { "type": "integer" }, "verified": { "type": "integer" } } }, "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" } } }, "dto.WorkerResponse": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "fullname": { "type": "string" }, "id": { "type": "string" }, "username": { "type": "string" }, "verified": { "type": "boolean" } } } }, "securityDefinitions": { "BearerAuth": { "description": "Type \"Bearer\" followed by a space and JWT token.", "type": "apiKey", "name": "Authorization", "in": "header" } } }` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "1.0", Host: "", BasePath: "", Schemes: []string{}, Title: "Dinacom 11.0 Backend API", Description: "Backend service for Dinacom 11.0 Hackathon", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }