> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vturb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How merge-patch works

> The one rule behind every video update: send only what you want to change.

`PATCH /v1/videos/{id}` accepts the whole player config, but you rarely change
all of it at once. The body is a merge-patch: send only what you want to
change. Any group you omit — and any key inside a group you omit — keeps its
stored value. So flipping one toggle is a one-key body:

```json theme={null}
{
  "controls": {
    "seekbar": false
  }
}
```

Every other control, and every other feature, is untouched. This works the same
for every feature group — the per-feature guides in this section each show a
focused example.

## Collections

`call_actions` and `pixels.items` are collections, and the merge works per
item: an item **with an `id`** patches that entry, an item **without one**
creates a new entry, and an item with `"_destroy": true` deletes it. Entries
you don't mention stay as they are.

## Arrays of values

Plain value lists — like `traffic_filter.countries` — replace the stored list
instead of merging with it. Always send the full list you want.

## Read-only leaves

Some keys appear on `GET` but belong to the platform — experiment state,
derived colors, the subtitle track file. Sending them in a patch is silently
ignored, not rejected; each feature guide points out which ones.
