I’m coming up against the exact same issue.
Accessing existing metafields is fine, I can do that no problem, but if I try to add or edit and existing metafield then I get the same ‘required parameter missing or invalid’ error.
I’ve tried numerous ways and no luck.
Examples (I’ve fudged the URL so as not to reveal client data):
URL: https://example.myshopify.com/admin/products/2003472641/metafields/9015105921.json
Method: PUT
Payload: {“metafield”: {“id”: 9015105921, “value”: “test”, “value_type”: “string” }}
I’m pretty sure it’s either not working as it should or the documentation is out of date or incorrect.