# Create or Edit a Team

> Management API · Teams

```http
PUT https://app.mk.io/api/v1/organization/teams/{team_name}
```

Create a new team with a unique name, or Edit an existing team.

RBAC Capability Required: `core.team.create`

## Authentication

- `Authorization` header — Bearer authentication of the form `Bearer <token>`.

## Path parameters

| Name          | Type   | Required | Description                              |
|---------------|--------|----------|------------------------------------------|
| `team_name`  | string | Yes      | —                                        |

## Request body

Content type: `application/json`

- `spec` · object · **Required** — Team specification.
  - `description` · string · Optional · _0-256 characters_ — A description of the team.
  - `members` · map from strings to object · Optional — The list of members.
    - `[any key]` · object — map of additional properties
      - `isTeamAdmin` · boolean · **Required** — Does this user have the ability to edit this team
  - `scopes` · map from strings to object · Optional — The set of scopes this team has access to, and the roles on each.
    - `[any key]` · object — map of additional properties
      - `roles` · list of strings · **Required** — The names of the roles.
        - Array items (string):

## Example request

```bash
curl -X PUT "https://app.mk.io/api/v1/organization/teams/{team_name}" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
  "spec": {
    "description": "A description of the Team",
    "members": {},
    "scopes": {}
  }
}'
```

## Responses

### 200 — Updated

- `kind` · string · Optional — The kind of record.
- `metadata` · object · **Required** — Team metadata.
  - `id` · string · **Required** · _format: uuid_ — The ID of the resource
  - `name` · string · Optional — The name of the resource
- `spec` · object · **Required** — Team specification.
  - `description` · string · Optional · _0-256 characters_ — A description of the team.
  - `members` · map from strings to object · Optional — The list of members.
    - `[any key]` · object — map of additional properties
      - `email` · string · **Required** — The email address of the team member
      - `isTeamAdmin` · boolean · **Required** — Does this user have the ability to edit this team
      - `name` · string · **Required** — The name of the team member
  - `scopes` · map from strings to object · Optional — The set of scopes this team has access to, and the roles on each.
    - `[any key]` · object — map of additional properties
      - `roles` · list of strings · **Required** — The names of the roles.
        - Array items (string):

### 201 — Created

### 400 — Bad Request

- `error` · object · **Required** — Pertinent information about the error
  - `code` · string · **Required** — The error code.
  - `detail` · string · **Required** — The error message.
  - `extraDetail` · map from strings to any · Optional — Extra information regarding this error.
    - `[any key]` · any — map of additional properties
- `ref` · string · **Required** — A reference to the request that caused the error.
- `status` · integer · **Required** — The HTTP status code

### 401 — Unauthorized

### 403 — Forbidden

### 404 — Not Found

### 429 — Too Many Requests

### 500 — Internal Server Error
