Document toolboxDocument toolbox

Teams

Note:

There are three design decisions to call out:

(1) There is no concept of private teams.

(2) To manage membership we introduce MembershipInvitation and MembershipRequest objects.  The former is made by a Team admin, the latter by a prospective Team member.

(3) We don't support an alternate user group in which the owner can unilaterally add members.  To stream line membership acceptance we would bundle it with other steps such as account creation, terms of use acceptance, etc.

 

Permissions

ACCESS_TYPEUsage
UPDATE

Edit metadata. 

MEMBERSHIP

Create membership invitation.

Review membership invitations and membership requests for the team.

Accept membership request.

DELETEDelete team
SEND_MESSAGESend a message to all members of a team.

 

 

URIMethodRequest Param'sRequest BodyResponse BodyDescriptionIntended User (if specific)Authority
/teamPOST TeamTeam

Create team.  Team ACL initially has two entries:

(1) Creator has UPDATE, DELETE, MEMBERSHIP permissions;

(2) Team has SEND_MESSAGE permissions.

Team adminAuthenticated users. 
/teamsGETfragment, limit, offset, callback*n/aPaginatedResults<Team>Get paginated list of teams, optionally filtered by the given name fragment. Public
/teamsGETlimit, offset, callback*n/aPaginatedResults<Team>Get paginated list of teams. Public
/user/{id}/teamGETlimit, offsetn/aPaginatedResults<Team>Get a paginated list of teams to which the given user belongs. Public
/team/{id}GET n/aTeamGet the metadata for the indicated team. Public
/team/{id}/iconGETredirectn/afileDownload the icon indicated by the file handle ID in the 'icon' field of the Team metadata.  If redirect=false parameter is included, then rather than redirecting to the download URL the service simply returns the redirect URL to the caller. Public
/teamPUT TeamTeamUpdate the metadata for the team (not including membership).Team adminUPDATE permission
/team/{id}DELETE n/an/aDelete the indicated team.Team adminDELETE permission
/team/{teamId}/accessRequirement
GET n/aVariableContentPaginatedResults<AccessRequirement>Get all the access requirements applied to the TeamTeam adminPublic
/team/{teamId}/accessRequirementUnfulfilled
GET n/aVariableContentPaginatedResults<AccessRequirement>Get all the access requirements for the Team unfulfilled by this user.Prospective team memberPublic
/team/{teamId}/accessApproval
GET n/aVariableContentPaginatedResults<AccessApproval>Get all the access approvals for the Team.ACTACT Membership
/team/{id}/member/{principalId}PUT n/an/a

Adds a principal to the team.

Team admin or Prospective team member

Either:

  • principalId is self and membership invitation has been extended, or
  • principalId is self and have MEMBERSHIP permission on Team, or
  • principalId is self and Team is Open, or
  • have MEMBERSHIP permission on Team and membership request has been created for principalId
/team/{id}/member/{principalId}GET n/aTeamMemberGet the TeamMember object for the given team and user.Team memberPublic
/team/{id}/member/{principalId}/permissionPUTisAdminn/an/aSet permissions for the given member of the given team.  If 'isAdmin' is true then the user is given administrative permissions (the same as the creator's).  If 'isAdmin' is false then the user's permissions are reduced to those of a basic member.Team adminUPDATE permission
/teamMembers/{id}GETfragment, limit, offset, callback*n/aPaginatedResults<TeamMember>Get paginated list of members of the specified Team, optionally filtered by the given name fragment.  The response body is a PaginatedList of TeamMember. Public
/team/{id}/member/{principalId}DELETE n/an/aRemove principalId from teamTeam Admin or Current Team MemberMEMBERSHIP permission on group OR user issuing request is the one being removed.
/team/{id}/member/{principalId}/membershipStatusGET n/aTeamMembershipStatusReturn status bundle, saying whether user is a team member, whether they have open invitations, requests, etc.Any userPUBLIC
/membershipInvitationPOST MembershipInvtnSubmissionMembershipInvtnSubmissionInvite someone to join the team.  Note, the invitee list can include a group/team, as shorthand for all users in said group/team.Team AdminMEMBERSHIP permission on the team.
/user/{id}/openInvitationGETteamId, limit, offsetn/aPaginatedResults<MembershipInvitation>Get a paginated list of all the open membership invitations extended to a user, optionally filtering by teamId.  The list omits invitations from teams the user has already joined and omits invitations which have expired.Invited UserPUBLIC
/team/{id}/openInvitation
GETinviteeId, limit, offsetn/aPaginatedResults<MembershipInvtnSubmission>Get a paginated list of all the open membership invitations extended by a Team, optionally filtering by inviteeId.  The list omits invitations from teams the invitee has already joined and omits invitations which have expired.Team adminPUBLIC
/membershipInvitation/{id}GET n/aMembershipInvtnSubmissionRetrieve the given membership invitation.Team adminMEMBERSHIP permission on the team.
/membershipInvitation/{id}DELETE n/an/aDelete (rescind) a membership invitation.Team adminMEMBERSHIP permission on the team.
/membershipRequestPOST MembershipRqstSubmissionMembershipRqstSubmissionRequest by current user to be added to the team.Prospective team memberAuthenticated users.
/team/{id}/openRequestGETrequstorId, limit, offsetn/aPaginatedResults<MembershipRequest>Get a paginated list of open membership requests received by the indicated team, optionally filtering by requester. The list omits requests from requesters who have already joined the team and omits requests which have expired.Team adminMEMBERSHIP permission on the team.
/user/{id}/openRequest
GETteamId, limit, offsetn/aPaginatedResults<MembershipRqustSubmission>Get a paginated list of open membership requests created by a user, optionally filtering by Team. The list omits requests from requesters who have already joined the team and omits requests which have expired.Prospective team memberPUBLIC
/membershipRequest/{id}GET n/aMembershipRqstSubmissionRetrieve the given membership request.Prospective team memberMust be user specified in membership request.
/membershipRequest/{id}DELETE n/an/aDelete the membership request.Prospective team memberMust be user specified in membership request.

 

* If 'callback' is provided then the result is formatted for JSONP, i.e. the response body is

<callback>(<result>);

where <callback> is the callback parameter and <result> is the JSON response otherwise returned by the service.  Note that the URIs deviate a bit from our normal RESTful pattern. This is necessary to accommodate the limitations of url-pattern specification in web.xml and the need to make JSONP requirement that the request be publicly accessible (with no authentication header).