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

Сессия — Справочник API

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

Вход выполняется в одно действие: страница получает челлендж (POST /v1/accounts/challenge), кошелек подписывает его — бесплатно, без транзакции, приватные ключи не покидают кошелек — и подпись передается в POST /v1/session, который устанавливает cookie с флагом httpOnly. Сессия сохраняется при перезагрузках и переходах, автоматически продлевается при использовании и восстанавливается в фоне через GET /v1/session.

Поскольку учетными данными является cookie, каждый небезопасный метод (мутирующий состояние) дополнительно требует заголовок X-CSRF-Token, значение которого берется из поля csrf_token ответа сессии. Сторонний сайт не имеет доступа к этому ответу и не может сформировать данный заголовок.

МетодПутьОписание
GET/v1/sessionФоновое восстановление сессии
POST/v1/sessionВход в панель управления
DELETE/v1/sessionВыход из системы
POST/v1/session/refreshПродление сессии
POST/v1/session/revoke-allВыход на всех устройствах
GET/v1/session/historyИстория недавних входов

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

Фоновое восстановление сессии

GET /v1/session · getSession

Аутентификация: Cookie сессии панели управления + X-CSRF-Token.

Вызывается панелью управления при каждой загрузке страницы. Возвращает активную сессию или 1013 session_expired, если в браузере нет сессии — что не является ошибкой для пользователя, а лишь сигналом показать окно входа.

Ответы

СтатусЗначение
200OK
4011013 session_expired — нет сессии, срок действия истек или был выполнен выход.
500Ошибка на нашей стороне.

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

ПолеТипОбязательноеОписание
account_idstringдаДля поля «ID аккаунта (для поддержки)». В интерфейсе его не нужно показывать где-либо еще — заголовком аккаунта служит display_name или сокращенный owner_address.
account_statusenum: unfunded, active, suspended, closedда
display_namestring | null
owner_addressstring | nullКошелек-владелец аккаунта; вход с него восстанавливает доступ.
addressstringдаАдрес, с которого выполнен вход. Владелец или приглашенный участник.
roleenum: owner, editor, viewer | nullдаРоль подписавшего в аккаунте. Она определяет доступные действия.
networkenum: mainnet, nile
csrf_tokenstringдаПередавайте в заголовке X-CSRF-Token при каждом POST, PATCH и DELETE этой сессии.
expires_atstring (date-time)да
created_atstring (date-time)
ttl_secondsintegerПолное время жизни сессии в секундах, сбрасываемое при продлении.

Вход в панель управления

POST /v1/session · createSession

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

Проверяет челлендж, подписанный адресом TRON, и открывает сессию браузера, возвращаемую в виде httpOnly cookie. Если у адреса еще нет аккаунта на этой платформе, он создается автоматически со статусом status: unfunded (так же, как при вызове POST /v1/accounts), поэтому первый и повторные входы происходят одинаково.

Подписание челленджа бесплатно и не является транзакцией: средства не расходуются, приватные ключи не покидают кошелек.

Тело ответа содержит csrf_token. Передавайте его в заголовке X-CSRF-Token во всех последующих запросах POST, PATCH или DELETE, выполняемых в рамках этой сессии.

Тело запроса

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

ПолеТипОбязательноеОписание
addressstringдаTRON-адрес Base58Check (начинается с T, 34 символа).
noncestringдаИз вызова POST /v1/accounts/challenge. Одноразовый.
signaturestringдаПодпись кошелька под message челленджа.

Ответы

СтатусЗначение
201Вход выполнен. Cookie сессии установлена.
400Некорректный запрос — невалидный JSON, неизвестное поле или неверный тип.
4011010 challenge_invalid — неизвестный, истекший или повторно использованный nonce, либо подпись не соответствует адресу.
429Слишком много запросов.
500Ошибка на нашей стороне.

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

