TeamsNew - Huddle/huddle-apis GitHub Wiki

Summary

The Membership Teams API manages teams inside a workspace: list teams, get/update/delete a team, and manage team members.

For the read-only teams list on People, see Teams.

Beta warning

The Membership Teams API is in Alpha.

Operations

Method Path Purpose Details
GET /membership/workspaces/{workspaceId}/teams/ List teams in workspace Jump
GET /membership/teams/{teamId} Retrieve a team Jump
POST /membership/workspaces/{workspaceId}/teams/ Create a team Jump
PATCH /membership/workspaces/{workspaceId}/teams/{teamId} Update a team Jump
DELETE /membership/workspaces/{workspaceId}/teams/{teamId} Delete a team Jump
POST /membership/workspaces/{workspaceId}/teams/{teamId}/members Add members to a team Jump
GET /membership/workspaces/{workspaceId}/teams/{teamId}/members Retrieve team members Jump
POST /membership/workspaces/{workspaceId}/teams/{teamId}/members/remove Remove members from a team Jump

List of Teams in Workspace

Example

Request:

GET /membership/workspaces/123/teams/ HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty

Request filters

GET /membership/workspaces/123/teams/?name=my&hasUser=123&pagesize=20&skip=0 HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
Parameter Default Notes
name Team names in the workspace that start with this value
hasUser When set, each team may include userIsMember for that user
pagesize 20 Page size (allowed range enforced by the service, typically 1–100)
skip 0 Number of teams to skip

Response

HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
{
  "links": [
    { "rel": "parent", "href": "..." },
    { "rel": "self", "href": "..." },
    { "rel": "next", "href": "..." },
    { "rel": "first", "href": "..." },
    { "rel": "previous", "href": "..." },
    { "rel": "create-team", "href": "..." },
    { "rel": "bulkInvitation", "href": "..." }
  ],
  "teams": [
    {
      "links": [
        { "rel": "self", "href": "..." },
        { "rel": "parent", "href": "..." },
        { "rel": "members", "href": "...", "count": 3 },
        { "rel": "add-member", "href": "..." },
        { "rel": "update", "href": "..." },
        { "rel": "delete", "href": "..." },
        { "rel": "remove-members", "href": "..." }
      ],
      "name": "My Team 1",
      "description": "Description of My Team 1",
      "userIsMember": true
    },
    {
      "links": [
        { "rel": "self", "href": "..." },
        { "rel": "parent", "href": "..." }
      ],
      "name": "My Team 2",
      "description": "Description of My Team 2",
      "userIsMember": false
    }
  ]
}

create-team, bulkInvitation, and some team-level links appear only when the caller has the right permissions. userIsMember appears when hasUser is used in the request.

Response link relations

Context rel Description Methods
Collection parent Workspace GET
Collection self This page of teams GET
Collection first / previous / next Paging GET
Collection create-team Create a team POST
Collection bulkInvitation Bulk invite (may be People URL) POST
Each team self Team GET
Each team parent Workspace GET
Each team members Team members (optional count) GET
Each team add-member Add members POST
Each team update Patch team PATCH
Each team delete Delete empty team DELETE
Each team remove-members Remove members POST

Other responses

Case Response
Invalid authorization 401 Unauthorized
Insufficient permissions 403 Forbidden
Workspace does not exist 404 Not Found

Retrieve a Team

Example

GET /membership/teams/456 HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty

Response

HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
{
  "links": [
    { "rel": "self", "href": "..." },
    { "rel": "parent", "href": "..." },
    { "rel": "members", "href": "...", "count": 3 },
    { "rel": "add-member", "href": "..." },
    { "rel": "update", "href": "..." },
    { "rel": "delete", "href": "..." },
    { "rel": "remove-members", "href": "..." }
  ],
  "name": "My Important team",
  "description": "My team description"
}

Optional links (add-member, update, delete, remove-members) depend on permissions.

Other responses

Case Response
Invalid authorization 401 Unauthorized
Insufficient permissions 403 Forbidden
Team or workspace not found 404 Not Found

Create a Team

Workspace team names must be unique within the workspace.

Example

POST /membership/workspaces/123/teams/ HTTP/1.1
Accept: application/vnd.huddle.data+json
Content-Type: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
  "name": "My first team!",
  "description": "Description of my first team!"
}

Response

HTTP/1.1 201 Created
Content-Type: application/vnd.huddle.data+json
Location: /membership/teams/456
{
  "links": [
    { "rel": "self", "href": "..." },
    { "rel": "parent", "href": "..." },
    { "rel": "members", "href": "...", "count": 0 },
    { "rel": "add-member", "href": "..." }
  ],
  "name": "My first team!",
  "description": "Description of my first team!"
}

Other responses

See HttpStatusCodes.

