Проверка JWT-токена

Проверка действительности JWT-токена и получение его сведений (по схеме
RFC 7662 OAuth 2.0 Token Introspection).
Эндпоинт сообщает, активен ли переданный в `Authorization: Bearer` токен, и если да — какие у него
права и идентификаторы.
Реальных операций не выполняет.

Используется так: вызывающий передаёт свой собственный токен и получает сведения о нём же. Подойдёт клиенту, чтобы перед серией запросов убедиться, что токен жив, не отозван и имеет нужные права.

URL

POST /V1/Introspect.ashx

Заголовки

Тело запроса

Тело не используется (можно отправить пустое или `{}`).

Пример успешного ответа (JSON)

{
  "active": true,
  "token_type": "Bearer",
  "scope": "trans transHist balance",
  "jti": "9f7a3a9e-1b2c-4d5e-8f60-112233445566",
  "exp": 1767225600,
  "iat": 1767139200,
  "iss": "w3s.webmoney.com",
  "aud": "w3s.webmoney.com",
  "sub": "111122223333",
  "master": "999988887777",
  "slave": "111122223333",
  "purse": "Z123456789012" 
}

Поля ответа:

Поле Тип Описание
active bool `true` — токен валиден, подписан, не просрочен и не отозван
token_type string Тип токена, всегда `Bearer`
scope string Список выданных прав через пробел: `inv trans transHist balance msg msgHist`
jti string Уникальный идентификатор токена (GUID)
exp long Срок действия (Unix-время, секунды)
iat long Время выпуска (Unix-время, секунды), если присутствует
nbf long Не валиден до (Unix-время, секунды), если присутствует
iss string Издатель токена
aud string Аудитория токена
sub string Subject (совпадает с `slave`)
master string WMID управляющего ключа (claim `master`)
slave string WMID владельца токена (claim `slave`)
purse string Кошелёк, к которому привязан токен (если выдан с правами по кошельку)

Поля с null/отсутствующим значением в ответе опускаются.

Ответ для невалидного/отозванного/просроченного токена (JSON)

По RFC 7662 §2.2 в этом случае возвращается строго один признак — без подробностей:

 
{
  "active": false
}

Этот же ответ отдаётся, если:

- заголовок `Authorization` отсутствует или не начинается с `Bearer `;
- подпись токена не проходит проверку;
- срок действия (`exp`) истёк;
- запись о токене отсутствует в базе (отозван).

Метод не разрешён (JSON)

{
  "active": false
}

Возвращается со статусом 405 для всех методов кроме POST.

Что НЕ делает этот эндпоинт

- Не проверяет конкретный запрос на конкретный эндпоинт — только сам токен.
Чтобы проверить "пройдёт ли мой Transact с этим телом", используйте
заголовок `X-Dry-Run: 1` на боевом эндпоинте (см. ниже).

Связь с режимом dry-run (проверка без выполнения операции)

Все боевые эндпоинты `/V1/*` поддерживают режим проверки без выполнения:
при наличии заголовка `X-Dry-Run: 1` (или query-параметра `?dryrun=1`)
запрос проходит полную проверку токена и валидацию тела, но реальная
операция не выполняется.

Ответ содержит дополнительное поле (JSON):

{
  "reqn": 1730486400000,
  "retval": 0,
  "retdesc": "OK (dry-run)",
  "dryrun": true
}

Используйте `Introspect` для разовой проверки токена и `X-Dry-Run`
для предварительной проверки конкретного вызова.


Все JSON интерфейсы с JWT авторизацией поддерживают режим проверки токена без выполнения операции - dry-run.