With zod's new option for generating JSON schemas and maintaining registries we've added a pretty much seamless support for all metadata information coming from .meta calls as if that was metadata passed into .openapi.
So the following 2 schemas produce exactly the same results:
const schema = z
.string()
.openapi('Schema', { description: 'Name of the user', example: 'Test' });
const schema2 = z
.string()
.meta({ id: 'Schema2', description: 'Name of the user', example: 'Test' });
Removing extendZodWithOpenApi
This also means that unless you are using some of our more complicated scenarios you could even generate a schema without using extendZodWithOpenApi in your codebase and only rely on .meta to provide additional metadata information and schema names (using the id property).
Where would you still need to use extendZodWithOpenApi and .openapi
When extending registered schemas that are both registered and want the extended one to use anyOf i.e:
You can trigger a rebase of this PR by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot merge will merge this PR after your CI passes on it
@dependabot squash and merge will squash and merge this PR after your CI passes on it
@dependabot cancel merge will cancel a previously requested merge and block automerging
@dependabot reopen will reopen this PR if it is closed
@dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
@dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/fosrl/pangolin/pull/1277
**Author:** [@dependabot[bot]](https://github.com/apps/dependabot)
**Created:** 8/14/2025
**Status:** ❌ Closed
**Base:** `main` ← **Head:** `dependabot/npm_and_yarn/asteasolutions/zod-to-openapi-8.1.0`
---
### 📝 Commits (1)
- [`b43de0c`](https://github.com/fosrl/pangolin/commit/b43de0cdd20839bb6e05a6100264269f13921978) Bump @asteasolutions/zod-to-openapi from 7.3.4 to 8.1.0
### 📊 Changes
**2 files changed** (+6 additions, -6 deletions)
<details>
<summary>View changed files</summary>
📝 `package-lock.json` (+5 -5)
📝 `package.json` (+1 -1)
</details>
### 📄 Description
Bumps [@asteasolutions/zod-to-openapi](https://github.com/asteasolutions/zod-to-openapi) from 7.3.4 to 8.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/asteasolutions/zod-to-openapi/releases"><code>@asteasolutions/zod-to-openapi</code>'s releases</a>.</em></p>
<blockquote>
<h2>v8.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Improve Zod v4 type compatibility in module augmentation (fixes <a href="https://redirect.github.com/asteasolutions/zod-to-openapi/issues/321">#321</a> ) thanks to <a href="https://github.com/YeeP79"><code>@YeeP79</code></a></li>
<li>Add option to sort schemas and parameters (fixes: <a href="https://redirect.github.com/asteasolutions/zod-to-openapi/issues/312">#312</a>) See more details on how to use it <a href="https://github.com/asteasolutions/zod-to-openapi?tab=readme-ov-file#passing-a-global-configuration-as-second-argument-for-the-generator">here</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/asteasolutions/zod-to-openapi/compare/v8.0.0...v8.1.0">https://github.com/asteasolutions/zod-to-openapi/compare/v8.0.0...v8.1.0</a></p>
<h2>v8.0.0</h2>
<h1>Added Zod v4 support 🚀</h1>
<h2>Support for properties from .meta</h2>
<p>With zod's new option for generating JSON schemas and maintaining registries we've added a pretty much seamless support for all metadata information coming from <code>.meta</code> calls as if that was metadata passed into <code>.openapi</code>.</p>
<p>So the following 2 schemas produce exactly the same results:</p>
<pre lang="ts"><code>const schema = z
.string()
.openapi('Schema', { description: 'Name of the user', example: 'Test' });
<p>const schema2 = z<br />
.string()<br />
.meta({ id: 'Schema2', description: 'Name of the user', example: 'Test' });<br />
</code></pre></p>
<h3>Removing extendZodWithOpenApi</h3>
<p>This also means that unless you are using some of our more complicated scenarios you could even generate a schema without using <code>extendZodWithOpenApi</code> in your codebase and only rely on <code>.meta</code> to provide additional metadata information and schema names (using the <code>id</code> property).</p>
<h3>Where would you still need to use <code>extendZodWithOpenApi</code> and <code>.openapi</code></h3>
<ol>
<li>When extending registered schemas that are both registered and want the extended one to use <code>anyOf</code> i.e:</li>
</ol>
<pre lang="ts"><code>const schema = z.object({ name: z.string() }).openapi('Schema');
<p>const schema2 = schema.extend({ age: z.number() }).openapi('Schema2'); // this one would have anyOf and a reference to the first one<br />
</code></pre></p>
<ol start="2">
<li>Defining parameter metadata. So for example when doing:</li>
</ol>
<pre lang="ts"><code>
registry.registerPath({
// ...
request: {
query: z.object({
name: z.string().openapi({
description: 'Schema level description',
param: { description: 'Param level description' },
}),
}),
},
});
</code></pre>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/be536b7128925842c1d41e7ab4fb10e034e71a6e"><code>be536b7</code></a> Release 8.1.0</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/63cd1adcf7caec8b82d4764f42cde715cdd0e26c"><code>63cd1ad</code></a> Merge pull request <a href="https://redirect.github.com/asteasolutions/zod-to-openapi/issues/331">#331</a> from asteasolutions/feature/#312-add-option-to-sort</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/9ad5797d285507b4f469eea1ada8d0d10aaa94fc"><code>9ad5797</code></a> prettier</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/83519ab5f8a5cddda161bfb5676efa16c99c4d09"><code>83519ab</code></a> add note and extends to interface definition of ZodType extension</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/a80ad75f450441f01b75643880e3f802f5d8b2c3"><code>a80ad75</code></a> update README</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/406210491a69dd8c4828525252abfc35d5f627df"><code>4062104</code></a> add options to sort definitions alphabetically</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/bfe73b948084aa7de7b26ebcd6f3e604d29c916c"><code>bfe73b9</code></a> ran prettier</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/e0142b226f402463934553bca5787199e3c12898"><code>e0142b2</code></a> Merge pull request <a href="https://redirect.github.com/asteasolutions/zod-to-openapi/issues/322">#322</a> from YeeP79/yeep79-fix-zod-v4-type-compatibility</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/48b63cc52593bcf5a21871586061da9a52a44f1b"><code>48b63cc</code></a> feat: fix Zod v4 type compatibility in module augmentation</li>
<li><a href="https://github.com/asteasolutions/zod-to-openapi/commit/b7e70ff97a199917afdd4f36f4c99a22bad689fb"><code>b7e70ff</code></a> Release 8.0.0</li>
<li>Additional commits viewable in <a href="https://github.com/asteasolutions/zod-to-openapi/compare/v7.3.4...v8.1.0">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
You can trigger a rebase of this PR by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
> **Note**
> Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/fosrl/pangolin/pull/1277
Author: @dependabot[bot]
Created: 8/14/2025
Status: ❌ Closed
Base:
main← Head:dependabot/npm_and_yarn/asteasolutions/zod-to-openapi-8.1.0📝 Commits (1)
b43de0cBump @asteasolutions/zod-to-openapi from 7.3.4 to 8.1.0📊 Changes
2 files changed (+6 additions, -6 deletions)
View changed files
📝
package-lock.json(+5 -5)📝
package.json(+1 -1)📄 Description
Bumps @asteasolutions/zod-to-openapi from 7.3.4 to 8.1.0.
Release notes
Sourced from
@asteasolutions/zod-to-openapi's releases.... (truncated)
Commits
be536b7Release 8.1.063cd1adMerge pull request #331 from asteasolutions/feature/#312-add-option-to-sort9ad5797prettier83519abadd note and extends to interface definition of ZodType extensiona80ad75update README4062104add options to sort definitions alphabeticallybfe73b9ran prettiere0142b2Merge pull request #322 from YeeP79/yeep79-fix-zod-v4-type-compatibility48b63ccfeat: fix Zod v4 type compatibility in module augmentationb7e70ffRelease 8.0.0You can trigger a rebase of this PR by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.