/connect/* route returns errors in a consistent JSON envelope. Gather (/qsi/gather/*) and legacy vendor routes (/qsi/{vendor}/*) keep their existing shapes.
Envelope shape
detailsis omitted when empty (notnull, not{}).requestIdis inmetafor Gather compatibility.
Authentication and authorization
Validation
details contains field-level keys (e.g. { "apiKey": "apiKey is required" }).
Integration lifecycle
Health checks: General unhealthy vendor state may return 502/504 with
data.healthy: false in a success envelope. Credential rejection (MS6+) returns 502 with error code VENDOR_AUTH_FAILED instead.Vendor passthrough
Mapped from outbound vendor HTTP failures:details may include vendorStatus, vendorStatusLabel, or vendorMessage (never raw vendor secrets).
Internal and order errors
Gather errors
Gather uses the sameerror + meta shape on /qsi/gather/* but with Gather-specific codes. See Gather error handling.
Related
- Request tracing — include
x-request-idwhen reporting errors to support - Standardized vendor endpoints

