📁 Files

Secure object storage service

Files provides a REST API for buckets and file upload, download, listing, metadata, and deletion.

Files

Key features

Use buckets to organize files and access them through simple HTTP endpoints.

Bucket API

Create, list, retrieve, and delete buckets with names and descriptions.

File operations

Upload, download, list, inspect, and delete files inside buckets.

Stored metadata

Files track size, MIME type, timestamps, and content hashes returned by the API.

Quick start

Quick start

Get started with Files in seconds using the API.

curl -X POST https://files.hola.cloud/v1/buckets \
  -H 'X-Glue-Authentication: {"user":{"id":"user-123"}}' \
  -d '{"name":"my-bucket","description":"Uploads for my app"}'
POST /v1/buckets HTTP/1.1
Host: files.hola.cloud
X-Glue-Authentication: {"user":{"id":"user-123"}}

{"name":"my-bucket","description":"Uploads for my app"}
// Go 1.21+, standard library only. Save as main.go and run: go run main.go
package main

import (
	"fmt"
	"io"
	"net/http"
	"encoding/json"
	"strings"
)

func main() {
	payload := map[string]any{"description": "Uploads for my app", "name": "my-bucket"}
	bodyBytes, err := json.Marshal(payload)
	if err != nil {
		panic(err)
	}
	body := string(bodyBytes)

	req, err := http.NewRequest("POST", "https://files.hola.cloud/v1/buckets", strings.NewReader(body))
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-Glue-Authentication", "{\"user\":{\"id\":\"user-123\"}}")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status)
	fmt.Println(string(responseBody))
}
<?php
// PHP 8+ with the curl extension. Save as example.php and run: php example.php

$payload = ['description' => 'Uploads for my app', 'name' => 'my-bucket'];
$body = json_encode($payload);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://files.hola.cloud/v1/buckets',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $body,
    CURLOPT_HTTPHEADER => [
        'X-Glue-Authentication: {"user":{"id":"user-123"}}',
    ],
]);

$response = curl_exec($ch);
if ($response === false) {
    throw new Exception(curl_error($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), "\n", $response, "\n";
curl_close($ch);
# Python 3.8+. Install: pip install requests. Save as example.py and run: python example.py
import requests

headers = {
    "X-Glue-Authentication": "{\"user\":{\"id\":\"user-123\"}}",
}

payload = {"description": "Uploads for my app", "name": "my-bucket"}

response = requests.request(
    "POST",
    "https://files.hola.cloud/v1/buckets",
    headers=headers,
    json=payload
)

print(response.status_code)
print(response.text)
// Node.js 18+. Save as example.mjs and run: node example.mjs
const payload = {"description": "Uploads for my app", "name": "my-bucket"};

const response = await fetch("https://files.hola.cloud/v1/buckets", {
  method: "POST",
  headers: {
    "X-Glue-Authentication": "{\"user\":{\"id\":\"user-123\"}}"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
const payload = {"description": "Uploads for my app", "name": "my-bucket"};

const response = await fetch("https://files.hola.cloud/v1/buckets", {
  method: "POST",
  headers: {
    "X-Glue-Authentication": "{\"user\":{\"id\":\"user-123\"}}"
  },
  body: JSON.stringify(payload)
});

console.log(response.status);
console.log(await response.text());
// Java 17+, standard library only. Save as Main.java and run: java Main.java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        var body = """
{"name":"my-bucket","description":"Uploads for my app"}
""";

        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://files.hola.cloud/v1/buckets"))
            .method("POST", HttpRequest.BodyPublishers.ofString(body))
            .header("X-Glue-Authentication", "{\"user\":{\"id\":\"user-123\"}}")
            .build();

        var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}
Use cases

Common use cases

Microservices orchestration

Build and deploy with Files on HolaCloud's enterprise platform, designed for security, reliability, and scale.

Data pipeline automation

Build and deploy with Files on HolaCloud's enterprise platform, designed for security, reliability, and scale.

Event-driven architectures

Build and deploy with Files on HolaCloud's enterprise platform, designed for security, reliability, and scale.

API backend development

Build and deploy with Files on HolaCloud's enterprise platform, designed for security, reliability, and scale.

Ready to get started?

Explore the documentation or launch the console to start building with Files.

Comments

Leave a comment