PATCH /conversations/users/{userId} returning 400 for custom attributes

I’m trying to update participant attributes mid-call using the Conversations API. The goal is to push a tier_updated flag to the agent’s session after a specific IVR node is hit.

I’m using the PATCH endpoint:
PATCH /api/v2/conversations/users/{userId}

Here is the payload I’m sending:

{
 "attributes": {
 "tier_updated": true,
 "last_update_ts": 1715423400000
 }
}

The request returns a 400 Bad Request. The error body says:
{"code":"bad.request","message":"Invalid attribute format"}

I’ve checked the documentation. It says attributes should be key-value pairs. I tried sending just the key as a string, but that fails too. I also tried adding the X-Genesys-User-Agent header, but no change. Is there a specific schema requirement for the attribute values? Maybe they need to be strings only? I’m stuck on this one.