{
    "swagger": "2.0",
    "info": {
        "description": "Drexa is a file storage and management API. It provides endpoints for authentication, user management, file uploads, and virtual filesystem operations.",
        "title": "Drexa API",
        "contact": {
            "name": "Drexa Support",
            "url": "https://github.com/get-drexa/drexa"
        },
        "license": {
            "name": "MIT",
            "url": "https://opensource.org/licenses/MIT"
        },
        "version": "1.0"
    },
    "host": "localhost:8080",
    "basePath": "/api",
    "paths": {
        "/accounts": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Retrieve all accounts for the authenticated user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "accounts"
                ],
                "summary": "List accounts",
                "responses": {
                    "200": {
                        "description": "List of accounts for the authenticated user",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/internal_account.Account"
                            }
                        }
                    },
                    "401": {
                        "description": "Not authenticated",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            },
            "post": {
                "description": "Create a new user account with email and password. Returns the account, user, and authentication 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": [
                    "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 or token delivery method",
                        "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"
                            }
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete multiple directories permanently or move them to trash. Deleting directories also affects all their contents. All items must be directories.",
                "tags": [
                    "directories"
                ],
                "summary": "Bulk delete directories",
                "parameters": [
                    {
                        "type": "string",
                        "format": "uuid",
                        "description": "Account ID",
                        "name": "accountID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Comma-separated list of directory IDs to delete",
                        "name": "id",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "boolean",
                        "default": false,
                        "description": "Move to trash instead of permanent delete",
                        "name": "trash",
                        "in": "query"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Directories deleted",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "All items must be directories",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Not authenticated",
                        "schema": {
                            "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. Returns detailed status for each item including which were successfully moved, which had conflicts, and which encountered errors.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "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": {
                    "200": {
                        "description": "Move operation results with moved, conflict, and error states",
                        "schema": {
                            "$ref": "#/definitions/internal_catalog.moveItemsToDirectoryResponse"
                        }
                    },
                    "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"
                            }
                        }
                    }
                }
            }
        },
        "/accounts/{accountID}/files": {
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "description": "Delete multiple files permanently or move them to trash. All items must be files.",
                "tags": [
                    "files"
                ],
                "summary": "Bulk delete files",
                "parameters": [
                    {
                        "type": "string",
                        "format": "uuid",
                        "description": "Account ID",
                        "name": "accountID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Comma-separated list of file IDs to delete",
                        "name": "id",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "boolean",
                        "default": false,
                        "description": "Move to trash instead of permanent delete",
                        "name": "trash",
                        "in": "query"
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Files deleted",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "All items must be files",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Not authenticated",
                        "schema": {
                            "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"
                },
                "tokenDelivery": {
                    "description": "How to deliver tokens: \"cookie\" (set HTTP-only cookies) or \"body\" (include in response)",
                    "type": "string",
                    "enum": [
                        "cookie",
                        "body"
                    ],
                    "example": "body"
                }
            }
        },
        "internal_account.registerAccountResponse": {
            "description": "Response after successful account registration",
            "type": "object",
            "properties": {
                "accessToken": {
                    "description": "JWT access token for immediate authentication (only included when tokenDelivery is \"body\")",
                    "type": "string",
                    "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI1NTBlODQwMC1lMjliLTQxZDQtYTcxNi00NDY2NTU0NDAwMDAifQ.signature"
                },
                "account": {
                    "description": "The created account",
                    "allOf": [
                        {
                            "$ref": "#/definitions/internal_account.Account"
                        }
                    ]
                },
                "refreshToken": {
                    "description": "Base64 URL encoded refresh token (only included when tokenDelivery is \"body\")",
                    "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.moveItemError": {
            "description": "Error details for a failed item move",
            "type": "object",
            "properties": {
                "error": {
                    "description": "Error message describing what went wrong",
                    "type": "string",
                    "example": "permission denied"
                },
                "id": {
                    "description": "ID of the item that failed to move",
                    "type": "string",
                    "example": "mElnUNCm8F22"
                }
            }
        },
        "internal_catalog.moveItemsToDirectoryResponse": {
            "description": "Response from moving items to a directory with status for each item",
            "type": "object",
            "properties": {
                "conflicts": {
                    "description": "Array of IDs of items that conflicted with existing items in the target directory",
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "example": [
                        "xYz123AbC456"
                    ]
                },
                "errors": {
                    "description": "Array of errors that occurred during the move operation",
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/internal_catalog.moveItemError"
                    }
                },
                "items": {
                    "description": "Array of items included in the request (FileInfo or DirectoryInfo objects)",
                    "type": "array",
                    "items": {}
                },
                "moved": {
                    "description": "Array of IDs of successfully moved items",
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "example": [
                        "mElnUNCm8F22",
                        "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"
        }
    }
}