Все endpoint возвращают application/json. Ошибки следуют RFC 7807 (Problem+JSON). Каждый ответ содержит заголовок X-Request-Id для сопоставления с серверным журналом аудита.
| Method | Path | Разрешение | Назначение |
|---|---|---|---|
| GET | /v1/health | public | Проверка работоспособности без аутентификации. |
| GET | /v1/me | any | Информация о собственном аккаунте и метаданные ключа. |
| GET | /v1/products | read:products | Список всех публично продаваемых продуктов с ценами. |
| GET | /v1/products/{id} | read:products | Детали продукта, включая опции конфигурации. |
| POST | /v1/orders | write:orders | Размещение заказа. Idempotency-Key обязателен. |
| GET | /v1/orders/{id} | read:orders | Статус собственного заказа. |
| GET | /v1/services | read:services | Список собственных услуг (с пагинацией). |
| GET | /v1/services/{id} | read:services | Детали собственной услуги. |
| GET | /v1/services/{id}/credentials | read:credentials | Учётные данные услуги (отдельное разрешение, фиксируется в журнале аудита). |
| POST | /v1/services/{id}/actions | write:services | Действие с услугой: start, stop, reboot, reinstall, suspend, unsuspend, terminate. |
| GET | /v1/billing/balance | read:billing | Баланс. |
| GET | /v1/billing/invoices | read:billing | Список ваших счетов (с пагинацией). |
| GET | /v1/billing/invoices/{id}/pdf | read:billing | PDF счёта. |
| GET | /v1/webhooks | read:webhooks | Текущий URL вебхука. |
| PUT | /v1/webhooks | write:webhooks | Установить или удалить URL вебхука. |
Идемпотентность
POST /v1/orders и POST /v1/services/{id}/actions требуют заголовок Idempotency-Key (1-80 символов из набора [A-Za-z0-9_.-]). Сервер кэширует ответ и хеш тела на 24 часа; второй запрос с тем же ключом и тем же телом возвращает тот же ответ, второй запрос с тем же ключом, но другим телом отклоняется с 409 idempotency_conflict.
Ограничения частоты
По умолчанию: 60 запросов/минуту (с burst 20) и 5000/день на ключ, плюс 600 запросов/минуту на IP независимо от ключа. При превышении возвращается HTTP 429 с заголовком Retry-After. Заголовки ответа X-RateLimit-Remaining и X-RateLimit-Reset отражают текущее состояние.

