Table of Contents

Interface ITeamManagementService

Namespace
Tharga.Team
Assembly
Tharga.Team.dll

Team management mutations. Authorization is enforced in the service layer by AuthorizationTeamServiceDecorator (over ITeamService); the [RequireScope] attributes here document the scope each operation requires. Read operations use ITeamService directly.

public interface ITeamManagementService

Methods

AddMemberAsync(string, InviteUserModel)

[RequireScope("member:manage")]
Task AddMemberAsync(string teamKey, InviteUserModel model)

Parameters

teamKey string
model InviteUserModel

Returns

Task

CreateTeamAsync(string)

Create a team. Gated by AllowTeamCreation + authentication (no scope) — self-service.

Task<ITeam> CreateTeamAsync(string name = null)

Parameters

name string

Returns

Task<ITeam>

DeleteTeamAsync(string)

Delete a team. Requires team:manage on the team (with AllowTeamCreation) or the teams:delete system scope.

[RequireScope("team:manage")]
Task DeleteTeamAsync(string teamKey)

Parameters

teamKey string

Returns

Task

RemoveMemberAsync(string, string)

[RequireScope("member:manage")]
Task RemoveMemberAsync(string teamKey, string userKey)

Parameters

teamKey string
userKey string

Returns

Task

RenameTeamAsync(string, string)

[RequireScope("team:manage")]
Task RenameTeamAsync(string teamKey, string name)

Parameters

teamKey string
name string

Returns

Task

SetInvitationResponseAsync(string, string, string, bool)

[RequireScope("team:read")]
Task SetInvitationResponseAsync(string teamKey, string userKey, string inviteCode, bool accept)

Parameters

teamKey string
userKey string
inviteCode string
accept bool

Returns

Task

SetMemberLastSeenAsync(string)

[RequireScope("team:read")]
Task SetMemberLastSeenAsync(string teamKey)

Parameters

teamKey string

Returns

Task

SetMemberNameAsync(string, string, string)

[RequireScope("member:manage")]
Task SetMemberNameAsync(string teamKey, string userKey, string name)

Parameters

teamKey string
userKey string
name string

Returns

Task

SetMemberRoleAsync(string, string, AccessLevel)

[RequireScope("member:manage")]
Task SetMemberRoleAsync(string teamKey, string userKey, AccessLevel accessLevel)

Parameters

teamKey string
userKey string
accessLevel AccessLevel

Returns

Task

SetMemberScopeOverridesAsync(string, string, string[])

[RequireScope("member:manage")]
Task SetMemberScopeOverridesAsync(string teamKey, string userKey, string[] scopeOverrides)

Parameters

teamKey string
userKey string
scopeOverrides string[]

Returns

Task

SetMemberTenantRolesAsync(string, string, string[])

[RequireScope("member:manage")]
Task SetMemberTenantRolesAsync(string teamKey, string userKey, string[] tenantRoles)

Parameters

teamKey string
userKey string
tenantRoles string[]

Returns

Task

SetTeamCustomRolesAsync(string, IReadOnlyList<TenantRoleDefinition>)

Replace the team's runtime-defined custom roles. Requires team:manage on the team. Each role's scopes must be app-registered scopes (rejected otherwise, as a privilege-escalation guard). Assigning these roles to members remains a member:manage operation.

[RequireScope("team:manage")]
Task SetTeamCustomRolesAsync(string teamKey, IReadOnlyList<TenantRoleDefinition> customRoles)

Parameters

teamKey string
customRoles IReadOnlyList<TenantRoleDefinition>

Returns

Task

TransferOwnershipAsync(string, string)

[RequireScope("team:manage")]
Task TransferOwnershipAsync(string teamKey, string newOwnerUserKey)

Parameters

teamKey string
newOwnerUserKey string

Returns

Task