RocketChat/Rocket.Chat · error · CloudWorkspaceConnectionError
failed type validation
Error message
failed type validation
What it means
Cloud answered the sync request with HTTP 200, but the JSON body failed Cloud.WorkspaceSyncResponseSchema.safeParse (zod): the returned shape does not match what this server build expects for fields like license, removeLicense, or cloudSyncAnnouncement. The error's cause contains z.prettifyError output pinpointing the failing fields.
Solutions
- Update the Rocket.Chat server to a current release so WorkspaceSyncResponseSchema matches Cloud's payload
- Inspect err.cause (the zod prettified report) to see exactly which field mismatched, and report it if both sides are on current versions
- Remove or verify any HTTPS proxy in front of the server that could alter response bodies
Defensive patterns
Strategy: try-catch
Try / catch
try {
const payload = await fetchWorkspaceSyncPayload({ token, data });
} catch (err) {
if (err instanceof CloudWorkspaceConnectionError && err.message === 'failed type validation') {
// payload/schema skew: log err.cause (zod report), keep last known good state, don't crash the job
logger.warn({ msg: 'Cloud sync schema mismatch', cause: err.cause });
return;
}
throw err;
} Prevention
- Keep the server updated so WorkspaceSyncResponseSchema tracks Cloud's payload
- Always log err.cause — it names the exact mismatched field
- Design periodic sync consumers to tolerate one failed validation cycle without data loss
When it happens
Trigger: Cloud ships a response whose fields are renamed, missing, or differently typed relative to the local zod schema — typically a server build older (or newer) than the Cloud API — or an intermediary returns a different JSON document with a 200 status.
Common situations: Downgraded or fork-pinned server versions lagging the Cloud API; a proxy or captive portal injecting a JSON body; Cloud mid-deployment emitting a transitional payload.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- Invalid response from Rocket.Chat Cloud
- Failed to connect to Rocket.Chat Cloud
- Failed to connect to Rocket.Chat Cloud
- Failed to connect to Rocket.Chat Cloud
- Workspace access token is empty
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/35a65b5def7ee1f9.
Report an issue: GitHub.
Appendix: source
Thrown at apps/meteor/server/lib/cloud/syncWorkspace/fetchWorkspaceSyncPayload.ts:36
headers: {
Authorization: `Bearer ${token}`,
},
body: data,
// SECURITY: the URL is a default hardcoded value or an envvar/setting set by an admin. It's safe to disable this check.
ignoreSsrfValidation: true,
});
if (!response.ok) {
const { error } = await response.json();
throw new CloudWorkspaceConnectionError(`Failed to connect to Rocket.Chat Cloud: ${error}`);
}
const payload = await response.json();
const result = Cloud.WorkspaceSyncResponseSchema.safeParse(payload);
if (!result.success) {
throw new CloudWorkspaceConnectionError('failed type validation', {
cause: z.prettifyError(result.error),
});
}
return result.data;
}
View on GitHub (pinned to b2c16d5842)