Приглашения
Создание инвайта
Метод API создаёт приглашение пользователя в организацию по email с назначением ролей при вступлении.
Требует доступы: org.invitations.create.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/invitations
Path Parameters
| Параметр | Тип | Обязательное поле | Описание | Пример |
|---|---|---|---|---|
| organisationId | string (uuid) | Да | ID организации | 550e8400-e29b-41d4-a716-446655440000 |
Заголовки
| Заголовок | Тип | Обязательное поле | Описание |
|---|---|---|---|
| x-idempotency-key | string | Нет | Ключ идемпотентности для безопасного повтора запроса |
Request Body
| Поле | Тип | Обязательное поле | Описание |
|---|---|---|---|
| inviteeEmail | string (email) | Да | Email приглашаемого пользователя |
| roleIds | array[string] | Да | Массив UUID ролей, которые будут назначены при вступлении |
| metadata | object | Нет | Произвольные метаданные |
Пример запроса
curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/invitations" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"inviteeEmail": "user@example.com",
"roleIds": ["019d06af-5e5d-7a42-91b7-0a7dd66aa9f4"],
"metadata": {
"source": "integration"
}
}'
Пример успешного ответа
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"invitation": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"organisationId": "123e4567-e89b-12d3-a456-426614174000",
"inviteeEmail": "user@example.com",
"status": "PENDING",
"roles": [
{
"id": "019d06af-5e5d-7313-b8ba-df1640767435",
"code": "OWNER",
"name": "Владелец",
"description": "Владелец организации. Полный доступ."
}
],
"metadata": {
"source": "integration"
},
"createdAt": "2025-10-15T10:30:00Z",
"expiresAt": "2025-10-22T10:30:00Z",
"acceptedAt": null,
"acceptedUserId": null,
"revokedAt": null,
"revocationReason": null,
"declinedAt": null,
"declineReason": null
},
"token": "ivt_abc123def456..."
},
"success": true
}
Описание полей ответа
| Поле | Тип | Описание |
|---|---|---|
| requestId | string | Уникальный идентификатор запроса |
| success | boolean | Статус выполнения запроса (true/false) |
| result | object | Контейнер с данными ответа |
| invitation | object | Информация о приглашении |
| id | string (uuid) | Идентификатор приглашения |
| organisationId | string (uuid) | Идентификатор организации |
| inviteeEmail | string | Email приглашённого |
| status | string | Статус приглашения (PENDING, ACCEPTED, DECLINED, REVOKED, EXPIRED) |
| roles | array[obj] | Роли, которые будут назначены при вступлении |
| roles[].id | string (uuid) | UUID роли |
| roles[].code | string | Техническое название роли |
| roles[].name | string | Человекочитаемое название роли |
| roles[].description | string | Описание роли |
| metadata | object | Произвольные метаданные |
| createdAt | string | Дата и время создания |
| expiresAt | string | Дата и время истечения |
| acceptedAt | string | Дата и время принятия |
| acceptedUserId | string (uuid) | Идентификатор пользователя, принявшего приглашение |
| revokedAt | string | Дата и время отзыва приглашения (со стороны организации) |
| revocationReason | string | Причина отзыва приглашения (со стороны организации) |
| declinedAt | string | Дата и время отклонения приглашения (со стороны пользователя) |
| declineReason | string | Причина отклонения приглашения (со стороны пользователя) |
| token | string | Токен приглашения (возвращается только при создании) |
Статусы приглашения
| Статус | Описание |
|---|---|
| PENDING | Приглашение создано и ожидает ответа |
| ACCEPTED | Приглашение принято |
| DECLINED | Приглашение отклонено пользователем |
| REVOKED | Приглашение отозвано организацией |
| EXPIRED | Срок действия приглашения истёк |
Получение списка инвайтов
Метод API предназначен для получения списка приглашений организации с использованием фильтров.
Требует доступы: org.invitations.read.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/invitations/filter
Path Parameters
| Параметр | Тип | Обязательное поле | Описание | Пример |
|---|---|---|---|---|
| organisationId | string (uuid) | Да | ID организации | 550e8400-e29b-41d4-a716-446655440000 |
Общая структура запроса описана в разделе Фильтрация: общая структура.
Доступные фильтры (filters)
| Имя (name) | Тип значения (value) | Описание |
|---|---|---|
| STATUS | string или array[string] | Статус приглашения: PENDING, ACCEPTED, DECLINED, REVOKED, EXPIRED |
| INVITEE_EMAIL | string или array[string] | Email приглашённого |
Организация всегда берётся из пути, фильтр ORGANISATION_ID передавать не нужно.
Доступные сортировки (order)
| Поле (field) | Описание |
|---|---|
| CREATED_AT | Дата создания приглашения |
| EXPIRES_AT | Дата истечения приглашения |
Пример запроса
curl --location "https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/invitations/filter" \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--data '{
"filters": [],
"pagination": {
"limit": 20,
"lastId": null
}
}'
Пример успешного ответа
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {
"lastId": "123e4567-e89b-12d3-a456-426614174000",
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"inviteeEmail": "user@example.com",
"status": "PENDING",
"roles": [
{
"id": "019d06af-5e5d-7313-b8ba-df1640767435",
"code": "OWNER",
"name": "Владелец",
"description": "Владелец организации. Полный доступ."
}
],
"createdAt": "2025-10-15T10:30:00Z",
"expiresAt": "2025-10-22T10:30:00Z"
}
]
},
"success": true
}
Описание полей ответа
| Поле | Тип | Описание |
|---|---|---|
| requestId | string | Уникальный идентификатор запроса |
| success | boolean | Статус выполнения запроса (true/false) |
| result | object | Контейнер с данными ответа |
| lastId | string | number | ID последнего элемента в текущем списке |
| items | array[obj] | Массив найденных приглашений |
| id | string (uuid) | Идентификатор приглашения |
| inviteeEmail | string | Email приглашённого |
| status | string | Статус приглашения (PENDING, ACCEPTED, DECLINED, REVOKED, EXPIRED) |
| roles | array[obj] | Роли, которые будут назначены при вступлении |
| roles[].id | string (uuid) | UUID роли |
| roles[].code | string | Техническое название роли |
| roles[].name | string | Человекочитаемое название роли |
| roles[].description | string | Описание роли |
| createdAt | string | Дата и время создания |
| expiresAt | string | Дата и время истечения |
Отзыв инвайта
Метод API отзывает приглашение пользователя в организацию.
Требует доступы: org.invitations.revoke.
Запрос
Метод: POST URL: https://b2b.selfwork.ru/openapi/v2/organisation/{organisationId}/invitations/{invitationId}/revoke
Path Parameters
| Параметр | Тип | Обязательное поле | Описание | Пример |
|---|---|---|---|---|
| organisationId | string (uuid) | Да | ID организации | 550e8400-e29b-41d4-a716-446655440000 |
| invitationId | string (uuid) | Да | Идентификатор приглашения | 123e4567-e89b-12d3-a456-426614174000 |
Request Body
| Поле | Тип | Обязательное поле | Описание |
|---|---|---|---|
| reason | string | Нет | Причина отзыва инвайта |
Пример запроса
curl -X 'POST' \
"https://b2b.selfwork.ru/openapi/v2/organisation/550e8400-e29b-41d4-a716-446655440000/invitations/123e4567-e89b-12d3-a456-426614174000/revoke" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-d '{
"reason": "Позиция закрыта"
}'
Пример успешного ответа
{
"requestId": "97c5678a-8c6a-4688-8452-68ab606fe049",
"result": {},
"success": true
}
Описание полей ответа
| Поле | Тип | Описание |
|---|---|---|
| requestId | string | Уникальный идентификатор запроса |
| success | boolean | Статус выполнения запроса (true/false) |
| result | object | Пустой объект |
Возможные ошибки
| Код | HTTP Status | Описание |
|---|---|---|
| INVITATION_NOT_FOUND | 404 | Приглашение не найдено |
| INVITATION_ALREADY_ACCEPTED | 422 | Приглашение уже принято |
| INVITATION_ALREADY_DECLINED | 422 | Приглашение уже отклонено |
| INVITATION_REVOKED | 422 | Приглашение уже отозвано |
| INVITATION_EXPIRED | 422 | Приглашение истекло |