Updating the Cognigy integration via Node.js and the state desync is triggering a reconnect loop on the Notification API.
PUT to /api/v2/bots/integrations/cognigy-main returns 200.
Payload includes trafficSplit: 0.5 and payloadTransform with flatten: true.
The routing:integrations:config WS event fires immediately.
The version field in the event payload is null.
Five seconds later, the bot stops processing events.
Heartbeat frames stop arriving.
My reconnect logic kicks in.
WS reconnects.
New subscription fires.
Version is still null.
Checking the integration manager logs shows the webhook endpoint received a 502 Bad Gateway.
The payload sent to the webhook is malformed.
It looks like the transform logic isn’t applied, or it’s applied incorrectly.
Here’s the request body:
{
"webhookUrl": "https://bot-proxy.internal/cognigy",
"timeoutMs": 2500,
"trafficSplit": 0.5,
"version": 12,
"payloadTransform": {
"extract": ["session.id", "user.attributes"],
"flatten": true
}
}
Node snippet:
const res = await axios.put(
`/api/v2/bots/integrations/${id}`,
config,
{ headers: { 'Authorization': `Bearer ${token}` } }
);
console.log(res.status); // 200
console.log(res.data.version); // 12
Environment details:
- Genesys Cloud EU-1.
- Node.js 18.
- Cognigy runtime 2.1.
- WS subscription
routing:integrations:*. - OAuth scopes
bot:read,bot:write. - Rate limit 500 req/min on proxy.
We’ve tried removing payloadTransform. Update works instantly. WS event has version: 12. Webhook stays healthy.
Tried flatten: false. Doesn’t break anything.
flatten: true causes the 200 response but breaks WS version and webhook payload.
Rollback logic isn’t triggering.
Audit log shows successful update.
API response body confirms version 12.
So the API accepts it, but the runtime rejects the transform silently.
Why isn’t the API returning a 400 validation error?
This breaks the automated manager because we can’t trust the 200.
Also, the timeoutMs is 2500. That’s within limits.
The extract paths are valid.
session.id exists.
user.attributes exists.
Maybe the combination of trafficSplit and flatten causes a race condition?
If I set trafficSplit to 0.0, flatten: true works.
So it’s the interaction.
Updating traffic split while flattening payload breaks the config validator.
But only silently.
This is nasty.
The integration manager can’t detect the failure.
It sees 200.
It sees audit log success.
Then the WS version drops to null.
The manager tries to rollback.
Rollback call to PUT with version 11 returns 200.
But WS version stays null.
State is stuck.
Rollback won’t fix it.
Manual intervention required.
This defeats the purpose of the automated manager.
Anyone seen this interaction between trafficSplit and payloadTransform.flatten?
Or is the Node SDK masking an error?
Using raw axios.
Response headers look normal.
x-request-id matches audit log.
No error headers.
Just 200.
This feels like a bug in the config compiler.
Or the schema validation is incomplete.
Stuck on null version.
Pipeline is broken.