feat: enable granular PATs for Epics REST endpoints
Relates to issue #583308 (closed)
Changes
This MR implements granular Personal Access Token (PAT) permissions for all Epics REST API endpoints, enabling fine-grained access control for epic operations.
Permission Definitions (9 new files)
- Created 4 permission definitions:
read_epic,create_epic,update_epic,delete_epic - Created 4 corresponding permission groups for assignable permissions
- Added feature category metadata for portfolio_management
API Implementation
Modified ee/lib/api/epics.rb to add authorization decorators to all 5 Epic endpoints:
-
GET /groups/:id/epics - requires
read_epicpermission -
GET /groups/:id/epics/:epic_iid - requires
read_epicpermission -
POST /groups/:id/epics - requires
create_epicpermission -
PUT /groups/:id/epics/:epic_iid - requires
update_epicpermission -
DELETE /groups/:id/epics/:epic_iid - requires
delete_epicpermission
All endpoints use group as the boundary type since epics are scoped to groups.
Test Coverage
Enhanced ee/spec/requests/api/epics_spec.rb with 5 new test blocks using the 'authorizing granular token permissions' shared example to verify proper authorization for each endpoint.
Impact
Users can now create Personal Access Tokens with specific epic permissions rather than requiring full API access, improving security and following the principle of least privilege.
Edited by Duo Developer