meraproject/openspec/changes/archive/2026-07-14-service-project-members/proposal.md
keboss-m a7f3df859a Add service API for assigning employees to project teams.
Expose PUT /api/service/project-members for external apps that authenticate with only the API key, reusing portal validation while keeping acting-based writes unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 15:30:59 +03:00

2.0 KiB
Raw Blame 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-поток не затрагиваются