Все 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, cancel (по окончании расчётного периода), cancel_revoke. |
| 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_.-]). Ключ привязан к методу, пути и телу запроса. Если повторить тот же запрос с тем же ключом в течение часа, вернётся сохранённый ответ; позже вы получите 410 с reason replay_stale, и тогда нужно отправить новый ключ. Тот же ключ с другим телом запроса или на другом endpoint отклоняется с 409 idempotency_conflict.
Ограничения частоты
По умолчанию действуют лимиты: 60 запросов в минуту (плюс burst в 20 запросов) и 5 000 в сутки на ключ, 120 в минуту на аккаунт по всем ключам и 600 в минуту на исходный IP-адрес. При превышении лимита вы получите HTTP 429 с заголовком Retry-After. Заголовки ответа X-RateLimit-Remaining и X-RateLimit-Reset показывают текущее состояние лимита ключа.

