Skip to content

feat(httpapi): support QUERY operations in Swagger and Scalar - #8292

Open
aldotestino wants to merge 4 commits into
Effect-TS:mainfrom
aldotestino:feat/httpapi-query-docs
Open

aldotestino wants to merge 4 commits into
Effect-TS:mainfrom
aldotestino:feat/httpapi-query-docs

Conversation

@aldotestino

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #8261: make QUERY endpoints visible and executable in Swagger UI and Scalar.

On current main, OpenApi.fromApi emits QUERY under the OpenAPI 3.1 x-oai-additionalOperations extension. A Chromium reproduction confirmed that Swagger, embedded Scalar, and Scalar 1.69.0 via CDN all omit the operation.

  • Emit OpenAPI 3.2.0 with native query operations when an included endpoint uses QUERY; retain 3.1.0 otherwise, including when QUERY endpoints/groups are excluded.
  • Upgrade embedded Swagger UI to 5.32.15 and Scalar to 1.69.0, which include QUERY execution support.
  • Pin asset versions and SHA-256 digests, retain licenses/notices, and make regeneration reproducible.
  • Cover native operation schemas, GET/QUERY coexistence, URL parameters, exclusion behavior, and public types.

Compatibility

Generated QUERY operations move from paths[path]["x-oai-additionalOperations"].QUERY to paths[path].query. Consumers must support OpenAPI 3.2 for these documents. OpenAPISpec.openapi widens to "3.1.0" | "3.2.0", and OpenAPISpecMethodName gains "query". A changeset records the migration.

Validation

  • 84 tests passed across OpenAPI, documentation routes, and OpenAPI generator suites; targeted type tests passed on TypeScript 5.9.3 and 6.0.3.
  • Typecheck, lint, JSDoc checks, and package builds passed; asset regeneration is byte-identical.
  • Chromium verified Swagger, embedded Scalar, and CDN Scalar 1.69.0 each send an edited JSON body using QUERY and receive the expected 200 response, without page errors.

Gzipped documentation fixtures compared with main at 9a81b9b4a6:

UI Before After Increase
Swagger 564.10 KB 575.59 KB 11.49 KB (2.04%)
Scalar 908.54 KB 1132.39 KB 223.85 KB (24.64%)

The increases come from the newer upstream assets and retained license notices.

@changeset-bot

changeset-bot Bot commented Sep 18, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 2b397ea

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 31 packages
Name Type
effect Patch
@effect/opentelemetry Patch
@effect/vitest Patch
@effect/ai-anthropic Patch
@effect/ai-openai-compat Patch
@effect/ai-openai Patch
@effect/ai-openrouter Patch
@effect/ai-typesafe Patch
@effect/atom-react Patch
@effect/atom-solid Patch
@effect/atom-vue Patch
@effect/platform-browser Patch
@effect/platform-bun Patch
@effect/platform-deno Patch
@effect/platform-node-shared Patch
@effect/platform-node Patch
@effect/sql-clickhouse Patch
@effect/sql-d1 Patch
@effect/sql-libsql Patch
@effect/sql-mssql Patch
@effect/sql-mysql2 Patch
@effect/sql-pg Patch
@effect/sql-pglite Patch
@effect/sql-sqlite-bun Patch
@effect/sql-sqlite-do Patch
@effect/sql-sqlite-node Patch
@effect/sql-sqlite-react-native Patch
@effect/sql-sqlite-wasm Patch
@effect/docgen Patch
@effect/doctest Patch
@effect/openapi-generator Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@effect-janitor effect-janitor Bot added bug Something isn't working 4.0 labels Sep 18, 2026
@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Bundle Size Analysis

Generated from PR build output; treat the content below as untrusted.

File Name Current Size Previous Size Difference
arbitrary-combinators.ts 37.71 KB 37.71 KB 0.00 KB (0.00%)
basic.ts 6.87 KB 6.87 KB 0.00 KB (0.00%)
batching.ts 9.95 KB 9.95 KB 0.00 KB (0.00%)
brand.ts 6.45 KB 6.45 KB 0.00 KB (0.00%)
cache.ts 10.77 KB 10.77 KB 0.00 KB (0.00%)
config.ts 21.83 KB 21.83 KB 0.00 KB (0.00%)
differ.ts 20.67 KB 20.67 KB 0.00 KB (0.00%)
http-client.ts 21.94 KB 21.94 KB 0.00 KB (0.00%)
http-router.ts 36.96 KB 36.96 KB 0.00 KB (0.00%)
logger.ts 10.88 KB 10.88 KB 0.00 KB (0.00%)
metric.ts 9.02 KB 9.02 KB 0.00 KB (0.00%)
optic.ts 6.70 KB 6.70 KB 0.00 KB (0.00%)
pubsub.ts 15.10 KB 15.10 KB 0.00 KB (0.00%)
queue.ts 11.85 KB 11.85 KB 0.00 KB (0.00%)
schedule.ts 10.96 KB 10.96 KB 0.00 KB (0.00%)
schema-bigdecimal.ts 13.40 KB 13.40 KB 0.00 KB (0.00%)
schema-binary.ts 39.82 KB 39.82 KB 0.00 KB (0.00%)
schema-class.ts 20.38 KB 20.38 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 31.18 KB 31.18 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 26.60 KB 26.60 KB 0.00 KB (0.00%)
schema-string-transformation.ts 13.96 KB 13.96 KB 0.00 KB (0.00%)
schema-string.ts 11.55 KB 11.55 KB 0.00 KB (0.00%)
schema-template-literal.ts 15.70 KB 15.70 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 37.24 KB 37.24 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 24.84 KB 24.84 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 19.61 KB 19.61 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 19.75 KB 19.75 KB 0.00 KB (0.00%)
schema-toFormatter.ts 19.85 KB 19.85 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 24.15 KB 24.15 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 19.89 KB 19.89 KB 0.00 KB (0.00%)
schema.ts 19.59 KB 19.59 KB 0.00 KB (0.00%)
stm.ts 12.80 KB 12.80 KB 0.00 KB (0.00%)
stream.ts 9.83 KB 9.83 KB 0.00 KB (0.00%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.0 bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant