Skip to content

Expose HttpApi.ParseOptions for schema decoding and encoding - #8269

Merged
tim-smart merged 10 commits into
mainfrom
agent/bob/7c0b7505b1a1
Sep 17, 2026
Merged

tim-smart merged 10 commits into
mainfrom
agent/bob/7c0b7505b1a1

Conversation

@tim-smart

@tim-smart tim-smart commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add HttpApi.ParseOptions for API, group, and endpoint annotations. Options follow API → group → endpoint precedence, with whole-value replacement and Schema defaults when unset.

Forward options through server request decoders and response encoders, including multipart, WithHeaders, and SSE. Generated clients use the same options for request encoding, response decoding, and urlBuilder.

Includes a patch changeset for effect and the preceding tests-first commit with 29 regression cases.

Validation

  • HttpApiBuilder and HttpApiClient suites: 110 tests pass.
  • nix develop -c pnpm check: passes.
  • nix develop -c pnpm lint: passes.
  • nix develop -c pnpm jsdocs --check: reports two existing documentation errors in packages/effect/src/unstable/ai/McpSchema.ts; HttpApi documentation passes.

Closes #8266
Closes #8268
Closes EFF-1393

@changeset-bot

changeset-bot Bot commented Sep 17, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: b1bd7ad

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

This PR includes changesets to release 30 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/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 enhancement New feature or request 4.0 labels Sep 17, 2026
@github-actions

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 34.58 KB 34.58 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.51 KB 21.51 KB 0.00 KB (0.00%)
differ.ts 20.32 KB 20.32 KB 0.00 KB (0.00%)
http-client.ts 21.94 KB 21.94 KB 0.00 KB (0.00%)
http-router.ts 36.92 KB 36.92 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-binary.ts 39.51 KB 39.51 KB 0.00 KB (0.00%)
schema-class.ts 20.06 KB 20.06 KB 0.00 KB (0.00%)
schema-fromJsonSchemaDocument.ts 30.93 KB 30.93 KB 0.00 KB (0.00%)
schema-representation-roundtrip.ts 26.34 KB 26.34 KB 0.00 KB (0.00%)
schema-string-transformation.ts 13.63 KB 13.63 KB 0.00 KB (0.00%)
schema-string.ts 11.12 KB 11.12 KB 0.00 KB (0.00%)
schema-template-literal.ts 15.41 KB 15.41 KB 0.00 KB (0.00%)
schema-toArbitrary.ts 34.10 KB 34.10 KB 0.00 KB (0.00%)
schema-toCodeDocument.ts 24.56 KB 24.56 KB 0.00 KB (0.00%)
schema-toCodecJson.ts 19.27 KB 19.27 KB 0.00 KB (0.00%)
schema-toEquivalence.ts 19.38 KB 19.38 KB 0.00 KB (0.00%)
schema-toFormatter.ts 19.49 KB 19.49 KB 0.00 KB (0.00%)
schema-toJsonSchemaDocument.ts 23.77 KB 23.77 KB 0.00 KB (0.00%)
schema-toRepresentation.ts 19.54 KB 19.54 KB 0.00 KB (0.00%)
schema.ts 19.27 KB 19.27 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%)

tim-smart and others added 8 commits September 17, 2026 05:04
Drop the wire-presence tracking (WeakMap, hasId, prototype input) and the
second decode branch in Sse.decodeSchema. transformEvent now omits an
absent id, and the data-mode event schema reuses Sse.EventEncoded.fields,
so one decode path serves strict and default parse options.

Fold repeated codec construction behind local helpers in HttpApiBuilder
and HttpApiClient, and trim the ParseOptions docs and changeset.
@tim-smart
tim-smart enabled auto-merge (squash) September 17, 2026 08:10
@tim-smart
tim-smart merged commit 9ad9891 into main Sep 17, 2026
13 checks passed
@tim-smart
tim-smart deleted the agent/bob/7c0b7505b1a1 branch September 17, 2026 08:10
arrudaricardo pushed a commit to arrudaricardo/effect that referenced this pull request Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.0 enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HttpApiBuilder does not expose payload parse options

1 participant