# bulkAssignCandidateAssessments

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

## Operation

| Method | URL |
|---|---|
| POST | https://cxi-api-prod-weu-interim-eraffmdbdmdmbdfz.a01.azurefd.net/v1/candidates/assessments/bulk-assign |

| Field | Value |
|---|---|
| operationId | bulkAssignCandidateAssessments |
| method | POST |
| server | https://cxi-api-prod-weu-interim-eraffmdbdmdmbdfz.a01.azurefd.net/v1 |
| path | /candidates/assessments/bulk-assign |
| tags | `Assignments` |
| summary | Bulk-assign an assessment to many candidates (two-tier, fail-closed) |
| badges | `{"name":"Owner"}`, `{"name":"Admin"}` |

## Request Parameters

None.

## Request Body

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

## Responses

| Status | Description | Schema refs |
|---|---|---|
| 200 | Best-effort per-item results with a summary tally | #/components/schemas/CandidateBulkAssignResponseDto |
| 400 | Invalid request payload | #/components/schemas/ApiErrorResponseDto |
| 401 | Invalid or missing authentication token | #/components/schemas/ApiErrorResponseDto |
| 403 | Refused for one of three reasons: insufficient role (owner or admin required), envelope `AUTH_INSUFFICIENT_ROLE`; the tenant’s effective plan tier does not include the Candidates capability, envelope `INSUFFICIENT_TIER`; or that tier does not include the capability the requested instrument belongs to, also envelope `INSUFFICIENT_TIER`. | #/components/schemas/ApiErrorResponseDto |
| 404 | One or more targets are missing, tombstoned, or confidential and out of the caller circle | #/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": "Insufficient role privileges",
  "error": "AUTH_INSUFFICIENT_ROLE"
}
```

### Response 404 example

```json
{
  "statusCode": 404,
  "message": "Individuals not found in this organisation",
  "error": "ASSIGNMENT_INDIVIDUAL_NOT_FOUND"
}
```

### Response 429 example

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