# createPartnerTeam

Source: /openapi/thomas-federated.openapi.json

## Operation

| Method | URL |
|---|---|
| POST | https://cxi-api-prod-weu-interim-eraffmdbdmdmbdfz.a01.azurefd.net/v1/partner/teams |

| Field | Value |
|---|---|
| operationId | createPartnerTeam |
| method | POST |
| server | https://cxi-api-prod-weu-interim-eraffmdbdmdmbdfz.a01.azurefd.net/v1 |
| path | /partner/teams |
| tags | `Teams` |
| summary | Create an explicit Team by external reference |
| badges | None |

## Request Parameters

None.

## Request Body

| Content type | Schema refs |
|---|---|
| application/json | #/components/schemas/CreatePartnerTeamDto |

## Responses

| Status | Description | Schema refs |
|---|---|---|
| 200 | The request created NOTHING and this is the Team as it already stands — an idempotent replay of a request whose response was lost, or the loser of a same-reference race converging on the winner. `201` is reserved for a genuine creation, so a Partner can tell the two apart without diffing the body. | #/components/schemas/PartnerTeamResponseDto |
| 201 | A genuine creation. `200` is returned instead for an idempotent replay. | #/components/schemas/PartnerTeamResponseDto |
| 400 | Invalid request payload | #/components/schemas/ApiErrorResponseDto |
| 401 | Invalid or missing authentication token | #/components/schemas/ApiErrorResponseDto |
| 403 | For an API client: not the tenant's active `teams` source of record (AUTH_SOURCE_OF_RECORD_REQUIRED), no active Grant carrying the required scopes on this tenant (AUTH_TENANT_NOT_GRANTED), or a caller whose kind this operation could not resolve | #/components/schemas/ApiErrorResponseDto |
| 409 | For an API client: the submitted `sourceVersion` was already accepted asserting different data (PARTNER_TEAM_SOURCE_VERSION_CONFLICT), a higher version has already been accepted (PARTNER_TEAM_SOURCE_VERSION_STALE), or the external team reference is already bound in this namespace (PARTNER_TEAM_REFERENCE_CONFLICT) | #/components/schemas/ApiErrorResponseDto |
| 422 | The target is a manager-derived (implicit) team — IMPLICIT_TEAM_NOT_EDITABLE, or IMPLICIT_TEAM_NOT_DELETABLE on a delete | #/components/schemas/ApiErrorResponseDto |
| 429 | Rate limit exceeded. | #/components/schemas/ApiErrorResponseDto |

### Response 429 headers

| Name | Description | Schema |
|---|---|---|
| Retry-After | Seconds until the rate-limit block expires before retrying. | {"type":"integer","minimum":0} |
| RateLimit-Limit | Configured request limit for the active rate-limit window. | {"type":"integer"} |
| RateLimit-Remaining | Requests remaining in the active rate-limit window; zero when blocked. | {"type":"integer"} |
| RateLimit-Reset | Seconds until the rate-limit block expires. | {"type":"integer","minimum":0} |

## Artifact Examples

### Response 400 example

```json
{
  "statusCode": 400,
  "message": "Validation failed",
  "error": "HTTP_BAD_REQUEST"
}
```

### Response 401 example

```json
{
  "statusCode": 401,
  "message": "Invalid or missing authentication token",
  "error": "AUTH_TOKEN_INVALID"
}
```

### Response 403 example

```json
{
  "statusCode": 403,
  "message": "API client is not the source of record for this data domain in this tenant",
  "error": "AUTH_SOURCE_OF_RECORD_REQUIRED"
}
```

### Response 409 example

```json
{
  "statusCode": 409,
  "message": "This source version was already accepted asserting different team data",
  "error": "PARTNER_TEAM_SOURCE_VERSION_CONFLICT"
}
```

### Response 422 example

```json
{
  "statusCode": 422,
  "message": "Manager-derived teams cannot be edited through the explicit team surface; change the manager relationship instead",
  "error": "IMPLICIT_TEAM_NOT_EDITABLE"
}
```

### Response 429 example

```json
{
  "statusCode": 429,
  "message": "ThrottlerException: Too Many Requests",
  "error": "HTTP_TOO_MANY_REQUESTS"
}
```
