// 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", "url": "http://www.swagger.io/support", "email": "support@swagger.io" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/auth/forgot-password": { "post": { "description": "Initiate password recovery process for a user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Handle forgotten password", "parameters": [ { "description": "Forgot Password request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.ForgotPasswordDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/google/callback": { "get": { "description": "Receives the auth code from Google, exchanges it for tokens, creates/logs in the user, and redirects back to the frontend with application tokens.", "tags": [ "Auth" ], "summary": "Handle Google OAuth2 callback", "parameters": [ { "type": "string", "description": "Security state string", "name": "state", "in": "query", "required": true }, { "type": "string", "description": "Authorization code from Google", "name": "code", "in": "query", "required": true } ], "responses": { "302": { "description": "Redirect to Frontend with JWTs", "schema": { "type": "string" } }, "401": { "description": "Invalid state", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/google/login": { "get": { "description": "Generates a state string, sets it in a cookie, and redirects the user to Google's consent page.", "tags": [ "Auth" ], "summary": "Initiate Google OAuth2 login", "responses": { "302": { "description": "Redirect to Google", "schema": { "type": "string" } } } } }, "/auth/logout": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Logout current user and revoke tokens", "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Logout user", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/refresh": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Generate a new access token using a valid refresh token from context", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Refresh session tokens", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "401": { "description": "Unauthorized or expired refresh token", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/signin": { "post": { "description": "Authenticate user credentials and return access/refresh tokens", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Sign in a user", "parameters": [ { "description": "Sign In credentials", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.SignInDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "401": { "description": "Invalid credentials", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/signup": { "post": { "description": "Create a new user account in the system", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Register a new user", "parameters": [ { "description": "Sign Up details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.SignUpDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/token/create": { "post": { "description": "Request a new token for specific actions like email confirmation", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Generate a new verification token", "parameters": [ { "description": "Token creation request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.CreateTokenDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/auth/token/verify": { "post": { "description": "Validate an OTP or email verification token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Auth" ], "summary": "Verify a security token", "parameters": [ { "description": "Token verification data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.VerifyTokenDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/chatbot/chat": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Ask a history question based on project context or global knowledge using RAG", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Chatbot" ], "summary": "Ask the AI chatbot", "parameters": [ { "description": "Chatbot query", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.ChatbotDto" } } ], "responses": { "200": { "description": "Successful response with AI answer", "schema": { "allOf": [ { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" }, { "type": "object", "properties": { "data": { "type": "string" } } } ] } }, "400": { "description": "Invalid request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/entities": { "get": { "description": "Search entities with cursor pagination", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Search entities", "parameters": [ { "type": "string", "name": "cursor", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "maxLength": 255, "type": "string", "name": "name", "in": "query" }, { "type": "string", "name": "project_id", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/entities/slug/exists": { "get": { "description": "Check if a given slug already exists for entities", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Check entity slug existence", "parameters": [ { "type": "string", "description": "Slug to check", "name": "slug", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/entities/slug/{slug}": { "get": { "description": "Get detailed information about a specific entity by its unique slug", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Get entity by slug", "parameters": [ { "type": "string", "description": "Entity Slug", "name": "slug", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/entities/{id}": { "get": { "description": "Get detailed information about a specific entity", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Entities" ], "summary": "Get entity by ID", "parameters": [ { "type": "string", "description": "Entity ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/geometries": { "get": { "description": "Search geometries with cursor pagination and spatial filtering", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Geometries" ], "summary": "Search geometries", "parameters": [ { "type": "string", "name": "entity_id", "in": "query" }, { "maximum": 90, "minimum": -90, "type": "number", "name": "max_lat", "in": "query", "required": true }, { "maximum": 180, "minimum": -180, "type": "number", "name": "max_lng", "in": "query", "required": true }, { "maximum": 90, "minimum": -90, "type": "number", "name": "min_lat", "in": "query", "required": true }, { "maximum": 180, "minimum": -180, "type": "number", "name": "min_lng", "in": "query", "required": true }, { "type": "string", "name": "project_id", "in": "query" }, { "type": "integer", "name": "time", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/geometries/{id}": { "get": { "description": "Get detailed information about a specific geometry", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Geometries" ], "summary": "Get geometry by ID", "parameters": [ { "type": "string", "description": "Geometry ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/historian/application": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get list of historian applications with filters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Historian Application" ], "summary": "Search historian applications", "parameters": [ { "type": "string", "name": "created_from", "in": "query" }, { "type": "string", "name": "created_to", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "name": "order", "in": "query" }, { "minimum": 1, "type": "integer", "name": "page", "in": "query" }, { "type": "string", "name": "reviewed_by", "in": "query" }, { "maxLength": 200, "minLength": 2, "type": "string", "name": "search", "in": "query" }, { "enum": [ "id", "created_at", "reviewed_at", "status" ], "type": "string", "name": "sort", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "statuses", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "user_ids", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "verify_types", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Submit application to become historian", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Historian Application" ], "summary": "Create historian application", "parameters": [ { "description": "Application data", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.CreateUserVerificationDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/historian/application/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get historian application detail", "produces": [ "application/json" ], "tags": [ "Historian Application" ], "summary": "Get application by ID", "parameters": [ { "type": "string", "description": "Verification ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete historian application", "produces": [ "application/json" ], "tags": [ "Historian Application" ], "summary": "Delete application", "parameters": [ { "type": "string", "description": "Verification ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/historian/application/{id}/status": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Approve or reject historian application", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Historian Application" ], "summary": "Update application status", "parameters": [ { "type": "string", "description": "Verification ID", "name": "id", "in": "path", "required": true }, { "description": "Status update", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.UpdateVerificationStatusDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/media": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Search media with filters, pagination", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Search media", "parameters": [ { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "minimum": 0, "type": "integer", "name": "max_size", "in": "query" }, { "maxLength": 100, "type": "string", "name": "mime_type", "in": "query" }, { "minimum": 0, "type": "integer", "name": "min_size", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "name": "order", "in": "query" }, { "minimum": 1, "type": "integer", "name": "page", "in": "query" }, { "maxLength": 200, "minLength": 2, "type": "string", "name": "search", "in": "query" }, { "enum": [ "id", "created_at", "updated_at", "size", "original_name", "storage_key", "mime_type" ], "type": "string", "name": "sort", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "user_ids", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.PaginatedResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete multiple media files by IDs", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Delete media", "parameters": [ { "description": "Media IDs to delete", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.MediaBulkDeleteDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/media/presigned": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Generate a presigned URL for direct upload to storage", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Generate presigned URL", "parameters": [ { "type": "string", "name": "content_type", "in": "query", "required": true }, { "type": "string", "name": "fileName", "in": "query", "required": true }, { "type": "integer", "name": "size", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/media/presigned/complete": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Confirm that upload via presigned URL is completed", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Confirm presigned upload", "parameters": [ { "description": "Request body", "name": "data", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.PreSignedCompleteDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/media/upload": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Upload media file through server", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Upload media (server-side)", "parameters": [ { "type": "file", "description": "Upload file", "name": "file", "in": "formData", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/media/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve a media file by its ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Get media by ID", "parameters": [ { "type": "string", "description": "Media ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a media file by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Media" ], "summary": "Delete media", "parameters": [ { "type": "string", "description": "Media ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Search and filter projects with pagination", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Search projects", "parameters": [ { "type": "string", "name": "created_from", "in": "query" }, { "type": "string", "name": "created_to", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "name": "order", "in": "query" }, { "minimum": 1, "type": "integer", "name": "page", "in": "query" }, { "maxLength": 200, "type": "string", "name": "search", "in": "query" }, { "enum": [ "created_at", "updated_at", "title" ], "type": "string", "name": "sort", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "statuses", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "user_ids", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.PaginatedResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a project for the current authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Create a new project", "parameters": [ { "description": "Project Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.CreateProjectDto" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve project details by specific ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Get project by ID", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update project properties (Title, Description, Status)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Update a project", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "description": "Project Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.UpdateProjectDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete project by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Delete a project", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects/{id}/change-owner": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Transfer project ownership to an existing member. Only the current owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Transfer project ownership", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "description": "New Owner Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.ChangeOwnerDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects/{id}/commits": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve all commits for a specific project", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Commits" ], "summary": "Get project commits", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new commit and update project's latest commit ID. Only owner/editor allowed.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Commits" ], "summary": "Create a new commit", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "description": "Commit Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.CreateCommitDto" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects/{id}/commits/restore": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Update project's latest commit ID to an older commit. Only owner/editor allowed.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Commits" ], "summary": "Restore project to a commit", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "description": "Restore Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.RestoreCommitDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects/{id}/members": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Invite a user to the project with a specific role (EDITOR or VIEWER). Only project owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Add a member to project", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "description": "Member Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.AddProjectMemberDto" } } ], "responses": { "201": { "description": "Created", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "409": { "description": "Conflict", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/projects/{id}/members/{userId}": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Change a member's role in the project. Only project owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Update member role", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Member User ID", "name": "userId", "in": "path", "required": true }, { "description": "Role Data", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.UpdateProjectMemberDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Remove a user from the project. Only project owner can do this.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Projects" ], "summary": "Remove a member from project", "parameters": [ { "type": "string", "description": "Project ID", "name": "id", "in": "path", "required": true }, { "type": "string", "description": "Member User ID", "name": "userId", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "403": { "description": "Forbidden", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/raster-tiles/metadata": { "get": { "description": "Retrieve map metadata", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Tile" ], "summary": "Get raster tile metadata", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/raster-tiles/{z}/{x}/{y}": { "get": { "description": "Fetch vector or raster map tile data by Z, X, Y coordinates", "produces": [ "application/octet-stream" ], "tags": [ "Tile" ], "summary": "Get a map raster tile", "parameters": [ { "type": "integer", "description": "Zoom level (0-22)", "name": "z", "in": "path", "required": true }, { "type": "integer", "description": "X coordinate", "name": "x", "in": "path", "required": true }, { "type": "integer", "description": "Y coordinate", "name": "y", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "file" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/roles": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Get a list of all roles in the system", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Roles" ], "summary": "Get all roles", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/roles/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Get detailed information about a specific role", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Roles" ], "summary": "Get role by ID", "parameters": [ { "type": "string", "description": "Role ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/submissions": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get a list of submissions with filters", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Submission" ], "summary": "Search submissions", "parameters": [ { "type": "string", "name": "created_from", "in": "query" }, { "type": "string", "name": "created_to", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "name": "order", "in": "query" }, { "minimum": 1, "type": "integer", "name": "page", "in": "query" }, { "type": "string", "name": "project_id", "in": "query" }, { "type": "string", "name": "reviewed_by", "in": "query" }, { "maxLength": 200, "minLength": 2, "type": "string", "name": "search", "in": "query" }, { "enum": [ "id", "created_at", "reviewed_at", "status" ], "type": "string", "name": "sort", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "statuses", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "user_ids", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Submit a new submission for a project commit", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Submission" ], "summary": "Create submission", "parameters": [ { "description": "Submission data", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.CreateSubmissionDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/submissions/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get detailed information of a submission", "produces": [ "application/json" ], "tags": [ "Submission" ], "summary": "Get submission by ID", "parameters": [ { "type": "string", "description": "Submission ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a submission by ID", "produces": [ "application/json" ], "tags": [ "Submission" ], "summary": "Delete submission", "parameters": [ { "type": "string", "description": "Submission ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "401": { "description": "Unauthorized", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/submissions/{id}/status": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Approve or reject a submission", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Submission" ], "summary": "Update submission status", "parameters": [ { "type": "string", "description": "Submission ID", "name": "id", "in": "path", "required": true }, { "description": "Status update data", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.UpdateSubmissionStatusDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/tiles/metadata": { "get": { "description": "Retrieve map metadata", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Tile" ], "summary": "Get tile metadata", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/tiles/{z}/{x}/{y}": { "get": { "description": "Fetch vector or raster map tile data by Z, X, Y coordinates", "produces": [ "application/octet-stream" ], "tags": [ "Tile" ], "summary": "Get a map tile", "parameters": [ { "type": "integer", "description": "Zoom level (0-22)", "name": "z", "in": "path", "required": true }, { "type": "integer", "description": "X coordinate", "name": "x", "in": "path", "required": true }, { "type": "integer", "description": "Y coordinate", "name": "y", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "type": "file" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Search and filter users with pagination (Admin/Mod only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Search users", "parameters": [ { "enum": [ "local", "google", "facebook", "github" ], "type": "string", "name": "auth_provider", "in": "query" }, { "type": "string", "name": "created_from", "in": "query" }, { "type": "string", "name": "created_to", "in": "query" }, { "type": "boolean", "name": "is_deleted", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "enum": [ "asc", "desc" ], "type": "string", "name": "order", "in": "query" }, { "minimum": 1, "type": "integer", "name": "page", "in": "query" }, { "type": "array", "items": { "type": "string" }, "collectionFormat": "csv", "name": "role_ids", "in": "query" }, { "maxLength": 200, "minLength": 2, "type": "string", "name": "search", "in": "query" }, { "enum": [ "id", "created_at", "updated_at", "email", "is_deleted", "auth_provider" ], "type": "string", "name": "sort", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.PaginatedResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new user account with specified roles", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Create a new user (Admin only)", "parameters": [ { "description": "Create User request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.CreateUserDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/current": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the profile information of the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get current user profile", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "put": { "security": [ { "BearerAuth": [] } ], "description": "Update the profile details of the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Update user profile", "parameters": [ { "description": "Update Profile request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.UpdateProfileDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/current/application": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve application list of the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get current user's application", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/current/media": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve media list of the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get current user's media", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/current/password": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the password for the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Change user password", "parameters": [ { "description": "Change Password request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.ChangePasswordDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/current/project": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve project list of the currently authenticated user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get current user's projects", "parameters": [ { "type": "string", "name": "cursor_id", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/{id}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve details of a specific user (Admin/Mod only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user by ID", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Soft delete a user account (Admin/Mod only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Delete a user", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/{id}/application": { "get": { "description": "Retrieve application list by specific user ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user's application by user ID", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/{id}/media": { "get": { "description": "Retrieve media list by specific user ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user's media by user ID", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/{id}/project": { "get": { "description": "Retrieve project list by specific user ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Get user's projects by user ID", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true }, { "type": "string", "name": "cursor_id", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/{id}/restore": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Restore a soft-deleted user account (Admin/Mod only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Restore a deleted user", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/users/{id}/role": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update the role of a user (Admin only)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Users" ], "summary": "Change user role", "parameters": [ { "type": "string", "description": "User ID", "name": "id", "in": "path", "required": true }, { "description": "Change Role request", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/history-api_internal_dtos_request.ChangeRoleDto" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/wikis": { "get": { "description": "Search wikis with cursor pagination", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Wikis" ], "summary": "Search wikis", "parameters": [ { "type": "string", "name": "cursor", "in": "query" }, { "type": "string", "name": "entity_id", "in": "query" }, { "maximum": 100, "minimum": 1, "type": "integer", "name": "limit", "in": "query" }, { "type": "string", "name": "project_id", "in": "query" }, { "maxLength": 1000, "type": "string", "name": "title", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/wikis/slug/exists": { "get": { "description": "Check if a given slug already exists for wikis", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Wikis" ], "summary": "Check wiki slug existence", "parameters": [ { "type": "string", "description": "Slug to check", "name": "slug", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "400": { "description": "Bad Request", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/wikis/slug/{slug}": { "get": { "description": "Get detailed information about a specific wiki by its unique slug", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Wikis" ], "summary": "Get wiki by slug", "parameters": [ { "type": "string", "description": "Wiki Slug", "name": "slug", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } }, "/wikis/{id}": { "get": { "description": "Get detailed information about a specific wiki", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Wikis" ], "summary": "Get wiki by ID", "parameters": [ { "type": "string", "description": "Wiki ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } }, "500": { "description": "Internal Server Error", "schema": { "$ref": "#/definitions/history-api_internal_dtos_response.CommonResponse" } } } } } }, "definitions": { "history-api_internal_dtos_request.AddProjectMemberDto": { "type": "object", "required": [ "role", "user_id" ], "properties": { "role": { "type": "string", "enum": [ "EDITOR", "VIEWER" ] }, "user_id": { "type": "string" } } }, "history-api_internal_dtos_request.BBox": { "type": "object", "required": [ "max_lat", "max_lng", "min_lat", "min_lng" ], "properties": { "max_lat": { "type": "number" }, "max_lng": { "type": "number" }, "min_lat": { "type": "number" }, "min_lng": { "type": "number" } } }, "history-api_internal_dtos_request.ChangeOwnerDto": { "type": "object", "required": [ "new_owner_id" ], "properties": { "new_owner_id": { "type": "string" } } }, "history-api_internal_dtos_request.ChangePasswordDto": { "type": "object", "required": [ "new_password" ], "properties": { "new_password": { "type": "string", "maxLength": 64, "minLength": 8 }, "old_password": { "type": "string", "maxLength": 64, "minLength": 8 } } }, "history-api_internal_dtos_request.ChangeRoleDto": { "type": "object", "required": [ "role_ids" ], "properties": { "role_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } } } }, "history-api_internal_dtos_request.ChatbotDto": { "type": "object", "required": [ "question" ], "properties": { "project_id": { "type": "string" }, "question": { "type": "string" } } }, "history-api_internal_dtos_request.CommitSnapshot": { "type": "object", "properties": { "editor_feature_collection": { "$ref": "#/definitions/history-api_internal_dtos_request.FeatureCollection" }, "entities": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.EntitySnapshot" } }, "entity_wiki": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.EntityWikiLinkSnapshot" } }, "entity_wikis": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.EntityWikiLinkSnapshot" } }, "geometries": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.GeometrySnapshot" } }, "geometry_entity": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.GeometryEntitySnapshot" } }, "wikis": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.WikiSnapshot" } } } }, "history-api_internal_dtos_request.CreateCommitDto": { "type": "object", "required": [ "edit_summary", "snapshot_json" ], "properties": { "edit_summary": { "type": "string", "maxLength": 500 }, "snapshot_json": { "$ref": "#/definitions/history-api_internal_dtos_request.CommitSnapshot" } } }, "history-api_internal_dtos_request.CreateProjectDto": { "type": "object", "required": [ "title" ], "properties": { "description": { "type": "string" }, "status": { "type": "string", "enum": [ "PRIVATE", "PUBLIC", "ARCHIVE" ] }, "title": { "type": "string", "maxLength": 255 } } }, "history-api_internal_dtos_request.CreateSubmissionDto": { "type": "object", "required": [ "commit_id", "project_id" ], "properties": { "commit_id": { "type": "string" }, "content": { "type": "string" }, "project_id": { "type": "string" } } }, "history-api_internal_dtos_request.CreateTokenDto": { "type": "object", "required": [ "email", "token_type" ], "properties": { "email": { "type": "string" }, "token_type": { "enum": [ 1, 2, 3, 4 ], "allOf": [ { "$ref": "#/definitions/history-api_pkg_constants.TokenType" } ] } } }, "history-api_internal_dtos_request.CreateUserDto": { "type": "object", "required": [ "display_name", "email", "password", "role_ids" ], "properties": { "display_name": { "type": "string", "maxLength": 50, "minLength": 2 }, "email": { "type": "string" }, "password": { "type": "string", "maxLength": 64, "minLength": 8 }, "role_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } } } }, "history-api_internal_dtos_request.CreateUserVerificationDto": { "type": "object", "required": [ "content", "verify_type" ], "properties": { "content": { "type": "string", "minLength": 10 }, "media_ids": { "type": "array", "items": { "type": "string" } }, "verify_type": { "type": "string", "enum": [ "ID_CARD", "EDUCATION", "EXPERT", "OTHER" ] } } }, "history-api_internal_dtos_request.EntitySnapshot": { "type": "object", "required": [ "id", "name" ], "properties": { "base_hash": { "type": "string" }, "base_updated_at": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "operation": { "type": "string", "enum": [ "create", "update", "delete", "reference" ] }, "slug": { "type": "string" }, "source": { "type": "string", "enum": [ "inline", "ref" ] }, "status": { "type": "integer", "enum": [ 0, 1 ] }, "time_end": { "type": "number" }, "time_start": { "type": "number" } } }, "history-api_internal_dtos_request.EntityWikiLinkSnapshot": { "type": "object", "required": [ "entity_id", "wiki_id" ], "properties": { "entity_id": { "type": "string" }, "is_deleted": { "type": "integer", "enum": [ 0, 1 ] }, "operation": { "type": "string", "enum": [ "reference", "delete" ] }, "wiki_id": { "type": "string" } } }, "history-api_internal_dtos_request.Feature": { "type": "object", "required": [ "geometry", "properties", "type" ], "properties": { "geometry": { "type": "array", "items": { "type": "integer" } }, "properties": { "$ref": "#/definitions/history-api_internal_dtos_request.FeatureProperties" }, "type": { "type": "string" } } }, "history-api_internal_dtos_request.FeatureCollection": { "type": "object", "required": [ "features", "type" ], "properties": { "features": { "type": "array", "items": { "$ref": "#/definitions/history-api_internal_dtos_request.Feature" } }, "type": { "type": "string" } } }, "history-api_internal_dtos_request.FeatureProperties": { "type": "object", "required": [ "id" ], "properties": { "binding": { "type": "array", "items": { "type": "string" } }, "entity_id": { "type": "string" }, "entity_ids": { "type": "array", "items": { "type": "string" } }, "entity_name": { "type": "string" }, "entity_names": { "type": "array", "items": { "type": "string" } }, "entity_type_id": { "type": "string" }, "geometry_preset": { "type": "string" }, "id": {}, "time_end": { "type": "number" }, "time_start": { "type": "number" }, "type": { "type": "string" } } }, "history-api_internal_dtos_request.ForgotPasswordDto": { "type": "object", "required": [ "email", "new_password", "token_id" ], "properties": { "email": { "type": "string", "maxLength": 255, "minLength": 5 }, "new_password": { "type": "string", "maxLength": 64, "minLength": 8 }, "token_id": { "type": "string" } } }, "history-api_internal_dtos_request.GeometryEntitySnapshot": { "type": "object", "required": [ "entity_id", "geometry_id" ], "properties": { "base_links_hash": { "type": "string" }, "entity_id": { "type": "string" }, "geometry_id": { "type": "string" } } }, "history-api_internal_dtos_request.GeometrySnapshot": { "type": "object", "required": [ "id", "type" ], "properties": { "base_hash": { "type": "string" }, "base_updated_at": { "type": "string" }, "bbox": { "$ref": "#/definitions/history-api_internal_dtos_request.BBox" }, "binding": { "type": "array", "items": { "type": "string" } }, "draw_geometry": { "type": "array", "items": { "type": "integer" } }, "id": { "type": "string" }, "operation": { "type": "string", "enum": [ "create", "update", "delete", "reference" ] }, "source": { "type": "string", "enum": [ "inline", "ref" ] }, "time_end": { "type": "number" }, "time_start": { "type": "number" }, "type": { "type": "string" } } }, "history-api_internal_dtos_request.MediaBulkDeleteDto": { "type": "object", "required": [ "media_ids" ], "properties": { "media_ids": { "type": "array", "items": { "type": "string" } } } }, "history-api_internal_dtos_request.PreSignedCompleteDto": { "type": "object", "required": [ "token_id" ], "properties": { "token_id": { "type": "string" } } }, "history-api_internal_dtos_request.RestoreCommitDto": { "type": "object", "required": [ "commit_id" ], "properties": { "commit_id": { "type": "string" } } }, "history-api_internal_dtos_request.SignInDto": { "type": "object", "required": [ "email", "password" ], "properties": { "email": { "type": "string", "maxLength": 255, "minLength": 5 }, "password": { "type": "string", "maxLength": 64, "minLength": 8 } } }, "history-api_internal_dtos_request.SignUpDto": { "type": "object", "required": [ "display_name", "email", "password", "token_id" ], "properties": { "display_name": { "type": "string", "maxLength": 50, "minLength": 2 }, "email": { "type": "string", "maxLength": 255, "minLength": 5 }, "password": { "type": "string", "maxLength": 64, "minLength": 8 }, "token_id": { "type": "string" } } }, "history-api_internal_dtos_request.UpdateProfileDto": { "type": "object", "properties": { "avatar_url": { "type": "string" }, "bio": { "type": "string", "maxLength": 255 }, "country_code": { "type": "string" }, "display_name": { "type": "string", "maxLength": 50, "minLength": 2 }, "full_name": { "type": "string", "maxLength": 100, "minLength": 2 }, "location": { "type": "string", "maxLength": 100 }, "phone": { "type": "string", "maxLength": 20, "minLength": 8 }, "website": { "type": "string" } } }, "history-api_internal_dtos_request.UpdateProjectDto": { "type": "object", "properties": { "description": { "type": "string" }, "status": { "type": "string", "enum": [ "PRIVATE", "PUBLIC", "ARCHIVE" ] }, "title": { "type": "string", "maxLength": 255 } } }, "history-api_internal_dtos_request.UpdateProjectMemberDto": { "type": "object", "required": [ "role" ], "properties": { "role": { "type": "string", "enum": [ "EDITOR", "VIEWER" ] } } }, "history-api_internal_dtos_request.UpdateSubmissionStatusDto": { "type": "object", "required": [ "review_note", "status" ], "properties": { "review_note": { "type": "string", "minLength": 10 }, "status": { "type": "string" } } }, "history-api_internal_dtos_request.UpdateVerificationStatusDto": { "type": "object", "required": [ "review_note", "status" ], "properties": { "review_note": { "type": "string", "maxLength": 3000, "minLength": 5 }, "status": { "type": "string", "enum": [ "PENDING", "APPROVED", "REJECTED" ] } } }, "history-api_internal_dtos_request.VerifyTokenDto": { "type": "object", "required": [ "email", "token", "token_type" ], "properties": { "email": { "type": "string" }, "token": { "type": "string" }, "token_type": { "enum": [ 1, 2, 3, 4 ], "allOf": [ { "$ref": "#/definitions/history-api_pkg_constants.TokenType" } ] } } }, "history-api_internal_dtos_request.WikiSnapshot": { "type": "object", "required": [ "id", "title" ], "properties": { "doc": { "type": "string" }, "id": { "type": "string" }, "operation": { "type": "string", "enum": [ "create", "update", "delete", "reference" ] }, "slug": { "type": "string" }, "source": { "type": "string", "enum": [ "inline", "ref" ] }, "title": { "type": "string" }, "updated_at": { "type": "string" } } }, "history-api_internal_dtos_response.CommonResponse": { "type": "object", "properties": { "data": {}, "errors": {}, "message": { "type": "string" }, "status": { "type": "boolean" } } }, "history-api_internal_dtos_response.PaginatedResponse": { "type": "object", "properties": { "data": {}, "errors": {}, "message": { "type": "string" }, "pagination": { "$ref": "#/definitions/history-api_internal_dtos_response.PaginationMeta" }, "status": { "type": "boolean" } } }, "history-api_internal_dtos_response.PaginationMeta": { "type": "object", "properties": { "current_page": { "type": "integer" }, "page_size": { "type": "integer" }, "total_pages": { "type": "integer" }, "total_records": { "type": "integer" } } }, "history-api_pkg_constants.TokenType": { "type": "integer", "format": "int32", "enum": [ 1, 2, 3, 4 ], "x-enum-varnames": [ "TokenTypePasswordReset", "TokenTypeEmailVerify", "TokenTypeMagicLink", "TokenTypeUpload" ] } }, "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: "History API", Description: "This is a sample server for History API.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }