> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.lumiweb.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# API — Домены

> REST API бота доменов: аккаунт, проверка и регистрация доменов, цены, заказы, пополнения

Базовый URL: `https://scamprojecttest.xyz/api/v1`. Общие правила (авторизация, лимиты, ошибки, идемпотентность) — в [обзоре](/api).

## Аккаунт

| Метод | Путь                       | Scope          | Описание                            |
| ----- | -------------------------- | -------------- | ----------------------------------- |
| GET   | `/users/me`                | `domains:read` | Профиль ключа и пользователя        |
| GET   | `/users/{user_id}/balance` | `domains:read` | Баланс                              |
| GET   | `/transactions`            | `domains:read` | Транзакции (пагинация, `?user_id=`) |
| GET   | `/referrals`               | `domains:read` | Реферальная статистика              |

```bash theme={"system"}
curl https://scamprojecttest.xyz/api/v1/users/me -H "Authorization: Bearer $KEY"
```

```json theme={"system"}
{
  "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 имён

```json theme={"system"}
{ "results": [ { "domain": "a.com", "available": false, "price_usd": "17.00", "error": null } ] }
```

### Цена TLD

`GET /domains/price?tld=com` · scope `domains:read`

```json theme={"system"}
{ "tld": "com", "price_usd": "17.00", "supported": true }
```

### Массовая проверка

`POST /domains/check:bulk` · scope `domains:read` · тело `{ "names": ["a.com","b.net"] }` → bulk-конверт.

## Покупка (деньги)

<Warning>
  Денежные эндпоинты требуют `API_MONEY_ENABLED`, scope `domains:buy`, заголовок `Idempotency-Key` и (если включена) подпись `X-Signature`.
</Warning>

### Массовая регистрация

`POST /domains/register:bulk` · scope `domains:buy` · **деньги** · async → `202`

```bash theme={"system"}
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"]}'
```

```json theme={"system"}
{ "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-ключа                           |

```json theme={"system"}
{ "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`    | Пометить депозит неуспешным                          |