Case Response
Insufficient permissions 403 Forbidden
Workspace does not exist 404 Not Found
Name already exists 409 Conflict

Update a Team

Example

PATCH /membership/workspaces/123/teams/456 HTTP/1.1
Content-Type: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
  "name": "New name for Team 1",
  "description": "New description of Team 1"
}

Response

HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
{
  "links": [
    { "rel": "self", "href": "..." },
    { "rel": "parent", "href": "..." }
  ],
  "name": "New name for Team 1",
  "description": "New description of Team 1"
}

This response follows ErrorHandling and ResponseHeaders.

Other responses

Case Response
Invalid authorization 401 Unauthorized
Insufficient permissions 403 Forbidden
New name conflicts with another team 409 Conflict

Delete a Team

Only teams with no members can be deleted.

Example

DELETE /membership/workspaces/123/teams/456 HTTP/1.1
Authorization: Bearer frootymcnooty/vonbootycherooty

Response

HTTP/1.1 204 No Content

Other responses

Case Response
Invalid authorization 401 Unauthorized
Insufficient permissions 403 Forbidden
Workspace does not exist 404 Not Found
Team still has members 409 Conflict

Add Members to a Team

POST rel: member links pointing at the users to add (typically user self URIs).

Example

POST /membership/workspaces/123/teams/456/members HTTP/1.1
Accept: application/vnd.huddle.data+json
Content-Type: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
  "links": [
    { "rel": "member", "href": "..." }
  ]
}

Response

HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
Content-Location: /membership/workspaces/123/teams/456/members
{
  "links": [
    { "rel": "self", "href": "..." },
    { "rel": "parent", "href": "..." },
    { "rel": "add-member", "href": "..." },
    { "rel": "remove-members", "href": "..." },
    { "rel": "first", "href": "..." },
    { "rel": "next", "href": "..." },
    { "rel": "previous", "href": "..." }
  ],
  "members": [
    {
      "name": "Serious Sam",
      "email": "[email protected]",
      "links": [
        { "rel": "self", "href": "..." },
        { "rel": "avatar", "href": "..." },
        { "rel": "alternate", "href": "..." }
      ]
    }
  ]
}

Other responses

Case Response
Missing or invalid body / links 400 Bad Request
Allow-list / validation failure 400 Bad Request
Insufficient permissions 403 Forbidden
Team not found 404 Not Found

Retrieve Team Members

Example

GET /membership/workspaces/123/teams/456/members HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty

Filters

GET /membership/workspaces/123/teams/456/members?q=ser&pagesize=20&skip=0 HTTP/1.1
Accept: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
Parameter Default Notes
q Match first name, last name, or email
pagesize 20 Page size
skip 0 Offset

Response

HTTP/1.1 200 OK
Content-Type: application/vnd.huddle.data+json
{
  "links": [
    { "rel": "self", "href": "..." },
    { "rel": "parent", "href": "..." },
    { "rel": "add-member", "href": "..." },
    { "rel": "remove-members", "href": "..." },
    { "rel": "first", "href": "..." },
    { "rel": "next", "href": "..." },
    { "rel": "previous", "href": "..." }
  ],
  "members": [
    {
      "name": "Serious Sam",
      "email": "[email protected]",
      "links": [
        { "rel": "self", "href": "..." },
        { "rel": "avatar", "href": "..." },
        { "rel": "alternate", "href": "..." }
      ]
    }
  ]
}

Response link relations

Context rel Description Methods
Collection self This members list GET
Collection parent Team GET
Collection add-member Add members POST
Collection remove-members Remove members POST
Collection first / next / previous Paging GET
Each member self User GET
Each member avatar Avatar GET
Each member alternate Web profile GET

Other responses

Case Response
Invalid authorization 401 Unauthorized
Insufficient permissions 403 Forbidden
Team or workspace not found 404 Not Found

Remove Members from a Team

Workspace managers can remove members (including themselves) using rel: member links for each user to remove.

Example

POST /membership/workspaces/123/teams/456/members/remove HTTP/1.1
Accept: application/vnd.huddle.data+json
Content-Type: application/vnd.huddle.data+json
Authorization: Bearer frootymcnooty/vonbootycherooty
{
  "links": [
    { "rel": "member", "href": "..." }
  ]
}

Response

HTTP/1.1 200 OK
Content-Location: /membership/workspaces/123/teams/456/members
Content-Type: application/vnd.huddle.data+json
{
  "links": [
    { "rel": "self", "href": "..." },
    { "rel": "parent", "href": "..." },
    { "rel": "add-member", "href": "..." },
    { "rel": "remove-members", "href": "..." },
    { "rel": "first", "href": "..." },
    { "rel": "next", "href": "..." },
    { "rel": "previous", "href": "..." }
  ],
  "members": []
}

Other responses

Case Response
Insufficient permissions 403 Forbidden
Team not found 404 Not Found

Related