meraproject/openspec/changes/archive/2026-07-14-service-project-members/proposal.md

26 lines
2.0 KiB
Markdown
Raw Normal View History

## Why
Внешние приложения должны заводить уже существующего сотрудника Merakomis в конкретный проект с разделом и ролью, но текущий `PUT /api/project-members` требует `X-Acting-Emp-Id` и портальные права `isRwMember`. Service-to-service интеграция с одним API-ключом не может выполнить эту операцию.
## What Changes
- Добавить отдельный service-эндпоинт `PUT /api/service/project-members` для upsert участника команды проекта.
- Авторизация только по API-ключу (`X-Api-Key` / Bearer); **без** `X-Acting-Emp-Id` и без проверки `Rules::isRwMember`.
- Тело и валидации как у существующего `PUT /api/project-members`: `project_id`, `emp_id`, `section_id`, `role`, опционально `active` и `text`.
- Существующий `PUT /api/project-members` (с acting) **не меняется**.
- Обновить документацию API (`docs/user-reader-api.md`, при необходимости `DEVELOPERS.md`).
## Capabilities
### New Capabilities
- `service-project-members`: service-to-service запись участника проекта (upsert TeamMember) только по API-ключу
### Modified Capabilities
## Impact
- Код: `services/user-reader` — новый роут (или расширение write-модуля), переиспользование `validate_member_write` / `upsert_team_member`
- API: новый путь `/api/service/project-members`; матрица доступа в docs
- Безопасность: доверие к владельцу API-ключа (полный write состава без impersonation)
- Клиенты: внешние приложения; портальный UI и acting-поток не затрагиваются