# File Manager Base Image Flow This document explains upload + create flow specifically for base images. ## Purpose This flow uploads base images and persists file metadata into a forced folder hierarchy: - `__system_root_files__ > bases > > ` Main differences compared to regular file flow: - dedicated upload endpoint: `POST /api/v1/file-manager/files/upload-base-image` - dedicated create endpoint: `POST /api/v1/file-manager/files/create-base-image` - `content_type` must be `image/*` - `base_uuid` is required in the create request per item - create step performs hard replace of existing files in target folder before creating new file ## Step 1 - Request Upload Intent (Base) Endpoint: - `POST /api/v1/file-manager/files/upload-base-image` Validation highlights: - `type` must be `file_manager_file_upload_intent` - `name` required - `content_type` required and must start with `image/` - `size_bytes >= 0` ## Step 2 - Upload Binary to Object Storage For each successful intent, frontend uploads binary with `PUT` to `upload_url`. ## Step 3 - Create File Record (Base) Endpoint: - `POST /api/v1/file-manager/files/create-base-image` Validation highlights: - `type` must be `file_manager_file_create` or `file_manager_file` - `upload_intent_uuid` required and valid UUID - `base_uuid` required and valid UUID - `name` required Backend behavior: 1. load base from `base_uuid` 2. resolve `base-type` from base category (e.g. `hems` or `regular`) 3. resolve/create folder path `__system_root_files__ > bases > > ` 4. hard replace: delete + purge all existing files in that target folder 5. create file node from upload intent Hard replace cleanup target: - file row in DB - original object in S3 - thumbnail object in S3 (if exists) - related attachment metadata