PATCH /api/v2/conversations/webchat/{id}/participants/{id} returning 409 with conflicting attributes

We’re trying to update participant attributes mid-stream in our Rust service. The goal is to tag the user based on sentiment analysis results coming from a sidecar process. We’re using tokio-tungstenite to listen for the notification event, then firing a PATCH request to /api/v2/conversations/webchat/{conv_id}/participants/{part_id}.

The issue is a persistent 409 Conflict. The response body says "reason": "CONFLICTING_ATTRIBUTES". I’ve checked the If-Match header against the ETag from the initial GET, so versioning should be fine. Here’s the payload we’re sending:

{
 "attributes": {
 "sentiment_score": "0.85",
 "risk_level": "high"
 }
}

Is there a specific schema validation happening on the server side that rejects nested strings? Or does the Conversations API require these custom keys to be pre-registered in the platform config? We’re running this from Sao Paulo, so latency isn’t causing the ETag drift. The code looks solid, but the API seems to hate our attribute structure. What am I missing here?