API LOW.MS dla programistów
Zarządzaj swoimi serwerami gier z własnych skryptów, botów i narzędzi.
Otwórz dokumentację APIPierwsze kroki
Utwórz klucz API na stronie Klucze API w swoim panelu sterowania, wybierz jego zakresy i skopiuj klucz. Następnie sprawdź, czy działa:
curl https://api.prod.nexus.low.ms/v1/me \
-H "Authorization: Bearer lowms_..."Wylistuj swoje serwery i wykonuj na nich operacje. Akcje takie jak restart zwracają zadanie, które możesz odpytywać aż do zakończenia.
# List servers
curl https://api.prod.nexus.low.ms/v1/servers \
-H "Authorization: Bearer lowms_..."
# Restart one, then poll the job it returns
curl -X POST https://api.prod.nexus.low.ms/v1/servers/SERVER_ID/power \
-H "Authorization: Bearer lowms_..." \
-H "Content-Type: application/json" \
-d '{"action":"restart"}'
curl https://api.prod.nexus.low.ms/v1/jobs/JOB_ID \
-H "Authorization: Bearer lowms_..."Uwierzytelnianie i zakresy
Wysyłaj klucz jako token bearer. Klucze mają tylko te zakresy, które im nadasz: servers:read, servers:power, backups:read, backups:write, console:send. Traktuj klucze jak hasła, każdy możesz w dowolnej chwili unieważnić z poziomu panelu.
Limity zapytań i błędy
Każdy klucz ma 60 zapytań odczytu i 12 zapytań zapisu na minutę. Każde zapytanie do /v1 liczy się też do wspólnego limitu 300 zapytań na minutę dla Twojego adresu IP, więc kilku klientów za jednym adresem może osiągnąć ten limit, zanim którykolwiek z nich wyczerpie swój własny. Odpowiedzi zawierają nagłówki X-RateLimit, a odpowiedź 429 niesie ze sobą Retry-After.
Błędy zawsze wyglądają tak:
{"error":{"code":"...","message":"..."}}Każdy błąd ma jeden ze stałego zestawu kodów, żeby Twoje skrypty mogły rozgałęziać się na error.code: invalid_key, missing_scope, console_unavailable, not_found, bad_request, unauthorized, forbidden, conflict, server_busy, transfer_in_progress, node_offline, rate_limited, daemon_unavailable, bad_gateway, method_not_allowed, payload_too_large, unsupported_media_type, unavailable, internal_error. Z czasem mogą dojść nowe kody, ale istniejące nigdy nie są zmieniane ani usuwane.
Wersjonowanie
API v1 zmienia się wyłącznie w sposób addytywny: nowe endpointy i nowe opcjonalne pola. Wszystko, co łamie zgodność, trafia do v2, a wycofania zapowiadamy z dużym wyprzedzeniem.