Меню документации

Подписки — Справочник API

Автопополнение ресурсов для адреса.

МетодПутьОписание
GET/v1/subscriptions/plansТарифные планы резервирования энергии со средней ценой за использование
GET/v1/subscriptionsСписок подписок
POST/v1/subscriptionsНастройка автопополнения адреса
GET/v1/subscriptions/{subscriptionId}Получение информации о подписке
PATCH/v1/subscriptions/{subscriptionId}Изменение или приостановка подписки
DELETE/v1/subscriptions/{subscriptionId}Отмена подписки

Сгенерировано из openapi.yaml во время сборки. Базовый URL https://api.tenergy.me/v1 или https://api-nile.tenergy.me/v1 в сети Nile (Окружения). Каждый запрос ниже подписывается в соответствии с разделом Аутентификация, если в строке Аутентификация не указано иное.

Тарифные планы резервирования энергии со средней ценой за использование

GET /v1/subscriptions/plans · listSubscriptionPlans

Аутентификация: Публичный — учетные данные не требуются.

Публичный вызов; переданный API-ключ валидируется при наличии. Значение per_use для тарифа типа grid рассчитывается по текущему окну времени суток. Значение average_price рассчитывается сервером для 10, 50, 200 и 1 000 использований в сутки.

Ответы

СтатусЗначение
200Список активных тарифных планов (от меньшего резерва к большему).

Поля ответа

ПолеТипОбязательноеОписание
dataarray of object (SubscriptionPlan)да
data[].slugstringда
data[].namestringда
data[].reserve_energyintegerдаОбъем энергии, постоянно поддерживаемый делегированным на адрес.
data[].daily_fee_sunintegerда
data[].daily_fee_trxnumberда
data[].per_useobjectда
data[].per_use.modeenum: flat, gridдаgrid = цена энергии за 1 ч в текущем временном окне × 65 000.
data[].per_use.energy_per_useintegerда
data[].per_use.price_suninteger | nullдаnull, если часовой тариф временно на паузе.
data[].per_use.price_trxnumber | nullда
data[].per_use.day_partstring | nullдаID временного окна для grid; null для flat.
data[].throughput_rulestringда
data[].refillobjectда
data[].refill.lowintegerдаПополнение при снижении доступной энергии ниже этой планки.
data[].refill.highintegerдаПополнение до этого уровня.
data[].uses_within_reserve_per_dayintegerда
data[].average_pricearray of objectдаСредняя цена за транзакцию: суточная абонплата / N + цена за использование, для N = 10, 50, 200, 1000.
data[].average_price[].uses_per_dayintegerда
data[].average_price[].average_suninteger | nullда
data[].average_price[].average_trxnumber | nullда
data[].average_price[].within_reservebooleanда
atstring (date-time)да

Список подписок

GET /v1/subscriptions · listSubscriptions

Аутентификация: API-ключ (HMAC).

Параметры

ПараметрГдеТипОбязательныйОписание
statusqueryenum: active, paused, suspended, cancelledФильтр по статусу.
receiverquerystringФильтр по адресу получателя.
limitqueryinteger
cursorquerystringНепрозрачный курсор из next_cursor предыдущего ответа.

Ответы

СтатусЗначение
200OK
401Отсутствуют, некорректны или отклонены учетные данные.
429Слишком много запросов.
500Ошибка на нашей стороне.

Поля ответа

ПолеТипОбязательноеОписание
dataarray of object (Subscription)да
data[].idstringда
data[].receiverstringдаTRON-адрес Base58Check (начинается с T, 34 символа).
data[].resourceenum: energy, bandwidthда
data[].modeenum: refill, renewalда
data[].tierenum: 5m, 15m, 1h, 1d, 3d, 30dдаСрок аренды.
data[].threshold_amountinteger
data[].refill_amountinteger
data[].max_price_suninteger (int64) | null
data[].max_refills_per_dayinteger | null
data[].daily_fee_suninteger (int64)Плата за мониторинг за календарный день активности подписки.
data[].statusenum: active, paused, suspended, cancelledдаpaused устанавливается пользователем; suspended выставляется платформой при нехватке баланса (автоматически снимается после пополнения); cancelled — терминальный статус.
data[].labelstring | null
data[].last_refill_atstring (date-time) | null
data[].last_order_idstring | null
data[].refills_todayinteger
data[].created_atstring (date-time)да
data[].updated_atstring (date-time)
data[].planstringКод тарифного плана (присутствует только для тарифных подписок).
data[].reserve_energyinteger | null
data[].delegated_energyintegerЭнергия, делегированная на адрес прямо сейчас.
data[].next_billing_atstring (date-time) | null
data[].grace_untilstring (date-time) | nullЛьготный период сохранения делегирования при ошибке списания.
data[].eventsarray of object (SubscriptionEvent)Только в GET /v1/subscriptions/{id} для тарифных подписок: последние 20 событий.
data[].events[].idstringyes
data[].events[].kindenum: refill, charge, pause, resume, cancel, top_up_failedyes
data[].events[].energy_deltainteger | null
data[].events[].amount_suninteger | null
data[].events[].txidstring | null
data[].events[].tsstring (date-time)yes
next_cursorstring | nullyes

Настройка автопополнения адреса

POST /v1/subscriptions · createSubscription

Аутентификация: API-ключ (HMAC).

