LLM Mart
Справочник API

Приглашения

Создание секретных ссылок-приглашений и принятие участником.

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

Кому подходит

  • Owner / admin — добавление сотрудников.
  • Новым участникам — регистрация или вход и присоединение к организации.

POST /api/organization/invitations

Создать ссылку-приглашение. Требуется Bearer-токен owner или admin активной бизнес-организации.

Тело:

ПолеТипОбязательноОписание
rolestringдаadmin, developer, viewer
curl -s -X POST https://llmmart.ru/api/organization/invitations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"role":"developer"}'

Ответ 201:

{
  "id": "inv_xyz",
  "organizationId": "org_abc",
  "role": "developer",
  "status": "pending",
  "tokenPrefix": "inv-demo123456",
  "token": "inv-demo1234567890abcdef..."
}

Поле token показывается только при создании — повторно получить его нельзя. Передайте сотруднику ссылку:

https://llmmart.ru/invite?token=<token>

Ошибки: 403 — роль не может приглашать или организация не бизнес-типа; 400 — недопустимая роль.

Аудит: member.invited.

Список ожидающих приглашений доступен в GET /api/overviewinvitations (роль и tokenPrefix, без полной ссылки).


GET /api/invitations/preview

Проверить ссылку перед принятием. Авторизация не требуется.

Query: token — значение из ссылки-приглашения.

curl -s "https://llmmart.ru/api/invitations/preview?token=inv-demo1234567890abcdef"

Ответ 200:

{
  "organizationName": "Демо Организация ООО",
  "role": "developer",
  "status": "pending"
}

Ошибки: 400 — ссылка недействительна или приглашение уже принято.


POST /api/invitations/accept

Принять приглашение. Авторизация не требуется.

Тело:

ПолеТипОбязательноОписание
tokenstringдаСекрет из ссылки-приглашения
emailstringдаEmail участника
passwordstringдаПароль (минимум 8 символов)
curl -s -X POST https://llmmart.ru/api/invitations/accept \
  -H "Content-Type: application/json" \
  -d '{
    "token": "inv-demo1234567890abcdef",
    "email": "developer@example.com",
    "password": "secure-password"
  }'

Ответ 200: сессия { "email", "activeOrganizationId" } (cookie сессии устанавливается автоматически).

После accept:

  • если аккаунта нет — создаётся credential;
  • если аккаунт уже есть — проверяется пароль, пользователь добавляется в организацию;
  • участник появляется в members с ролью из приглашения;
  • статус приглашения → accepted, в записи сохраняется email принявшего.

Аудит: member.joined.


Статусы приглашения

statusЗначение
pendingОжидает принятия
acceptedПринято

Что дальше