# Set, rotate or remove secrets A merge patch over values: a string sets or rotates the named secret, null removes it, a name not mentioned is kept. The revision covers the values, so a rotation changes the ETag even though the answer shows names only. 400 when a removal would leave the VOD settings' lifecycle_webhook_secret naming nothing. Endpoint: PATCH /persist/secrets Version: 2.0.0 Security: engineBasic ## Header parameters: - `If-Match` (string, required) ETag of the revision this write is based on. * is not supported: quoting "any revision" defeats the concurrency check and is rejected with 412. ## Request fields (application/merge-patch+json): - `names` (array) The configured secret names, sorted. - `values` (object) The merge patch — a string sets or rotates, null removes, an absent name is kept. - `etag` (string,null) Server-assigned and ignored on a write. ## Response 200 fields (application/json): - `names` (array) The configured secret names, sorted. - `etag` (string,null) Server-assigned and ignored on a write. ## Response 400 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response 412 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response 428 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response default fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem.