# drives.upsertMember

Add an organization member to a shared drive or change their role.

`PUT /api/v1/drives/{driveId}/members/{userId}`

- SDK: [`tb.drives.upsertMember(input)`](/sdk)
- CLI: [`thinkbench drives upsert-member`](/cli)
- MCP tool: [`drives_upsert_member`](/mcp)

## Input

| Field | Type | In | Description |
| --- | --- | --- | --- |
| `driveId` | `string` | path |  |
| `userId` | `string` | path |  |
| `role` | `"owner"` \| `"manager"` \| `"contributor"` | body |  |

## Output

Returns an empty response on success.

## Examples

### curl

```bash
curl -X PUT "https://app.thinkbench.com/api/v1/drives/<driveId>/members/<userId>" \
  -H "x-api-key: $THINKBENCH_API_KEY" \
  -H "content-type: application/json" \
  -d '{"role":"owner"}'
```

### TypeScript SDK

```ts
await tb.drives.upsertMember({ driveId: "<driveId>", userId: "<userId>", role: "owner" });
```

### CLI

```bash
thinkbench drives upsert-member --drive-id "<driveId>" --user-id "<userId>" --role "owner"
```

### MCP

```json
{
  "name": "drives_upsert_member",
  "arguments": {
    "driveId": "<driveId>",
    "userId": "<userId>",
    "role": "owner"
  }
}
```
