My answer depends on what the intent behind the update is.
- If the intent is to always replace the whole object: use PUT
- If the intent is to update a part of the object: use PATCH
The fact that in this particular case, "part of the object" happens to be 100% of the object shouldn't matter. If the call you are making will be doing partial updates as well as full updates, then having a consistent endpoint simplifies the code you have to write.
However, if the call you are making will always update the entire object use PUT. That is clearer as to your intentions, and if new fields are ever added to the object you will have an appropriate error message in the client code.
PATCH
makes no guarantee of being idempotent, and since the intent is to allow partial updates to an object that makes sense. It should return the whole object with the changes applied after completion though.
PUT
does have a guarantee of being idempotent, and as such requires the whole object to be replaced every time. Think of PUT as an UPSERT (Update or Insert if it doesn't exist). There typically is no body in the response. (201 for create, 204 for updates, and appropriate 400 series for errors)