No JSON Patch, cada operação vê o documento resultante da anterior. Em um array, uma remoção desloca os índices. Um patch que assume os índices iniciais pode alterar outro elemento ou falhar no meio.
[
{ "op": "test", "path": "/items/0", "value": "a" },
{ "op": "remove", "path": "/items/0" },
{ "op": "replace", "path": "/items/1", "value": "x" }
]
Aplique ao documento {"items":["a","b","c"]}. O resultado é {"items":["b","x"]}. Depois da remoção, o índice 1 aponta para "c". Repita com {"items":["a","b"]}. A substituição falha porque o índice 1 deixou de existir. No método HTTP PATCH, a aplicação do conjunto é atômica. O servidor não deve deixar visível a remoção parcial.
Proteja a versão que o cliente leu
A operação test verifica um valor específico. Um cliente que monta o patch a partir de uma representação inteira pode enviar também If-Match com o ETag forte recebido. Se outra edição mudou o validador, a condição impede a gravação. Teste separadamente o ETag desatualizado e o caminho inválido para confirmar que ambos preservam o estado original.