Repository: apollographql/apollo-server
Pull request #7428 (2023-03-07 18:03:41)

chore(deps): update all non-major dependencies
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@apollo/gateway](https://togithub.com/apollographql/federation) | [`2.3.2` -> `2.3.3`](https://renovatebot.com/diffs/npm/@apollo%2fgateway/2.3.2/2.3.3) | [![age](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.3/compatibility-slim/2.3.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@apollo%2fgateway/2.3.3/confidence-slim/2.3.2)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@apollo/subgraph](https://togithub.com/apollographql/federation) | [`2.3.2` -> `2.3.3`](https://renovatebot.com/diffs/npm/@apollo%2fsubgraph/2.3.2/2.3.3) | [![age](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.3/compatibility-slim/2.3.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@apollo%2fsubgraph/2.3.3/confidence-slim/2.3.2)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [node](https://togithub.com/nodejs/node) | [`18.14.2` -> `18.15.0`](https://renovatebot.com/diffs/npm/node/18.14.2/v18.15.0) | [![age](https://badges.renovateapi.com/packages/github-tags/node/v18.15.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/github-tags/node/v18.15.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/github-tags/node/v18.15.0/compatibility-slim/18.14.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/github-tags/node/v18.15.0/confidence-slim/18.14.2)](https://docs.renovatebot.com/merge-confidence/) | volta | minor |
| [npm](https://docs.npmjs.com/) ([source](https://togithub.com/npm/cli)) | [`9.6.0` -> `9.6.1`](https://renovatebot.com/diffs/npm/npm/9.6.0/9.6.1) | [![age](https://badges.renovateapi.com/packages/npm/npm/9.6.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/npm/9.6.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/npm/9.6.1/compatibility-slim/9.6.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/npm/9.6.1/confidence-slim/9.6.0)](https://docs.renovatebot.com/merge-confidence/) | volta | patch |
| [rimraf](https://togithub.com/isaacs/rimraf) | [`4.3.1` -> `4.4.0`](https://renovatebot.com/diffs/npm/rimraf/4.3.1/4.4.0) | [![age](https://badges.renovateapi.com/packages/npm/rimraf/4.4.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/rimraf/4.4.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/rimraf/4.4.0/compatibility-slim/4.3.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/rimraf/4.4.0/confidence-slim/4.3.1)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [rollup](https://rollupjs.org/) ([source](https://togithub.com/rollup/rollup)) | [`3.18.0` -> `3.19.0`](https://renovatebot.com/diffs/npm/rollup/3.18.0/3.19.0) | [![age](https://badges.renovateapi.com/packages/npm/rollup/3.19.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/rollup/3.19.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/rollup/3.19.0/compatibility-slim/3.18.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/rollup/3.19.0/confidence-slim/3.18.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |

---

### Release Notes

<details>
<summary>apollographql/federation (@&#8203;apollo/gateway)</summary>

### [`v2.3.3`](https://togithub.com/apollographql/federation/blob/HEAD/gateway-js/CHANGELOG.md#&#8203;233)

[Compare Source](https://togithub.com/apollographql/federation/compare/@apollo/gateway@2.3.2...@apollo/gateway@2.3.3)

##### Patch Changes

-   Update [@&#8203;apollo/utils](https://togithub.com/apollo/utils).logger typings dependency ([#&#8203;2269](https://togithub.com/apollographql/federation/pull/2269))

-   Exposes, for each subgraph request, the path in the overall gateway operation at which that subgraph request gets inserted. This path is now available as the pathInIncomingRequest field in the arguments of RemoteGraphQLDataSource.willSendRequest and RemoteGraphQLDataSource.didReceiveResponse. ([#&#8203;2384](https://togithub.com/apollographql/federation/pull/2384))

-   Previously the `queryPlanStoreKey` was a hash of the query concatenated with an unhashed `operationName` if it was present. This resulted in variable length cache keys that could become unnecessarily long, occupying additional space in the query plan cache. ([#&#8203;2310](https://togithub.com/apollographql/federation/pull/2310))

    This change incorporates the `operationName` *into* the hash itself (if `operationName` is present).

-   Update [@&#8203;apollo/utils](https://togithub.com/apollo/utils).createhash package, which drops support for node 12 ([#&#8203;2266](https://togithub.com/apollographql/federation/pull/2266))

-   Update [@&#8203;apollo/utils](https://togithub.com/apollo/utils).isnodelike package, which dropped support for node 12 ([#&#8203;2268](https://togithub.com/apollographql/federation/pull/2268))

-   Update [@&#8203;apollo/utils](https://togithub.com/apollo/utils).fetcher package, which drops support for node 12 ([#&#8203;2267](https://togithub.com/apollographql/federation/pull/2267))

-   Updated dependencies \[[`71a07f30`](https://togithub.com/apollographql/federation/commit/71a07f3006e6152bb47e258546c2af717ceb687e)]:
    -   [@&#8203;apollo/composition](https://togithub.com/apollo/composition)[@&#8203;2](https://togithub.com/2).3.3
    -   [@&#8203;apollo/query-planner](https://togithub.com/apollo/query-planner)[@&#8203;2](https://togithub.com/2).3.3
    -   [@&#8203;apollo/federation-internals](https://togithub.com/apollo/federation-internals)[@&#8203;2](https://togithub.com/2).3.3

</details>

<details>
<summary>apollographql/federation (@&#8203;apollo/subgraph)</summary>

### [`v2.3.3`](https://togithub.com/apollographql/federation/blob/HEAD/subgraph-js/CHANGELOG.md#&#8203;233)

[Compare Source](https://togithub.com/apollographql/federation/compare/@apollo/subgraph@2.3.2...@apollo/subgraph@2.3.3)

##### Patch Changes

-   Correctly attach provided subscription resolvers to the schema object ([#&#8203;2388](https://togithub.com/apollographql/federation/pull/2388))

-   Updated dependencies \[]:
    -   [@&#8203;apollo/federation-internals](https://togithub.com/apollo/federation-internals)[@&#8203;2](https://togithub.com/2).3.3

</details>

<details>
<summary>nodejs/node</summary>

### [`v18.15.0`](https://togithub.com/nodejs/node/releases/tag/v18.15.0): 2023-03-07, Version 18.15.0 &#x27;Hydrogen&#x27; (LTS), @&#8203;BethGriggs prepared by @&#8203;juanarbol

[Compare Source](https://togithub.com/nodejs/node/compare/v18.14.2...v18.15.0)

##### Notable Changes

-   \[[`63563f8a7a`](https://togithub.com/nodejs/node/commit/63563f8a7a)] - **doc,lib,src,test**: rename --test-coverage (Colin Ihrig) [#&#8203;46017](https://togithub.com/nodejs/node/pull/46017)
-   \[[`28a775b32f`](https://togithub.com/nodejs/node/commit/28a775b32f)] - **test_runner**: add initial code coverage support (Colin Ihrig) [#&#8203;46017](https://togithub.com/nodejs/node/pull/46017)
-   \[[`4d50db14b3`](https://togithub.com/nodejs/node/commit/4d50db14b3)] - **(SEMVER-MINOR)** **test_runner**: add reporters (Moshe Atlow) [#&#8203;45712](https://togithub.com/nodejs/node/pull/45712)
-   \[[`643545ab79`](https://togithub.com/nodejs/node/commit/643545ab79)] - **(SEMVER-MINOR)** **fs**: add statfs() functions (Colin Ihrig) [#&#8203;46358](https://togithub.com/nodejs/node/pull/46358)
-   \[[`110ead9abb`](https://togithub.com/nodejs/node/commit/110ead9abb)] - **(SEMVER-MINOR)** **vm**: expose cachedDataRejected for vm.compileFunction (Anna Henningsen) [#&#8203;46320](https://togithub.com/nodejs/node/pull/46320)
-   \[[`02632b42cf`](https://togithub.com/nodejs/node/commit/02632b42cf)] - **(SEMVER-MINOR)** **v8**: support gc profile (theanarkh) [#&#8203;46255](https://togithub.com/nodejs/node/pull/46255)
-   \[[`f09b838408`](https://togithub.com/nodejs/node/commit/f09b838408)] - **(SEMVER-MINOR)** **src,lib**: add constrainedMemory API for process (theanarkh) [#&#8203;46218](https://togithub.com/nodejs/node/pull/46218)
-   \[[`cb5bb12422`](https://togithub.com/nodejs/node/commit/cb5bb12422)] - **(SEMVER-MINOR)** **buffer**: add isAscii method (Yagiz Nizipli) [#&#8203;46046](https://togithub.com/nodejs/node/pull/46046)

##### Commits

-   \[[`6f91c8e2ae`](https://togithub.com/nodejs/node/commit/6f91c8e2ae)] - **benchmark**: add trailing commas (Antoine du Hamel) [#&#8203;46370](https://togithub.com/nodejs/node/pull/46370)
-   \[[`d0b9be21eb`](https://togithub.com/nodejs/node/commit/d0b9be21eb)] - **benchmark**: remove buffer benchmarks redundancy (Brian White) [#&#8203;45735](https://togithub.com/nodejs/node/pull/45735)
-   \[[`6468f30d0d`](https://togithub.com/nodejs/node/commit/6468f30d0d)] - **benchmark**: introduce benchmark combination filtering (Brian White) [#&#8203;45735](https://togithub.com/nodejs/node/pull/45735)
-   \[[`cb5bb12422`](https://togithub.com/nodejs/node/commit/cb5bb12422)] - **(SEMVER-MINOR)** **buffer**: add isAscii method (Yagiz Nizipli) [#&#8203;46046](https://togithub.com/nodejs/node/pull/46046)
-   \[[`ec61bb04c0`](https://togithub.com/nodejs/node/commit/ec61bb04c0)] - **build**: export more OpenSSL symbols on Windows (Mohamed Akram) [#&#8203;45486](https://togithub.com/nodejs/node/pull/45486)
-   \[[`7bae4333ce`](https://togithub.com/nodejs/node/commit/7bae4333ce)] - **build**: fix MSVC 2022 Release compilation (Vladimir Morozov (REDMOND)) [#&#8203;46228](https://togithub.com/nodejs/node/pull/46228)
-   \[[`0f5f2d4470`](https://togithub.com/nodejs/node/commit/0f5f2d4470)] - **crypto**: include `hmac.h` in `crypto_util.h` (Adam Langley) [#&#8203;46279](https://togithub.com/nodejs/node/pull/46279)
-   \[[`91ece4161b`](https://togithub.com/nodejs/node/commit/91ece4161b)] - **crypto**: avoid hang when no algorithm available (Richard Lau) [#&#8203;46237](https://togithub.com/nodejs/node/pull/46237)
-   \[[`492fc95bdf`](https://togithub.com/nodejs/node/commit/492fc95bdf)] - **deps**: V8: cherry-pick [`90be99f`](https://togithub.com/nodejs/node/commit/90be99fab31c) (Michaël Zasso) [#&#8203;46646](https://togithub.com/nodejs/node/pull/46646)
-   \[[`732c77e3d9`](https://togithub.com/nodejs/node/commit/732c77e3d9)] - **deps**: update acorn to 8.8.2 (Node.js GitHub Bot) [#&#8203;46363](https://togithub.com/nodejs/node/pull/46363)
-   \[[`8582f99ffb`](https://togithub.com/nodejs/node/commit/8582f99ffb)] - **deps**: update to uvwasi 0.0.15 (Colin Ihrig) [#&#8203;46253](https://togithub.com/nodejs/node/pull/46253)
-   \[[`5453cd9940`](https://togithub.com/nodejs/node/commit/5453cd9940)] - **deps**: V8: cherry-pick [`bf0bd48`](https://togithub.com/nodejs/node/commit/bf0bd4868dde) (Michaël Zasso) [#&#8203;45908](https://togithub.com/nodejs/node/pull/45908)
-   \[[`3ea53c5dc8`](https://togithub.com/nodejs/node/commit/3ea53c5dc8)] - **deps**: V8: cherry-pick [`c875e86`](https://togithub.com/nodejs/node/commit/c875e86df1d7) (sepehrst) [#&#8203;46501](https://togithub.com/nodejs/node/pull/46501)
-   \[[`c04808de4b`](https://togithub.com/nodejs/node/commit/c04808de4b)] - **doc**: correct the `sed` command for macOS in release process docs (Juan José) [#&#8203;46397](https://togithub.com/nodejs/node/pull/46397)
-   \[[`8113220690`](https://togithub.com/nodejs/node/commit/8113220690)] - **doc**: pass string to `textEncoder.encode` as input (Deokjin Kim) [#&#8203;46421](https://togithub.com/nodejs/node/pull/46421)
-   \[[`129dccf5d2`](https://togithub.com/nodejs/node/commit/129dccf5d2)] - **doc**: add tip for session.post function (theanarkh) [#&#8203;46354](https://togithub.com/nodejs/node/pull/46354)
-   \[[`919e581732`](https://togithub.com/nodejs/node/commit/919e581732)] - **doc**: add documentation for socket.destroySoon() (Luigi Pinca) [#&#8203;46337](https://togithub.com/nodejs/node/pull/46337)
-   \[[`fc15ac95a5`](https://togithub.com/nodejs/node/commit/fc15ac95a5)] - **doc**: fix commit message using test instead of deps (Tony Gorez) [#&#8203;46313](https://togithub.com/nodejs/node/pull/46313)
-   \[[`d153a93200`](https://togithub.com/nodejs/node/commit/d153a93200)] - **doc**: add v8 fast api contribution guidelines (Yagiz Nizipli) [#&#8203;46199](https://togithub.com/nodejs/node/pull/46199)
-   \[[`dbf082d082`](https://togithub.com/nodejs/node/commit/dbf082d082)] - **doc**: fix small typo error (0xflotus) [#&#8203;46186](https://togithub.com/nodejs/node/pull/46186)
-   \[[`94421b4cfe`](https://togithub.com/nodejs/node/commit/94421b4cfe)] - **doc**: mark some parameters as optional in webstreams (Deokjin Kim) [#&#8203;46269](https://togithub.com/nodejs/node/pull/46269)
-   \[[`5adb743511`](https://togithub.com/nodejs/node/commit/5adb743511)] - **doc**: update output of example in `events.getEventListeners` (Deokjin Kim) [#&#8203;46268](https://togithub.com/nodejs/node/pull/46268)
-   \[[`63563f8a7a`](https://togithub.com/nodejs/node/commit/63563f8a7a)] - **doc,lib,src,test**: rename --test-coverage (Colin Ihrig) [#&#8203;46017](https://togithub.com/nodejs/node/pull/46017)
-   \[[`4e88c7c813`](https://togithub.com/nodejs/node/commit/4e88c7c813)] - **esm**: delete preload mock test (Geoffrey Booth) [#&#8203;46402](https://togithub.com/nodejs/node/pull/46402)
-   \[[`643545ab79`](https://togithub.com/nodejs/node/commit/643545ab79)] - **(SEMVER-MINOR)** **fs**: add statfs() functions (Colin Ihrig) [#&#8203;46358](https://togithub.com/nodejs/node/pull/46358)
-   \[[`5019b5473f`](https://togithub.com/nodejs/node/commit/5019b5473f)] - **http**: res.setHeaders first implementation (Marco Ippolito) [#&#8203;46109](https://togithub.com/nodejs/node/pull/46109)
-   \[[`76622c4c60`](https://togithub.com/nodejs/node/commit/76622c4c60)] - **inspector**: allow opening inspector when `NODE_V8_COVERAGE` is set (Moshe Atlow) [#&#8203;46113](https://togithub.com/nodejs/node/pull/46113)
-   \[[`92f0747e03`](https://togithub.com/nodejs/node/commit/92f0747e03)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#&#8203;46399](https://togithub.com/nodejs/node/pull/46399)
-   \[[`795251bc6f`](https://togithub.com/nodejs/node/commit/795251bc6f)] - **meta**: update AUTHORS (Node.js GitHub Bot) [#&#8203;46303](https://togithub.com/nodejs/node/pull/46303)
-   \[[`8865424c31`](https://togithub.com/nodejs/node/commit/8865424c31)] - **meta**: add .mailmap entry (Rich Trott) [#&#8203;46303](https://togithub.com/nodejs/node/pull/46303)
-   \[[`5ed679407b`](https://togithub.com/nodejs/node/commit/5ed679407b)] - **meta**: move evanlucas to emeritus (Evan Lucas) [#&#8203;46274](https://togithub.com/nodejs/node/pull/46274)
-   \[[`403df210ac`](https://togithub.com/nodejs/node/commit/403df210ac)] - **module**: move test reporter loading (Geoffrey Booth) [#&#8203;45923](https://togithub.com/nodejs/node/pull/45923)
-   \[[`2f7319e387`](https://togithub.com/nodejs/node/commit/2f7319e387)] - **readline**: fix detection of carriage return (Antoine du Hamel) [#&#8203;46306](https://togithub.com/nodejs/node/pull/46306)
-   \[[`73a8f46c4d`](https://togithub.com/nodejs/node/commit/73a8f46c4d)] - ***Revert*** "**src**: let http2 streams end after session close" (Santiago Gimeno) [#&#8203;46721](https://togithub.com/nodejs/node/pull/46721)
-   \[[`30d783f91a`](https://togithub.com/nodejs/node/commit/30d783f91a)] - **src**: stop tracing agent before shutting down libuv (Santiago Gimeno) [#&#8203;46380](https://togithub.com/nodejs/node/pull/46380)
-   \[[`1508d90fda`](https://togithub.com/nodejs/node/commit/1508d90fda)] - **src**: get rid of fp arithmetic in ParseIPv4Host (Tobias Nießen) [#&#8203;46326](https://togithub.com/nodejs/node/pull/46326)
-   \[[`bdb793a082`](https://togithub.com/nodejs/node/commit/bdb793a082)] - **src**: use UNREACHABLE instead of CHECK(falsy) (Tobias Nießen) [#&#8203;46317](https://togithub.com/nodejs/node/pull/46317)
-   \[[`116a33649b`](https://togithub.com/nodejs/node/commit/116a33649b)] - **src**: add support for ETW stack walking (José Dapena Paz) [#&#8203;46203](https://togithub.com/nodejs/node/pull/46203)
-   \[[`b06298c98e`](https://togithub.com/nodejs/node/commit/b06298c98e)] - **src**: refactor EndsInANumber in node_url.cc and adds IsIPv4NumberValid (Miguel Teixeira) [#&#8203;46227](https://togithub.com/nodejs/node/pull/46227)
-   \[[`26f41b041c`](https://togithub.com/nodejs/node/commit/26f41b041c)] - **src**: fix c++ exception on bad command line arg (Ben Noordhuis) [#&#8203;46290](https://togithub.com/nodejs/node/pull/46290)
-   \[[`14da89f41a`](https://togithub.com/nodejs/node/commit/14da89f41a)] - **src**: remove unreachable UNREACHABLE (Tobias Nießen) [#&#8203;46281](https://togithub.com/nodejs/node/pull/46281)
-   \[[`18c4dd004b`](https://togithub.com/nodejs/node/commit/18c4dd004b)] - **src**: replace custom ASCII validation with simdutf one (Anna Henningsen) [#&#8203;46271](https://togithub.com/nodejs/node/pull/46271)
-   \[[`cde375510f`](https://togithub.com/nodejs/node/commit/cde375510f)] - **src**: replace unreachable code with static_assert (Tobias Nießen) [#&#8203;46250](https://togithub.com/nodejs/node/pull/46250)
-   \[[`f389b2f3fc`](https://togithub.com/nodejs/node/commit/f389b2f3fc)] - **src**: use explicit C++17 fallthrough (Tobias Nießen) [#&#8203;46251](https://togithub.com/nodejs/node/pull/46251)
-   \[[`8adaa1333c`](https://togithub.com/nodejs/node/commit/8adaa1333c)] - **src**: use CreateEnvironment instead of inlining its code where possible (Anna Henningsen) [#&#8203;45886](https://togithub.com/nodejs/node/pull/45886)
-   \[[`f09b838408`](https://togithub.com/nodejs/node/commit/f09b838408)] - **(SEMVER-MINOR)** **src,lib**: add constrainedMemory API for process (theanarkh) [#&#8203;46218](https://togithub.com/nodejs/node/pull/46218)
-   \[[`63e92eae63`](https://togithub.com/nodejs/node/commit/63e92eae63)] - **stream**: remove brandchecks from stream duplexify (Debadree Chatterjee) [#&#8203;46315](https://togithub.com/nodejs/node/pull/46315)
-   \[[`3acfe9bf92`](https://togithub.com/nodejs/node/commit/3acfe9bf92)] - **stream**: fix readable stream as async iterator function (Erick Wendel) [#&#8203;46147](https://togithub.com/nodejs/node/pull/46147)
-   \[[`de64315ccb`](https://togithub.com/nodejs/node/commit/de64315ccb)] - **test**: fix WPT title when no META title is present (Filip Skokan) [#&#8203;46804](https://togithub.com/nodejs/node/pull/46804)
-   \[[`162e3400ff`](https://togithub.com/nodejs/node/commit/162e3400ff)] - **test**: fix default WPT titles (Filip Skokan) [#&#8203;46778](https://togithub.com/nodejs/node/pull/46778)
-   \[[`5f422c4d70`](https://togithub.com/nodejs/node/commit/5f422c4d70)] - **test**: add WPTRunner support for variants and generating WPT reports (Filip Skokan) [#&#8203;46498](https://togithub.com/nodejs/node/pull/46498)
-   \[[`4f5aff2557`](https://togithub.com/nodejs/node/commit/4f5aff2557)] - **test**: fix tap parser fails if a test logs a number (Pulkit Gupta) [#&#8203;46056](https://togithub.com/nodejs/node/pull/46056)
-   \[[`32b020cf84`](https://togithub.com/nodejs/node/commit/32b020cf84)] - **test**: fix tap escaping with and without --test (Pulkit Gupta) [#&#8203;46311](https://togithub.com/nodejs/node/pull/46311)
-   \[[`f2bba1bcdb`](https://togithub.com/nodejs/node/commit/f2bba1bcdb)] - **test**: add trailing commas in `test/node-api` (Antoine du Hamel) [#&#8203;46384](https://togithub.com/nodejs/node/pull/46384)
-   \[[`f2ebe66fda`](https://togithub.com/nodejs/node/commit/f2ebe66fda)] - **test**: add trailing commas in `test/message` (Antoine du Hamel) [#&#8203;46372](https://togithub.com/nodejs/node/pull/46372)
-   \[[`ed564a9985`](https://togithub.com/nodejs/node/commit/ed564a9985)] - **test**: add trailing commas in `test/pseudo-tty` (Antoine du Hamel) [#&#8203;46371](https://togithub.com/nodejs/node/pull/46371)
-   \[[`e4437dd409`](https://togithub.com/nodejs/node/commit/e4437dd409)] - **test**: set common.bits to 64 for loong64 (Shi Pujin) [#&#8203;45383](https://togithub.com/nodejs/node/pull/45383)
-   \[[`9d40aef736`](https://togithub.com/nodejs/node/commit/9d40aef736)] - **test**: s390x zlib test case fixes (Adam Majer) [#&#8203;46367](https://togithub.com/nodejs/node/pull/46367)
-   \[[`ed3fb52716`](https://togithub.com/nodejs/node/commit/ed3fb52716)] - **test**: fix logInTimeout is not function (theanarkh) [#&#8203;46348](https://togithub.com/nodejs/node/pull/46348)
-   \[[`d05b0771be`](https://togithub.com/nodejs/node/commit/d05b0771be)] - **test**: avoid trying to call sysctl directly (Adam Majer) [#&#8203;46366](https://togithub.com/nodejs/node/pull/46366)
-   \[[`041aac3bbd`](https://togithub.com/nodejs/node/commit/041aac3bbd)] - **test**: avoid left behind child processes (Richard Lau) [#&#8203;46276](https://togithub.com/nodejs/node/pull/46276)
-   \[[`837ddcb322`](https://togithub.com/nodejs/node/commit/837ddcb322)] - **test**: add failing test for readline with carriage return (Alec Mev) [#&#8203;46075](https://togithub.com/nodejs/node/pull/46075)
-   \[[`75b8db41c6`](https://togithub.com/nodejs/node/commit/75b8db41c6)] - **test**: reduce `fs-write-optional-params` flakiness (LiviaMedeiros) [#&#8203;46238](https://togithub.com/nodejs/node/pull/46238)
-   \[[`c0d3fdaf63`](https://togithub.com/nodejs/node/commit/c0d3fdaf63)] - **test,crypto**: add CFRG curve vectors to wrap/unwrap tests (Filip Skokan) [#&#8203;46406](https://togithub.com/nodejs/node/pull/46406)
-   \[[`f328f7b15e`](https://togithub.com/nodejs/node/commit/f328f7b15e)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#&#8203;46267](https://togithub.com/nodejs/node/pull/46267)
-   \[[`1ef3c53e24`](https://togithub.com/nodejs/node/commit/1ef3c53e24)] - **test_runner**: better handle async bootstrap errors (Colin Ihrig) [#&#8203;46720](https://togithub.com/nodejs/node/pull/46720)
-   \[[`0a690efb76`](https://togithub.com/nodejs/node/commit/0a690efb76)] - **test_runner**: add `describe.only` and `it.only` shorthands (Richie McColl) [#&#8203;46604](https://togithub.com/nodejs/node/pull/46604)
-   \[[`28a1317efe`](https://togithub.com/nodejs/node/commit/28a1317efe)] - **test_runner**: bootstrap reporters before running tests (Moshe Atlow) [#&#8203;46737](https://togithub.com/nodejs/node/pull/46737)
-   \[[`cd3aaa8fac`](https://togithub.com/nodejs/node/commit/cd3aaa8fac)] - **test_runner**: emit test-only diagnostic warning (Richie McColl) [#&#8203;46540](https://togithub.com/nodejs/node/pull/46540)
-   \[[`c19fa45a65`](https://togithub.com/nodejs/node/commit/c19fa45a65)] - **test_runner**: centralize CLI option handling (Colin Ihrig) [#&#8203;46707](https://togithub.com/nodejs/node/pull/46707)
-   \[[`0898145e37`](https://togithub.com/nodejs/node/commit/0898145e37)] - **test_runner**: display skipped tests in spec reporter output (Richie McColl) [#&#8203;46651](https://togithub.com/nodejs/node/pull/46651)
-   \[[`894d7117fa`](https://togithub.com/nodejs/node/commit/894d7117fa)] - **test_runner**: parse non-ascii character correctly (Mert Can Altın) [#&#8203;45736](https://togithub.com/nodejs/node/pull/45736)
-   \[[`5b3c606626`](https://togithub.com/nodejs/node/commit/5b3c606626)] - **test_runner**: flatten TAP output when running using `--test` (Moshe Atlow) [#&#8203;46440](https://togithub.com/nodejs/node/pull/46440)
-   \[[`391ff0dba4`](https://togithub.com/nodejs/node/commit/391ff0dba4)] - **test_runner**: allow nesting test within describe (Moshe Atlow) [#&#8203;46544](https://togithub.com/nodejs/node/pull/46544)
-   \[[`ba784e87b4`](https://togithub.com/nodejs/node/commit/ba784e87b4)] - **test_runner**: fix missing test diagnostics (Moshe Atlow) [#&#8203;46450](https://togithub.com/nodejs/node/pull/46450)
-   \[[`c5f16fb5fb`](https://togithub.com/nodejs/node/commit/c5f16fb5fb)] - **test_runner**: top-level diagnostics not ommited when running with --test (Pulkit Gupta) [#&#8203;46441](https://togithub.com/nodejs/node/pull/46441)
-   \[[`28a775b32f`](https://togithub.com/nodejs/node/commit/28a775b32f)] - **test_runner**: add initial code coverage support (Colin Ihrig) [#&#8203;46017](https://togithub.com/nodejs/node/pull/46017)
-   \[[`0d999e373a`](https://togithub.com/nodejs/node/commit/0d999e373a)] - **test_runner**: make built in reporters internal (Colin Ihrig) [#&#8203;46092](https://togithub.com/nodejs/node/pull/46092)
-   \[[`79f4b426fe`](https://togithub.com/nodejs/node/commit/79f4b426fe)] - **test_runner**: report `file` in test runner events (Moshe Atlow) [#&#8203;46030](https://togithub.com/nodejs/node/pull/46030)
-   \[[`4d50db14b3`](https://togithub.com/nodejs/node/commit/4d50db14b3)] - **(SEMVER-MINOR)** **test_runner**: add reporters (Moshe Atlow) [#&#8203;45712](https://togithub.com/nodejs/node/pull/45712)
-   \[[`5fdf374c74`](https://togithub.com/nodejs/node/commit/5fdf374c74)] - **test_runner**: avoid swallowing of asynchronously thrown errors (MURAKAMI Masahiko) [#&#8203;45264](https://togithub.com/nodejs/node/pull/45264)
-   \[[`23b875806c`](https://togithub.com/nodejs/node/commit/23b875806c)] - **test_runner**: update comment to comply with eslint no-fallthrough rule (Antoine du Hamel) [#&#8203;46258](https://togithub.com/nodejs/node/pull/46258)
-   \[[`00c5495aa3`](https://togithub.com/nodejs/node/commit/00c5495aa3)] - **tools**: update eslint to 8.33.0 (Node.js GitHub Bot) [#&#8203;46400](https://togithub.com/nodejs/node/pull/46400)
-   \[[`37a6ce1120`](https://togithub.com/nodejs/node/commit/37a6ce1120)] - **tools**: update doc to unist-util-select@4.0.3 unist-util-visit@4.1.2 (Node.js GitHub Bot) [#&#8203;46364](https://togithub.com/nodejs/node/pull/46364)
-   \[[`1eaafc7db4`](https://togithub.com/nodejs/node/commit/1eaafc7db4)] - **tools**: update lint-md-dependencies to rollup@3.12.0 (Node.js GitHub Bot) [#&#8203;46398](https://togithub.com/nodejs/node/pull/46398)
-   \[[`a97774603b`](https://togithub.com/nodejs/node/commit/a97774603b)] - **tools**: require more trailing commas (Antoine du Hamel) [#&#8203;46346](https://togithub.com/nodejs/node/pull/46346)
-   \[[`03e244a59b`](https://togithub.com/nodejs/node/commit/03e244a59b)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#&#8203;46302](https://togithub.com/nodejs/node/pull/46302)
-   \[[`60d714e0c3`](https://togithub.com/nodejs/node/commit/60d714e0c3)] - **tools**: allow icutrim.py to run on python2 (Michael Dawson) [#&#8203;46263](https://togithub.com/nodejs/node/pull/46263)
-   \[[`b7950f50de`](https://togithub.com/nodejs/node/commit/b7950f50de)] - **tools**: update eslint to 8.32.0 (Node.js GitHub Bot) [#&#8203;46258](https://togithub.com/nodejs/node/pull/46258)
-   \[[`08bafc84f6`](https://togithub.com/nodejs/node/commit/08bafc84f6)] - **url**: refactor to use more primordials (Antoine du Hamel) [#&#8203;45966](https://togithub.com/nodejs/node/pull/45966)
-   \[[`02632b42cf`](https://togithub.com/nodejs/node/commit/02632b42cf)] - **(SEMVER-MINOR)** **v8**: support gc profile (theanarkh) [#&#8203;46255](https://togithub.com/nodejs/node/pull/46255)
-   \[[`110ead9abb`](https://togithub.com/nodejs/node/commit/110ead9abb)] - **(SEMVER-MINOR)** **vm**: expose cachedDataRejected for vm.compileFunction (Anna Henningsen) [#&#8203;46320](https://togithub.com/nodejs/node/pull/46320)

</details>

<details>
<summary>npm/cli</summary>

### [`v9.6.1`](https://togithub.com/npm/cli/blob/HEAD/CHANGELOG.md#&#8203;961-httpsgithubcomnpmclicomparev960v961-2023-03-08)

[Compare Source](https://togithub.com/npm/cli/compare/v9.6.0...v9.6.1)

##### Bug Fixes

-   [`e455e3f`](https://togithub.com/npm/cli/commit/e455e3f6a5d0aa2c53cc24064557ec592706ca2c) [#&#8203;6211](https://togithub.com/npm/cli/pull/6211) send options with grant/revoke requests ([#&#8203;6211](https://togithub.com/npm/cli/issues/6211)) ([@&#8203;DavidTanner](https://togithub.com/DavidTanner))
-   [`e4de224`](https://togithub.com/npm/cli/commit/e4de22480a21591f0c9ba755c8464a9e1f0413c9) [#&#8203;6220](https://togithub.com/npm/cli/pull/6220) clean uri from audit error ([#&#8203;6220](https://togithub.com/npm/cli/issues/6220)) ([@&#8203;wraithgar](https://togithub.com/wraithgar))

##### Dependencies

-   [`cb45b21`](https://togithub.com/npm/cli/commit/cb45b216c831a2b0c08f97d57ad4d34b318f3d69) [#&#8203;6231](https://togithub.com/npm/cli/pull/6231) npm update
-   [`1f60a7e`](https://togithub.com/npm/cli/commit/1f60a7ee02953632bf5fb4e64e66755d7bb1bdd1) [#&#8203;6231](https://togithub.com/npm/cli/pull/6231) `minipass@4.2.4`
-   [Workspace](https://togithub.com/npm/cli/releases/tag/arborist-v6.2.5): `@npmcli/arborist@6.2.5`
-   [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmdiff-v5.0.13): `libnpmdiff@5.0.13`
-   [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmexec-v5.0.13): `libnpmexec@5.0.13`
-   [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmfund-v4.0.13): `libnpmfund@4.0.13`
-   [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmpack-v5.0.13): `libnpmpack@5.0.13`
-   [Workspace](https://togithub.com/npm/cli/releases/tag/libnpmpublish-v7.1.1): `libnpmpublish@7.1.1`

</details>

<details>
<summary>isaacs/rimraf</summary>

### [`v4.4.0`](https://togithub.com/isaacs/rimraf/compare/v4.3.1...v4.4.0)

[Compare Source](https://togithub.com/isaacs/rimraf/compare/v4.3.1...v4.4.0)

</details>

<details>
<summary>rollup/rollup</summary>

### [`v3.19.0`](https://togithub.com/rollup/rollup/blob/HEAD/CHANGELOG.md#&#8203;3190)

[Compare Source](https://togithub.com/rollup/rollup/compare/v3.18.0...v3.19.0)

*2023-03-09*

##### Features

-   Make reassignment tracking of call parameters more specific to no lose information when an object is passed to a function ([#&#8203;4892](https://togithub.com/rollup/rollup/issues/4892))

##### Pull Requests

-   [#&#8203;4890](https://togithub.com/rollup/rollup/pull/4890): Fix `npm run dev` ([@&#8203;lukastaegert](https://togithub.com/lukastaegert))
-   [#&#8203;4892](https://togithub.com/rollup/rollup/pull/4892): Only selectively deoptimize call parameters ([@&#8203;lukastaegert](https://togithub.com/lukastaegert))
-   [#&#8203;4897](https://togithub.com/rollup/rollup/pull/4897): Pre-render mermaid graphs on website ([@&#8203;lukastaegert](https://togithub.com/lukastaegert))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/apollographql/apollo-server).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4xNTcuMSIsInVwZGF0ZWRJblZlciI6IjM0LjE1OS4yIn0=-->


netlify[bot]: ### <span aria-hidden="true">👷</span> Deploy Preview for *apollo-server-docs* processing.


|  Name | Link |
|:-:|------------------------|
|<span aria-hidden="true">🔨</span> Latest commit | c392743229870cbc11b944527461eef3831e9d83 |
|<span aria-hidden="true">🔍</span> Latest deploy log | https://app.netlify.com/sites/apollo-server-docs/deploys/64077c7fe57f730008f22166 |
codesandbox-ci[bot]: This pull request is automatically built and testable in [CodeSandbox](https://codesandbox.io).

  To see build info of the built libraries, click [here](https://ci.codesandbox.io/status/apollographql/apollo-server/pr/7428/builds/354239) or the icon next to each commit SHA.

Latest deployment of this branch, based on commit c392743229870cbc11b944527461eef3831e9d83:

|Sandbox| Source |
|--|--|
|[Apollo Server Typescript](https://codesandbox.io/s/apollo-server-typescript-5oyeke)| Configuration |
|[Apollo Server](https://codesandbox.io/s/apollo-server-p6p043)| Configuration |


Patch:
diff --git a/.changeset/angry-weeks-flash.md b/.changeset/angry-weeks-flash.md
new file mode 100644
index 000000000..aac5c39a2
--- /dev/null
+++ b/.changeset/angry-weeks-flash.md
@@ -0,0 +1,39 @@
+---
+'@apollo/server': minor
+---
+
+In the Apollo Server Landing Page Local config, you can now automatically turn off autopolling on your endpoints as well as pass headers used to introspect your schema, embed an operation from a collection, and configure whether the endpoint input box is editable. In the Apollo Server Landing Page Prod config, you can embed an operation from a collection & we fixed a bug introduced in release 4.4.0
+
+Example of all new config options: 
+
+```
+const server = new ApolloServer({
+  typeDefs,
+  resolvers,
+  plugins: [
+    process.env.NODE_ENV === 'production'
+      ? ApolloServerPluginLandingPageProductionDefault({
+          graphRef: 'my-graph-id@my-graph-variant',
+          collectionId: 'abcdef',
+          operationId: '12345'
+          embed: true,
+          footer: false,
+        })
+      : ApolloServerPluginLandingPageLocalDefault({
+          collectionId: 'abcdef',
+          operationId: '12345'
+          embed: {
+            initialState: {
+              pollForSchemaUpdates: false,
+              sharedHeaders: {
+                "HeaderNeededForIntrospection": "ValueForIntrospection"
+              },
+            },
+            endpointIsEditable: true,
+          },
+          footer: false,
+        }),
+  ],
+});
+
+```
diff --git a/.changeset/polite-poets-teach.md b/.changeset/polite-poets-teach.md
new file mode 100644
index 000000000..1f66f76b7
--- /dev/null
+++ b/.changeset/polite-poets-teach.md
@@ -0,0 +1,5 @@
+---
+'@apollo/server': minor
+---
+
+We now send your @apollo/server version to the embedded Explorer & Sandbox used in the landing pages for analytics.
diff --git a/package-lock.json b/package-lock.json
index d5ad69eb9..7cfb13d1b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,9 +11,9 @@
       ],
       "devDependencies": {
         "@apollo/client": "3.7.10",
-        "@apollo/gateway": "2.3.2",
+        "@apollo/gateway": "2.3.3",
         "@apollo/server-plugin-landing-page-graphql-playground": "4.0.0",
-        "@apollo/subgraph": "2.3.2",
+        "@apollo/subgraph": "2.3.3",
         "@apollo/utils.createhash": "2.0.0",
         "@changesets/changelog-github": "0.4.8",
         "@changesets/cli": "2.26.0",
@@ -70,8 +70,8 @@
         "prettier": "2.8.4",
         "qs-middleware": "1.0.3",
         "requisition": "1.7.0",
-        "rimraf": "4.3.1",
-        "rollup": "3.18.0",
+        "rimraf": "4.4.0",
+        "rollup": "3.19.0",
         "supertest": "6.3.3",
         "test-listen": "1.1.0",
         "ts-jest": "29.0.5",
@@ -149,13 +149,13 @@
       }
     },
     "node_modules/@apollo/composition": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.3.2.tgz",
-      "integrity": "sha512-bUoGq9jJ+IfYSKY0oO/64XWIKPe13XY+eePaPIiQksKu/M0iylCI6RmNNFlLQAax2jHpILJ7+1X8LuURN6zjjA==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.3.3.tgz",
+      "integrity": "sha512-Jx1F7IvjErM1HZ7I6NFQ667O9IAAfnVqzhpom/Z++pyeot5OsMqsunAQTRj57WyX/W9eZ/DCjlEH/G7S7SEdBQ==",
       "dev": true,
       "dependencies": {
-        "@apollo/federation-internals": "2.3.2",
-        "@apollo/query-graphs": "2.3.2"
+        "@apollo/federation-internals": "2.3.3",
+        "@apollo/query-graphs": "2.3.3"
       },
       "engines": {
         "node": ">=14.15.0"
@@ -165,9 +165,9 @@
       }
     },
     "node_modules/@apollo/federation-internals": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.3.2.tgz",
-      "integrity": "sha512-XtXQag8sV75BoNlzu6ci5mn2U+QGNZdkRB8Igi5e31VqnBx4XSdvbyx6Ht1lvYru9GCYx6OqGWZqqPqAXG72/Q==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.3.3.tgz",
+      "integrity": "sha512-QzqgwQ57ZsvzExCo/dMxZL38E2cALXkn6fG93c89VPwo+4Kpo87I7DNDJgYVDSYzNosemW9ya1jGFRvwjyfQMw==",
       "dev": true,
       "dependencies": {
         "chalk": "^4.1.0",
@@ -181,20 +181,20 @@
       }
     },
     "node_modules/@apollo/gateway": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.3.2.tgz",
-      "integrity": "sha512-D7p1I6wfHA9XY0HJXyBDouaGCcd/+oUU7bhSyVg1MmREL52sZnSk/140nds5L93jHca3Gl3IB4kiQ5JUJXfA6w==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.3.3.tgz",
+      "integrity": "sha512-c/bI5D/cVfizzMZgq3d3pQ7NkeoFNMhgFjPGlybc1Cs48SpYhA/KMqLpZifZyQC2QOA1hH/GdPbaa11e49elmw==",
       "dev": true,
       "dependencies": {
-        "@apollo/composition": "2.3.2",
-        "@apollo/federation-internals": "2.3.2",
-        "@apollo/query-planner": "2.3.2",
+        "@apollo/composition": "2.3.3",
+        "@apollo/federation-internals": "2.3.3",
+        "@apollo/query-planner": "2.3.3",
         "@apollo/server-gateway-interface": "^1.1.0",
         "@apollo/usage-reporting-protobuf": "^4.0.0",
-        "@apollo/utils.createhash": "^1.1.0",
-        "@apollo/utils.fetcher": "^1.1.0",
-        "@apollo/utils.isnodelike": "^1.1.0",
-        "@apollo/utils.logger": "^1.0.0",
+        "@apollo/utils.createhash": "^2.0.0",
+        "@apollo/utils.fetcher": "^2.0.0",
+        "@apollo/utils.isnodelike": "^2.0.0",
+        "@apollo/utils.logger": "^2.0.0",
         "@josephg/resolvable": "^1.0.1",
         "@opentelemetry/api": "^1.0.1",
         "@types/node-fetch": "^2.6.2",
@@ -212,38 +212,19 @@
         "graphql": "^16.5.0"
       }
     },
-    "node_modules/@apollo/gateway/node_modules/@apollo/utils.createhash": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-1.1.0.tgz",
-      "integrity": "sha512-5fT4ZiW75515OlikWpIQzaVDws1yy9VgYSoHoJCrvI2UH6/7YNKXQjbjT5qVYu6ytch2wBxFMfFfYWMn/2bSCQ==",
-      "dev": true,
-      "dependencies": {
-        "@apollo/utils.isnodelike": "^1.1.0",
-        "sha.js": "^2.4.11"
-      },
-      "engines": {
-        "node": ">=12.13.0"
-      }
-    },
-    "node_modules/@apollo/gateway/node_modules/@apollo/utils.isnodelike": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-1.1.0.tgz",
-      "integrity": "sha512-q/Q82kBUSEcx1ED11JO1TYBY781mWluUnBD8NvhjHVsu1K1C5R9BZVUxShyK/V8XcePcRUB5fdWOcBMGwS0KOA==",
+    "node_modules/@apollo/gateway/node_modules/@apollo/utils.fetcher": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-2.0.0.tgz",
+      "integrity": "sha512-RC0twEwwBKbhk/y4B2X4YEciRG1xoKMgiPy5xQqNMd3pG78sR+ybctG/m7c/8+NaaQOS22UPUCBd6yS6WihBIg==",
       "dev": true,
       "engines": {
-        "node": ">=12.13.0"
+        "node": ">=14"
       }
     },
-    "node_modules/@apollo/gateway/node_modules/@apollo/utils.logger": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz",
-      "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==",
-      "dev": true
-    },
     "node_modules/@apollo/gateway/node_modules/lru-cache": {
-      "version": "7.16.0",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz",
-      "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==",
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
       "dev": true,
       "engines": {
         "node": ">=12"
@@ -274,15 +255,14 @@
       }
     },
     "node_modules/@apollo/query-graphs": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.3.2.tgz",
-      "integrity": "sha512-NC/+JfvSZ7i+1wOr0YRX7T156exYbPUeG6LPibENTNleJrPfCSfULlUIsqwVY87/c7bUwFXu+oK8bTdRXfxIQg==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.3.3.tgz",
+      "integrity": "sha512-yORR+BbeS7wWxU7GQsJO3oNG0mzsjDHSicJcCVC9kCuW5PqNvPwrtpTlTFrJzukbD2mq9uASO0AJff5emkhHlA==",
       "dev": true,
       "dependencies": {
-        "@apollo/federation-internals": "2.3.2",
-        "@types/uuid": "^8.3.4",
+        "@apollo/federation-internals": "2.3.3",
         "deep-equal": "^2.0.5",
-        "ts-graphviz": "^0.16.0",
+        "ts-graphviz": "^1.5.4",
         "uuid": "^9.0.0"
       },
       "engines": {
@@ -292,12 +272,6 @@
         "graphql": "^16.5.0"
       }
     },
-    "node_modules/@apollo/query-graphs/node_modules/@types/uuid": {
-      "version": "8.3.4",
-      "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
-      "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
-      "dev": true
-    },
     "node_modules/@apollo/query-graphs/node_modules/uuid": {
       "version": "9.0.0",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
@@ -308,13 +282,13 @@
       }
     },
     "node_modules/@apollo/query-planner": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.3.2.tgz",
-      "integrity": "sha512-cYkElr1GpYmn6WnfmZc3DGfQEoOa+7DC4aOd5OLcW6l7AIFa9B374R7wmHeW68voNNhr7KYCpBBa9xuZhx7GEw==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.3.3.tgz",
+      "integrity": "sha512-XB21o/USJCL+XJD4lPMwRKSa1aWk8xZcYRb9mEt6C133bn2bk488u9IOKaumBaGAt7TgEyEvm9YccIua9+w4FA==",
       "dev": true,
       "dependencies": {
-        "@apollo/federation-internals": "2.3.2",
-        "@apollo/query-graphs": "2.3.2",
+        "@apollo/federation-internals": "2.3.3",
+        "@apollo/query-graphs": "2.3.3",
         "chalk": "^4.1.0",
         "deep-equal": "^2.0.5",
         "pretty-format": "^29.0.0"
@@ -357,13 +331,13 @@
       "link": true
     },
     "node_modules/@apollo/subgraph": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.3.2.tgz",
-      "integrity": "sha512-PYSVD+tx49EVjII25Ip1QsrOCn/Bmh7KBqoqZsp/AT/8yGbqX5j9oAeRH37QcOxbl8TXBcJBDKbPO/KzUln1Dg==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.3.3.tgz",
+      "integrity": "sha512-stYoQ/pvm1TlSEU7DeW1YEk2cQ4yYIaS9tAEiPWTLzWivMwfbgVrsSGwBgME3UZ605EqHPXx4D1wVC/YfHT53Q==",
       "dev": true,
       "dependencies": {
         "@apollo/cache-control-types": "^1.0.2",
-        "@apollo/federation-internals": "2.3.2"
+        "@apollo/federation-internals": "2.3.3"
       },
       "engines": {
         "node": ">=14.15.0"
@@ -399,12 +373,6 @@
         "graphql": "14.x || 15.x || 16.x"
       }
     },
-    "node_modules/@apollo/utils.fetcher": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-1.1.1.tgz",
-      "integrity": "sha512-0vXVznO7kw5VWwxyV5wsDvYEwjDpyZ7vYQAXCseLXqBn2eWEIDViM7qRzi/Hnv4zzAQ05phdimSED99K+lg+SQ==",
-      "dev": true
-    },
     "node_modules/@apollo/utils.isnodelike": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.0.tgz",
@@ -12552,9 +12520,9 @@
       "dev": true
     },
     "node_modules/rimraf": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.3.1.tgz",
-      "integrity": "sha512-GfHJHBzFQra23IxDzIdBqhOWfbtdgS1/dCHrDy+yvhpoJY5TdwdT28oWaHWfRpKFDLd3GZnGTx6Mlt4+anbsxQ==",
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
+      "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
       "dev": true,
       "dependencies": {
         "glob": "^9.2.0"
@@ -12570,9 +12538,9 @@
       }
     },
     "node_modules/rollup": {
-      "version": "3.18.0",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.18.0.tgz",
-      "integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==",
+      "version": "3.19.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.0.tgz",
+      "integrity": "sha512-xZzJZlH9Ca6cosfdNGPwl2z7Pby8dTi9TrYLPeg6/j7aUoDOhBd706tCUFvbiBj45h/cS7z/a4gS8xd5Yg0jBw==",
       "dev": true,
       "bin": {
         "rollup": "dist/bin/rollup"
@@ -13610,10 +13578,13 @@
       }
     },
     "node_modules/ts-graphviz": {
-      "version": "0.16.0",
-      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-0.16.0.tgz",
-      "integrity": "sha512-3fTPO+G6bSQNvMh/XQQzyiahVLMMj9kqYO99ivUraNJ3Wp05HZOOVtRhi6w9hq7+laP1MKHjLBtGWqTeb1fcpg==",
+      "version": "1.5.5",
+      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.5.5.tgz",
+      "integrity": "sha512-abon0Tlcgvxcqr8x+p8QH1fTbR2R4cEXKGZfT4OJONZWah2YfqkmERb6hrr82omAc1IHwk5PlF8g4BS/ECYvwQ==",
       "dev": true,
+      "engines": {
+        "node": ">=14.16"
+      },
       "funding": {
         "type": "github",
         "url": "https://github.com/sponsors/kamiazya"
@@ -14756,19 +14727,19 @@
       }
     },
     "@apollo/composition": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.3.2.tgz",
-      "integrity": "sha512-bUoGq9jJ+IfYSKY0oO/64XWIKPe13XY+eePaPIiQksKu/M0iylCI6RmNNFlLQAax2jHpILJ7+1X8LuURN6zjjA==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/composition/-/composition-2.3.3.tgz",
+      "integrity": "sha512-Jx1F7IvjErM1HZ7I6NFQ667O9IAAfnVqzhpom/Z++pyeot5OsMqsunAQTRj57WyX/W9eZ/DCjlEH/G7S7SEdBQ==",
       "dev": true,
       "requires": {
-        "@apollo/federation-internals": "2.3.2",
-        "@apollo/query-graphs": "2.3.2"
+        "@apollo/federation-internals": "2.3.3",
+        "@apollo/query-graphs": "2.3.3"
       }
     },
     "@apollo/federation-internals": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.3.2.tgz",
-      "integrity": "sha512-XtXQag8sV75BoNlzu6ci5mn2U+QGNZdkRB8Igi5e31VqnBx4XSdvbyx6Ht1lvYru9GCYx6OqGWZqqPqAXG72/Q==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/federation-internals/-/federation-internals-2.3.3.tgz",
+      "integrity": "sha512-QzqgwQ57ZsvzExCo/dMxZL38E2cALXkn6fG93c89VPwo+4Kpo87I7DNDJgYVDSYzNosemW9ya1jGFRvwjyfQMw==",
       "dev": true,
       "requires": {
         "chalk": "^4.1.0",
@@ -14776,20 +14747,20 @@
       }
     },
     "@apollo/gateway": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.3.2.tgz",
-      "integrity": "sha512-D7p1I6wfHA9XY0HJXyBDouaGCcd/+oUU7bhSyVg1MmREL52sZnSk/140nds5L93jHca3Gl3IB4kiQ5JUJXfA6w==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/gateway/-/gateway-2.3.3.tgz",
+      "integrity": "sha512-c/bI5D/cVfizzMZgq3d3pQ7NkeoFNMhgFjPGlybc1Cs48SpYhA/KMqLpZifZyQC2QOA1hH/GdPbaa11e49elmw==",
       "dev": true,
       "requires": {
-        "@apollo/composition": "2.3.2",
-        "@apollo/federation-internals": "2.3.2",
-        "@apollo/query-planner": "2.3.2",
+        "@apollo/composition": "2.3.3",
+        "@apollo/federation-internals": "2.3.3",
+        "@apollo/query-planner": "2.3.3",
         "@apollo/server-gateway-interface": "^1.1.0",
         "@apollo/usage-reporting-protobuf": "^4.0.0",
-        "@apollo/utils.createhash": "^1.1.0",
-        "@apollo/utils.fetcher": "^1.1.0",
-        "@apollo/utils.isnodelike": "^1.1.0",
-        "@apollo/utils.logger": "^1.0.0",
+        "@apollo/utils.createhash": "^2.0.0",
+        "@apollo/utils.fetcher": "^2.0.0",
+        "@apollo/utils.isnodelike": "^2.0.0",
+        "@apollo/utils.logger": "^2.0.0",
         "@josephg/resolvable": "^1.0.1",
         "@opentelemetry/api": "^1.0.1",
         "@types/node-fetch": "^2.6.2",
@@ -14801,32 +14772,16 @@
         "node-fetch": "^2.6.7"
       },
       "dependencies": {
-        "@apollo/utils.createhash": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-1.1.0.tgz",
-          "integrity": "sha512-5fT4ZiW75515OlikWpIQzaVDws1yy9VgYSoHoJCrvI2UH6/7YNKXQjbjT5qVYu6ytch2wBxFMfFfYWMn/2bSCQ==",
-          "dev": true,
-          "requires": {
-            "@apollo/utils.isnodelike": "^1.1.0",
-            "sha.js": "^2.4.11"
-          }
-        },
-        "@apollo/utils.isnodelike": {
-          "version": "1.1.0",
-          "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-1.1.0.tgz",
-          "integrity": "sha512-q/Q82kBUSEcx1ED11JO1TYBY781mWluUnBD8NvhjHVsu1K1C5R9BZVUxShyK/V8XcePcRUB5fdWOcBMGwS0KOA==",
-          "dev": true
-        },
-        "@apollo/utils.logger": {
-          "version": "1.0.1",
-          "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz",
-          "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==",
+        "@apollo/utils.fetcher": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-2.0.0.tgz",
+          "integrity": "sha512-RC0twEwwBKbhk/y4B2X4YEciRG1xoKMgiPy5xQqNMd3pG78sR+ybctG/m7c/8+NaaQOS22UPUCBd6yS6WihBIg==",
           "dev": true
         },
         "lru-cache": {
-          "version": "7.16.0",
-          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.0.tgz",
-          "integrity": "sha512-VJBdeMa9Bz27NNlx+DI/YXGQtXdjUU+9gdfN1rYfra7vtTjhodl5tVNmR42bo+ORHuDqDT+lGAUAb+lzvY42Bw==",
+          "version": "7.18.3",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+          "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
           "dev": true
         }
       }
@@ -14851,24 +14806,17 @@
       }
     },
     "@apollo/query-graphs": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.3.2.tgz",
-      "integrity": "sha512-NC/+JfvSZ7i+1wOr0YRX7T156exYbPUeG6LPibENTNleJrPfCSfULlUIsqwVY87/c7bUwFXu+oK8bTdRXfxIQg==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-graphs/-/query-graphs-2.3.3.tgz",
+      "integrity": "sha512-yORR+BbeS7wWxU7GQsJO3oNG0mzsjDHSicJcCVC9kCuW5PqNvPwrtpTlTFrJzukbD2mq9uASO0AJff5emkhHlA==",
       "dev": true,
       "requires": {
-        "@apollo/federation-internals": "2.3.2",
-        "@types/uuid": "^8.3.4",
+        "@apollo/federation-internals": "2.3.3",
         "deep-equal": "^2.0.5",
-        "ts-graphviz": "^0.16.0",
+        "ts-graphviz": "^1.5.4",
         "uuid": "^9.0.0"
       },
       "dependencies": {
-        "@types/uuid": {
-          "version": "8.3.4",
-          "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz",
-          "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==",
-          "dev": true
-        },
         "uuid": {
           "version": "9.0.0",
           "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz",
@@ -14878,13 +14826,13 @@
       }
     },
     "@apollo/query-planner": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.3.2.tgz",
-      "integrity": "sha512-cYkElr1GpYmn6WnfmZc3DGfQEoOa+7DC4aOd5OLcW6l7AIFa9B374R7wmHeW68voNNhr7KYCpBBa9xuZhx7GEw==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/query-planner/-/query-planner-2.3.3.tgz",
+      "integrity": "sha512-XB21o/USJCL+XJD4lPMwRKSa1aWk8xZcYRb9mEt6C133bn2bk488u9IOKaumBaGAt7TgEyEvm9YccIua9+w4FA==",
       "dev": true,
       "requires": {
-        "@apollo/federation-internals": "2.3.2",
-        "@apollo/query-graphs": "2.3.2",
+        "@apollo/federation-internals": "2.3.3",
+        "@apollo/query-graphs": "2.3.3",
         "chalk": "^4.1.0",
         "deep-equal": "^2.0.5",
         "pretty-format": "^29.0.0"
@@ -15045,13 +14993,13 @@
       }
     },
     "@apollo/subgraph": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.3.2.tgz",
-      "integrity": "sha512-PYSVD+tx49EVjII25Ip1QsrOCn/Bmh7KBqoqZsp/AT/8yGbqX5j9oAeRH37QcOxbl8TXBcJBDKbPO/KzUln1Dg==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@apollo/subgraph/-/subgraph-2.3.3.tgz",
+      "integrity": "sha512-stYoQ/pvm1TlSEU7DeW1YEk2cQ4yYIaS9tAEiPWTLzWivMwfbgVrsSGwBgME3UZ605EqHPXx4D1wVC/YfHT53Q==",
       "dev": true,
       "requires": {
         "@apollo/cache-control-types": "^1.0.2",
-        "@apollo/federation-internals": "2.3.2"
+        "@apollo/federation-internals": "2.3.3"
       }
     },
     "@apollo/usage-reporting-protobuf": {
@@ -15075,12 +15023,6 @@
       "integrity": "sha512-BoPW+Z3kA8kLh0FCWyzOt+R77W5mVZWer5s6UyvVwZ/qROGiEgcHXFcI5TMMndpXoDo0xBSvQV0lIKYHbJQ7+g==",
       "requires": {}
     },
-    "@apollo/utils.fetcher": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-1.1.1.tgz",
-      "integrity": "sha512-0vXVznO7kw5VWwxyV5wsDvYEwjDpyZ7vYQAXCseLXqBn2eWEIDViM7qRzi/Hnv4zzAQ05phdimSED99K+lg+SQ==",
-      "dev": true
-    },
     "@apollo/utils.isnodelike": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.0.tgz",
@@ -24148,18 +24090,18 @@
       "dev": true
     },
     "rimraf": {
-      "version": "4.3.1",
-      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.3.1.tgz",
-      "integrity": "sha512-GfHJHBzFQra23IxDzIdBqhOWfbtdgS1/dCHrDy+yvhpoJY5TdwdT28oWaHWfRpKFDLd3GZnGTx6Mlt4+anbsxQ==",
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz",
+      "integrity": "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==",
       "dev": true,
       "requires": {
         "glob": "^9.2.0"
       }
     },
     "rollup": {
-      "version": "3.18.0",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.18.0.tgz",
-      "integrity": "sha512-J8C6VfEBjkvYPESMQYxKHxNOh4A5a3FlP+0BETGo34HEcE4eTlgCrO2+eWzlu2a/sHs2QUkZco+wscH7jhhgWg==",
+      "version": "3.19.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.0.tgz",
+      "integrity": "sha512-xZzJZlH9Ca6cosfdNGPwl2z7Pby8dTi9TrYLPeg6/j7aUoDOhBd706tCUFvbiBj45h/cS7z/a4gS8xd5Yg0jBw==",
       "dev": true,
       "requires": {
         "fsevents": "~2.3.2"
@@ -24918,9 +24860,9 @@
       "dev": true
     },
     "ts-graphviz": {
-      "version": "0.16.0",
-      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-0.16.0.tgz",
-      "integrity": "sha512-3fTPO+G6bSQNvMh/XQQzyiahVLMMj9kqYO99ivUraNJ3Wp05HZOOVtRhi6w9hq7+laP1MKHjLBtGWqTeb1fcpg==",
+      "version": "1.5.5",
+      "resolved": "https://registry.npmjs.org/ts-graphviz/-/ts-graphviz-1.5.5.tgz",
+      "integrity": "sha512-abon0Tlcgvxcqr8x+p8QH1fTbR2R4cEXKGZfT4OJONZWah2YfqkmERb6hrr82omAc1IHwk5PlF8g4BS/ECYvwQ==",
       "dev": true
     },
     "ts-invariant": {
diff --git a/package.json b/package.json
index b3eeeb652..e7a5f462b 100644
--- a/package.json
+++ b/package.json
@@ -38,9 +38,9 @@
   },
   "devDependencies": {
     "@apollo/client": "3.7.10",
-    "@apollo/gateway": "2.3.2",
+    "@apollo/gateway": "2.3.3",
     "@apollo/server-plugin-landing-page-graphql-playground": "4.0.0",
-    "@apollo/subgraph": "2.3.2",
+    "@apollo/subgraph": "2.3.3",
     "@apollo/utils.createhash": "2.0.0",
     "@changesets/changelog-github": "0.4.8",
     "@changesets/cli": "2.26.0",
@@ -97,8 +97,8 @@
     "prettier": "2.8.4",
     "qs-middleware": "1.0.3",
     "requisition": "1.7.0",
-    "rimraf": "4.3.1",
-    "rollup": "3.18.0",
+    "rimraf": "4.4.0",
+    "rollup": "3.19.0",
     "supertest": "6.3.3",
     "test-listen": "1.1.0",
     "ts-jest": "29.0.5",
@@ -110,7 +110,7 @@
     ]
   },
   "volta": {
-    "node": "18.14.2",
-    "npm": "9.6.0"
+    "node": "18.15.0",
+    "npm": "9.6.1"
   }
 }
diff --git a/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts b/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts
index f13015d3b..51e9e4162 100644
--- a/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts
+++ b/packages/server/src/plugin/landingPage/default/getEmbeddedHTML.ts
@@ -1,6 +1,6 @@
 import type {
+  ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,
   ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,
-  LandingPageConfig,
 } from './types';
 
 // This function turns an object into a string and replaces
@@ -12,7 +12,7 @@ import type {
 // `</script>` won't terminate the script block early.
 // (Perhaps we should have done this instead of the triple-encoding
 // of encodeConfig for the main landing page.)
-function getConfigStringForHtml(config: LandingPageConfig) {
+function getConfigStringForHtml(config: object) {
   return JSON.stringify(config)
     .replace('<', '\\u003c')
     .replace('>', '\\u003e')
@@ -21,8 +21,9 @@ function getConfigStringForHtml(config: LandingPageConfig) {
 }
 
 export const getEmbeddedExplorerHTML = (
-  version: string,
+  explorerCdnVersion: string,
   config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,
+  apolloServerVersion: string,
 ) => {
   interface EmbeddableExplorerOptions {
     graphRef: string;
@@ -32,6 +33,8 @@ export const getEmbeddedExplorerHTML = (
       document?: string;
       variables?: Record<string, any>;
       headers?: Record<string, string>;
+      collectionId?: string;
+      operationId?: string;
       displayOptions: {
         docsPanelState?: 'open' | 'closed'; // default to 'open',
         showHeadersAndEnvVars?: boolean; // default to `false`
@@ -49,22 +52,35 @@ export const getEmbeddedExplorerHTML = (
     persistExplorerState: false,
     ...(typeof config.embed === 'boolean' ? {} : config.embed),
   };
-  const embeddedExplorerParams: Omit<EmbeddableExplorerOptions, 'endpointUrl'> =
-    {
-      graphRef: config.graphRef,
-      target: '#embeddableExplorer',
-      initialState: {
-        document: config.document,
-        headers: config.headers,
-        variables: config.variables,
-        displayOptions: {
-          ...productionLandingPageConfigOrDefault.displayOptions,
-        },
+  const embeddedExplorerParams: Omit<
+    EmbeddableExplorerOptions,
+    'endpointUrl'
+  > & { runtime: string } = {
+    graphRef: config.graphRef,
+    target: '#embeddableExplorer',
+    initialState: {
+      ...('document' in config || 'headers' in config || 'variables' in config
+        ? {
+            document: config.document,
+            headers: config.headers,
+            variables: config.variables,
+          }
+        : {}),
+      ...('collectionId' in config
+        ? {
+            collectionId: config.collectionId,
+            operationId: config.operationId,
+          }
+        : {}),
+      displayOptions: {
+        ...productionLandingPageConfigOrDefault.displayOptions,
       },
-      persistExplorerState:
-        productionLandingPageConfigOrDefault.persistExplorerState,
-      includeCookies: config.includeCookies,
-    };
+    },
+    persistExplorerState:
+      productionLandingPageConfigOrDefault.persistExplorerState,
+    includeCookies: config.includeCookies,
+    runtime: apolloServerVersion,
+  };
 
   return `
 <div class="fallback">
@@ -80,7 +96,11 @@ export const getEmbeddedExplorerHTML = (
 style="width: 100vw; height: 100vh; position: absolute; top: 0;"
 id="embeddableExplorer"
 ></div>
-<script src="https://embeddable-explorer.cdn.apollographql.com/${version}/embeddable-explorer.umd.production.min.js"></script>
+<script src="https://embeddable-explorer.cdn.apollographql.com/${encodeURIComponent(
+    explorerCdnVersion,
+  )}/embeddable-explorer.umd.production.min.js?runtime=${encodeURIComponent(
+    apolloServerVersion,
+  )}"></script>
 <script>
   var endpointUrl = window.location.href;
   var embeddedExplorerConfig = ${getConfigStringForHtml(
@@ -95,9 +115,16 @@ id="embeddableExplorer"
 };
 
 export const getEmbeddedSandboxHTML = (
-  version: string,
-  config: LandingPageConfig,
+  sandboxCdnVersion: string,
+  config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,
+  apolloServerVersion: string,
 ) => {
+  const endpointIsEditable =
+    typeof config.embed === 'boolean'
+      ? false
+      : typeof config.embed?.endpointIsEditable === 'boolean'
+      ? config.embed?.endpointIsEditable
+      : false;
   return `
 <div class="fallback">
   <h1>Welcome to Apollo Server</h1>
@@ -112,19 +139,48 @@ export const getEmbeddedSandboxHTML = (
 style="width: 100vw; height: 100vh; position: absolute; top: 0;"
 id="embeddableSandbox"
 ></div>
-<script src="https://embeddable-sandbox.cdn.apollographql.com/${version}/embeddable-sandbox.umd.production.min.js"></script>
+<script src="https://embeddable-sandbox.cdn.apollographql.com/${encodeURIComponent(
+    sandboxCdnVersion,
+  )}/embeddable-sandbox.umd.production.min.js?runtime=${encodeURIComponent(
+    apolloServerVersion,
+  )}"></script>
 <script>
   var initialEndpoint = window.location.href;
   new window.EmbeddedSandbox({
     target: '#embeddableSandbox',
     initialEndpoint,
     initialState: ${getConfigStringForHtml({
-      document: config.document,
-      variables: config.variables,
-      headers: config.headers,
+      ...('document' in config || 'headers' in config || 'variables' in config
+        ? {
+            document: config.document,
+            variables: config.variables,
+            headers: config.headers,
+          }
+        : {}),
+      ...('collectionId' in config
+        ? {
+            collectionId: config.collectionId,
+            operationId: config.operationId,
+          }
+        : {}),
       includeCookies: config.includeCookies,
+      ...(typeof config.embed !== 'boolean' &&
+      config.embed?.initialState?.pollForSchemaUpdates !== undefined
+        ? {
+            pollForSchemaUpdates:
+              config.embed?.initialState?.pollForSchemaUpdates,
+          }
+        : {}),
+      ...(typeof config.embed !== 'boolean' &&
+      config.embed?.initialState?.sharedHeaders !== undefined
+        ? {
+            sharedHeaders: config.embed?.initialState?.sharedHeaders,
+          }
+        : {}),
     })},
     hideCookieToggle: false,
+    endpointIsEditable: ${endpointIsEditable},
+    runtime: '${apolloServerVersion}'
   });
 </script>
 `;
diff --git a/packages/server/src/plugin/landingPage/default/index.ts b/packages/server/src/plugin/landingPage/default/index.ts
index 4371f91f9..7f607870a 100644
--- a/packages/server/src/plugin/landingPage/default/index.ts
+++ b/packages/server/src/plugin/landingPage/default/index.ts
@@ -12,6 +12,7 @@ import {
   getEmbeddedExplorerHTML,
   getEmbeddedSandboxHTML,
 } from './getEmbeddedHTML.js';
+import { packageVersion } from '../../../generated/packageVersion.js';
 
 export type {
   ApolloServerPluginLandingPageLocalDefaultOptions,
@@ -57,8 +58,9 @@ function encodeConfig(config: LandingPageConfig): string {
 }
 
 const getNonEmbeddedLandingPageHTML = (
-  version: string,
+  cdnVersion: string,
   config: LandingPageConfig,
+  apolloServerVersion: string,
 ) => {
   const encodedConfig = encodeConfig(config);
 
@@ -68,7 +70,7 @@ const getNonEmbeddedLandingPageHTML = (
   <p>The full landing page cannot be loaded; it appears that you might be offline.</p>
 </div>
 <script>window.landingPage = ${encodedConfig};</script>
-<script src="https://apollo-server-landing-page.cdn.apollographql.com/${version}/static/js/main.js"></script>`;
+<script src="https://apollo-server-landing-page.cdn.apollographql.com/${cdnVersion}/static/js/main.js?runtime=${apolloServerVersion}"></script>`;
 };
 
 // Helper for the two actual plugin functions.
@@ -80,6 +82,7 @@ function ApolloServerPluginLandingPageDefault<TContext extends BaseContext>(
   },
 ): ImplicitlyInstallablePlugin<TContext> {
   const version = maybeVersion ?? '_latest';
+  const apolloServerVersion = `@apollo/server@${packageVersion}`;
 
   return {
     __internal_installed_implicitly__: false,
@@ -132,9 +135,11 @@ function ApolloServerPluginLandingPageDefault<TContext extends BaseContext>(
     ${
       config.embed
         ? 'graphRef' in config && config.graphRef
-          ? getEmbeddedExplorerHTML(version, config)
-          : getEmbeddedSandboxHTML(version, config)
-        : getNonEmbeddedLandingPageHTML(version, config)
+          ? getEmbeddedExplorerHTML(version, config, apolloServerVersion)
+          : !('graphRef' in config)
+          ? getEmbeddedSandboxHTML(version, config, apolloServerVersion)
+          : getNonEmbeddedLandingPageHTML(version, config, apolloServerVersion)
+        : getNonEmbeddedLandingPageHTML(version, config, apolloServerVersion)
     }
     </div>
   </body>
diff --git a/packages/server/src/plugin/landingPage/default/types.ts b/packages/server/src/plugin/landingPage/default/types.ts
index dee5da345..211aef600 100644
--- a/packages/server/src/plugin/landingPage/default/types.ts
+++ b/packages/server/src/plugin/landingPage/default/types.ts
@@ -1,17 +1,4 @@
-export interface ApolloServerPluginLandingPageDefaultBaseOptions {
-  /**
-   * By default, the landing page plugin uses the latest version of the landing
-   * page published to Apollo's CDN. If you'd like to pin the current version,
-   * pass the SHA served at
-   * https://apollo-server-landing-page.cdn.apollographql.com/_latest/version.txt
-   * here.
-   */
-  version?: string;
-  /**
-   * Set to false to suppress the footer which explains how to configure the
-   * landing page.
-   */
-  footer?: boolean;
+type InitialDocumentVariablesHeaders = {
   /**
    * Users can configure their landing page to link to Studio Explorer with a
    * document loaded in the UI.
@@ -22,63 +9,128 @@ export interface ApolloServerPluginLandingPageDefaultBaseOptions {
    * variables loaded in the UI.
    */
   variables?: Record<string, any>;
+
   /**
    * Users can configure their landing page to link to Studio Explorer with
    * headers loaded in the UI.
    */
   headers?: Record<string, string>;
+  collectionId?: never;
+  operationId?: never;
+};
 
-  includeCookies?: boolean;
-  // For Apollo use only.
-  __internal_apolloStudioEnv__?: 'staging' | 'prod';
-}
-
-export interface ApolloServerPluginNonEmbeddedLandingPageLocalDefaultOptions
-  extends ApolloServerPluginLandingPageDefaultBaseOptions {
-  /**
-   * Users can configure their landing page to render an embedded Explorer if
-   * given a graphRef, or an embedded Sandbox if there is not graphRef provided.
-   */
-  embed: false;
-}
+type InitialStateForEmbeds =
+  | {
+      /**
+       * The ID of a collection, paired with an operation ID to populate in the Sandbox on load.
+       *
+       * You can find these values from a registered graph in Studio by
+       * clicking the ... menu next to an operation in the Explorer of that graph and
+       * selecting View operation details.
+       */
+      collectionId: string;
+      operationId: string;
+    }
+  | InitialDocumentVariablesHeaders;
 
-export interface ApolloServerPluginNonEmbeddedLandingPageProductionDefaultOptions
-  extends ApolloServerPluginLandingPageDefaultBaseOptions {
+export type ApolloServerPluginLandingPageDefaultBaseOptions = {
   /**
-   * If specified, provide a link (with opt-in auto-redirect) to the Studio page
-   * for the given graphRef. (You need to explicitly pass this here rather than
-   * relying on the server's ApolloConfig, because if your server is publicly
-   * accessible you may not want to display the graph ref publicly.)
+   * By default, the landing page plugin uses the latest version of the landing
+   * page published to Apollo's CDN. If you'd like to pin the current version,
+   * pass the SHA served at
+   * https://apollo-server-landing-page.cdn.apollographql.com/_latest/version.txt
+   * here.
    */
-  graphRef?: string;
+  version?: string;
   /**
-   * Users can configure their landing page to render an embedded Explorer if
-   * given a graphRef, or an embedded Sandbox if there is not graphRef provided.
+   * Set to false to suppress the footer which explains how to configure the
+   * landing page.
    */
-  embed?: false;
-}
+  footer?: boolean;
 
-export interface ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions
-  extends ApolloServerPluginLandingPageDefaultBaseOptions {
-  /**
-   * Users can configure their landing page to render an embedded Explorer if
-   * given a graphRef, or an embedded Sandbox if there is not graphRef provided.
-   */
-  embed?: true;
-}
+  includeCookies?: boolean;
+  // For Apollo use only.
+  __internal_apolloStudioEnv__?: 'staging' | 'prod';
+};
 
-export interface ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions
-  extends ApolloServerPluginLandingPageDefaultBaseOptions {
-  /**
-   * Use this registered's graphs schema to populate the embedded Explorer.
-   * Required if passing `embed: true`
-   */
-  graphRef: string;
+export type ApolloServerPluginNonEmbeddedLandingPageLocalDefaultOptions =
+  ApolloServerPluginLandingPageDefaultBaseOptions &
+    InitialDocumentVariablesHeaders & {
+      /**
+       * Users can configure their landing page to render an embedded Explorer if
+       * given a graphRef, or an embedded Sandbox if there is no graphRef provided.
+       */
+      embed: false;
+    };
+
+export type ApolloServerPluginNonEmbeddedLandingPageProductionDefaultOptions =
+  ApolloServerPluginLandingPageDefaultBaseOptions &
+    InitialDocumentVariablesHeaders & {
+      /**
+       * If specified, provide a link (with opt-in auto-redirect) to the Studio page
+       * for the given graphRef. (You need to explicitly pass this here rather than
+       * relying on the server's ApolloConfig, because if your server is publicly
+       * accessible you may not want to display the graph ref publicly.)
+       */
+      graphRef?: string;
+      /**
+       * Users can configure their landing page to render an embedded Explorer if
+       * given a graphRef, or an embedded Sandbox if there is no graphRef provided.
+       */
+      embed?: false;
+    };
+
+export type ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions =
+  ApolloServerPluginLandingPageDefaultBaseOptions & {
+    /**
+     * Users can configure their landing page to render an embedded Explorer if
+     * given a graphRef, or an embedded Sandbox if there is no graphRef provided.
+     */
+    embed?: true | EmbeddableSandboxOptions;
+  } & (InitialDocumentVariablesHeaders | InitialStateForEmbeds);
+
+export type ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions =
+  ApolloServerPluginLandingPageDefaultBaseOptions & {
+    /**
+     * Use this registered's graphs schema to populate the embedded Explorer.
+     * Required if passing `embed: true`
+     */
+    graphRef: string;
+    /**
+     * Users can configure their landing page to render an embedded Explorer.
+     */
+    embed: true | EmbeddableExplorerOptions;
+  } & InitialStateForEmbeds;
+
+type EmbeddableSandboxOptions = {
+  initialState?: {
+    /**
+     * If true, the embedded Sandbox periodically polls your initialEndpoint for schema updates.
+     *
+     * The default value is true.
+     */
+    pollForSchemaUpdates?: boolean;
+    /**
+     * Headers that are applied by default to every operation executed by the landing page's Sandbox.
+     * Users can disable the application of these headers, but they can't modify their values.
+     *
+     * The landing page's Sandbox always includes these headers in its introspection queries
+     * to your endpoint.
+     */
+    // TODO(as5): We currently have `headers` at the top level and `embed.initialState.sharedHeaders`
+    // at this level. Shared headers populate introspection headers in Sandbox, while `headers` just
+    // adds headers to your default tab. We should consider changing the behavior such that `headers`
+    // at the base level populates shared headers as well.
+    sharedHeaders?: Record<string, string>;
+  };
   /**
-   * Users can configure their landing page to render an embedded Explorer.
+   * By default, the Apollo Server embedded Sandbox has a url input box that is not editable by users.
+   *
+   * Set `endpointIsEditable` to `true` to enable users of your
+   * Apollo Server landing page to change the endpoint url.
    */
-  embed: true | EmbeddableExplorerOptions;
-}
+  endpointIsEditable?: boolean;
+};
 
 type EmbeddableExplorerOptions = {
   /**


Test patch:
diff --git a/packages/server/src/__tests__/plugin/landingPage/getEmbeddedExplorerHTML.test.ts b/packages/server/src/__tests__/plugin/landingPage/getEmbeddedExplorerHTML.test.ts
index 0e2ecba05..a47729b91 100644
--- a/packages/server/src/__tests__/plugin/landingPage/getEmbeddedExplorerHTML.test.ts
+++ b/packages/server/src/__tests__/plugin/landingPage/getEmbeddedExplorerHTML.test.ts
@@ -2,8 +2,9 @@ import { getEmbeddedExplorerHTML } from '../../../plugin/landingPage/default/get
 import type { ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions } from '../../../plugin/landingPage/default/types';
 import { describe, it, expect } from '@jest/globals';
 
-const version = '_latest';
+const cdnVersion = '_latest';
 expect.addSnapshotSerializer(require('jest-serializer-html'));
+const apolloServerVersion = '@apollo/server@4.0.0';
 
 describe('Embedded Explorer Landing Page Config HTML', () => {
   it('with document, variables, headers and displayOptions provided', () => {
@@ -29,7 +30,8 @@ describe('Embedded Explorer Landing Page Config HTML', () => {
         },
         graphRef: 'graph@current',
       };
-    expect(getEmbeddedExplorerHTML(version, config)).toMatchInlineSnapshot(`
+    expect(getEmbeddedExplorerHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
       <div class="fallback">
         <h1>
           Welcome to Apollo Server
@@ -47,11 +49,92 @@ describe('Embedded Explorer Landing Page Config HTML', () => {
            id="embeddableExplorer"
       >
       </div>
-      <script src="https://embeddable-explorer.cdn.apollographql.com/_latest/embeddable-explorer.umd.production.min.js">
+      <script src="https://embeddable-explorer.cdn.apollographql.com/_latest/embeddable-explorer.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
       </script>
       <script>
         var endpointUrl = window.location.href;
-        var embeddedExplorerConfig = {"graphRef":"graph@current","target":"#embeddableExplorer","initialState":{"document":"query Test { id }","headers":{"authorization":"true"},"variables":{"option":{"a":"val","b":1,"c":true}},"displayOptions":{"showHeadersAndEnvVars":true,"docsPanelState":"open","theme":"light"}},"persistExplorerState":true,"includeCookies":true};
+        var embeddedExplorerConfig = {"graphRef":"graph@current","target":"#embeddableExplorer","initialState":{"document":"query Test { id }","headers":{"authorization":"true"},"variables":{"option":{"a":"val","b":1,"c":true}},"displayOptions":{"showHeadersAndEnvVars":true,"docsPanelState":"open","theme":"light"}},"persistExplorerState":true,"includeCookies":true,"runtime":"@apollo/server@4.0.0"};
+        new window.EmbeddedExplorer({
+          ...embeddedExplorerConfig,
+          endpointUrl,
+        });
+      </script>
+    `);
+  });
+
+  it('with only headers provided', () => {
+    const config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions =
+      {
+        includeCookies: true,
+        headers: { authorization: 'true' },
+        embed: true,
+        graphRef: 'graph@current',
+      };
+    expect(getEmbeddedExplorerHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
+      <div class="fallback">
+        <h1>
+          Welcome to Apollo Server
+        </h1>
+        <p>
+          Apollo Explorer cannot be loaded; it appears that you might be offline.
+        </p>
+      </div>
+      <style>
+        iframe {
+          background-color: white;
+        }
+      </style>
+      <div style="width: 100vw; height: 100vh; position: absolute; top: 0;"
+           id="embeddableExplorer"
+      >
+      </div>
+      <script src="https://embeddable-explorer.cdn.apollographql.com/_latest/embeddable-explorer.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
+      </script>
+      <script>
+        var endpointUrl = window.location.href;
+        var embeddedExplorerConfig = {"graphRef":"graph@current","target":"#embeddableExplorer","initialState":{"headers":{"authorization":"true"},"displayOptions":{}},"persistExplorerState":false,"includeCookies":true,"runtime":"@apollo/server@4.0.0"};
+        new window.EmbeddedExplorer({
+          ...embeddedExplorerConfig,
+          endpointUrl,
+        });
+      </script>
+    `);
+  });
+
+  it('with operationId, collectionId provided', () => {
+    const config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions =
+      {
+        includeCookies: true,
+        collectionId: '12345',
+        operationId: 'abcdef',
+        embed: true,
+        graphRef: 'graph@current',
+      };
+    expect(getEmbeddedExplorerHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
+      <div class="fallback">
+        <h1>
+          Welcome to Apollo Server
+        </h1>
+        <p>
+          Apollo Explorer cannot be loaded; it appears that you might be offline.
+        </p>
+      </div>
+      <style>
+        iframe {
+          background-color: white;
+        }
+      </style>
+      <div style="width: 100vw; height: 100vh; position: absolute; top: 0;"
+           id="embeddableExplorer"
+      >
+      </div>
+      <script src="https://embeddable-explorer.cdn.apollographql.com/_latest/embeddable-explorer.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
+      </script>
+      <script>
+        var endpointUrl = window.location.href;
+        var embeddedExplorerConfig = {"graphRef":"graph@current","target":"#embeddableExplorer","initialState":{"collectionId":"12345","operationId":"abcdef","displayOptions":{}},"persistExplorerState":false,"includeCookies":true,"runtime":"@apollo/server@4.0.0"};
         new window.EmbeddedExplorer({
           ...embeddedExplorerConfig,
           endpointUrl,
@@ -64,10 +147,11 @@ describe('Embedded Explorer Landing Page Config HTML', () => {
     const config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions =
       {
         includeCookies: false,
-        embed: true as true,
+        embed: true,
         graphRef: 'graph@current',
       };
-    expect(getEmbeddedExplorerHTML(version, config)).toMatchInlineSnapshot(`
+    expect(getEmbeddedExplorerHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
       <div class="fallback">
         <h1>
           Welcome to Apollo Server
@@ -85,11 +169,11 @@ describe('Embedded Explorer Landing Page Config HTML', () => {
            id="embeddableExplorer"
       >
       </div>
-      <script src="https://embeddable-explorer.cdn.apollographql.com/_latest/embeddable-explorer.umd.production.min.js">
+      <script src="https://embeddable-explorer.cdn.apollographql.com/_latest/embeddable-explorer.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
       </script>
       <script>
         var endpointUrl = window.location.href;
-        var embeddedExplorerConfig = {"graphRef":"graph@current","target":"#embeddableExplorer","initialState":{"displayOptions":{}},"persistExplorerState":false,"includeCookies":false};
+        var embeddedExplorerConfig = {"graphRef":"graph@current","target":"#embeddableExplorer","initialState":{"displayOptions":{}},"persistExplorerState":false,"includeCookies":false,"runtime":"@apollo/server@4.0.0"};
         new window.EmbeddedExplorer({
           ...embeddedExplorerConfig,
           endpointUrl,
diff --git a/packages/server/src/__tests__/plugin/landingPage/getEmbeddedSandboxHTML.test.ts b/packages/server/src/__tests__/plugin/landingPage/getEmbeddedSandboxHTML.test.ts
index 17854abc9..bfc7ae3c2 100644
--- a/packages/server/src/__tests__/plugin/landingPage/getEmbeddedSandboxHTML.test.ts
+++ b/packages/server/src/__tests__/plugin/landingPage/getEmbeddedSandboxHTML.test.ts
@@ -1,13 +1,14 @@
 import { getEmbeddedSandboxHTML } from '../../../plugin/landingPage/default/getEmbeddedHTML';
-import type { LandingPageConfig } from '../../../plugin/landingPage/default/types';
+import type { ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions } from '../../../plugin/landingPage/default/types';
 import { describe, it, expect } from '@jest/globals';
 
-const version = '_latest';
+const cdnVersion = '_latest';
 expect.addSnapshotSerializer(require('jest-serializer-html'));
+const apolloServerVersion = '@apollo/server@4.0.0';
 
 describe('Landing Page Config HTML', () => {
   it('for embedded sandbox with document, variables and headers provided', () => {
-    const config: LandingPageConfig = {
+    const config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions = {
       includeCookies: true,
       document: 'query Test { id }',
       variables: {
@@ -20,7 +21,8 @@ describe('Landing Page Config HTML', () => {
       headers: { authorization: 'true' },
       embed: true,
     };
-    expect(getEmbeddedSandboxHTML(version, config)).toMatchInlineSnapshot(`
+    expect(getEmbeddedSandboxHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
       <div class="fallback">
         <h1>
           Welcome to Apollo Server
@@ -38,7 +40,7 @@ describe('Landing Page Config HTML', () => {
            id="embeddableSandbox"
       >
       </div>
-      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js">
+      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
       </script>
       <script>
         var initialEndpoint = window.location.href;
@@ -47,17 +49,147 @@ describe('Landing Page Config HTML', () => {
           initialEndpoint,
           initialState: {"document":"query Test { id }","variables":{"option":{"a":"val","b":1,"c":true}},"headers":{"authorization":"true"},"includeCookies":true},
           hideCookieToggle: false,
+          endpointIsEditable: false,
+          runtime: '@apollo/server@4.0.0'
         });
       </script>
     `);
   });
 
-  it('for embedded sandbox with document, variables and headers excluded', () => {
-    const config: LandingPageConfig = {
-      includeCookies: false,
+  it('for embedded sandbox with only headers provided', () => {
+    const config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions = {
+      includeCookies: true,
+      headers: { authorization: 'true' },
+      embed: true,
+    };
+    expect(getEmbeddedSandboxHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
+      <div class="fallback">
+        <h1>
+          Welcome to Apollo Server
+        </h1>
+        <p>
+          Apollo Sandbox cannot be loaded; it appears that you might be offline.
+        </p>
+      </div>
+      <style>
+        iframe {
+          background-color: white;
+        }
+      </style>
+      <div style="width: 100vw; height: 100vh; position: absolute; top: 0;"
+           id="embeddableSandbox"
+      >
+      </div>
+      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
+      </script>
+      <script>
+        var initialEndpoint = window.location.href;
+        new window.EmbeddedSandbox({
+          target: '#embeddableSandbox',
+          initialEndpoint,
+          initialState: {"headers":{"authorization":"true"},"includeCookies":true},
+          hideCookieToggle: false,
+          endpointIsEditable: false,
+          runtime: '@apollo/server@4.0.0'
+        });
+      </script>
+    `);
+  });
+
+  it('for embedded sandbox with all config excluded', () => {
+    const config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions = {
+      embed: true,
+    };
+    expect(getEmbeddedSandboxHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
+      <div class="fallback">
+        <h1>
+          Welcome to Apollo Server
+        </h1>
+        <p>
+          Apollo Sandbox cannot be loaded; it appears that you might be offline.
+        </p>
+      </div>
+      <style>
+        iframe {
+          background-color: white;
+        }
+      </style>
+      <div style="width: 100vw; height: 100vh; position: absolute; top: 0;"
+           id="embeddableSandbox"
+      >
+      </div>
+      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
+      </script>
+      <script>
+        var initialEndpoint = window.location.href;
+        new window.EmbeddedSandbox({
+          target: '#embeddableSandbox',
+          initialEndpoint,
+          initialState: {},
+          hideCookieToggle: false,
+          endpointIsEditable: false,
+          runtime: '@apollo/server@4.0.0'
+        });
+      </script>
+    `);
+  });
+
+  it('for embedded sandbox with operationId & collectionId provided', () => {
+    const config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions = {
+      collectionId: '12345',
+      operationId: 'abcdef',
       embed: true,
     };
-    expect(getEmbeddedSandboxHTML(version, config)).toMatchInlineSnapshot(`
+    expect(getEmbeddedSandboxHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
+      <div class="fallback">
+        <h1>
+          Welcome to Apollo Server
+        </h1>
+        <p>
+          Apollo Sandbox cannot be loaded; it appears that you might be offline.
+        </p>
+      </div>
+      <style>
+        iframe {
+          background-color: white;
+        }
+      </style>
+      <div style="width: 100vw; height: 100vh; position: absolute; top: 0;"
+           id="embeddableSandbox"
+      >
+      </div>
+      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
+      </script>
+      <script>
+        var initialEndpoint = window.location.href;
+        new window.EmbeddedSandbox({
+          target: '#embeddableSandbox',
+          initialEndpoint,
+          initialState: {"collectionId":"12345","operationId":"abcdef"},
+          hideCookieToggle: false,
+          endpointIsEditable: false,
+          runtime: '@apollo/server@4.0.0'
+        });
+      </script>
+    `);
+  });
+
+  it('for embedded sandbox with endpointIsEditable, pollForSchemaUpdates, sharedHeaders provided', () => {
+    const config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions = {
+      includeCookies: false,
+      embed: {
+        endpointIsEditable: true,
+        initialState: {
+          pollForSchemaUpdates: false,
+          sharedHeaders: { SharedHeaderKey: 'SharedHeaderValue' },
+        },
+      },
+    };
+    expect(getEmbeddedSandboxHTML(cdnVersion, config, apolloServerVersion))
+      .toMatchInlineSnapshot(`
       <div class="fallback">
         <h1>
           Welcome to Apollo Server
@@ -75,15 +207,17 @@ describe('Landing Page Config HTML', () => {
            id="embeddableSandbox"
       >
       </div>
-      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js">
+      <script src="https://embeddable-sandbox.cdn.apollographql.com/_latest/embeddable-sandbox.umd.production.min.js?runtime=%40apollo%2Fserver%404.0.0">
       </script>
       <script>
         var initialEndpoint = window.location.href;
         new window.EmbeddedSandbox({
           target: '#embeddableSandbox',
           initialEndpoint,
-          initialState: {"includeCookies":false},
+          initialState: {"includeCookies":false,"pollForSchemaUpdates":false,"sharedHeaders":{"SharedHeaderKey":"SharedHeaderValue"}},
           hideCookieToggle: false,
+          endpointIsEditable: true,
+          runtime: '@apollo/server@4.0.0'
         });
       </script>
     `);
diff --git a/smoke-test/package.json b/smoke-test/package.json
index cd9b2848a..9ec37eaa1 100644
--- a/smoke-test/package.json
+++ b/smoke-test/package.json
@@ -8,7 +8,7 @@
     "@rollup/plugin-json": "6.0.0",
     "@rollup/plugin-node-resolve": "15.0.1",
     "@types/make-fetch-happen": "10.0.1",
-    "rollup": "3.18.0"
+    "rollup": "3.19.0"
   },
   "volta": {
     "extends": "../package.json"