Skip to content
Translated page. The English version is the source of truth.

Energy Reclaim — досрочный возврат арендованной энергии ​

Возврат делегированной энергии в пул до окончания срока аренды. Полезно, когда транзакция, для которой вы арендовали ресурсы, уже отправлена: энергия не простаивает на адресе, а пул может обслужить кого-то другого.

Возврат является добровольным. Срок аренды истекает сам по себе — вам необязательно вызывать этот эндпоинт.

Базовый URL эндпоинта ​

https://netts.io/apiv2/energy/reclaim

У Bandwidth есть собственный эндпоинт, см. Bandwidth.

Заголовки запроса ​

ЗаголовокОбязательныйОписание
X-API-KEYДаКлюч API, с помощью которого был создан заказ
X-Real-IPДаIP-адрес из вашего белого списка

Ваш user_id определяется по ключу API — передавать его не нужно.

Ключ должен совпадать с тем, что использовался для заказа

Заказ может быть отозван только тем ключом, с помощью которого он был создан. Другой ключ того же аккаунта не сработает.


Возврат — POST /apiv2/energy/reclaim/{orderId} ​

orderId — это номер заказа, возвращенный при заказе энергии, например 1H… для аренды на 1 час или 5M… для аренды на 5 минут. Тело запроса отсутствует.

bash
curl -X POST "https://netts.io/apiv2/energy/reclaim/1Hb252feadcc" \
  -H "X-API-KEY: your_api_key" \
  -H "X-Real-IP: your_whitelisted_ip"

Ответ — успешно отозвано (200, код 10004) ​

json
{
    "detail": {
        "code": 10004,
        "status": "reclaimed",
        "msg": "Energy reclaimed",
        "data": {
            "orderId": "1Hb252feadcc",
            "reclaimHash": "51fa77da06e8fbebf504fbf088d1d9611059398d…"
        }
    }
}

reclaimHash — это ончейн-транзакция, вернувшая энергию. Стандартное время от запроса до ответа составляет несколько секунд.

Ответ — уже отозвано (200, код 10004) ​

json
{
    "detail": {
        "code": 10004,
        "status": "reclaimed",
        "msg": "Energy already reclaimed",
        "data": {
            "orderId": "1Hb252feadcc",
            "reclaimHash": "51fa77da06e8fbebf504fbf088d1d9611059398d…"
        }
    }
}

Вызывать эндпоинт повторно безопасно: второй вызов возвращает тот же хеш и ничего не меняет. Это также относится к арендам, срок действия которых уже истек сам по себе.

Ответ — внешний провайдер (400, код 5006) ​

json
{
    "detail": {
        "code": 5006,
        "status": "failed",
        "msg": "Reclaim is available only for internal pool orders",
        "data": { "orderId": "1H47eac983af", "provider": "…" }
    }
}

Заказы, выполненные внешним провайдером, нельзя отозвать: эти ресурсы не принадлежат нам для возврата. Какой именно провайдер выполнил заказ, указано в ответе на заказ.

Ответ — нечего отзывать (400, код 5005) ​

Заказ не привел к делегированию, либо делегирование неактивно. Списаний не происходит, и ничего не меняется.

Ответ — еще не завершено (503, код 5003) ​

json
{
    "detail": {
        "code": 5003,
        "status": "failed",
        "msg": "Reclaim not completed yet — try again shortly",
        "data": { "orderId": "1Hb252feadcc" }
    }
}

Запрос на отзыв был принят, но ончейн-транзакция не появилась в течение окна ожидания. Скорее всего, процесс завершится самостоятельно — повторите вызов через несколько секунд, чтобы получить хеш.

Ответ — заказ не найден (404) ​

json
{ "detail": { "code": -1, "msg": "Order not found" } }

Возвращается как в случае, когда заказ не существует, так и когда он принадлежит другому аккаунту.


Один заказ, а не один адрес ​

Отзыв работает для каждого заказа отдельно, а не для адреса. Это сделано намеренно: заказ точно определяет, что именно возвращается — на одном и том же адресе может находиться энергия от нескольких заказов, включая заказы других аккаунтов.

Два последствия, которые стоит учитывать:

  • Пакетный заказ для нескольких адресов создает по одному номеру заказа на каждый адрес. Вы можете отозвать любой из них по отдельности; остальные продолжат действовать.
  • Большой объем для одного адреса может быть разделен на несколько заказов. Чтобы освободить этот адрес полностью, отзовите каждый из них.

Отзыв заказов, созданных через Orchestrator ​

Работает точно так же. Запросите у Orchestrator статус вашего запроса, возьмите номер заказа из поля energy.orderIds нужного адреса и вызовите эндпоинт отзыва с ним:

json
"energy": {
    "requested": 65570,
    "delegated": 65570,
    "status": "done",
    "orderIds": ["1Hb252feadcc"]
}

Финансы ​

Отзыв не возвращает средства. Аренда и возврат — это раздельные операции: вы оплатили аренду при создании заказа, и досрочный возврат ресурса не отменяет этот платеж.

Ограничение частоты запросов ​

10 запросов в секунду на один IP.

Коды ошибок ​

КодHTTPЗначение
10004200Отозвано или уже было отозвано — хеш включен
5003503Принято, хеш еще не подтвержден — повторите попытку позже
5005400Для этого заказа нечего отзывать
5006400Заказ внешнего провайдера — отзыв недоступен
−1404Заказ не найден или принадлежит другому аккаунту
−1401Ключ API отсутствует или недействителен, либо IP не в белом списке