FeaturesTeam ManagementTeam Invitations

Team Invitations

Invite colleagues to join your team with granular role-based permissions.

Invitation System

The invitation system allows you to:

  • Invite members via email
  • Assign roles before joining
  • Track invitation status
  • Resend or revoke invitations

Team Roles

Owner

Full control over team management:

  • Add/remove members
  • Change team settings
  • Delete team
  • Manage billing
  • Assign roles

Admin

Team and repository management:

  • Add/remove members (except Owner)
  • Connect/disconnect repositories
  • View analytics
  • Manage invitations

Member

Read and review access:

  • View team information
  • Access connected repositories
  • Participate in reviews
  • View analytics (read-only)

Sending Invitations

Via Dashboard

  1. Go to your team page
  2. Click “Invite Members”
  3. Enter email addresses (comma-separated)
  4. Select role for each invitee
  5. Add optional message
  6. Click “Send Invitations”

Via API

curl -X POST https://api.mesrai.com/v1/teams/{teamId}/invitations \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "colleague@example.com",
    "role": "ADMIN",
    "message": "Join our team!"
  }'

Invitation Flow

For Inviter

  1. Send invitation with role
  2. Invitation email sent automatically
  3. Track status in dashboard
  4. Resend if needed
  5. Notification when accepted

For Invitee

  1. Receive invitation email
  2. Click “Accept Invitation” link
  3. Sign up or log in to Mesrai
  4. Automatically added to team
  5. Access team resources immediately

Managing Invitations

View Pending Invitations

See all outstanding invitations:

  • Email address
  • Role assigned
  • Date sent
  • Expiration date
  • Status

Resend Invitations

For undelivered or expired invitations:

  1. Go to team invitations tab
  2. Find pending invitation
  3. Click “Resend”
  4. New email sent with fresh link

Revoke Invitations

Cancel invitations before acceptance:

  1. Locate invitation in list
  2. Click “Revoke”
  3. Confirm revocation
  4. Link becomes invalid immediately

Invitation Expiry

Invitations expire after:

  • Standard: 7 days
  • Extended: 30 days (Enterprise)

Expired invitations can be resent with new expiry.

Bulk Invitations

Invite multiple members at once:

CSV Import

  1. Prepare CSV file:

    email,role,message
    alice@example.com,ADMIN,Welcome!
    bob@example.com,MEMBER,Join us!
  2. Go to team page

  3. Click “Bulk Invite”

  4. Upload CSV file

  5. Review and confirm

  6. All invitations sent

Multiple Emails

Enter multiple email addresses:

alice@example.com, bob@example.com, charlie@example.com

All recipients receive same role initially (can be changed after acceptance).

Invitation Notifications

Email Notifications

Invitees receive emails containing:

  • Team name and description
  • Inviter’s name
  • Assigned role
  • Accept/Decline buttons
  • Expiration date

Slack Integration

Notify team in Slack when:

  • New invitation sent
  • Invitation accepted
  • Invitation declined

Configure in team settings.

Security

Email Verification

All invitations require:

  • Valid email address
  • Email verification
  • Secure token-based links

Domain Restrictions

Enterprise teams can:

  • Whitelist email domains
  • Block public email providers
  • Require SSO authentication

Example:

allowed_domains:
  - company.com
  - company.io

Troubleshooting

Invitation Not Received

Problem: Invitee didn’t receive email

Solutions:

  1. Check spam/junk folder
  2. Verify email address spelling
  3. Resend invitation
  4. Check email service status

Can’t Accept Invitation

Problem: Link shows error or expired

Solutions:

  1. Request new invitation
  2. Check if already team member
  3. Verify email address matches invitation
  4. Contact team owner

Wrong Role Assigned

Problem: Incorrect permissions after joining

Solutions:

  1. Team admin can update role
  2. Go to Team Members page
  3. Click member’s role dropdown
  4. Select correct role

Best Practices

1. Clear Communication

Include personalized messages:

Hi Alice! We'd love you to join our engineering team.
You'll have Admin access to our repositories.
Let me know if you have questions!

2. Role Selection

Choose appropriate roles:

  • Start with “Member” for new team members
  • Promote to “Admin” as responsibilities grow
  • Limit “Owner” role to 1-2 people

3. Regular Cleanup

Periodically review:

  • Pending invitations (revoke stale ones)
  • Expired invitations (resend if still relevant)
  • Inactive members (remove if necessary)

4. Onboarding

After acceptance:

  1. Send welcome message
  2. Share team guidelines
  3. Connect relevant repositories
  4. Schedule intro meeting

API Reference

Create Invitation

POST /v1/teams/{teamId}/invitations
{
  "email": "user@example.com",
  "role": "MEMBER|ADMIN|OWNER",
  "message": "Optional message"
}

List Invitations

GET /v1/teams/{teamId}/invitations?status=PENDING

Resend Invitation

POST /v1/teams/{teamId}/invitations/{invitationId}/resend

Revoke Invitation

DELETE /v1/teams/{teamId}/invitations/{invitationId}

Next Steps