Перейти к содержимому

GET /api/invites/by-token/:token — Приглашение по ссылке

Сгенерировано из матриц + кода. Правки вносить в источники (docs/matrices/, server/routes/), не здесь.

ПолеЗначение
HTTPGET /api/invites/by-token/:token
AuthoptionalAuth — гость + авторизованный
Scope токенаread
PG-функцииapi.get_invite_by_token
Таблицыinvite
SRMSRM-066, SRM-068
RP (права)RP-055
Файл роутаserver/routes/invites.js
Статусdone

Аргументы запроса (best-effort из хендлера; путь-параметры опущены):

аргументов не обнаружено (подтвердить вручную по server/routes/invites.js)

Коды ответов/ошибок (из хендлера): 400, 404, 410 (+ 200) — уточнить причины вручную

Для человека

Как открыть: перейдите по ссылке-приглашению из письма (вида …/invite/<токен>). Откроется экран принятия приглашения — этот метод вызывается на нём автоматически, чтобы показать, в какую организацию вас зовут.

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

Метод проверяет состояние приглашения и честно сообщает о проблемах:

  • приглашения с таким токеном нет — 404;
  • приглашение уже использовано (принято или отклонено) — 410 с подсказкой статуса;
  • срок действия истёк — 410, на экране «ссылка недействительна» (FM-065).

По умолчанию org-приглашение зовёт на роль участника-сотрудника (member). Принять его может любой человек, открывший ссылку (FM-064): авторизованный сразу попадает в организацию, гость проходит через регистрацию.

Для агента

Чтение. В браузере роут анонимный (optionalAuth) — токен не требуется. Путь-параметр :token — секрет из ссылки-приглашения (строка из латинских букв и цифр).

Важно: агентному токену этот метод недоступен. Путь /api/invites/... не входит в read-allowlist agent-gate (server/auth/agentGate.js), а gate закрыт по умолчанию. Поэтому запрос с Authorization: Bearer tak_... вернёт 403 («Forbidden for token»), даже на scope read. Открыть приглашение по токену может только браузер-клиент (cookie-сессия) или анонимный запрос — что и делает экран принятия.

Пример запроса (анонимно, из браузера):

Окно терминала
curl https://specbuilder.vnimanie.ai/api/invites/by-token/Xa9kQ2...

Ответ 200:

{
"id": "c3d4e5f6-...",
"orgName": "Студия проектирования",
"orgSlug": "studio",
"role": "member",
"expiresAt": "2026-07-01T00:00:00.000Z"
}

Ответы об ошибках: 404 — приглашения нет; 410 — уже использовано ({ "error": "...", "status": "accepted" }) либо истекло; 400 — прочие сбои. Markdown-зеркала и ETag у метода нет, отдаётся чистый JSON. Дальше — принять или отклонить приглашение по его id; обе эти операции уже доступны токену со scope read_write.

Связанные