fix(openapi): widen global header type to string when schemas are incompatible #11116
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Refs https://buildwithfern.slack.com/archives/C09NRQZ4A2X/p1765250090217619
Fixes a bug where an OpenAPI spec with the same header name (e.g.,
Accept) across multiple endpoints but with different schemas causes validation errors during example generation.Root cause: When detecting global headers, the importer uses the first endpoint's schema for all endpoints. If subsequent endpoints have different schemas for the same header (e.g., one with
default: 'text/event-stream'and another withconst: 'application/json'), the generated examples don't match the global header's type, causing validation errors like:Fix: When incompatible schemas are detected for the same header name across endpoints, widen the header type to
stringinstead of using a literal type.Changes Made
markIncompatible()andisIncompatible()methods toHeaderWithCountclass to track schema incompatibilitygetTypeFromHttpHeaderSchema()helper to extract type from Fern header schema for comparisonwidenToString()helper to convert header schema to plain string typestringopenapi-accept-headerto reproduce the issueTesting
fern irwithout validation errorsHuman Review Checklist
getTypeFromHttpHeaderSchemais sufficient (currently only compares thetypefield from the converted Fern schema)stringloses important type informationLink to Devin run: https://app.devin.ai/sessions/dab9b93cc55a4f79ae9e7453b2e024ad
Requested by: [email protected] (@tjb9dc)