Приглашения
Создание секретных ссылок-приглашений и принятие участником.
Почтовые уведомления не используются: администратор копирует ссылку и передаёт её сотруднику вручную (мессенджер, корпоративный чат и т.д.).
Кому подходит
- Owner / admin — добавление сотрудников.
- Новым участникам — регистрация или вход и присоединение к организации.
POST /api/organization/invitations
Создать ссылку-приглашение. Требуется Bearer-токен owner или admin активной бизнес-организации.
Тело:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
role | string | да | 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/overview → invitations (роль и 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
Принять приглашение. Авторизация не требуется.
Тело:
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
token | string | да | Секрет из ссылки-приглашения |
email | string | да | Email участника |
password | string | да | Пароль (минимум 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 | Принято |