// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "contact": { "name": "Drexa Support", "url": "https://github.com/get-drexa/drexa" }, "license": { "name": "MIT", "url": "https://opensource.org/licenses/MIT" }, "version": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/accounts": { "post": { "description": "Create a new user account with email and password. Returns the account, user, and authentication tokens.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "accounts" ], "summary": "Register new account", "parameters": [ { "description": "Registration details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_account.registerAccountRequest" } } ], "responses": { "200": { "description": "Account created successfully", "schema": { "$ref": "#/definitions/internal_account.registerAccountResponse" } }, "400": { "description": "Invalid request body", "schema": { "type": "string" } }, "409": { "description": "Email already registered", "schema": { "type": "string" } } } } }, "/accounts/{accountID}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve account details including storage usage and quota", "produces": [ "application/json" ], "tags": [ "accounts" ], "summary": "Get account", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true } ], "responses": { "200": { "description": "Account details", "schema": { "$ref": "#/definitions/internal_account.Account" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Account not found", "schema": { "type": "string" } } } } }, "/accounts/{accountID}/directories": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Create a new directory within a parent directory", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "directories" ], "summary": "Create directory", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "description": "Directory details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_catalog.createDirectoryRequest" } }, { "enum": [ "path" ], "type": "string", "description": "Include additional fields", "name": "include", "in": "query" } ], "responses": { "200": { "description": "Created directory", "schema": { "$ref": "#/definitions/internal_catalog.DirectoryInfo" } }, "400": { "description": "Parent not found or not a directory", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "409": { "description": "Directory already exists", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/accounts/{accountID}/directories/{directoryID}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve metadata for a specific directory", "produces": [ "application/json" ], "tags": [ "directories" ], "summary": "Get directory info", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Directory ID", "name": "directoryID", "in": "path", "required": true }, { "enum": [ "path" ], "type": "string", "description": "Include additional fields", "name": "include", "in": "query" } ], "responses": { "200": { "description": "Directory metadata", "schema": { "$ref": "#/definitions/internal_catalog.DirectoryInfo" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Directory not found", "schema": { "type": "string" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a directory permanently or move it to trash. Deleting a directory also affects all its contents.", "tags": [ "directories" ], "summary": "Delete directory", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Directory ID", "name": "directoryID", "in": "path", "required": true }, { "type": "boolean", "default": false, "description": "Move to trash instead of permanent delete", "name": "trash", "in": "query" } ], "responses": { "204": { "description": "Directory deleted", "schema": { "type": "string" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Directory not found", "schema": { "type": "string" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update directory properties such as name (rename)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "directories" ], "summary": "Update directory", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Directory ID", "name": "directoryID", "in": "path", "required": true }, { "description": "Directory update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_catalog.patchDirectoryRequest" } } ], "responses": { "200": { "description": "Updated directory metadata", "schema": { "$ref": "#/definitions/internal_catalog.DirectoryInfo" } }, "400": { "description": "Invalid request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Directory not found", "schema": { "type": "string" } } } } }, "/accounts/{accountID}/directories/{directoryID}/content": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Get all files and subdirectories within a directory", "produces": [ "application/json" ], "tags": [ "directories" ], "summary": "List directory contents", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Directory ID", "name": "directoryID", "in": "path", "required": true } ], "responses": { "200": { "description": "Array of FileInfo and DirectoryInfo objects", "schema": { "type": "array", "items": {} } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Directory not found", "schema": { "type": "string" } } } }, "post": { "security": [ { "BearerAuth": [] } ], "description": "Move one or more files or directories into this directory. All items must currently be in the same source directory.", "consumes": [ "application/json" ], "tags": [ "directories" ], "summary": "Move items to directory", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Target directory ID", "name": "directoryID", "in": "path", "required": true }, { "description": "Items to move", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_catalog.postDirectoryContentRequest" } } ], "responses": { "204": { "description": "Items moved successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request or items not in same directory", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "One or more items not found", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "409": { "description": "Name conflict in target directory", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/accounts/{accountID}/files/{fileID}": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve metadata for a specific file", "produces": [ "application/json" ], "tags": [ "files" ], "summary": "Get file info", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "File ID", "name": "fileID", "in": "path", "required": true } ], "responses": { "200": { "description": "File metadata", "schema": { "$ref": "#/definitions/internal_catalog.FileInfo" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } } } }, "delete": { "security": [ { "BearerAuth": [] } ], "description": "Delete a file permanently or move it to trash", "produces": [ "application/json" ], "tags": [ "files" ], "summary": "Delete file", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "File ID", "name": "fileID", "in": "path", "required": true }, { "type": "boolean", "default": false, "description": "Move to trash instead of permanent delete", "name": "trash", "in": "query" } ], "responses": { "200": { "description": "Trashed file info (when trash=true)", "schema": { "$ref": "#/definitions/internal_catalog.FileInfo" } }, "204": { "description": "Permanently deleted (when trash=false)", "schema": { "type": "string" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } } } }, "patch": { "security": [ { "BearerAuth": [] } ], "description": "Update file properties such as name (rename)", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "files" ], "summary": "Update file", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "File ID", "name": "fileID", "in": "path", "required": true }, { "description": "File update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_catalog.patchFileRequest" } } ], "responses": { "200": { "description": "Updated file metadata", "schema": { "$ref": "#/definitions/internal_catalog.FileInfo" } }, "400": { "description": "Invalid request", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } } } } }, "/accounts/{accountID}/files/{fileID}/content": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Download the file content. May redirect to a signed URL for external storage.", "produces": [ "application/octet-stream" ], "tags": [ "files" ], "summary": "Download file", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "File ID", "name": "fileID", "in": "path", "required": true } ], "responses": { "200": { "description": "File content stream", "schema": { "type": "file" } }, "307": { "description": "Redirect to download URL", "schema": { "type": "string" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "File not found", "schema": { "type": "string" } } } } }, "/accounts/{accountID}/uploads": { "post": { "security": [ { "BearerAuth": [] } ], "description": "Start a new file upload session. Returns an upload URL to PUT file content to.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "uploads" ], "summary": "Create upload session", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "description": "Upload details", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_upload.createUploadRequest" } } ], "responses": { "200": { "description": "Upload session created", "schema": { "$ref": "#/definitions/internal_upload.Upload" } }, "400": { "description": "Parent is not a directory", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Parent directory not found", "schema": { "type": "string" } }, "409": { "description": "File with this name already exists", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/accounts/{accountID}/uploads/{uploadID}": { "patch": { "security": [ { "BearerAuth": [] } ], "description": "Mark an upload as completed after content has been uploaded. This finalizes the file in the filesystem.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "uploads" ], "summary": "Complete upload", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Upload session ID", "name": "uploadID", "in": "path", "required": true }, { "description": "Status update", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_upload.updateUploadRequest" } } ], "responses": { "200": { "description": "Upload completed", "schema": { "$ref": "#/definitions/internal_upload.Upload" } }, "400": { "description": "Content not uploaded yet or invalid status", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Upload session not found", "schema": { "type": "string" } } } } }, "/accounts/{accountID}/uploads/{uploadID}/content": { "put": { "security": [ { "BearerAuth": [] } ], "description": "Stream file content to complete an upload. Send raw binary data in the request body.", "consumes": [ "application/octet-stream" ], "tags": [ "uploads" ], "summary": "Upload file content", "parameters": [ { "type": "string", "format": "uuid", "description": "Account ID", "name": "accountID", "in": "path", "required": true }, { "type": "string", "description": "Upload session ID", "name": "uploadID", "in": "path", "required": true }, { "description": "File content (binary)", "name": "file", "in": "body", "required": true, "schema": { "type": "array", "items": { "type": "integer" } } } ], "responses": { "204": { "description": "Content received successfully", "schema": { "type": "string" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } }, "404": { "description": "Upload session not found", "schema": { "type": "string" } } } } }, "/auth/login": { "post": { "description": "Authenticate with email and password to receive JWT tokens. Tokens can be delivered via HTTP-only cookies or in the response body based on the tokenDelivery field.", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "User login", "parameters": [ { "description": "Login credentials", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_auth.loginRequest" } } ], "responses": { "200": { "description": "Successful authentication", "schema": { "$ref": "#/definitions/internal_auth.loginResponse" } }, "400": { "description": "Invalid request body or token delivery method", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Invalid email or password", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/auth/tokens": { "post": { "description": "Exchange a valid refresh token for a new pair of access and refresh tokens. The old refresh token is invalidated (rotation).", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "auth" ], "summary": "Refresh access token", "parameters": [ { "description": "Refresh token", "name": "request", "in": "body", "required": true, "schema": { "$ref": "#/definitions/internal_auth.refreshAccessTokenRequest" } } ], "responses": { "200": { "description": "New tokens", "schema": { "$ref": "#/definitions/internal_auth.tokenResponse" } }, "400": { "description": "Invalid request body", "schema": { "type": "object", "additionalProperties": { "type": "string" } } }, "401": { "description": "Invalid, expired, or reused refresh token", "schema": { "type": "object", "additionalProperties": { "type": "string" } } } } } }, "/users/me": { "get": { "security": [ { "BearerAuth": [] } ], "description": "Retrieve the authenticated user's profile information", "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Get current user", "responses": { "200": { "description": "User profile", "schema": { "$ref": "#/definitions/internal_user.User" } }, "401": { "description": "Not authenticated", "schema": { "type": "string" } } } } } }, "definitions": { "github_com_get-drexa_drexa_internal_user.User": { "description": "User account information", "type": "object", "properties": { "displayName": { "description": "User's display name", "type": "string", "example": "John Doe" }, "email": { "description": "User's email address", "type": "string", "example": "john@example.com" }, "id": { "description": "Unique user identifier", "type": "string", "example": "550e8400-e29b-41d4-a716-446655440000" } } }, "github_com_get-drexa_drexa_internal_virtualfs.PathSegment": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } } }, "internal_account.Account": { "description": "Storage account with usage and quota details", "type": "object", "properties": { "createdAt": { "description": "When the account was created (ISO 8601)", "type": "string", "example": "2024-12-13T15:04:05Z" }, "id": { "description": "Unique account identifier", "type": "string", "example": "550e8400-e29b-41d4-a716-446655440000" }, "storageQuotaBytes": { "description": "Maximum storage quota in bytes", "type": "integer", "example": 10737418240 }, "storageUsageBytes": { "description": "Current storage usage in bytes", "type": "integer", "example": 1073741824 }, "updatedAt": { "description": "When the account was last updated (ISO 8601)", "type": "string", "example": "2024-12-13T16:30:00Z" }, "userId": { "description": "ID of the user who owns this account", "type": "string", "example": "550e8400-e29b-41d4-a716-446655440001" } } }, "internal_account.registerAccountRequest": { "description": "Request to create a new account and user", "type": "object", "properties": { "displayName": { "description": "Display name for the user", "type": "string", "example": "Jane Doe" }, "email": { "description": "Email address for the new account", "type": "string", "example": "newuser@example.com" }, "password": { "description": "Password for the new account (min 8 characters)", "type": "string", "example": "securepassword123" } } }, "internal_account.registerAccountResponse": { "description": "Response after successful account registration", "type": "object", "properties": { "accessToken": { "description": "JWT access token for immediate authentication", "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDAifQ.signature" }, "account": { "description": "The created account", "allOf": [ { "$ref": "#/definitions/internal_account.Account" } ] }, "refreshToken": { "description": "Base64 URL encoded refresh token", "type": "string", "example": "dR4nD0mUu1DkZXlCeXRlc0FuZFJhbmRvbURhdGFIZXJlMTIzNDU2Nzg5MGFi" }, "user": { "description": "The created user", "allOf": [ { "$ref": "#/definitions/github_com_get-drexa_drexa_internal_user.User" } ] } } }, "internal_auth.loginRequest": { "description": "Login request with email, password, and token delivery preference", "type": "object", "properties": { "email": { "description": "User's email address", "type": "string", "example": "user@example.com" }, "password": { "description": "User's password", "type": "string", "example": "secretpassword123" }, "tokenDelivery": { "description": "How to deliver tokens: \"cookie\" (set HTTP-only cookies) or \"body\" (include in response)", "type": "string", "enum": [ "cookie", "body" ], "example": "body" } } }, "internal_auth.loginResponse": { "description": "Login response containing user info and optionally tokens", "type": "object", "properties": { "accessToken": { "description": "JWT access token (only included when tokenDelivery is \"body\")", "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDAifQ.signature" }, "refreshToken": { "description": "Base64 URL encoded refresh token (only included when tokenDelivery is \"body\")", "type": "string", "example": "dR4nD0mUu1DkZXlCeXRlc0FuZFJhbmRvbURhdGFIZXJlMTIzNDU2Nzg5MGFi" }, "user": { "description": "Authenticated user information", "allOf": [ { "$ref": "#/definitions/github_com_get-drexa_drexa_internal_user.User" } ] } } }, "internal_auth.refreshAccessTokenRequest": { "description": "Request to exchange a refresh token for new tokens", "type": "object", "properties": { "refreshToken": { "description": "Base64 URL encoded refresh token", "type": "string", "example": "dR4nD0mUu1DkZXlCeXRlc0FuZFJhbmRvbURhdGFIZXJlMTIzNDU2Nzg5MGFi" } } }, "internal_auth.tokenResponse": { "description": "Response containing new access token and refresh token", "type": "object", "properties": { "accessToken": { "description": "New JWT access token", "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDAifQ.signature" }, "refreshToken": { "description": "New base64 URL encoded refresh token", "type": "string", "example": "xK9mPqRsTuVwXyZ0AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdefgh" } } }, "internal_catalog.DirectoryInfo": { "description": "Directory information including path and timestamps", "type": "object", "properties": { "createdAt": { "description": "When the directory was created (ISO 8601)", "type": "string", "example": "2024-12-13T15:04:05Z" }, "deletedAt": { "description": "When the directory was trashed, null if not trashed (ISO 8601)", "type": "string", "example": "2024-12-14T10:00:00Z" }, "id": { "description": "Unique directory identifier", "type": "string", "example": "kRp2XYTq9A55" }, "kind": { "description": "Item type, always \"directory\"", "type": "string", "example": "directory" }, "name": { "description": "Directory name", "type": "string", "example": "My Documents" }, "path": { "description": "Full path from root (included when ?include=path)", "type": "array", "items": { "$ref": "#/definitions/github_com_get-drexa_drexa_internal_virtualfs.PathSegment" } }, "updatedAt": { "description": "When the directory was last updated (ISO 8601)", "type": "string", "example": "2024-12-13T16:30:00Z" } } }, "internal_catalog.FileInfo": { "description": "File information including name, size, and timestamps", "type": "object", "properties": { "createdAt": { "description": "When the file was created (ISO 8601)", "type": "string", "example": "2024-12-13T15:04:05Z" }, "deletedAt": { "description": "When the file was trashed, null if not trashed (ISO 8601)", "type": "string", "example": "2024-12-14T10:00:00Z" }, "id": { "description": "Unique file identifier", "type": "string", "example": "mElnUNCm8F22" }, "kind": { "description": "Item type, always \"file\"", "type": "string", "example": "file" }, "mimeType": { "description": "MIME type of the file", "type": "string", "example": "application/pdf" }, "name": { "description": "File name", "type": "string", "example": "document.pdf" }, "size": { "description": "File size in bytes", "type": "integer", "example": 1048576 }, "updatedAt": { "description": "When the file was last updated (ISO 8601)", "type": "string", "example": "2024-12-13T16:30:00Z" } } }, "internal_catalog.createDirectoryRequest": { "description": "Request to create a new directory", "type": "object", "properties": { "name": { "description": "Name for the new directory", "type": "string", "example": "New Folder" }, "parentID": { "description": "ID of the parent directory", "type": "string", "example": "kRp2XYTq9A55" } } }, "internal_catalog.patchDirectoryRequest": { "description": "Request to update directory properties", "type": "object", "properties": { "name": { "description": "New name for the directory", "type": "string", "example": "My Documents" } } }, "internal_catalog.patchFileRequest": { "description": "Request to update file properties", "type": "object", "properties": { "name": { "description": "New name for the file", "type": "string", "example": "renamed-document.pdf" } } }, "internal_catalog.postDirectoryContentRequest": { "description": "Request to move items into this directory", "type": "object", "properties": { "items": { "description": "Array of file/directory IDs to move", "type": "array", "items": { "type": "string" }, "example": [ "mElnUNCm8F22", "kRp2XYTq9A55" ] } } }, "internal_upload.Status": { "description": "Upload status enumeration", "type": "string", "enum": [ "pending", "completed", "failed" ], "x-enum-varnames": [ "StatusPending", "StatusCompleted", "StatusFailed" ] }, "internal_upload.Upload": { "description": "File upload session with status and upload URL", "type": "object", "properties": { "id": { "description": "Unique upload session identifier", "type": "string", "example": "xNq5RVBt3K88" }, "status": { "description": "Current upload status", "enum": [ "pending", "completed", "failed" ], "allOf": [ { "$ref": "#/definitions/internal_upload.Status" } ], "example": "pending" }, "uploadUrl": { "description": "URL to upload file content to", "type": "string", "example": "https://api.example.com/api/accounts/550e8400-e29b-41d4-a716-446655440000/uploads/xNq5RVBt3K88/content" } } }, "internal_upload.createUploadRequest": { "description": "Request to initiate a file upload", "type": "object", "properties": { "name": { "description": "Name of the file being uploaded", "type": "string", "example": "document.pdf" }, "parentId": { "description": "ID of the parent directory to upload into", "type": "string", "example": "kRp2XYTq9A55" } } }, "internal_upload.updateUploadRequest": { "description": "Request to update upload status (e.g., mark as completed)", "type": "object", "properties": { "status": { "description": "New status for the upload", "enum": [ "completed" ], "allOf": [ { "$ref": "#/definitions/internal_upload.Status" } ], "example": "completed" } } }, "internal_user.User": { "description": "User account information", "type": "object", "properties": { "displayName": { "description": "User's display name", "type": "string", "example": "John Doe" }, "email": { "description": "User's email address", "type": "string", "example": "john@example.com" }, "id": { "description": "Unique user identifier", "type": "string", "example": "550e8400-e29b-41d4-a716-446655440000" } } } }, "securityDefinitions": { "BearerAuth": { "description": "JWT access token. Format: \"Bearer {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: "localhost:8080", BasePath: "/api", Schemes: []string{}, Title: "Drexa API", Description: "Drexa is a file storage and management API. It provides endpoints for authentication, user management, file uploads, and virtual filesystem operations.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }