2025-12-13 22:44:37 +00:00
// 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" : [ ]
}
] ,
2025-12-15 00:13:10 +00:00
"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." ,
2025-12-13 22:44:37 +00:00
"consumes" : [
"application/json"
] ,
2025-12-15 00:13:10 +00:00
"produces" : [
"application/json"
] ,
2025-12-13 22:44:37 +00:00
"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" : {
2025-12-15 00:13:10 +00:00
"200" : {
"description" : "Move operation results with moved, conflict, and error states" ,
2025-12-13 22:44:37 +00:00
"schema" : {
2025-12-15 00:13:10 +00:00
"$ref" : "#/definitions/internal_catalog.moveItemsToDirectoryResponse"
2025-12-13 22:44:37 +00:00
}
} ,
"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/{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"
}
}
} ,
2025-12-15 00:13:10 +00:00
"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 (files and directories)" ,
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/internal_catalog.moveResponseItem"
}
} ,
"moved" : {
"description" : "Array of IDs of successfully moved items" ,
"type" : "array" ,
"items" : {
"type" : "string"
} ,
"example" : [
"mElnUNCm8F22" ,
"kRp2XYTq9A55"
]
}
}
} ,
"internal_catalog.moveResponseItem" : {
"description" : "Item included in the move operation. Check \"kind\" field to determine type: \"file\" (has size, mimeType) or \"directory\"" ,
"type" : "object" ,
"properties" : {
"createdAt" : {
"description" : "When the item was created (ISO 8601)" ,
"type" : "string" ,
"example" : "2024-12-13T15:04:05Z"
} ,
"deletedAt" : {
"description" : "When the item was trashed, null if not trashed (ISO 8601)" ,
"type" : "string" ,
"example" : "2024-12-14T10:00:00Z"
} ,
"id" : {
"description" : "Unique item identifier" ,
"type" : "string" ,
"example" : "mElnUNCm8F22"
} ,
"kind" : {
"description" : "Item type: \"file\" or \"directory\"" ,
"type" : "string" ,
"example" : "file"
} ,
"mimeType" : {
"description" : "MIME type (only for files)" ,
"type" : "string" ,
"example" : "application/pdf"
} ,
"name" : {
"description" : "Item name" ,
"type" : "string" ,
"example" : "document.pdf"
} ,
"size" : {
"description" : "File size in bytes (only for files)" ,
"type" : "integer" ,
"example" : 1048576
} ,
"updatedAt" : {
"description" : "When the item was last updated (ISO 8601)" ,
"type" : "string" ,
"example" : "2024-12-13T16:30:00Z"
}
}
} ,
2025-12-13 22:44:37 +00:00
"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 )
}