HostBase

AI i narzędzia

Management API

REST API do automatyzacji: organizacje i projekty, uwierzytelnianie tokenem osobistym.

Management API pozwala zarządzać platformą HostBase z poziomu skryptów, CI/CD czy własnych narzędzi. Nie myl go z API danych projektu (/rest/v1) — to API służy do zarządzania samymi projektami.

Uwierzytelnianie

Utwórz osobisty token dostępu w Konto → Tokeny dostępu i przekazuj go w nagłówku:

Authorization: Bearer hb_pat_xxxxxxxxxxxxxxxxxxxx

Adres bazowy: https://host.ulewicz.space/api/v1. Odpowiedzi są w formacie JSON.

GET /api/v1/organizations

Lista organizacji użytkownika.

curl https://host.ulewicz.space/api/v1/organizations \
  -H "Authorization: Bearer $HOSTBASE_TOKEN"
[
  { "id": "org_...", "name": "Acme", "slug": "acme", "plan": "pro", "role": "owner" }
]

GET /api/v1/projects

Lista projektów ze wszystkich organizacji użytkownika.

curl https://host.ulewicz.space/api/v1/projects \
  -H "Authorization: Bearer $HOSTBASE_TOKEN"

POST /api/v1/projects

Tworzy nowy projekt.

PoleTypOpis
namestringNazwa projektu (wymagane)
organization_slugstringSlug organizacji (wymagane)
regionstringpl-waw-1 (Warszawa). Pozostałe regiony (eu-central-1, eu-north-1, eu-west-1, us-east-1) — wkrótce, obecnie zwracają 422.
compute_sizestringnano (domyślnie), micro, small, medium, large, xl
curl -X POST https://host.ulewicz.space/api/v1/projects \
  -H "Authorization: Bearer $HOSTBASE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"sklep-prod","organization_slug":"acme","region":"pl-waw-1","compute_size":"small"}'
{
  "ref": "abcdefghijklmnopqrst",
  "name": "sklep-prod",
  "status": "provisioning",
  "region": "pl-waw-1",
  "api_url": "https://abcdefghijklmnopqrst.host.ulewicz.space"
}

GET /api/v1/projects/{ref}

Szczegóły projektu, w tym status i klucz anon.

curl https://host.ulewicz.space/api/v1/projects/abcdefghijklmnopqrst \
  -H "Authorization: Bearer $HOSTBASE_TOKEN"

GET /api/v1/projects/{ref}/api-keys

Klucze anon i service_role projektu.

POST /api/v1/projects/{ref}/database/query

Wykonuje zapytanie SQL na bazie projektu (rola owner, admin lub developer). Projekt musi mieć status active.

curl -X POST https://host.ulewicz.space/api/v1/projects/abcdefghijklmnopqrst/database/query \
  -H "Authorization: Bearer $HOSTBASE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"select now() as czas, version()"}'
{
  "rows": [{ "czas": "2026-10-15T12:00:00.000Z", "version": "PostgreSQL 17.6 ..." }],
  "duration_ms": 42
}

Edge Functions

Zarządzanie funkcjami projektu. Wdrażanie i usuwanie wymaga roli owner, admin lub developer.

Metoda i ścieżkaOpis
GET /api/v1/projects/{ref}/functionsLista funkcji (nazwa, wersja, verify_jwt, url).
POST /api/v1/projects/{ref}/functionsTworzy nową funkcję: {"name", "code" | "files", "verify_jwt"?}. 409, jeśli istnieje.
GET /api/v1/projects/{ref}/functions/{name}Kod źródłowy (files) i konfiguracja.
PUT /api/v1/projects/{ref}/functions/{name}Wdraża (tworzy lub aktualizuje): {"code" | "files", "verify_jwt"?}. Zwraca version.
DELETE /api/v1/projects/{ref}/functions/{name}Usuwa funkcję.
GET /api/v1/projects/{ref}/secretsNazwy sekretów (bez wartości).
GET /api/v1/projects/{ref}/functions/{name}/versionsHistoria wdrożeń: {"current_version", "versions": [...]}.
POST /api/v1/projects/{ref}/functions/{name}/versionsPrzywrócenie wersji: {"rollback_to": 3}. Zwraca nową version.
PUT /api/v1/projects/{ref}/secretsUstawia sekrety: {"secrets": {"NAZWA": "wartość"}} albo sama mapa {"NAZWA": "wartość"} (scalane).
DELETE /api/v1/projects/{ref}/secrets?name=NAZWAUsuwa sekret.
curl -X PUT https://host.ulewicz.space/api/v1/projects/abcdefghijklmnopqrst/functions/hello \
  -H "Authorization: Bearer $HOSTBASE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"files":[{"path":"index.ts","content":"Deno.serve(() => new Response(\"ok\"))"}]}'
{ "name": "hello", "version": 3, "url": "https://abcdefghijklmnopqrst.host.ulewicz.space/functions/v1/hello" }

Połączenie z bazą

Bezpośredni host bazy ma postać db-<ref>.host.ulewicz.space, port 5432. TLS jest wymagany (sslmode=require) — routing do właściwej bazy odbywa się po SNI.

psql "postgresql://postgres:HASLO@db-abcdefghijklmnopqrst.host.ulewicz.space:5432/postgres?sslmode=require"

Kody błędów

KodZnaczenie
400Niepoprawne dane wejściowe lub błąd SQL
401Brak lub nieprawidłowy token
402Przekroczony limit planu
403Brak uprawnień
404Zasób nie istnieje lub nie masz do niego dostępu
409Projekt w niewłaściwym stanie (np. nieaktywny) lub zasób już istnieje
413Kod funkcji przekracza 1 MB
422Region niedostępny
503Serwer bazodanowy chwilowo niedostępny lub brak pojemności