components:
    securitySchemes:
        ApiKeyAuth:
            in: header
            name: X-API-Key
            type: apiKey
externalDocs:
    description: OpenAPI
    url: https://swagger.io/resources/open-api/
info:
    contact:
        name: tscrond
        url: https://github.com/tscrond
    description: Fluxsend API endpoints
    license:
        name: MIT
        url: https://mit-license.org/
    title: FluxSend Developer API
    version: 1.7.0
openapi: 3.0.3
paths:
    /api/api_keys/{workspace_id}/create:
        post:
            description: Creates a workspace-scoped API key for users allowed to manage workspace API keys.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: API key create request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Create workspace API key
            tags:
                - API Keys
    /api/api_keys/{workspace_id}/delete:
        delete:
            description: Deletes a workspace-scoped API key by ID.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Delete API key request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Delete workspace API key
            tags:
                - API Keys
    /api/api_keys/{workspace_id}/list:
        get:
            description: Returns the API keys created for the selected workspace.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: List workspace API keys
            tags:
                - API Keys
    /api/api_keys/private/create:
        post:
            description: Creates a private API key for the current user.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: API key create request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Create private API key
            tags:
                - API Keys
    /api/api_keys/private/delete:
        delete:
            description: Deletes a private API key owned by the authenticated user.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Delete API key request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Delete private API key
            tags:
                - API Keys
    /api/api_keys/private/list:
        get:
            description: Returns all private API keys created by the authenticated user.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: List private API keys
            tags:
                - API Keys
    /api/d/{token}:
        get:
            description: Resolves a public share token and either redirects or proxies the file content.
            parameters:
                - description: Share token
                  in: path
                  name: token
                  required: true
                  schema:
                    type: string
                - description: inline or download
                  in: query
                  name: mode
                  schema:
                    type: string
            responses:
                "302":
                    description: Redirect to the signed URL
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Download public share
            tags:
                - Downloads
    /api/d/private/{token}:
        get:
            description: Resolves a private download token for the authenticated file owner and redirects to the download URL.
            parameters:
                - description: Download token
                  in: path
                  name: token
                  required: true
                  schema:
                    type: string
                - description: inline or download
                  in: query
                  name: mode
                  schema:
                    type: string
            responses:
                "302":
                    description: Redirect to the signed URL
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Download private file
            tags:
                - Downloads
    /api/files/{checksum}/note:
        get:
            description: Returns the note content for a file checksum.
            parameters:
                - description: File checksum
                  in: path
                  name: checksum
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Get file note
            tags:
                - Files
        put:
            description: Updates or creates the note for a file checksum.
            parameters:
                - description: File checksum
                  in: path
                  name: checksum
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Note content request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Edit file note
            tags:
                - Files
    /api/files/delete:
        delete:
            description: Deletes a file from the authenticated user's personal storage.
            parameters:
                - description: File path
                  in: query
                  name: file
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Delete a file
            tags:
                - Files
    /api/files/delete/batch:
        delete:
            description: Deletes several personal files in one request.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Files to delete
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Delete multiple files
            tags:
                - Files
    /api/files/move:
        post:
            description: Moves a personal file from one path to another.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Move request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Move file
            tags:
                - Files
    /api/files/quick_share:
        post:
            description: Creates a public share token for a personal file.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Quick share request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Create quick share
            tags:
                - Sharing
    /api/files/received:
        get:
            description: Returns all files shared with the current user.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: List received shares
            tags:
                - Sharing
    /api/files/received/mark_seen:
        post:
            description: Marks a received share as seen by token.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Mark seen request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Mark received share as seen
            tags:
                - Sharing
    /api/files/received/unseen_count:
        get:
            description: Returns how many received shares have not yet been marked as seen.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Count unseen received files
            tags:
                - Sharing
    /api/files/share:
        post:
            description: Shares one or more personal files with another user, optionally emailing the recipient.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Share request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Share files
            tags:
                - Sharing
    /api/files/shared_by_user:
        get:
            description: Returns all files that the current user has shared with others.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: List outgoing shares
            tags:
                - Sharing
    /api/files/tree:
        get:
            description: Returns the authenticated user's personal file tree for a given path prefix.
            parameters:
                - description: Path prefix
                  in: query
                  name: path
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Get file tree
            tags:
                - Files
    /api/files/upload:
        post:
            description: Uploads a file to the current user's personal storage and optionally stores it in a folder.
            requestBody:
                content:
                    multipart/form-data:
                        schema:
                            properties:
                                file:
                                    description: File to upload
                                    format: binary
                                    type: string
                                    x-formData-name: file
                                folder:
                                    description: Destination folder
                                    type: string
                                    x-formData-name: folder
                            required:
                                - file
                            type: object
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "409":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Conflict
            summary: Upload a file
            tags:
                - Files
    /api/folders:
        delete:
            description: Deletes a personal folder and optionally all nested files and folders when recursive is true.
            parameters:
                - description: Folder path
                  in: query
                  name: path
                  required: true
                  schema:
                    type: string
                - description: Delete recursively
                  in: query
                  name: recursive
                  schema:
                    type: boolean
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Delete folder
            tags:
                - Files
        get:
            description: Returns the folders that exist at the supplied personal path.
            parameters:
                - description: Path prefix
                  in: query
                  name: path
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: List folders
            tags:
                - Files
    /api/folders/move:
        post:
            description: Moves a personal folder to another path.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Move request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Move folder
            tags:
                - Files
    /api/share/info/{token}:
        get:
            description: Returns public metadata for a share token without requiring authentication.
            parameters:
                - description: Share token
                  in: path
                  name: token
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Get public share info
            tags:
                - Sharing
    /api/share/resolve/{token}:
        post:
            description: Resolves a public share token and returns a signed download URL.
            parameters:
                - description: Share token
                  in: path
                  name: token
                  required: true
                  schema:
                    type: string
                - description: inline or download
                  in: query
                  name: mode
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Optional password payload
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Resolve public share
            tags:
                - Sharing
    /api/share/revoke/{token}:
        post:
            description: Revokes a previously created public share token.
            parameters:
                - description: Share token
                  in: path
                  name: token
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Revoke share
            tags:
                - Sharing
    /api/user/account/delete:
        delete:
            description: Deletes the authenticated user's account and optionally keeps or removes bucket data.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Delete account request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Delete account
            tags:
                - User
    /api/user/bucket:
        get:
            description: Returns the current user's bucket metadata and usage details.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Get user bucket data
            tags:
                - User
    /api/user/data:
        get:
            description: Returns the authenticated user's profile and plan details.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Get current user data
            tags:
                - User
    /api/user/private/download_token:
        post:
            description: Generates a download token for a private file name.
            parameters:
                - description: File name
                  in: query
                  name: file
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Create private download token
            tags:
                - User
    /api/user/stats:
        get:
            description: Returns aggregate file, share, and workspace statistics for the current user.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: Get user statistics
            tags:
                - User
    /api/workspaces/{workspace_id}/files/delete:
        delete:
            description: Deletes a workspace file when the caller has write access.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
                - description: File ID
                  in: query
                  name: file_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Delete workspace file
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/download:
        get:
            description: Creates a signed download URL for a workspace file and redirects or proxies based on mode.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
                - description: File ID
                  in: query
                  name: file_id
                  required: true
                  schema:
                    type: string
                - description: inline or download
                  in: query
                  name: mode
                  schema:
                    type: string
            responses:
                "302":
                    description: Redirect to the signed URL
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Download workspace file
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/folder/delete:
        delete:
            description: Deletes a workspace folder when the caller has write access.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
                - description: Folder path
                  in: query
                  name: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Delete workspace folder
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/folder/move:
        patch:
            description: Moves a folder to a new location inside the workspace.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Move request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Move workspace folder
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/mkdir:
        post:
            description: Creates a new folder inside the selected workspace.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Folder creation request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Create workspace folder
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/move:
        patch:
            description: Moves a file to another path within the same workspace.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Move request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Move workspace file
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/tree:
        get:
            description: Returns the file tree for a workspace path visible to the caller.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
                - description: Path prefix
                  in: query
                  name: path
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: Get workspace file tree
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/files/upload:
        post:
            description: Uploads a file into a workspace folder for users with write access.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    multipart/form-data:
                        schema:
                            properties:
                                file:
                                    description: File to upload
                                    format: binary
                                    type: string
                                    x-formData-name: file
                                folder:
                                    description: Destination folder
                                    type: string
                                    x-formData-name: folder
                            required:
                                - file
                            type: object
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Upload workspace file
            tags:
                - Workspace Files
    /api/workspaces/{workspace_id}/quota:
        get:
            description: Returns storage, file, folder, member, and API key quota information for a workspace.
            parameters:
                - description: Workspace ID
                  in: path
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: Get workspace quota
            tags:
                - Workspaces
    /api/workspaces/create:
        post:
            description: Creates a new workspace using the authenticated user's account.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Workspace create request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Create workspace
            tags:
                - Workspaces
    /api/workspaces/delete:
        delete:
            description: Deletes a workspace owned by the authenticated user.
            parameters:
                - description: Workspace ID
                  in: query
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Delete workspace
            tags:
                - Workspaces
    /api/workspaces/invites:
        get:
            description: Returns pending invites for a workspace when the caller is allowed to view them.
            parameters:
                - description: Workspace ID
                  in: query
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: List workspace invites
            tags:
                - Workspaces
    /api/workspaces/invites/accept:
        post:
            description: Accepts a workspace invite token for the authenticated user.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Invite acceptance request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Accept workspace invite
            tags:
                - Workspaces
    /api/workspaces/invites/create:
        post:
            description: Creates a workspace invite for a specific email and role.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Workspace invite request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "429":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Too Many Requests
            summary: Create workspace invite
            tags:
                - Workspaces
    /api/workspaces/invites/delete:
        delete:
            description: Deletes a pending workspace invite when the caller can manage the workspace.
            parameters:
                - description: Workspace ID
                  in: query
                  name: workspace_id
                  required: true
                  schema:
                    type: string
                - description: Invite ID
                  in: query
                  name: invite_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: Delete workspace invite
            tags:
                - Workspaces
    /api/workspaces/invites/mine:
        get:
            description: Returns all workspace invites associated with the authenticated user.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: List my workspace invites
            tags:
                - Workspaces
    /api/workspaces/invites/reject:
        delete:
            description: Rejects a workspace invite using its token.
            parameters:
                - description: Invite token
                  in: query
                  name: token
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Reject workspace invite
            tags:
                - Workspaces
    /api/workspaces/list:
        get:
            description: Returns all workspaces visible to the authenticated user.
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
            summary: List workspaces
            tags:
                - Workspaces
    /api/workspaces/members:
        get:
            description: Returns the members of a workspace when the caller has access to it.
            parameters:
                - description: Workspace ID
                  in: query
                  name: workspace_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: List workspace members
            tags:
                - Workspaces
    /api/workspaces/members/remove:
        delete:
            description: Removes a member from a workspace when the caller has permission.
            parameters:
                - description: Workspace ID
                  in: query
                  name: workspace_id
                  required: true
                  schema:
                    type: string
                - description: Member user ID
                  in: query
                  name: user_id
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
            summary: Remove workspace member
            tags:
                - Workspaces
    /api/workspaces/members/role:
        patch:
            description: Updates the role of a workspace member when the caller has permission to manage members.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Member role change request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Change member role
            tags:
                - Workspaces
    /api/workspaces/rename:
        patch:
            description: Updates the name and optionally the slug of a workspace owned by the current user.
            requestBody:
                content:
                    application/json:
                        schema:
                            type: object
                description: Workspace rename request
                required: true
                x-originalParamName: request
            responses:
                "200":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: OK
                "400":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Bad Request
                "401":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Unauthorized
                "403":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Forbidden
                "404":
                    content:
                        application/json:
                            schema:
                                additionalProperties: true
                                type: object
                    description: Not Found
            summary: Rename workspace
            tags:
                - Workspaces
servers:
    - url: https://fluxsend.win/
