Team Structure
Every project has a team that controls who can:- Edit project details
- Upload new versions
- Manage team members
- View analytics
- Receive revenue payouts
Organization Teams
Projects owned by organizations have two permission layers:- Project team - Specific to this project
- Organization team - Organization-wide permissions
Team Member Structure
Each team member has:- User ID - The Modrinth user
- Role - Display role (e.g., “Developer”, “Artist”)
- Permissions - Specific permission flags
- Payout split - Percentage of revenue (0-5000%)
- Ordering - Display order on project page
- Accepted - Whether the user accepted the invite
Permission System
Project permissions control what actions members can perform:Core Permissions
Upload new versions and filesAllows:
- Creating new versions
- Adding files to existing versions
- Cannot delete versions or modify critical settings
Delete versions from the projectRequired for:
- Removing versions permanently
- Usually reserved for owners/admins
Modify project informationAllows editing:
- Name, description, summary
- Categories and tags
- External links
- Icon and gallery
- License information
Edit the project description/bodySeparate from other details for more granular control.
Team Management Permissions
Send and manage team invitationsAllows:
- Inviting new members
- Canceling pending invites
- Cannot modify existing members
Remove members from the teamMembers can always remove themselves.
The owner cannot be removed.
Modify team member settingsAllows changing:
- Permissions (cannot grant permissions you don’t have)
- Role titles
- Payout splits
- Ordering
Analytics and Revenue
Access project analytics and statisticsView:
- Download counts
- View metrics
- Demographic data
- Revenue (requires
PAYOUTS_READscope)
See payout and revenue informationRequired to view monetary data in analytics.
Adding Team Members
{
"user_id": "AbCdEfGh",
"role": "Developer",
"permissions": 87,
"payouts_split": 20.5,
"ordering": 1
}
Permission bitflags (default: 0)Calculate by combining permission values:
- 0 = No permissions
- 87 = Common contributor permissions
- Use helper libraries to compute bitflags
Revenue share percentage (0-5000, default: 0)
20.5= 20.5% of project revenue- Total across all members can exceed 100%
- Used for revenue distribution
Organization-level permissionsOnly applicable if the project is owned by an organization.
Should NOT be set for regular project teams.
Viewing Team Members
Get all members of a project team:- Project team members
- Organization team members (if applicable)
- Pending invitations (only visible to team members)
organization_permissions set.
Editing Team Members
Update a member’s role and permissions:- Cannot edit the owner’s permissions
- Cannot grant permissions you don’t have
- Organization owners cannot have their project permissions restricted
- Requires
EDIT_MEMBERpermission
Removing Team Members
Remove someone from the team:- Members can always remove themselves
- Requires
REMOVE_MEMBERto remove others - Cannot remove the owner
- Pending invites can be cancelled by the inviter or invitee
Transferring Ownership
Transfer project ownership to another team member:- Must be the current owner (or admin)
- New owner must be an accepted team member
- Cannot transfer organization-owned projects
- Previous owner loses owner status but remains on the team
- New owner gains all permissions automatically
- For organization teams: new owner is removed from all organization projects as a member (they inherit permissions as org owner)
To transfer an organization project, you must first remove it from the organization, transfer ownership, then re-add it.
Organization Project Teams
Projects under organizations have special behavior:Permission Inheritance
Organization members automatically have access based on:- Their organization permissions
- Any project-specific overrides
- User is org member with
UPLOAD_VERSIONorg permission - They can upload to all org projects by default
- Project team can override to grant/restrict more permissions
Adding Organization Members to Projects
When adding an org member to a project team:- Use it to restrict their permissions for this specific project
- Use it to grant additional permissions beyond org defaults
- The owner cannot have their permissions restricted
Organization Owner
The organization owner:- Has full permissions on all organization projects
- Cannot be added to project teams with restricted permissions
- Cannot have their permissions modified
- Automatically removed from project teams when made org owner
Permission Best Practices
- Principle of least privilege - Grant only needed permissions
- Use roles descriptively - Make it clear what each member does
- Review regularly - Remove inactive members
- Test with new members - Ensure permissions work as expected
- Document responsibilities - Explain what each role should do
- Set payout splits fairly - Based on contribution and agreement
Team Member Visibility
Who can see team members:- Public users - See accepted members only
- Team members - See all members including pending invites
- Invitees - See their own pending invite
Common Team Configurations
Solo Developer
- You: Owner, all permissions, 100% payouts
Small Team
- Owner: All permissions, 40% payouts
- Developer: Upload, edit details, view analytics, 30% payouts
- Artist: Edit details (for gallery), 30% payouts
Large Project
- Owner: All permissions, 25% payouts
- Lead Developer: All except member management, 25% payouts
- Developers: Upload versions, view analytics, 10% each
- Translators: Edit details (descriptions), 5% each
- Testers: No permissions, listed for credit
Organization Project
- Organization: Owner through org owner
- Project Lead: Project team member with full permissions, 50% payouts
- Contributors: Org members with inherited
UPLOAD_VERSION
Troubleshooting
Cannot add member- Check you have
MANAGE_INVITESpermission - User ID must be valid
- Cannot grant permissions you don’t have
- Invite shows as pending in team list
- User should receive a notification
- User must accept via
/team/{id}/joinendpoint
- Need
EDIT_MEMBERpermission - Cannot modify owner
- Cannot grant permissions you don’t have
- Org owners cannot have permissions restricted in org projects
- New owner must be an accepted member
- Cannot transfer organization-owned projects
- Must be current owner or admin
