Базовый URL: https://scamprojecttest.xyz/api/v1. Общие правила (авторизация, лимиты, ошибки, идемпотентность) — в обзоре.
Аккаунт
| Метод | Путь | Scope | Описание |
|---|
| GET | /users/me | domains:read | Профиль ключа и пользователя |
| GET | /users/{user_id}/balance | domains:read | Баланс |
| GET | /transactions | domains:read | Транзакции (пагинация, ?user_id=) |
| GET | /referrals | domains:read | Реферальная статистика |
curl https://scamprojecttest.xyz/api/v1/users/me -H "Authorization: Bearer $KEY"
{
"principal": { "key_id": 3, "name": "reseller acme", "role": "reseller", "scopes": ["domains:read","domains:buy"], "user_id": 42 },
"user": { "id": 42, "telegram_id": 666971555, "balance_usd": "12.50", "is_banned": false }
}
Домены
Список доменов
GET /domains · scope domains:read · пагинация · ?user_id= (operator)
Карточка домена
GET /domains/{domain_id} · scope domains:read. Reseller видит только свои; чужой id → 404.
Проверка доступности
GET /domains/check?names=a.com,b.net · scope domains:read · до 50 имён
{ "results": [ { "domain": "a.com", "available": false, "price_usd": "17.00", "error": null } ] }
Цена TLD
GET /domains/price?tld=com · scope domains:read
{ "tld": "com", "price_usd": "17.00", "supported": true }
Массовая проверка
POST /domains/check:bulk · scope domains:read · тело { "names": ["a.com","b.net"] } → bulk-конверт.
Покупка (деньги)
Денежные эндпоинты требуют API_MONEY_ENABLED, scope domains:buy, заголовок Idempotency-Key и (если включена) подпись X-Signature.
Массовая регистрация
POST /domains/register:bulk · scope domains:buy · деньги · async → 202
curl -X POST "https://scamprojecttest.xyz/api/v1/domains/register:bulk" \
-H "Authorization: Bearer $KEY" \
-H "Idempotency-Key: reg-2026-06-09-001" \
-H "Content-Type: application/json" \
-d '{"names":["example-store-1.com","example-store-2.net"]}'
{ "batch_id": "checkout:1234", "accepted": 2, "status": "pending" }
Operator обязан указать покупателя: ?user_id=42. Регистрация идёт фоном; статус — GET /batches/checkout:1234. Невалидные строки → 422 с разбором по позициям; ни одна не оплачивается. Премиум-имена (по цене реестра) недоступны и в регистрацию не уходят.
Статус заказов
POST /orders/status:bulk · scope domains:read · тело { "ids": [101,102] }.
Статус batch-задачи
GET /batches/{batch_id} · scope domains:read.
Пополнение баланса (деньги)
Создать счёт
POST /deposits · scope deposits:write · деньги → 201
| Поле | Тип | Описание |
|---|
amount_usd | строка/число > 0 | Сумма к зачислению (1–1000) |
provider | строка | cryptobot · xrocket · lava · p2328 · lolzteam |
asset | строка | (необяз.) монета для CryptoBot |
user_id | число | Обязателен для operator-ключа |
{ "provider":"cryptobot","external_id":"inv_123","pay_url":"https://...","amount_usd":"5","pay_usd":"5.15" }
Зачисление на баланс происходит после оплаты — по подписанному вебхуку провайдера, а не этим запросом.
Статус счёта
GET /deposits/{provider}/{external_id} · scope domains:read.
Операторские эндпоинты
Только operator-ключ (scope admin:*). Денежные требуют Idempotency-Key.
| Метод | Путь | Описание |
|---|
| POST | /admin/users/{user_id}/balance | Корректировка баланса {delta_usd, reason} (деньги) |
| POST | /admin/users/{user_id}/ban | Бан/разбан {banned, reason} |
| POST | /admin/deposits/{transaction_id}/mark-completed | Ручное завершение депозита (деньги) |
| POST | /admin/deposits/{transaction_id}/mark-failed | Пометить депозит неуспешным |