Disallow non-idempotent PUTs
All tests passing except hlint warning about duplicated code blocks