TurtleGuard API доступен по адресу https://turtleguard.cloud/api/v1. Все ответы и тела запросов — JSON. Аутентификация — Bearer JWT в заголовке Authorization.
Авторизация
Получите токен через email/password:
curl -X POST https://turtleguard.cloud/api/v1/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"you@example.com","password":"…","captcha_token":"…"}'В ответе: access_token, refresh_token. Используйте в дальнейших запросах:
curl https://turtleguard.cloud/api/v1/auth/me \
-H 'Authorization: Bearer <access_token>'Когда access_token истекает (по умолчанию ~1 час), обновите его через POST /auth/refresh с refresh_token.
Публичные эндпоинты
GET /api/v1/plans— список тарифных планов.GET /api/v1/addons— каталог add-ons (DNS Proxy, CDN).GET /api/v1/status— состояние систем + последние инциденты. Используется на статус-странице.POST /api/v1/auth/register,/auth/login,/auth/forgot-password,/auth/reset-password— auth-операции.POST /api/v1/contact— форма заявки с лендинга.
Юзер-эндпоинты (auth required)
Аккаунт
GET /auth/me— текущий пользователь + активная подписка.POST /auth/2fa/setup→/auth/2fa/enable→/auth/2fa/disable— TOTP.POST /auth/change-password.
Подписки и биллинг
GET /subscriptions— все подписки текущего юзера с hostname-доменом.POST /billing/order— заказ услуги. Полеtrial: trueсоздаёт триал-подписку без списания (раз на аккаунт).POST /billing/top-up— пополнение баланса через Platega.
Add-ons
GET /subscriptions/{subId}/addons— купленные add-ons + entitlements.POST /subscriptions/{subId}/addons{key, auto_renew}— подключить. Списываетmonthly_priceс баланса. HTTP 402 если средств не хватает.DELETE /subscriptions/{subId}/addons/{key}— отключить.
Домены
GET /domains— список ваших доменов с флагами WAF / CDN / DNS.GET /domains/{id}/service— детали домена, подписка, entitlements, addons.PATCH /domains/{id}/settings— настройки. HTTP 402 если включаете WAF/CDN без entitlement.POST /domains/{id}/verify-dns— проверить, прописана ли A-запись.GET /domains/{id}/dns-instructions— инструкции по подключению DNS.
DNS-менеджер
GET /domains/{id}/dns— зона: NS-серверы, режим, записи.POST /domains/{id}/dns/records{type, name, content, ttl, priority?, proxied?}PATCH /domains/{id}/dns/records/{recordId}— обновить.DELETE /domains/{id}/dns/records/{recordId}— удалить.
Proxy-флаг: proxied: true работает только для A / AAAA / CNAME и требует entitlement (план Standart+ или add-on dns_proxy). Без entitlement сервер возвращает HTTP 402.
WAF / Subdomains / Origins / Redirects
GET/POST/DELETE /domains/{id}/rules— WAF-правила.GET/POST/DELETE /domains/{id}/subdomainsGET/POST/DELETE /domains/{id}/originsGET/POST/DELETE /domains/{id}/redirects
Коды ответов
200— успех с телом201— создание204— успех без тела (например, DELETE)400— невалидное тело401— не залогинен / истёкший токен402— entitlement нужен (WAF/CDN/Proxy не в плане) или баланс не хватает403— нет прав (роль пользователя)404— не найдено429— rate limit5xx— серверная ошибка
Rate-limits
Анонимные запросы — 60 RPS на IP. Авторизованные — 600 RPS на токен. Превышение возвращает 429 с заголовком Retry-After.
OpenAPI-схема (machine-readable) будет опубликована отдельно на /api/v1/openapi.json после стабилизации эндпоинтов.