ProjectMembers (Semantic Module)
The ProjectMembers semantic module is applied to associations linking a Project entity to a User entity to represent project membership and collaboration.
ProjectMembers is a Many-to-Many (M:N) semantic module that automatically manages the membership relationship, governs relationship edge attributes (e.g., project roles like owner, admin, editor, viewer and status), and enables Sub-Resource API endpoints for managing project collaborators.
Technical Specifications
Section titled “Technical Specifications”| Attribute | Specification |
|---|---|
| Scope | Association (Applied to a relationship between entities) |
| Relationship Type | Many-to-Many (multiple: true) |
| Has Configuration | Yes (via ProjectMembersConfig) |
Design Guidelines
Section titled “Design Guidelines”1. Relationship Edge Properties
Section titled “1. Relationship Edge Properties”When ProjectMembers is applied to a relationship, the platform automatically provisions standard relationship edge properties (such as member role and status). In the UI, you enable the edge properties required for your API and can customize options like display names or allowed role values, while core property settings and data types are managed automatically by the platform.
2. Dual-Sided Modeling & Single Link Table
Section titled “2. Dual-Sided Modeling & Single Link Table”To allow project membership traversal from both directions:
- Define an association on
Projectpointing toUsertagged withProjectMembers. - Define a reciprocal association on
Userpointing toProjecttagged with the exact sameProjectMembersmodule.
The runtime manages a single underlying link table while allowing the API Modeler to expose Sub-Resource endpoints from either or both directions (such as /projects/{projectId}/users and /users/{userId}/projects).
Configuring in the Domain Modeler
Section titled “Configuring in the Domain Modeler”- Open the Domain Modeler and select your
Projectentity. - Add an association pointing to the
Userentity (e.g. namedmembersorcollaborators). - Check the Multiple checkbox (
multiple: true). - In the association details panel, select
ProjectMembersunder Semantic Modules. - (Optional) Enable relationship edge properties (such as
roleorstatus) and customize allowed values in the UI.
CRUD on Sub-Resource Endpoints
Section titled “CRUD on Sub-Resource Endpoints”In the API Modeler, associations tagged with ProjectMembers are exposed as configurable Sub-Resources under parent entities.
Operations from the Project Side (/projects/{projectId}/users)
Section titled “Operations from the Project Side (/projects/{projectId}/users)”- List Members (GET):
GET /projects/proj_123/usersreturns an array of member users with embedded edge properties (role,status). - Link Member (POST):
POST /projects/proj_123/userswith payload{ "id": "user_456", "role": "editor" }adds a user to the project. - Read Member Edge (GET):
GET /projects/proj_123/users/user_456views member details and edge attributes. - Update Edge Attributes (PATCH):
PATCH /projects/proj_123/users/user_456with payload{ "role": "admin" }modifies the member’s project role on the link table. - Unlink Member (DELETE):
DELETE /projects/proj_123/users/user_456removes the user from the project without deleting the user or project record.
Independent Entity Lifecycles
Section titled “Independent Entity Lifecycles”M:N Sub-Resource operations enforce strict Independent Entity Lifecycles:
- Pre-existing Entities Required: Both
ProjectandUserentities must exist in the database before invoking a POST link operation. - No Nested Creation: Users must be created via
/usersbefore being linked to a project. - No Cascading Deletion: Removing a project member removes only the link record.