Olá, o objetivo deste formato de história é ser rápido e te contar fundamentos onde às vezes não nos questionamos no nosso dia a dia.
Então, vamos criar um cenário onde você tem um e-commerce e um endpoint é responsável por criar um produto.

Após criar um novo produto. Percebemos que o preço estava errado. A primeira coisa normal é ter um endpoint para "atualizar" a entidade inteira passando o ID.

Normalmente esta é uma situação comum. Alguns desenvolvedores diriam que PUT é para atualizar, mas não é realmente, PUT é para substituir completamente ou criar.
Sim, o produto 111 poderia não existir e poderíamos criá-lo.
Para melhorar isso, podemos usar o verbo PATCH, porque só queremos mudar o preço, ok?

Então o patch é para atualizar campos individuais dos recursos existentes.
Poderíamos fazer algo como

Se o produto 111 não existir, receberemos um erro.
Claro que no cenário PUT, podemos verificar se existe uma entidade antes ou dependendo da forma que estamos implementando a camada de banco de dados da nossa aplicação provavelmente também receberemos um erro, mas em teoria é possível criar em vez de retornar um erro.
Se você quiser ter um endpoint que apenas modifica campos individuais de acordo com RFC 5789 deve usar o verbo PATCH.
Se você quiser ter um endpoint para modificar completamente um recurso devemos usar o verbo PUT de acordo com RFC 2616.
