API Documentation v1.0

Dokumentacja REST API

Kompleksowa dokumentacja REST API do zarządzania serwerami, monitoringu, backupami, fakturami i wszystkimi zasobami w SKY-VM. Pełna kontrola nad infrastrukturą z poziomu kodu.

Szybki start

Uwierzytelnianie

Wszystkie żądania API wymagają klucza API w nagłówku Authorization. Klucz API możesz wygenerować w panelu użytkownika w sekcji Ustawienia → Klucze API.

Format nagłówka:

Authorization: Bearer YOUR_API_KEY

Ważne

Nigdy nie udostępniaj swojego klucza API publicznie. Traktuj go jak hasło i przechowuj bezpiecznie w zmiennych środowiskowych.

Przykłady użycia w różnych językach

curl -X GET "https://api.sky-vm.eu/v1/servers" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Base URL

Wszystkie endpointy API są dostępne pod adresem:

https://api.sky-vm.eu/v1

Endpointy API

Zarządzanie serwerami

Akcje serwera

Backup i przywracanie

Monitoring i metryki

Sieć i DNS

Faktury i płatności

Klucze API

Wsparcie techniczne

Kody błędów

API SKY-VM używa standardowych kodów statusu HTTP oraz własnych kodów błędów dla lepszej identyfikacji problemów:

401
UNAUTHORIZED

Nieprawidłowy lub brakujący klucz API

403
FORBIDDEN

Brak uprawnień do wykonania tej operacji

404
NOT_FOUND

Zasób nie został znaleziony

422
VALIDATION_ERROR

Nieprawidłowe dane wejściowe

429
RATE_LIMIT_EXCEEDED

Przekroczono limit zapytań

402
INSUFFICIENT_FUNDS

Niewystarczające środki na koncie

409
SERVER_RUNNING

Operacja niemożliwa - serwer jest uruchomiony

409
SERVER_OFFLINE

Operacja niemożliwa - serwer jest wyłączony

409
ALREADY_RUNNING

Serwer jest już uruchomiony

409
ALREADY_STOPPED

Serwer jest już zatrzymany

409
BACKUP_IN_PROGRESS

Trwa już tworzenie kopii zapasowej

400
BACKUP_NOT_ENABLED

Funkcja backupu nie jest włączona

400
MONITORING_NOT_ENABLED

Monitoring nie jest włączony

400
LIMIT_REACHED

Osiągnięto maksymalny limit zasobów

500
INTERNAL_ERROR

Wewnętrzny błąd serwera

Limity zapytań

Rate Limiting

API SKY-VM implementuje limity zapytań aby zapewnić stabilność i dostępność dla wszystkich użytkowników:

1

100 zapytań/minutę

dla standardowych endpointów (GET, LIST)

2

30 zapytań/minutę

dla operacji modyfikujących (POST, PUT, PATCH, DELETE)

3

10 zapytań/minutę

dla akcji serwera (start, stop, restart, reinstall)

4

2000 zapytań/godzinę

łączny limit dla wszystkich operacji

Nagłówki odpowiedzi

Każda odpowiedź API zawiera nagłówki informujące o limitach:

X-RateLimit-Limit: 100 - maksymalny limit zapytań
X-RateLimit-Remaining: 87 - pozostałe zapytania
X-RateLimit-Reset: 1706634000 - timestamp resetu limitu

Przekroczenie limitów skutkuje odpowiedzią 429 Too Many Requests. Zalecamy implementację exponential backoff przy ponownych próbach.

Webhooks

Powiadomienia w czasie rzeczywistym

Webhooks pozwalają na otrzymywanie powiadomień o ważnych wydarzeniach w czasie rzeczywistym. Możesz skonfigurować webhooks w panelu użytkownika w sekcji Ustawienia → Webhooks.

Dostępne wydarzenia:

server.created- Utworzono nowy serwer
server.started- Uruchomiono serwer
server.stopped- Zatrzymano serwer
server.deleted- Usunięto serwer
backup.completed- Ukończono backup
invoice.created- Utworzono fakturę
invoice.paid- Opłacono fakturę

Przykładowy payload:

{
  "event": "server.started",
  "timestamp": "2025-01-01T16:00:00Z",
  "data": {
    "server_id": "srv_123456",
    "name": "VPS-001",
    "status": "running",
    "ip": "185.123.45.67"
  }
}

Weryfikacja podpisu

Każdy webhook zawiera nagłówek X-Signature z HMAC SHA-256 podpisem payload. Zweryfikuj podpis aby upewnić się, że webhook pochodzi z SKY-VM.EU.

Najlepsze praktyki

Obsługa błędów

Zawsze sprawdzaj pole success w odpowiedzi. Implementuj retry logic z exponential backoff dla błędów 5xx i 429.

Paginacja

Używaj parametrów page i limit dla dużych zbiorów danych. Maksymalny limit to 100 elementów na stronę.

Caching

Cachuj odpowiedzi API lokalnie aby zmniejszyć liczbę zapytań. Używaj nagłówków ETag i If-None-Match.

Timeouty

Ustaw odpowiednie timeouty dla zapytań HTTP (zalecane: 30s dla GET, 60s dla POST). Długie operacje są asynchroniczne.