Отслеживает адрес и автоматически покупает ресурсы, когда их свободный объем опускается ниже threshold_amount. Два режима работы:

  • mode: "refill" — пополнение по требованию. Адрес опрашивается и пополняется при падении ниже порогового значения. Оплачивается каждый заказ пополнения плюс посуточная абонентская плата за мониторинг.
  • mode: "renewal" — продление постоянной аренды. Аренда срока tier продлевается по мере истечения, чтобы доступность ресурсов на адресе не прерывалась.

Биллинг: каждое пополнение или продление — это обычный заказ, списываемый по действующей цене, плюс daily_fee_sun за каждый календарный день активности подписки. Если баланса не хватает на очередное пополнение, подписка переходит в статус suspended (она не удаляется), и отправляется вебхук subscription.suspended; она возобновляется автоматически после пополнения баланса.

Один адрес может иметь максимум одну подписку на каждый тип ресурса. Повторная подписка отклоняется с кодом 3011 subscription_exists.

Параметры

ПараметрГдеТипОбязательныйОписание
Idempotency-KeyheaderstringКлиентский ключ идемпотентности (8–128 символов).

Тело запроса

JSON (SubscriptionRequest), обязательно.

ПолеТипОбязательноеОписание
receiverstringдаTRON-адрес Base58Check (начинается с T, 34 символа).
resourceenum: energy, bandwidthда
modeenum: refill, renewalдаrefill пополняет при падении баланса; renewal непрерывно продлевает аренду.
tierenum: 5m, 15m, 1h, 1d, 3d, 30dдаСрок аренды.
threshold_amountintegerдаПорог срабатывания пополнения.
refill_amountintegerдаОбъем ресурсов для покупки при пополнении.
max_price_suninteger (int64)Пропускать пополнение, если цена превышает этот лимит, чтобы избежать скачков цен.
max_refills_per_dayintegerЗащитный лимит количества пополнений в сутки, предотвращающий утечку баланса. Настоятельно рекомендуется.
labelstring | null

Пример тела запроса из контракта (значения для иллюстрации):

json
{
  "receiver": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE",
  "resource": "energy",
  "mode": "refill",
  "tier": "1h",
  "threshold_amount": 65000,
  "refill_amount": 131000,
  "max_price_sun": 3000000,
  "max_refills_per_day": 48
}

Ответы

СтатусЗначение
201Создана
400Некорректный запрос — невалидный JSON, неизвестное поле или неверный тип.
401Отсутствуют, некорректны или отклонены учетные данные.
402Недостаточно средств для покрытия заказа.
409Конфликт состояния объекта или дублирование подписки.
422Синтаксически корректный запрос, но действие невозможно.
429Слишком много запросов.
500Ошибка на нашей стороне.

Поля ответа (Subscription)

Те же поля, что в ответе GET /v1/subscriptions.

Получение информации о подписке

GET /v1/subscriptions/{subscriptionId} · getSubscription

Аутентификация: API-ключ (HMAC).

Параметры

ПараметрГдеТипОбязательныйОписание
subscriptionIdpathstringда

Ответы

СтатусЗначение
200OK
401Отсутствуют, некорректны или отклонены учетные данные.
404Объект не найден или принадлежит другому аккаунту.
500Ошибка на нашей стороне.

Поля ответа (Subscription)

Те же поля, что в списке подписок.

Изменение или приостановка подписки

PATCH /v1/subscriptions/{subscriptionId} · updateSubscription

Аутентификация: API-ключ (HMAC).

Передайте любое подмножество изменяемых полей. Поле status принимает только значения active и paused. Статус suspended устанавливается платформой при нехватке средств и сбрасывается автоматически после пополнения; статус cancelled достигается через DELETE. Пустое тело запроса отклоняется с 2002 empty_patch.

Параметры

ПараметрГдеТипОбязательныйОписание
subscriptionIdpathstringда

Тело запроса

JSON (SubscriptionPatch), обязательно.

ПолеТипОбязательноеОписание
statusenum: active, paused
tierenum: 5m, 15m, 1h, 1d, 3d, 30d
threshold_amountinteger
refill_amountinteger
max_price_suninteger (int64)
max_refills_per_dayinteger
labelstring | null

Ответы

СтатусЗначение
200Обновлена
400Некорректный запрос — невалидный JSON, неизвестное поле или неверный тип.
401Отсутствуют, некорректны или отклонены учетные данные.
404Объект не найден или принадлежит другому аккаунту.
422Синтаксически корректный запрос, но действие невозможно.
500Ошибка на нашей стороне.

Поля ответа (Subscription)

Те же поля, что в объекте Subscription.

Отмена подписки

DELETE /v1/subscriptions/{subscriptionId} · cancelSubscription

Аутентификация: API-ключ (HMAC).

Останавливает будущие пополнения. Уже доставленные ресурсы продолжают действовать до истечения оплаченного срока; они не отзываются досрочно и не возмещаются. Подписка остается доступной для чтения со статусом status: "cancelled".

Параметры

ПараметрГдеТипОбязательныйОписание
subscriptionIdpathstringда

Ответы

СтатусЗначение
204Отменена. Тело ответа пустое.
401Отсутствуют, некорректны или отклонены учетные данные.
404Объект не найден или принадлежит другому аккаунту.
500Ошибка на нашей стороне.

    ↑ ↓ — выбрать · Enter — открыть · Esc — закрыть