# client.teams.memberships

> client.teams.memberships — the teams.memberships operations.

`client.teams.memberships` — the `teams.memberships` operations.

On `AsyncKindgi` every method is the same, awaited.

## `client.teams.memberships.list()`

```python signature
list(
    team_id: str | UUID,
    /,
    *,
    limit: int | None = None,
    cursor: str | None = None,
    timeout: float | None = None,
) -> TeamMembershipCollectionPage
```

List memberships of a team. `GET /v1/teams/{teamId}/memberships`

Cursor-paginated. Sort order is binding-defined (for example `joinedAt` ascending). For the team's admins (and tenant admins): a plain member sees the team, not who else is in it, and reads their own roles through `GET /v1/identity/users/{userId}/grants`.

## `client.teams.memberships.add()`

```python signature
add(
    team_id: str | UUID,
    body: AddTeamMembershipBody | Mapping[str, Any] | None = None,
    /,
    *,
    idempotency_key: str | None = None,
    timeout: float | None = None,
    **fields: Any,
) -> AddTeamMembershipResult
```

Add a user to a team. `POST /v1/teams/{teamId}/memberships`

Someone who is not a person of this tenant, or was removed from it, is refused with 404 `identity-user-not-found`. Adding a role the member already holds answers 201 with the existing record; another role, 409 `membership-exists` naming the role they hold (`details.role`), which is kept: use PATCH to change it.

## `client.teams.memberships.update_role()`

```python signature
update_role(
    team_id: str | UUID,
    user_id: str | UUID,
    body: UpdateTeamMembershipBody | Mapping[str, Any] | None = None,
    /,
    *,
    idempotency_key: str | None = None,
    timeout: float | None = None,
    **fields: Any,
) -> None
```

Change an existing member's role. `PATCH /v1/teams/{teamId}/memberships/{userId}`

## `client.teams.memberships.remove()`

```python signature
remove(
    team_id: str | UUID,
    user_id: str | UUID,
    /,
    *,
    idempotency_key: str | None = None,
    timeout: float | None = None,
) -> None
```

Remove a user from a team (idempotent). `DELETE /v1/teams/{teamId}/memberships/{userId}`