ПолеТипОбязательноеОписание
account_idstringдаДля поля «ID аккаунта (для поддержки)». В интерфейсе его не нужно показывать где-либо еще — заголовком аккаунта служит display_name или сокращенный owner_address.
account_statusenum: unfunded, active, suspended, closedда
display_namestring | null
owner_addressstring | nullКошелек-владелец аккаунта; вход с него восстанавливает доступ.
addressstringдаАдрес, с которого выполнен вход. Владелец или приглашенный участник.
roleenum: owner, editor, viewer | nullдаРоль подписавшего в аккаунте. Она определяет доступные действия.
networkenum: mainnet, nile
csrf_tokenstringдаПередавайте в заголовке X-CSRF-Token при каждом POST, PATCH и DELETE этой сессии.
expires_atstring (date-time)да
created_atstring (date-time)
ttl_secondsintegerПолное время жизни сессии в секундах, сбрасываемое при продлении.

Выход из системы

DELETE /v1/session · deleteSession

Аутентификация: Cookie сессии панели управления + X-CSRF-Token.

Отзывает текущую сессию на сервере и удаляет cookie. Другие сессии того же аккаунта (в других браузерах или на других устройствах) остаются неизменными.

Ответы

СтатусЗначение
204Выход выполнен. Тело ответа пустое.
401Отсутствуют, некорректны или отклонены учетные данные.
4031014 csrf_token_invalid — заголовок X-CSRF-Token отсутствует или неверен.
500Ошибка на нашей стороне.

Продление сессии

POST /v1/session/refresh · refreshSession

Аутентификация: Cookie сессии панели управления + X-CSRF-Token.

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

Ответы

СтатусЗначение
200Продлена
401Отсутствуют, некорректны или отклонены учетные данные.
4031014 csrf_token_invalid.
500Ошибка на нашей стороне.

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

ПолеТипОбязательноеОписание
account_idstringдаДля поля «ID аккаунта (для поддержки)». В интерфейсе его не нужно показывать где-либо еще — заголовком аккаунта служит display_name или сокращенный owner_address.
account_statusenum: unfunded, active, suspended, closedда
display_namestring | null
owner_addressstring | nullКошелек-владелец аккаунта; вход с него восстанавливает доступ.
addressstringдаАдрес, с которого выполнен вход. Владелец или приглашенный участник.
roleenum: owner, editor, viewer | nullдаРоль подписавшего в аккаунте. Она определяет доступные действия.
networkenum: mainnet, nile
csrf_tokenstringдаПередавайте в заголовке X-CSRF-Token при каждом POST, PATCH и DELETE этой сессии.
expires_atstring (date-time)да
created_atstring (date-time)
ttl_secondsintegerПолное время жизни сессии в секундах, сбрасываемое при продлении.

Выход на всех устройствах

POST /v1/session/revoke-all · revokeAllSessions

Аутентификация: Cookie сессии панели управления + X-CSRF-Token.

Отзывает все активные сессии авторизованного кошелька в данном аккаунте (на всех браузерах и устройствах, включая текущее) и удаляет cookie. Сессии других участников не затрагиваются. Создает запись в журнале аудита (session.revoke_all). Доступно только для сессии панели управления, роль участника viewer или выше; API-ключи отклоняются.

Ответы

СтатусЗначение
204Выход выполнен на всех устройствах. Тело ответа пустое.
401Отсутствуют, некорректны или отклонены учетные данные.
4031014 csrf_token_invalid.
500Ошибка на нашей стороне.

История недавних входов

GET /v1/session/history · getSessionHistory

Аутентификация: Cookie сессии панели управления + X-CSRF-Token.

Последние десять входов в панель управления авторизованного кошелька в данном аккаунте, начиная с самых новых: время, IP-адрес, адрес кошелька. Вход фиксируется при генерации сессии через POST /v1/session; запись истории ведется с 2026-09-25.

Входы других участников не отображаются в целях безопасности и конфиденциальности. Доступно только для сессии панели управления, роль участника viewer или выше.

Ответы

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

Поля ответа

ПолеТипОбязательноеОписание
dataarray of object (SignIn)да
data[].signed_in_atstring (date-time)да
data[].ipstring | nullда
data[].addressstringдаTRON-адрес Base58Check (начинается с T, 34 символа).

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

json
{
  "data": [
    {
      "signed_in_at": "2026-09-25T09:41:12.000Z",
      "ip": "203.0.113.10",
      "address": "TQn9Y2khEsLJW1ChVWFMSMeRDow5KcbLSE"
    }
  ]
}

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