@vality/org-management-proto
v0.1.1-4a6c2e7.0
Published
<!-- markdownlint-configure-file {"MD013":{"tables":false}} --> <!-- markdownlint-disable MD043 -->
Keywords
Readme
org-management-proto
Thrift-контракты сервиса управления организациями.
Контракты
AdminManagement— управление организациями, участниками, ролями и приглашениями.AuthContextProvider— получение пользовательского контекста для авторизации в bouncer.- Общие модели находятся в
domain.thrift.
AdminManagement
Организации
| Метод | Вход | Ответ | Бизнес-смысл |
|--------------------------|---------------------------------------------|----------------------------------------------|-------------------------------------------------------------|
| CreateOrganization | party_id, owner_id, name, metadata? | Organization | Создать организацию для party и закрепить за ней владельца. |
| GetOrganization | organization_id | Organization | Получить актуальные данные организации. |
| ListOrganizations | limit?, continuation_token?, status? | список Organization, continuation_token? | Получить все организации. |
| RenameOrganization | organization_id, name | Organization | Изменить название организации. |
| DeactivateOrganization | organization_id | Organization | Отключить организацию без удаления её данных. |
| ActivateOrganization | organization_id | Organization | Вернуть деактивированную организацию в работу. |
Organization содержит идентификатор организации, связанные party_id и
owner_id, название, дату создания, статус (active или deactivated) и
опциональные JSON-метаданные.
Пользователи
| Метод | Вход | Ответ | Бизнес-смысл |
|-------------|-------------------------------------------|--------------------------------------|-----------------------------------------------------------------------|
| ListUsers | limit?, continuation_token?, email? | список User, continuation_token? | Получить страницу пользователей, известных сервису. |
| GetUser | user_id | User | Получить пользователя по идентификатору. |
User содержит только id и email; он же лежит внутри Member. Организации,
в которых пользователь состоит, и его роли в них читаются через ListMembers
и GetMember соответствующей организации.
Постраничная выдача сквозная для всего контракта: limit ограничивает размер
страницы, continuation_token из ответа передаётся в следующий запрос,
а его отсутствие означает, что страница последняя.
Участники и роли
| Метод | Вход | Ответ | Бизнес-смысл |
|-------------------------|---------------------------------------------------|---------------------------|----------------------------------------------------------------------------------------------|
| GetMember | organization_id, user_id | Member | Получить участника вместе с назначенными ему ролями. |
| ListMembers | organization_id | список Member | Получить всех участников организации и их роли. |
| AddMember | organization_id, user_id, email? | Member | Добавить пользователя в организацию. Права при этом не выдаются — роли назначаются отдельно. |
| RemoveMember | organization_id, user_id | без данных | Исключить пользователя из организации. |
| AssignMemberRole | organization_id, user_id, role_id, scope? | MemberRole | Выдать участнику роль во всей организации или в указанной области. |
| RemoveMemberRole | organization_id, user_id, member_role_id | без данных | Снять конкретное назначение роли. |
| GetOrganizationRole | organization_id, role_id | OrganizationRole | Получить роль, доступную для назначения в организации. |
| ListOrganizationRoles | organization_id | список OrganizationRole | Получить все роли, которые можно назначать участникам организации. |
Member — это User плюс список его назначений ролей в организации. Каждое
назначение MemberRole имеет собственный id, идентификатор роли и
опциональный scope.
Без scope роль действует на всю организацию. Если права нужно ограничить,
scope_id задаёт тип области (например, Shop), а resource_id — конкретный
ресурс. OrganizationRole.scope_ids показывает, в каких областях роль можно
назначать.
Приглашения
| Метод | Вход | Ответ | Бизнес-смысл |
|--------------------|-----------------------------------------------------------------------|---------------------|----------------------------------------------------------------------------------|
| CreateInvitation | organization_id, email, roles: [{role_id, scope?}], metadata? | Invitation | Создать приглашение и отправить письмо. |
| GetInvitation | organization_id, invitation_id | Invitation | Получить текущее состояние приглашения. |
| ListInvitations | organization_id, status? | список Invitation | Получить состояние приглашения организации с возможностью фильтрации по статусу. |
| RevokeInvitation | organization_id, invitation_id, reason | без данных | Отозвать приглашение. |
Принятие приглашения выполняется пользовательским API и не входит в
AdminManagement.
Invitation содержит получателя, назначаемые роли, срок действия и статус:
pending, accepted, expired или revoked. После принятия в нём появляются
дата принятия и идентификатор участника; после отзыва — дата и причина отзыва.
AuthContextProvider
| Метод | Вход | Ответ | Бизнес-смысл |
|------------------|-----------|-------------------|-------------------------------------------------------------------------------------------------------------------|
| GetUserContext | user_id | ContextFragment | Собрать данные пользователя, его организаций и ролей в контекст, по которому bouncer принимает решение о доступе. |
