# Team Management APIs

This page details the most import APIs for team management, e.g., integration with a workforce management (WFM) system or identity provider. For a complete list of team management API endpoints, see [openapi-specification](https://docs.pixiebrix.com/developer-api/openapi-specification "mention")

## Team Management

### List Team Memberships

`GET /api/organizations/:organizationId/memberships/`

This endpoint must be paginated, see [#pagination](https://docs.pixiebrix.com/making-an-api-request#pagination "mention").

Service accounts are included by default. To exclude them, use the following param: `user__service_account=true`

Deployment key accounts are included by default. To exclude them, use the following param: `user__deployment_key_account=true`

### Remove User From Team

`DELETE /api/memberships/:id/`

This endpoint can be used to remove a member from a team. For more information, view our [OpenAPI Specification](https://docs.pixiebrix.com/developer-api/openapi-specification).

## Group Management

### List Groups

`GET /api/organizations/:organizationId/groups/`

### Create a Group

`POST /api/organizations/:organizationId/groups/`

The payload should include the group name. For example:

```json
{ "name": "My Group Name" }
```

### List Group Memberships

To get the current memberships:

`GET /api/groups/:groupId/memberships/`

### Add or Update Group Memberships

* `POST /api/groups/:groupId/memberships/`: Add one or more members to a Group
* `PUT /api/groups/:groupId/memberships/`: Replace the members in a Group

{% hint style="warning" %}
When using the `PUT` method, the members you provide will **replace** the current membership list. Existing members that are not in the payload will be removed from the group.
{% endhint %}

The payload should consist of one or more registered user ids or emails.

To include an email, the user must be either: 1) already a member of your team, or 2) have an email domain that has been verified for your team. To verify an email domain for your team, contact <support@pixiebrix.com>.

Example payload:

```json
[
  {"user_id": "dcf5853e-523e-418c-bf6f-f014cd06c3c0"}, 
  {"email": "paz@pixies.com"} 
]
```

### Delete Group Membership

To delete a single group membership, call the DELETE method on the membership resource.

`DELETE /api/groups/:groupId/memberships/:membershipId/`

## Campaign Management

### List Campaigns

`GET /api/organizations/:organizationId/campaigns/`

### Update Campaign

To update a campaign's name, use the following endpoint:

`GET /api/organizations/:organizationId/campaigns/:campaignId/`

Example payload:

```json
{
  "name": "Campaign Name"
}
```

### List Campaign Memberships

To list membership information for a given campaign, use the following endpoint:

`GET /api/organizations/:organizationId/campaigns/:campaignId/members/`

### Add or Update Campaign Memberships

* `POST /api/organizations/:organizationId/campaigns/:campaignId/members/`: Add one or more members to a Campaign
* `PUT /api/organizations/:organizationId/campaigns/:campaignId/members/`: Replace the members in a Campaign

{% hint style="warning" %}
When using the `PUT` method, the members you provide will **replace** the current membership list. Existing members that are not in the payload will be removed from the campaign.
{% endhint %}

To include an email, the user must be either: 1) already a member of your team, or 2) have an email domain that’s been verified for your team. To verify an email domain for your team, contact <support@pixiebrix.com>

The users list supports a `data` property where you can provide custom master data about the users for reporting, e.g., Location, Organization Unit, etc.

Example payload:

```json
[
  {
    "email": "paz@pixies.com",
    "data": {
       "Location": "New York, NY"
    }
  }
]
```
