# Retain an exact source snapshot without preparing a candidate

`POST /api/v1/projects/{project}/candidate-sync/source`

Operation ID: `retainProjectCandidateSource`  
Effect: `write`  
Confirmation: `conditional`

This source-only operation stores immutable bytes for a later target-owned delivery plan. It must not create a candidate, acquire physical credentials, or perform catalog work.

## Authorization

- mode: `privilege`
- privilege: `RESOURCE_EDIT`

## Parameters

| Name | In | Required | Schema | Description |
| --- | --- | --- | --- | --- |
| `project` | path | true | `{"maxLength":200,"minLength":1,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]*$","type":"string"}` |  |
| `Idempotency-Key` | header | true | `{"maxLength":200,"minLength":1,"type":"string"}` |  |
| `Source-Synchronization-Plan` | header | true | `{"type":"string"}` |  |

## Request body

- `application/json`: `CandidateSynchronizationRequest`

## Responses

| Status | Content | Description |
| --- | --- | --- |
| `200` | `application/json` (CandidateSourceSnapshotResponse) | The request has succeeded. |
| `400` | `application/problem+json` (ProblemDetails) | The server could not understand the request due to invalid syntax. |
| `401` | `application/problem+json` (ProblemDetails) | Access is unauthorized. |
| `403` | `application/problem+json` (ProblemDetails) | Access is forbidden. |
| `404` | `application/problem+json` (ProblemDetails) | The server cannot find the requested resource. |
| `409` | `application/problem+json` (ProblemDetails) | The request conflicts with the current state of the server. |
| `412` | `application/problem+json` (ProblemDetails) | Precondition failed. |
| `413` | `application/problem+json` (ProblemDetails) | Client error |
| `415` | `application/problem+json` (ProblemDetails) | Client error |
| `422` | `application/problem+json` (ProblemDetails) | Client error |
| `429` | `application/problem+json` (ProblemDetails) | Client error |
| `500` | `application/problem+json` (ProblemDetails) | Server error |
| `502` | `application/problem+json` (ProblemDetails) | Server error |
| `503` | `application/problem+json` (ProblemDetails) | Service unavailable. |
