⚙️ Config

Centralized configuration management

Config stores user-scoped JSON configuration entries and exposes v0 and v1 HTTP APIs.

Config

Key features

Read and update configuration maps without adding a custom configuration service to your app.

User config

Use GET /v1/config and PATCH /v1/config for authenticated user configuration.

Entries map

Store configuration as JSON entries, including strings, numbers, booleans, and nested objects.

Legacy v0 configs

Manage v0 config documents with id and entries fields when needed.

Quick start

Quick start

Get started with Config in seconds using the API.

curl -X PATCH https://config.hola.cloud/v1/config \
  -H 'X-Glue-Authentication: {"user":{"id":"user-123"}}' \
  -d '{"database.url":"postgres://prod:5432/db","feature.enabled":true}'
PATCH /v1/config HTTP/1.1
Host: config.hola.cloud
X-Glue-Authentication: {"user":{"id":"user-123"}}

{"database.url":"postgres://prod:5432/db","feature.enabled":true}
package main

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

func main() {
	payload := map[string]any{"database.url": "postgres://prod:5432/db", "feature.enabled": true}
	bodyBytes, err := json.Marshal(payload)
	if err != nil {
		panic(err)
	}
	body := string(bodyBytes)

	req, err := http.NewRequest("PATCH", "https://config.hola.cloud/v1/config", 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(string(responseBody))
}
<?php
$payload = ['database.url' => 'postgres://prod:5432/db', 'feature.enabled' => true];
$body = json_encode($payload);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://config.hola.cloud/v1/config',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    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));
}
curl_close($ch);

echo $response;
import requests

import json

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

payload = {"database.url": "postgres://prod:5432/db", "feature.enabled": True}
body = json.dumps(payload)

response = requests.request(
    "PATCH",
    "https://config.hola.cloud/v1/config",
    headers=headers,
    data=body
)

print(response.text)
const payload = {"database.url": "postgres://prod:5432/db", "feature.enabled": true};

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

console.log(await response.text());
const payload = {"database.url": "postgres://prod:5432/db", "feature.enabled": true};

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

const text = await response.text();
console.log(text);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;
import java.util.List;

public class Main {
    public static void main(String[] args) throws Exception {
        var payload = Map.of("database.url", "postgres://prod:5432/db", "feature.enabled", true);
        var body = new ObjectMapper().writeValueAsString(payload);

        var request = HttpRequest.newBuilder()
            .uri(URI.create("https://config.hola.cloud/v1/config"))
            .method("PATCH", 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.body());
    }
}
Use cases

Common use cases

Microservices orchestration

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

Data pipeline automation

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

Event-driven architectures

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

API backend development

Build and deploy with Config 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 Config.

Comments

Leave a comment