API-first

Najlepszy panel admina to brak panelu

Dashboard jest wyznaniem porażki API. Manifest dla developerów, którzy mają lepsze rzeczy do roboty niż klikać.

SimpleCloud· 28 kwietnia 2026· 5 min czytania
Terminal CLI z zielonym kodem, w tle rozsypujące się dashboardy — API-first

Wszedłeś na panel administratora. 47 zakładek. Dwanaście razy tooltipy. Trzy modały głębokie. Pięć minut później odpaliłeś wreszcie tę cholerną maszynę.

Mogłeś to zrobić jedną komendą. Ale nie miałeś API.

Manifest brak-panelu

Każdy panel admina to ucieczka od dobrego API. Jeśli możesz zrobić rzeczy z UI, a nie możesz tych samych rzeczy zrobić curlem — Twój provider zatrudnił PM-a od UX zamiast architekta API.

Dobry cloud provider:

Złe dashboardy istnieją, bo łatwiej dorzucić nową zakładkę niż przemyśleć endpoint.

Co tracisz, klikając

Klikanie skaluje się jak O(czas × ludzie). API skaluje się jak O(1). Postawienie 50 VM-ek dla testu obciążeniowego:

MetodaCzasRepeatable?Audytowalne?
Klikanie w panel~90 minNieNie
Bash + curl~3 minTakTak (logi shell)
Terraform plan/apply~2 minTakTak (state file + git)

A jak coś pójdzie nie tak — jak rollbackujesz 50 klików? Nie. Z Terraformu: terraform destroy, czysta sprawa.

SimpleCloud API w 5 sekund

JWT="..."
H="Authorization: Bearer $JWT"
B="https://poland.whitesky.cloud/api/1"

# Postaw cloudspace
curl -X POST -H "$H" -H "Content-Type: application/json" \
  "$B/customers/$CID/cloudspaces" \
  -d '{"name":"test","location":"pl-war-dc01-002",
       "private_network":"192.168.50.0/24",
       "firewall":{"private":false,"external_network_id":1}}'

# Postaw VM
curl -X POST -H "$H" \
  "$B/customers/$CID/cloudspaces/$CS/vms?name=app1&vcpus=2&memory=4096&disk_size=20&image_id=11"

# Stop / start kiedy potrzeba
curl -X POST -H "$H" "$B/.../vms/$VM/stop"
curl -X POST -H "$H" "$B/.../vms/$VM/start"

To wszystko. 590 endpointów — wszystko klikalne w portalu jest też w API. Cloudspace, VM, dyski, snapshots, port-forwarding, ingress, K8s, S3 buckets, IAM, billing, audit logi.

Terraform też mamy

provider "poland-whitesky-cloud" {
  client_jwt = var.jwt
}

resource "poland-whitesky-cloud_cloudspace" "main" {
  name                = "production"
  customer_id         = var.cid
  location            = "pl-war-dc01-002"
  external_network_id = 1
}

resource "poland-whitesky-cloud_machine" "web" {
  count         = 3
  name          = "web-${count.index}"
  cloudspace_id = poland-whitesky-cloud_cloudspace.main.id
  vcpus         = 2
  memory        = 4096
  disk_size     = 50
  image_id      = 11
}

terraform apply → trzy VM-ki, infrastruktura jako kod, w 90 sekund.

CLI dla skryptów

poland-whitesky-cloud list-cloudspaces --json \
  | jq '.[] | select(.name=="production") | .cloudspace_id'

poland-whitesky-cloud create-virtual-machine \
  --cloudspace-id $CS --vcpus 2 --memory 4096

Każda komenda ma flagę --json. Pipeline z jq / xargs / GitHub Actions = naturalny.

Kiedy używać UI?

To są jedyne uzasadnione przypadki. Resztę czasu = API.

Litmus test. Wybierz jedną akcję (np. „przesuń backup retention z 7 dni na 14"). Spróbuj zrobić ją tylko przez API. Jeśli nie da się — to API jest niekompletne. Jeśli się da, ale dokumentacja Cię nie prowadzi — to API jest źle udokumentowane. Jeśli idzie gładko — masz dobrego providera.

SimpleCloud sign-off

Dajemy: REST API (590 endpointów, Swagger 2.0 spec do pobrania), oficjalny provider Terraform, CLI z --json, CSI driver dla Kubernetes. Portal jest, ale tylko żeby się zorientować i pokazać klientowi.

Ty piszesz terraform apply, my dostarczamy infrastrukturę. Tak ma działać cloud.