kernelci-storage

KernelCI’s Storage API documentation

We have simple storage server that supports file upload and download, with JWT token based authentication.

API Endpoints

The API is quite simple with upload through a /upload endpoint and download through a GET to the file url.

Upload

POST /upload

Upload a file to the server.

field path: the path to store the file in the server. field file0: the file to upload.

Download

GET /path/to/file

Download a file from the server.

Request a token

Ask the kernelci-sysadmin team for a token.

Testing upload and download using curl

# Upload
curl -X POST http://files.kernelci.org/upload \
    -H "Authorization: Bearer <JWT_TOKEN>" \
    -F "path=testfolder" \
    -F "file0=@local_folder/local_file"

# File will be uploaded to Azure Blob Storage as testfolder/local_folder/local_file

# Download
curl http://files.kernelci.org/testfolder/local_folder/local_file

Principle of operation

sequenceDiagram
    participant User
    participant Proxy Server
    participant Local Cache
    participant Azure Blob Storage

    %% Upload Flow
    User->>Proxy Server: Upload File (POST Request)
    Proxy Server->>Azure Blob Storage: Store File in Cloud
    Azure Blob Storage-->>Proxy Server: Confirmation
    Proxy Server-->>User: Upload Successful

    %% Download Flow
    User->>Proxy Server: Request File (GET Request)
    Proxy Server->>Local Cache: Check if File Exists
    alt File Found in Cache
        Local Cache-->>Proxy Server: Return Cached File
        Proxy Server-->>User: Send File
    else File Not in Cache
        Proxy Server->>Azure Blob Storage: Fetch File from Cloud
        Azure Blob Storage-->>Proxy Server: Send File Data
        Proxy Server->>Local Cache: Save File Locally
        Proxy Server-->>User: Send File
    end

Last modified August 6, 2025