Just noticed that updating participant attributes mid-web conversation returns a 400 Bad Request. The documentation states: “The request body must contain a valid JSON object with the attributes field.” My payload strictly follows this structure, yet the server rejects it.
The problem here is… you’re missing the required wrapupCode or state field in the patch body. The API rejects partial updates without explicit state management.
400 Bad Request: Invalid request body. Missing required property: ‘state’.
Fix it by adding the current state to your payload:
This looks like a scope mismatch in your local mock. The suggestion above about the state field is valid for production, but in my Docker Compose harness, I often see 400s when the mock doesn’t enforce the attributes object structure correctly. Check your local API spec definition to ensure it accepts nested JSON objects for attributes without requiring a full state override.
The documentation actually says attributes are independent, but the API enforces state consistency. You don’t need wrapupCode, but you must preserve the current state.