Teams
Manage teams, team members, invitations, and team-owned content.
Base Endpoint
Section titled “Base Endpoint”All team endpoints are prefixed with /teams
Team Management
Section titled “Team Management”Get All Teams
Section titled “Get All Teams”GET /teamsGet all teams with optional filters.
Authentication: Not required
Query Parameters:
search(string, optional) - Search query for team namelimit(number, optional) - Results per pageoffset(number, optional) - Pagination offset
Response:
{ "teams": [ { "id": "team-id", "name": "My Team", "slug": "my-team", "description": "Team description", "logoUrl": "https://...", "bannerUrl": "https://...", "memberCount": 5, "resourceCount": 10, "serverCount": 2 } ], "total": 50}Get Team by Slug
Section titled “Get Team by Slug”GET /teams/slug/:slugGet a team by its unique slug.
Authentication: Not required
URL Parameters:
slug(string) - Team slug
Response:
{ "id": "team-id", "name": "My Team", "slug": "my-team", "description": "Full team description", "logoUrl": "https://...", "bannerUrl": "https://...", "members": [...], "socialLinks": [...], "createdAt": "2024-01-01T00:00:00Z"}Create Team
Section titled “Create Team”POST /teamsCreate a new team.
Authentication: Required
Request Body:
{ "name": "My Team", "slug": "my-team", "description": "Team description"}Response:
{ "id": "team-id", "name": "My Team", "slug": "my-team", "ownerId": "user-id", "members": [ { "userId": "user-id", "role": "OWNER" } ]}Update Team
Section titled “Update Team”PATCH /teams/:idUpdate team details.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team ID
Request Body: (all fields optional)
{ "name": "Updated Name", "description": "Updated description"}Delete Team
Section titled “Delete Team”DELETE /teams/:idDelete a team.
Authentication: Required (must be owner)
URL Parameters:
id(string) - Team ID
Team Assets
Section titled “Team Assets”Upload Team Logo
Section titled “Upload Team Logo”POST /teams/:id/logoUpload a logo for the team.
Authentication: Required (must be owner or admin)
Content-Type: multipart/form-data
URL Parameters:
id(string) - Team ID
Form Data:
logo(file) - Image file (PNG, JPG, WEBP)
Upload Team Banner
Section titled “Upload Team Banner”POST /teams/:id/bannerUpload a banner for the team.
Authentication: Required (must be owner or admin)
Content-Type: multipart/form-data
URL Parameters:
id(string) - Team ID
Form Data:
banner(file) - Image file (PNG, JPG, WEBP)
Delete Team Logo
Section titled “Delete Team Logo”DELETE /teams/:id/logoDelete the team logo.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team ID
Delete Team Banner
Section titled “Delete Team Banner”DELETE /teams/:id/bannerDelete the team banner.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team ID
Invitations
Section titled “Invitations”Create Invitation
Section titled “Create Invitation”POST /teams/:id/invitationsInvite a user to join the team.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team ID
Request Body:
{ "userId": "user-id-to-invite", "role": "MEMBER"}Roles: MEMBER, MODERATOR, ADMIN
Response:
{ "id": "invitation-id", "teamId": "team-id", "userId": "user-id", "role": "MEMBER", "status": "PENDING", "expiresAt": "2024-01-08T00:00:00Z", "createdAt": "2024-01-01T00:00:00Z"}Get Team Invitations
Section titled “Get Team Invitations”GET /teams/:id/invitationsGet all invitations for a team.
Authentication: Required (must be team member)
URL Parameters:
id(string) - Team ID
Query Parameters:
status(string, optional) - Filter by status (PENDING, ACCEPTED, DECLINED, CANCELLED)
Response:
{ "invitations": [ { "id": "invitation-id", "user": { "id": "user-id", "username": "username", "displayName": "Display Name" }, "role": "MEMBER", "status": "PENDING", "createdAt": "2024-01-01T00:00:00Z", "expiresAt": "2024-01-08T00:00:00Z" } ]}Cancel Invitation
Section titled “Cancel Invitation”DELETE /teams/:id/invitations/:invitationIdCancel a pending invitation.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team IDinvitationId(string) - Invitation ID
Get User Invitations
Section titled “Get User Invitations”GET /teams/invitations/meGet all team invitations for the current user.
Authentication: Required
Query Parameters:
status(string, optional) - Filter by status
Response:
{ "invitations": [ { "id": "invitation-id", "team": { "id": "team-id", "name": "Team Name", "slug": "team-slug", "logoUrl": "https://..." }, "role": "MEMBER", "status": "PENDING", "createdAt": "2024-01-01T00:00:00Z", "expiresAt": "2024-01-08T00:00:00Z" } ]}Respond to Invitation
Section titled “Respond to Invitation”POST /teams/invitations/:invitationId/respondAccept or decline a team invitation.
Authentication: Required
URL Parameters:
invitationId(string) - Invitation ID
Request Body:
{ "accept": true}Response:
{ "message": "Invitation accepted", "teamMember": { "teamId": "team-id", "userId": "user-id", "role": "MEMBER" }}Team Members
Section titled “Team Members”Update Team Member
Section titled “Update Team Member”PATCH /teams/:id/members/:memberIdUpdate a team member’s role.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team IDmemberId(string) - Team member ID
Request Body:
{ "role": "ADMIN"}Roles: MEMBER, MODERATOR, ADMIN, OWNER
Remove Team Member
Section titled “Remove Team Member”DELETE /teams/:id/members/:memberIdRemove a member from the team.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team IDmemberId(string) - Team member ID
Leave Team
Section titled “Leave Team”DELETE /teams/:id/leaveLeave a team you’re a member of.
Authentication: Required
URL Parameters:
id(string) - Team ID
Note: Team owners cannot leave their team without transferring ownership first.
Team Content
Section titled “Team Content”Get Team Resources
Section titled “Get Team Resources”GET /teams/:id/resourcesGet all resources owned by a team.
Authentication: Not required
URL Parameters:
id(string) - Team ID
Response:
{ "resources": [...]}Get Team Servers
Section titled “Get Team Servers”GET /teams/:id/serversGet all servers owned by a team.
Authentication: Not required
URL Parameters:
id(string) - Team ID
Response:
{ "servers": [...]}Get My Teams
Section titled “Get My Teams”GET /teams/meGet all teams the current user is a member of.
Authentication: Required
Response:
{ "teams": [ { "id": "team-id", "name": "Team Name", "slug": "team-slug", "role": "ADMIN", "logoUrl": "https://..." } ]}Social Links
Section titled “Social Links”Get Team Social Links
Section titled “Get Team Social Links”GET /teams/:id/social-linksGet all social links for a team.
Authentication: Not required
URL Parameters:
id(string) - Team ID
Create Social Link
Section titled “Create Social Link”POST /teams/:id/social-linksAdd a social link to a team.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team ID
Request Body:
{ "platform": "DISCORD", "url": "https://discord.gg/..."}Update Social Link
Section titled “Update Social Link”PATCH /teams/:id/social-links/:linkIdUpdate a social link.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team IDlinkId(string) - Social link ID
Delete Social Link
Section titled “Delete Social Link”DELETE /teams/:id/social-links/:linkIdDelete a social link.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team IDlinkId(string) - Social link ID
Reorder Social Links
Section titled “Reorder Social Links”PATCH /teams/:id/social-links/reorderReorder social links.
Authentication: Required (must be owner or admin)
URL Parameters:
id(string) - Team ID
Request Body:
{ "linkIds": ["link-id-1", "link-id-2"]}