# Users & Teams

> Manage users within your organization and organize them into teams with resource assignments. Endpoints for user invites, team creation, membership, and resource assignment.

Source: https://zop.dev/developer-docs/administration/users-teams

---

Manage users within your organization and organize them into teams with resource assignments.

## Users

### List Users

### GET /users

List all users in your organization. Supports ?search= (case-insensitive substring over name/email, paginated), ?page= / ?limit= (default 20, max 100), and ?email= for a server-side exact-email lookup that returns the single matching member (use ?email= rather than ?search= when you need one specific member — substring search can push the exact address past the requested page).

### Invite User

### POST /users

Invite a new user to your organization by email.

### Update User

### PATCH /users/{email}

Update a user

### Remove User

### DELETE /users/{email}

Remove a user from your organization.

## Teams

### List Teams

### GET /teams

List all teams in your organization.

### Create Team

### POST /teams

Create a new team.

```bash title="Request"
curl -X POST https://zopnight.com/api/teams \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Platform Engineering",
    "description": "Manages shared infrastructure and developer tooling"
  }'
```

```json title="Response"
{
  "data": {
    "id": "team_abc123",
    "name": "Platform Engineering",
    "description": "Manages shared infrastructure and developer tooling",
    "members": [],
    "resources": [],
    "createdBy": "admin@company.com",
    "createdAt": "2025-03-10T09:00:00Z",
    "updatedAt": "2025-03-10T09:00:00Z"
  }
}
```

### Get Team

### GET /teams/{teamID}

Get a team with its members and assigned resources.

### Update Team

### PUT /teams/{teamID}

Update team name or description.

### Delete Team

### DELETE /teams/{teamID}

Delete a team. Members and resource assignments are removed.

## Team Members

**Info**

Adding a user to a team does not automatically grant them permissions on the team's resources. Use role assignments to control what team members can do.

### List Members

### GET /teams/{teamID}/members

List all members of a team.

### Add Member

In the team detail page, **Add Member** opens a picker of existing organization
users rather than a free-text email field. Each user is listed with their name,
email, and the teams they already belong to, so you can confirm who you're
adding. Users who are already on the team are filtered out, so you can't add a
duplicate, and you can add several members at once. Selecting a user and a team role calls the endpoint
below — the email is taken from the chosen user, never typed by hand.

### POST /teams/{teamID}/members

Add a user to a team by email.

```bash title="Request"
curl -X POST https://zopnight.com/api/teams/team_abc123/members \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "engineer@company.com"
  }'
```

```json title="Response"
{
  "data": {
    "teamID": "team_abc123",
    "email": "engineer@company.com",
    "addedBy": "admin@company.com",
    "addedAt": "2025-03-10T09:15:00Z"
  }
}
```

### Remove Member

### DELETE /teams/{teamID}/members/{email}

Remove a member from a team.

## Team Resources

### List Assigned Resources

### GET /teams/{teamID}/resources

List all resources assigned to a team.

### Assign Resource

### POST /teams/{teamID}/resources

Assign a cloud resource to a team.

```bash title="Request"
curl -X POST https://zopnight.com/api/teams/team_abc123/resources \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "resourceUID": "aws:us-east-1:i-0abc123def456"
  }'
```

```json title="Response"
{
  "data": {
    "teamID": "team_abc123",
    "resourceUID": "aws:us-east-1:i-0abc123def456",
    "assignedBy": "admin@company.com",
    "assignedAt": "2025-03-10T09:30:00Z"
  }
}
```

### Unassign Resource

### DELETE /teams/{teamID}/resources/{resourceUID}

Remove a resource assignment from a team.

## Team Object

| Field | Type | Description |
|---|---|---|
| `id` | string | Unique team ID |
| `name` | string | Team display name |
| `description` | string | Optional description |
| `members` | TeamMember[] | List of team members |
| `resources` | AssignedResource[] | List of assigned resources |
| `createdBy` | string | Email of the creator |
| `createdAt` | string | ISO 8601 creation timestamp |
| `updatedAt` | string | ISO 8601 last update timestamp |
