From 0ff9c7dcc4a2c0333fdafd516edbd3f850d0f157 Mon Sep 17 00:00:00 2001 From: Edward Huang <18322228+shorgi@users.noreply.github.com> Date: Thu, 11 Jan 2024 01:10:01 -0800 Subject: [PATCH 01/11] docs: fix broken links (#4455) Fixes links in following sections: - https://deploy-preview-4455--apollo-router-docs.netlify.app/configuration/subgraph-error-inclusion#sending-errors-to-graphos - https://deploy-preview-4455--apollo-router-docs.netlify.app/configuration/subgraph-error-inclusion#logging-graphql-request-errors --- docs/source/configuration/subgraph-error-inclusion.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/configuration/subgraph-error-inclusion.mdx b/docs/source/configuration/subgraph-error-inclusion.mdx index cf156ca302..72154feeee 100644 --- a/docs/source/configuration/subgraph-error-inclusion.mdx +++ b/docs/source/configuration/subgraph-error-inclusion.mdx @@ -24,8 +24,8 @@ include_subgraph_errors: Any configuration under the `subgraphs` key takes precedence over configuration under the `all` key. In the example above, subgraph errors are included from all subgraphs _except_ the `products` subgraph. ## Sending errors to GraphOS -To report the subgraph errors to GraphOS that is a separate configuration that is not affected by client subgraph error inclusion, see the [GraphOS reporting docs](./../telemetry/apollo-telemetry.mdx). +To report the subgraph errors to GraphOS that is a separate configuration that is not affected by client subgraph error inclusion, see the [GraphOS reporting docs](./telemetry/apollo-telemetry). ## Logging GraphQL request errors -To log the GraphQL error responses (i.e. messages returned in the GraphQL `errors` array) from the router, see the [logging configuration documentation](./../telemetry/exporters/logging/overview). +To log the GraphQL error responses (i.e. messages returned in the GraphQL `errors` array) from the router, see the [logging configuration documentation](./telemetry/exporters/logging/overview). From 27cb7da7de62edab6bc7c7e1bd30e176a88d8322 Mon Sep 17 00:00:00 2001 From: Lenny Burdette Date: Thu, 11 Jan 2024 06:57:04 -0500 Subject: [PATCH 02/11] docs: clarify coprocessor auth stages (#4306) The example for adding claims using a coprocessor seems to suggest that you must use the RouterRequest stage, but you can also using the SupergraphRequest stage (which will have the parsed operation.) --- **Checklist** Complete the checklist (and note appropriate exceptions) before the PR is marked ready-for-review. - [ ] Changes are compatible[^1] - [ ] Documentation[^2] completed - [ ] Performance impact assessed and acceptable - Tests added and passing[^3] - [ ] Unit Tests - [ ] Integration Tests - [ ] Manual Tests **Exceptions** *Note any exceptions here* **Notes** [^1]: It may be appropriate to bring upcoming changes to the attention of other (impacted) groups. Please endeavour to do this before seeking PR approval. The mechanism for doing this will vary considerably, so use your judgement as to how and when to do this. [^2]: Configuration is an important part of many changes. Where applicable please try to document configuration examples. [^3]: Tick whichever testing boxes are applicable. If you are adding Manual Tests, please document the manual testing (extensively) in the Exceptions. --------- Co-authored-by: Edward Huang <18322228+shorgi@users.noreply.github.com> Co-authored-by: Geoffroy Couprie --- docs/source/customizations/coprocessor.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/customizations/coprocessor.mdx b/docs/source/customizations/coprocessor.mdx index afeeb0758d..891289f154 100644 --- a/docs/source/customizations/coprocessor.mdx +++ b/docs/source/customizations/coprocessor.mdx @@ -1021,14 +1021,14 @@ Subsequent response chunks omit the `headers` and `statusCode` fields: ## Adding authorization claims via coprocessor -To use the [authorization directives](../configuration/authorization#authorization-directives), a request needs to include **claims**—the details of its authentication and scope. The most straightforward way to add claims is with [JWT authentication](../configuration/./authn-jwt). You can also add claims with a [`RouterService` coprocessor](#how-it-works) since it hooks into the request lifecycle directly after the router has received a client request. +To use the [authorization directives](../configuration/authorization#authorization-directives), a request needs to include **claims**—the details of its authentication and scope. The most straightforward way to add claims is with [JWT authentication](../configuration/./authn-jwt). You can also add claims with a [`RouterService` or `SupergraphService` coprocessor](#how-it-works) since they hook into the request lifecycle before the router applies authorization logic. -The router configuration needs to include at least these settings: +An example configuration of the router calling a coprocessor for authorization claims: ```yaml title="router.yaml" coprocessor: url: http://127.0.0.1:8081 # Required. Replace with the URL of your coprocessor's HTTP endpoint. - router: # By including this key, a coprocessor can hook into the `RouterService` + router: # By including this key, a coprocessor can hook into the `RouterService`. You can also use `SupergraphService` for authorization. request: # By including this key, the `RouterService` sends a coprocessor request whenever it first receives a client request. headers: false # These boolean properties indicate which request data to include in the coprocessor request. All are optional and false by default. context: true # The authorization directives works with claims stored in the request's context From 24f2278cfb0f74ed3724e86430d3c0f76832d99b Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 17 Jan 2024 12:35:02 +0000 Subject: [PATCH 03/11] prep release: v1.38.0-rc.0 --- Cargo.lock | 6 +- apollo-router-benchmarks/Cargo.toml | 2 +- apollo-router-scaffold/Cargo.toml | 2 +- .../templates/base/Cargo.toml | 2 +- .../templates/base/xtask/Cargo.toml | 2 +- apollo-router/Cargo.toml | 2 +- .../tracing/docker-compose.datadog.yml | 2 +- dockerfiles/tracing/docker-compose.jaeger.yml | 2 +- dockerfiles/tracing/docker-compose.zipkin.yml | 2 +- helm/chart/router/Chart.yaml | 4 +- helm/chart/router/README.md | 6 +- licenses.html | 104 +++++++++++++++++- scripts/install.sh | 2 +- 13 files changed, 120 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e36efad1e2..0386e36446 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -258,7 +258,7 @@ dependencies = [ [[package]] name = "apollo-router" -version = "1.37.0" +version = "1.38.0-rc.0" dependencies = [ "access-json", "anyhow", @@ -411,7 +411,7 @@ dependencies = [ [[package]] name = "apollo-router-benchmarks" -version = "1.37.0" +version = "1.38.0-rc.0" dependencies = [ "apollo-parser", "apollo-router", @@ -427,7 +427,7 @@ dependencies = [ [[package]] name = "apollo-router-scaffold" -version = "1.37.0" +version = "1.38.0-rc.0" dependencies = [ "anyhow", "cargo-scaffold", diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml index e7c4d6166e..6d417bdbdf 100644 --- a/apollo-router-benchmarks/Cargo.toml +++ b/apollo-router-benchmarks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-benchmarks" -version = "1.37.0" +version = "1.38.0-rc.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml index 13898bba22..07ad4d0850 100644 --- a/apollo-router-scaffold/Cargo.toml +++ b/apollo-router-scaffold/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-scaffold" -version = "1.37.0" +version = "1.38.0-rc.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml index 08ee6c747c..4c66c59f66 100644 --- a/apollo-router-scaffold/templates/base/Cargo.toml +++ b/apollo-router-scaffold/templates/base/Cargo.toml @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" } apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" } {{else}} # Note if you update these dependencies then also update xtask/Cargo.toml -apollo-router = "1.37.0" +apollo-router = "1.38.0-rc.0" {{/if}} {{/if}} async-trait = "0.1.52" diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.toml index febb83bbfd..791d9d4296 100644 --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" } {{#if branch}} apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" } {{else}} -apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.37.0" } +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0-rc.0" } {{/if}} {{/if}} anyhow = "1.0.58" diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml index de53a5d2b5..5385bfcf77 100644 --- a/apollo-router/Cargo.toml +++ b/apollo-router/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router" -version = "1.37.0" +version = "1.38.0-rc.0" authors = ["Apollo Graph, Inc. "] repository = "https://github.com/apollographql/router/" documentation = "https://docs.rs/apollo-router" diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml index d41cb27510..346f506bc0 100644 --- a/dockerfiles/tracing/docker-compose.datadog.yml +++ b/dockerfiles/tracing/docker-compose.datadog.yml @@ -3,7 +3,7 @@ services: apollo-router: container_name: apollo-router - image: ghcr.io/apollographql/router:v1.37.0 + image: ghcr.io/apollographql/router:v1.38.0-rc.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/datadog.router.yaml:/etc/config/configuration.yaml diff --git a/dockerfiles/tracing/docker-compose.jaeger.yml b/dockerfiles/tracing/docker-compose.jaeger.yml index 2cd71b41ab..8c004de6cf 100644 --- a/dockerfiles/tracing/docker-compose.jaeger.yml +++ b/dockerfiles/tracing/docker-compose.jaeger.yml @@ -4,7 +4,7 @@ services: apollo-router: container_name: apollo-router #build: ./router - image: ghcr.io/apollographql/router:v1.37.0 + image: ghcr.io/apollographql/router:v1.38.0-rc.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/jaeger.router.yaml:/etc/config/configuration.yaml diff --git a/dockerfiles/tracing/docker-compose.zipkin.yml b/dockerfiles/tracing/docker-compose.zipkin.yml index f03cb4aa24..9dc4e64864 100644 --- a/dockerfiles/tracing/docker-compose.zipkin.yml +++ b/dockerfiles/tracing/docker-compose.zipkin.yml @@ -4,7 +4,7 @@ services: apollo-router: container_name: apollo-router build: ./router - image: ghcr.io/apollographql/router:v1.37.0 + image: ghcr.io/apollographql/router:v1.38.0-rc.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/zipkin.router.yaml:/etc/config/configuration.yaml diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml index 0fe4bd622f..23e6476d97 100644 --- a/helm/chart/router/Chart.yaml +++ b/helm/chart/router/Chart.yaml @@ -20,10 +20,10 @@ type: application # so it matches the shape of our release process and release automation. # By proxy of that decision, this version uses SemVer 2.0.0, though the prefix # of "v" is not included. -version: 1.37.0 +version: 1.38.0-rc.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "v1.37.0" +appVersion: "v1.38.0-rc.0" diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md index 96e7d1fca1..781e5065e6 100644 --- a/helm/chart/router/README.md +++ b/helm/chart/router/README.md @@ -2,7 +2,7 @@ [router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation -![Version: 1.37.0](https://img.shields.io/badge/Version-1.37.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.37.0](https://img.shields.io/badge/AppVersion-v1.37.0-informational?style=flat-square) +![Version: 1.38.0-rc.0](https://img.shields.io/badge/Version-1.38.0--rc.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0-rc.0](https://img.shields.io/badge/AppVersion-v1.38.0--rc.0-informational?style=flat-square) ## Prerequisites @@ -11,7 +11,7 @@ ## Get Repo Info ```console -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.37.0 +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.0 ``` ## Install Chart @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.37.0 **Important:** only helm3 is supported ```console -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.37.0 --values my-values.yaml +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.0 --values my-values.yaml ``` _See [configuration](#configuration) below._ diff --git a/licenses.html b/licenses.html index 991b27dec0..3de8bc3449 100644 --- a/licenses.html +++ b/licenses.html @@ -12788,9 +12788,111 @@

Used by:

Elastic License 2.0

Used by:

+
Copyright 2021 Apollo Graph, Inc.
+
+Elastic License 2.0
+
+## Acceptance
+
+By using the software, you agree to all of the terms and conditions below.
+
+## Copyright License
+
+The licensor grants you a non-exclusive, royalty-free, worldwide,
+non-sublicensable, non-transferable license to use, copy, distribute, make
+available, and prepare derivative works of the software, in each case subject to
+the limitations and conditions below.
+
+## Limitations
+
+You may not provide the software to third parties as a hosted or managed
+service, where the service provides users with access to any substantial set of
+the features or functionality of the software.
+
+You may not move, change, disable, or circumvent the license key functionality
+in the software, and you may not remove or obscure any functionality in the
+software that is protected by the license key.
+
+You may not alter, remove, or obscure any licensing, copyright, or other notices
+of the licensor in the software. Any use of the licensor’s trademarks is subject
+to applicable law.
+
+## Patents
+
+The licensor grants you a license, under any patent claims the licensor can
+license, or becomes able to license, to make, have made, use, sell, offer for
+sale, import and have imported the software, in each case subject to the
+limitations and conditions in this license. This license does not cover any
+patent claims that you cause to be infringed by modifications or additions to
+the software. If you or your company make any written claim that the software
+infringes or contributes to infringement of any patent, your patent license for
+the software granted under these terms ends immediately. If your company makes
+such a claim, your patent license ends immediately for work on behalf of your
+company.
+
+## Notices
+
+You must ensure that anyone who gets a copy of any part of the software from you
+also gets a copy of these terms.
+
+If you modify the software, you must include in any modified copies of the
+software prominent notices stating that you have modified the software.
+
+## No Other Rights
+
+These terms do not imply any licenses other than those expressly granted in
+these terms.
+
+## Termination
+
+If you use the software in violation of these terms, such use is not licensed,
+and your licenses will automatically terminate. If the licensor provides you
+with a notice of your violation, and you cease all violation of this license no
+later than 30 days after you receive that notice, your licenses will be
+reinstated retroactively. However, if you violate these terms after such
+reinstatement, any additional violation of these terms will cause your licenses
+to terminate automatically and permanently.
+
+## No Liability
+
+*As far as the law allows, the software comes as is, without any warranty or
+condition, and the licensor will not be liable to you for any damages arising
+out of these terms or the use or nature of the software, under any kind of
+legal claim.*
+
+## Definitions
+
+The **licensor** is the entity offering these terms, and the **software** is the
+software the licensor makes available under these terms, including any portion
+of it.
+
+**you** refers to the individual or entity agreeing to these terms.
+
+**your company** is any legal entity, sole proprietorship, or other kind of
+organization that you work for, plus all organizations that have control over,
+are under the control of, or are under common control with that
+organization. **control** means ownership of substantially all the assets of an
+entity, or the power to direct its management and policies by vote, contract, or
+otherwise. Control can be direct or indirect.
+
+**your licenses** are all the licenses granted to you for the software under
+these terms.
+
+**use** means anything you do with the software requiring one of your licenses.
+
+**trademark** means trademarks, service marks, and similar rights.
+
+--------------------------------------------------------------------------------
+
+ +
  • +

    Elastic License 2.0

    +

    Used by:

    +
    Elastic License 2.0
     
     URL: https://www.elastic.co/licensing/elastic-license
    diff --git a/scripts/install.sh b/scripts/install.sh
    index 464625db68..eae6dce69f 100755
    --- a/scripts/install.sh
    +++ b/scripts/install.sh
    @@ -11,7 +11,7 @@ BINARY_DOWNLOAD_PREFIX="https://github.com/apollographql/router/releases/downloa
     
     # Router version defined in apollo-router's Cargo.toml
     # Note: Change this line manually during the release steps.
    -PACKAGE_VERSION="v1.37.0"
    +PACKAGE_VERSION="v1.38.0-rc.0"
     
     download_binary() {
         downloader --check
    
    From fdaf8623a50ada296c26de0623470bcb57be75ee Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Thu, 18 Jan 2024 12:46:41 +0000
    Subject: [PATCH 04/11] prep release: v1.38.0-rc.1
    
    ---
     Cargo.lock                                             | 6 +++---
     apollo-router-benchmarks/Cargo.toml                    | 2 +-
     apollo-router-scaffold/Cargo.toml                      | 2 +-
     apollo-router-scaffold/templates/base/Cargo.toml       | 2 +-
     apollo-router-scaffold/templates/base/xtask/Cargo.toml | 2 +-
     apollo-router/Cargo.toml                               | 2 +-
     dockerfiles/tracing/docker-compose.datadog.yml         | 2 +-
     dockerfiles/tracing/docker-compose.jaeger.yml          | 2 +-
     dockerfiles/tracing/docker-compose.zipkin.yml          | 2 +-
     helm/chart/router/Chart.yaml                           | 4 ++--
     helm/chart/router/README.md                            | 6 +++---
     scripts/install.sh                                     | 2 +-
     12 files changed, 17 insertions(+), 17 deletions(-)
    
    diff --git a/Cargo.lock b/Cargo.lock
    index b78641c45d..88d1f0f2ce 100644
    --- a/Cargo.lock
    +++ b/Cargo.lock
    @@ -258,7 +258,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router"
    -version = "1.38.0-rc.0"
    +version = "1.38.0-rc.1"
     dependencies = [
      "access-json",
      "anyhow",
    @@ -411,7 +411,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router-benchmarks"
    -version = "1.38.0-rc.0"
    +version = "1.38.0-rc.1"
     dependencies = [
      "apollo-parser",
      "apollo-router",
    @@ -427,7 +427,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router-scaffold"
    -version = "1.38.0-rc.0"
    +version = "1.38.0-rc.1"
     dependencies = [
      "anyhow",
      "cargo-scaffold",
    diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml
    index 6d417bdbdf..1d7175e3cb 100644
    --- a/apollo-router-benchmarks/Cargo.toml
    +++ b/apollo-router-benchmarks/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router-benchmarks"
    -version = "1.38.0-rc.0"
    +version = "1.38.0-rc.1"
     authors = ["Apollo Graph, Inc. "]
     edition = "2021"
     license = "Elastic-2.0"
    diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml
    index 07ad4d0850..97c9e26490 100644
    --- a/apollo-router-scaffold/Cargo.toml
    +++ b/apollo-router-scaffold/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router-scaffold"
    -version = "1.38.0-rc.0"
    +version = "1.38.0-rc.1"
     authors = ["Apollo Graph, Inc. "]
     edition = "2021"
     license = "Elastic-2.0"
    diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml
    index 4c66c59f66..41480c39e1 100644
    --- a/apollo-router-scaffold/templates/base/Cargo.toml
    +++ b/apollo-router-scaffold/templates/base/Cargo.toml
    @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" }
     apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
     {{else}}
     # Note if you update these dependencies then also update xtask/Cargo.toml
    -apollo-router = "1.38.0-rc.0"
    +apollo-router = "1.38.0-rc.1"
     {{/if}}
     {{/if}}
     async-trait = "0.1.52"
    diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    index 791d9d4296..be1bf4dda2 100644
    --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" }
     {{#if branch}}
     apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
     {{else}}
    -apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0-rc.0" }
    +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0-rc.1" }
     {{/if}}
     {{/if}}
     anyhow = "1.0.58"
    diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml
    index 5385bfcf77..074c5fec7e 100644
    --- a/apollo-router/Cargo.toml
    +++ b/apollo-router/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router"
    -version = "1.38.0-rc.0"
    +version = "1.38.0-rc.1"
     authors = ["Apollo Graph, Inc. "]
     repository = "https://github.com/apollographql/router/"
     documentation = "https://docs.rs/apollo-router"
    diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml
    index 346f506bc0..c3239cd6d9 100644
    --- a/dockerfiles/tracing/docker-compose.datadog.yml
    +++ b/dockerfiles/tracing/docker-compose.datadog.yml
    @@ -3,7 +3,7 @@ services:
     
       apollo-router:
         container_name: apollo-router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.0
    +    image: ghcr.io/apollographql/router:v1.38.0-rc.1
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/datadog.router.yaml:/etc/config/configuration.yaml
    diff --git a/dockerfiles/tracing/docker-compose.jaeger.yml b/dockerfiles/tracing/docker-compose.jaeger.yml
    index 8c004de6cf..fc14773f80 100644
    --- a/dockerfiles/tracing/docker-compose.jaeger.yml
    +++ b/dockerfiles/tracing/docker-compose.jaeger.yml
    @@ -4,7 +4,7 @@ services:
       apollo-router:
         container_name: apollo-router
         #build: ./router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.0
    +    image: ghcr.io/apollographql/router:v1.38.0-rc.1
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/jaeger.router.yaml:/etc/config/configuration.yaml
    diff --git a/dockerfiles/tracing/docker-compose.zipkin.yml b/dockerfiles/tracing/docker-compose.zipkin.yml
    index 9dc4e64864..bf46123bbd 100644
    --- a/dockerfiles/tracing/docker-compose.zipkin.yml
    +++ b/dockerfiles/tracing/docker-compose.zipkin.yml
    @@ -4,7 +4,7 @@ services:
       apollo-router:
         container_name: apollo-router
         build: ./router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.0
    +    image: ghcr.io/apollographql/router:v1.38.0-rc.1
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/zipkin.router.yaml:/etc/config/configuration.yaml
    diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml
    index 23e6476d97..15bba8541d 100644
    --- a/helm/chart/router/Chart.yaml
    +++ b/helm/chart/router/Chart.yaml
    @@ -20,10 +20,10 @@ type: application
     # so it matches the shape of our release process and release automation.
     # By proxy of that decision, this version uses SemVer 2.0.0, though the prefix
     # of "v" is not included.
    -version: 1.38.0-rc.0
    +version: 1.38.0-rc.1
     
     # This is the version number of the application being deployed. This version number should be
     # incremented each time you make changes to the application. Versions are not expected to
     # follow Semantic Versioning. They should reflect the version the application is using.
     # It is recommended to use it with quotes.
    -appVersion: "v1.38.0-rc.0"
    +appVersion: "v1.38.0-rc.1"
    diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md
    index 781e5065e6..8ba4670659 100644
    --- a/helm/chart/router/README.md
    +++ b/helm/chart/router/README.md
    @@ -2,7 +2,7 @@
     
     [router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation
     
    -![Version: 1.38.0-rc.0](https://img.shields.io/badge/Version-1.38.0--rc.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0-rc.0](https://img.shields.io/badge/AppVersion-v1.38.0--rc.0-informational?style=flat-square)
    +![Version: 1.38.0-rc.1](https://img.shields.io/badge/Version-1.38.0--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0-rc.1](https://img.shields.io/badge/AppVersion-v1.38.0--rc.1-informational?style=flat-square)
     
     ## Prerequisites
     
    @@ -11,7 +11,7 @@
     ## Get Repo Info
     
     ```console
    -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.0
    +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.1
     ```
     
     ## Install Chart
    @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.0
     **Important:** only helm3 is supported
     
     ```console
    -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.0 --values my-values.yaml
    +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.1 --values my-values.yaml
     ```
     
     _See [configuration](#configuration) below._
    diff --git a/scripts/install.sh b/scripts/install.sh
    index eae6dce69f..a848befdcb 100755
    --- a/scripts/install.sh
    +++ b/scripts/install.sh
    @@ -11,7 +11,7 @@ BINARY_DOWNLOAD_PREFIX="https://github.com/apollographql/router/releases/downloa
     
     # Router version defined in apollo-router's Cargo.toml
     # Note: Change this line manually during the release steps.
    -PACKAGE_VERSION="v1.38.0-rc.0"
    +PACKAGE_VERSION="v1.38.0-rc.1"
     
     download_binary() {
         downloader --check
    
    From d34045cd85290aab4094ae3b2f1e4299924d0b0a Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Thu, 18 Jan 2024 16:10:18 +0000
    Subject: [PATCH 05/11] prep release: v1.38.0-rc.2
    
    ---
     Cargo.lock                                             | 6 +++---
     apollo-router-benchmarks/Cargo.toml                    | 2 +-
     apollo-router-scaffold/Cargo.toml                      | 2 +-
     apollo-router-scaffold/templates/base/Cargo.toml       | 2 +-
     apollo-router-scaffold/templates/base/xtask/Cargo.toml | 2 +-
     apollo-router/Cargo.toml                               | 2 +-
     dockerfiles/tracing/docker-compose.datadog.yml         | 2 +-
     dockerfiles/tracing/docker-compose.jaeger.yml          | 2 +-
     dockerfiles/tracing/docker-compose.zipkin.yml          | 2 +-
     helm/chart/router/Chart.yaml                           | 4 ++--
     helm/chart/router/README.md                            | 6 +++---
     scripts/install.sh                                     | 2 +-
     12 files changed, 17 insertions(+), 17 deletions(-)
    
    diff --git a/Cargo.lock b/Cargo.lock
    index 88d1f0f2ce..d879b29578 100644
    --- a/Cargo.lock
    +++ b/Cargo.lock
    @@ -258,7 +258,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router"
    -version = "1.38.0-rc.1"
    +version = "1.38.0-rc.2"
     dependencies = [
      "access-json",
      "anyhow",
    @@ -411,7 +411,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router-benchmarks"
    -version = "1.38.0-rc.1"
    +version = "1.38.0-rc.2"
     dependencies = [
      "apollo-parser",
      "apollo-router",
    @@ -427,7 +427,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router-scaffold"
    -version = "1.38.0-rc.1"
    +version = "1.38.0-rc.2"
     dependencies = [
      "anyhow",
      "cargo-scaffold",
    diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml
    index 1d7175e3cb..c643753e8c 100644
    --- a/apollo-router-benchmarks/Cargo.toml
    +++ b/apollo-router-benchmarks/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router-benchmarks"
    -version = "1.38.0-rc.1"
    +version = "1.38.0-rc.2"
     authors = ["Apollo Graph, Inc. "]
     edition = "2021"
     license = "Elastic-2.0"
    diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml
    index 97c9e26490..943c68f7ed 100644
    --- a/apollo-router-scaffold/Cargo.toml
    +++ b/apollo-router-scaffold/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router-scaffold"
    -version = "1.38.0-rc.1"
    +version = "1.38.0-rc.2"
     authors = ["Apollo Graph, Inc. "]
     edition = "2021"
     license = "Elastic-2.0"
    diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml
    index 41480c39e1..c0126141d2 100644
    --- a/apollo-router-scaffold/templates/base/Cargo.toml
    +++ b/apollo-router-scaffold/templates/base/Cargo.toml
    @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" }
     apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
     {{else}}
     # Note if you update these dependencies then also update xtask/Cargo.toml
    -apollo-router = "1.38.0-rc.1"
    +apollo-router = "1.38.0-rc.2"
     {{/if}}
     {{/if}}
     async-trait = "0.1.52"
    diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    index be1bf4dda2..b9fb83be1e 100644
    --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" }
     {{#if branch}}
     apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
     {{else}}
    -apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0-rc.1" }
    +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0-rc.2" }
     {{/if}}
     {{/if}}
     anyhow = "1.0.58"
    diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml
    index 074c5fec7e..bf954e8227 100644
    --- a/apollo-router/Cargo.toml
    +++ b/apollo-router/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router"
    -version = "1.38.0-rc.1"
    +version = "1.38.0-rc.2"
     authors = ["Apollo Graph, Inc. "]
     repository = "https://github.com/apollographql/router/"
     documentation = "https://docs.rs/apollo-router"
    diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml
    index c3239cd6d9..4bfce466e5 100644
    --- a/dockerfiles/tracing/docker-compose.datadog.yml
    +++ b/dockerfiles/tracing/docker-compose.datadog.yml
    @@ -3,7 +3,7 @@ services:
     
       apollo-router:
         container_name: apollo-router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.1
    +    image: ghcr.io/apollographql/router:v1.38.0-rc.2
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/datadog.router.yaml:/etc/config/configuration.yaml
    diff --git a/dockerfiles/tracing/docker-compose.jaeger.yml b/dockerfiles/tracing/docker-compose.jaeger.yml
    index fc14773f80..060f41bf66 100644
    --- a/dockerfiles/tracing/docker-compose.jaeger.yml
    +++ b/dockerfiles/tracing/docker-compose.jaeger.yml
    @@ -4,7 +4,7 @@ services:
       apollo-router:
         container_name: apollo-router
         #build: ./router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.1
    +    image: ghcr.io/apollographql/router:v1.38.0-rc.2
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/jaeger.router.yaml:/etc/config/configuration.yaml
    diff --git a/dockerfiles/tracing/docker-compose.zipkin.yml b/dockerfiles/tracing/docker-compose.zipkin.yml
    index bf46123bbd..3ab761ce03 100644
    --- a/dockerfiles/tracing/docker-compose.zipkin.yml
    +++ b/dockerfiles/tracing/docker-compose.zipkin.yml
    @@ -4,7 +4,7 @@ services:
       apollo-router:
         container_name: apollo-router
         build: ./router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.1
    +    image: ghcr.io/apollographql/router:v1.38.0-rc.2
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/zipkin.router.yaml:/etc/config/configuration.yaml
    diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml
    index 15bba8541d..f2da350568 100644
    --- a/helm/chart/router/Chart.yaml
    +++ b/helm/chart/router/Chart.yaml
    @@ -20,10 +20,10 @@ type: application
     # so it matches the shape of our release process and release automation.
     # By proxy of that decision, this version uses SemVer 2.0.0, though the prefix
     # of "v" is not included.
    -version: 1.38.0-rc.1
    +version: 1.38.0-rc.2
     
     # This is the version number of the application being deployed. This version number should be
     # incremented each time you make changes to the application. Versions are not expected to
     # follow Semantic Versioning. They should reflect the version the application is using.
     # It is recommended to use it with quotes.
    -appVersion: "v1.38.0-rc.1"
    +appVersion: "v1.38.0-rc.2"
    diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md
    index 8ba4670659..4e3b162433 100644
    --- a/helm/chart/router/README.md
    +++ b/helm/chart/router/README.md
    @@ -2,7 +2,7 @@
     
     [router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation
     
    -![Version: 1.38.0-rc.1](https://img.shields.io/badge/Version-1.38.0--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0-rc.1](https://img.shields.io/badge/AppVersion-v1.38.0--rc.1-informational?style=flat-square)
    +![Version: 1.38.0-rc.2](https://img.shields.io/badge/Version-1.38.0--rc.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0-rc.2](https://img.shields.io/badge/AppVersion-v1.38.0--rc.2-informational?style=flat-square)
     
     ## Prerequisites
     
    @@ -11,7 +11,7 @@
     ## Get Repo Info
     
     ```console
    -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.1
    +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.2
     ```
     
     ## Install Chart
    @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.1
     **Important:** only helm3 is supported
     
     ```console
    -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.1 --values my-values.yaml
    +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.2 --values my-values.yaml
     ```
     
     _See [configuration](#configuration) below._
    diff --git a/scripts/install.sh b/scripts/install.sh
    index 28fbcc6dc2..75ff21d06f 100755
    --- a/scripts/install.sh
    +++ b/scripts/install.sh
    @@ -11,7 +11,7 @@ BINARY_DOWNLOAD_PREFIX="https://github.com/apollographql/router/releases/downloa
     
     # Router version defined in apollo-router's Cargo.toml
     # Note: Change this line manually during the release steps.
    -PACKAGE_VERSION="v1.38.0-rc.1"
    +PACKAGE_VERSION="v1.38.0-rc.2"
     
     download_binary() {
         downloader --check
    
    From b84b6c189a5e33e5291ab01538522bd20a44deb7 Mon Sep 17 00:00:00 2001
    From: Bruno Lehnen 
    Date: Fri, 19 Jan 2024 09:52:01 -0300
    Subject: [PATCH 06/11] Fix NewRelic tracing link (#4508)
    
    Fixes #4507
    ---
     docs/source/configuration/telemetry/exporters/tracing/otlp.mdx | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/docs/source/configuration/telemetry/exporters/tracing/otlp.mdx b/docs/source/configuration/telemetry/exporters/tracing/otlp.mdx
    index 10402b17ed..23888186d1 100644
    --- a/docs/source/configuration/telemetry/exporters/tracing/otlp.mdx
    +++ b/docs/source/configuration/telemetry/exporters/tracing/otlp.mdx
    @@ -13,7 +13,7 @@ OTLP is the native protocol for OpenTelemetry. It can be used to export traces o
     * [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/)
     * [Datadog](./datadog)
     * [Jaeger](./jaeger)
    -* [New Relic](./newrelic)
    +* [New Relic](./new-relic)
     
     For general tracing configuration, refer to [Router Tracing Configuration](./overview).
     
    
    From 8bec2cf359d04301e0810383173aa9c46796a0ef Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Fri, 19 Jan 2024 15:58:21 +0200
    Subject: [PATCH 07/11] Apply suggestions from code review
    
    Co-authored-by: Edward Huang <18322228+shorgi@users.noreply.github.com>
    ---
     .changesets/feat_bnjjj_feat_4346.md             |  4 +++-
     .changesets/feat_geal_redis_namespace.md        |  6 ++++--
     .../feat_simon_http_max_request_bytes_ga.md     | 17 +++++------------
     .changesets/fix_bnjjj_fix_4397.md               |  4 +++-
     .changesets/fix_bnjjj_fix_metric_name.md        |  4 ++--
     .changesets/fix_bryn_fix_datadog_default_url.md |  3 ++-
     ...ix_bryn_improve_jwks_parse_error_handling.md | 11 ++++++-----
     .changesets/fix_geal_update_router_bridge2.md   |  6 +++---
     ..._lb_requires_selection_set_abstract_types.md |  6 ++++--
     .changesets/maint_garypen_m1_changes.md         |  2 +-
     10 files changed, 33 insertions(+), 30 deletions(-)
    
    diff --git a/.changesets/feat_bnjjj_feat_4346.md b/.changesets/feat_bnjjj_feat_4346.md
    index d912b5262c..b418cab2ac 100644
    --- a/.changesets/feat_bnjjj_feat_4346.md
    +++ b/.changesets/feat_bnjjj_feat_4346.md
    @@ -1,4 +1,6 @@
    -### Add options to set username and password separately for Redis ([Issue #4346](https://github.com/apollographql/router/issues/4346))
    +### New configuration options for Redis username and password ([Issue #4346](https://github.com/apollographql/router/issues/4346))
    +
    +This release introduces new configuration options to set your Redis username and password.
     
     Example of configuration:
     
    diff --git a/.changesets/feat_geal_redis_namespace.md b/.changesets/feat_geal_redis_namespace.md
    index fe6db14703..1418da9a10 100644
    --- a/.changesets/feat_geal_redis_namespace.md
    +++ b/.changesets/feat_geal_redis_namespace.md
    @@ -1,5 +1,7 @@
    -### Redis key namespace ([Issue #4247](https://github.com/apollographql/router/issues/4247))
    +### Support Redis key namespace ([Issue #4247](https://github.com/apollographql/router/issues/4247))
     
    -This implements key namespacing in redis caching. The namespace, if provided, will be added as a prefix to the key: `namespace:key`.
    +This release introduces support for Redis key namespace. 
    +
    +The namespace, if provided, is prefixed to the key: `namespace:key`.
     
     By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4458
    \ No newline at end of file
    diff --git a/.changesets/feat_simon_http_max_request_bytes_ga.md b/.changesets/feat_simon_http_max_request_bytes_ga.md
    index cf9a90f29a..da0a441b9b 100644
    --- a/.changesets/feat_simon_http_max_request_bytes_ga.md
    +++ b/.changesets/feat_simon_http_max_request_bytes_ga.md
    @@ -1,24 +1,17 @@
     ### Promote HTTP request size limit from experimental to general availability ([PR #4442](https://github.com/apollographql/router/pull/4442))
     
    -By default Apollo Router limits the size of the HTTP request body it will read from the network to 2 MB. In this version, the YAML configuration to change the limit is promoted from experimental to general availability.
    +In this release, the router YAML configuration option to set the maximum size of an HTTP  request body is promoted [from experimental to general availability](https://www.apollographql.com/docs/resources/product-launch-stages/). The option was previously `experimental_http_max_request_bytes` and is now `http_max_request_bytes`.
     
    -For more information about launch stages, please see the documentation here: https://www.apollographql.com/docs/resources/product-launch-stages/
    +The previous `experimental_http_max_request_bytes` option works but produces a warning.
     
    -Before increasing this limit significantly consider testing performance in an environment similar to your production,
    -especially if some clients are untrusted. Many concurrent large requests could cause the Router to run out of memory.
    -
    -Previous configuration will warn but still work:
    +To migrate, rename `experimental_http_max_request_bytes` to the generally available `http_max_request_bytes` option: 
     
     ```yaml
     limits:
    -  experimental_http_max_request_bytes: 2000000 # Default value: 2 MB
    +  http_max_request_bytes: 2000000 # Default value: 2 MB
     ```
     
    -The warning can be fixed by removing the `experimental_` prefix:
    +By default, the Apollo Router limits the size of the HTTP request body it reads from the network to 2 MB. Before increasing this limit, consider testing performance in an environment similar to your production, especially if some clients are untrusted. Many concurrent large requests can cause the router to run out of memory.
     
    -```yaml
    -limits:
    -  http_max_request_bytes: 2000000 # Default value: 2 MB
    -```
     
     By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4442
    diff --git a/.changesets/fix_bnjjj_fix_4397.md b/.changesets/fix_bnjjj_fix_4397.md
    index f280e9514f..804a022239 100644
    --- a/.changesets/fix_bnjjj_fix_4397.md
    +++ b/.changesets/fix_bnjjj_fix_4397.md
    @@ -22,7 +22,9 @@ or if you used a variable like this:
     }
     ```
     
    -you received different response. Now it both answers:
    +The router returned responses with different formats.
    +
    +This release fixes the issue, and the router returns the same response for both examples:
     
     ```json
     { "data": {}}
    diff --git a/.changesets/fix_bnjjj_fix_metric_name.md b/.changesets/fix_bnjjj_fix_metric_name.md
    index 9f3d6e4aa9..23422d90cd 100644
    --- a/.changesets/fix_bnjjj_fix_metric_name.md
    +++ b/.changesets/fix_bnjjj_fix_metric_name.md
    @@ -1,5 +1,5 @@
    -### Use the right conventions for batching metrics ([PR #4424](https://github.com/apollographql/router/pull/4424))
    +### Rename batching metric for naming convention conformance ([PR #4424](https://github.com/apollographql/router/pull/4424))
     
    -Rename `apollo_router.operations.batching` to  `apollo.router.operations.batching` because it doesn't follow our conventions with `apollo.router.` prefix.
    +In this release, the `apollo_router.operations.batching` metric has been renamed to  `apollo.router.operations.batching` to conform to our naming convention of a `apollo.router.` prefix.
     
     By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4424
    \ No newline at end of file
    diff --git a/.changesets/fix_bryn_fix_datadog_default_url.md b/.changesets/fix_bryn_fix_datadog_default_url.md
    index 1ad1bb674d..904014bd53 100644
    --- a/.changesets/fix_bryn_fix_datadog_default_url.md
    +++ b/.changesets/fix_bryn_fix_datadog_default_url.md
    @@ -1,6 +1,7 @@
     ### Fix the Datadog default tracing exporter URL ([Issue #4415](https://github.com/apollographql/router/issues/4416))
     
    -The default URL for the Datadog exporter was incorrectly set to `http://localhost:8126/v0.4/traces` which caused issues for users that were running different agent versions.
    +The default URL for the Datadog exporter was incorrectly set to `http://localhost:8126/v0.4/traces`. This caused issues for users running different agent versions.
    +
     This is now fixed and matches the exporter URL of `http://127.0.0.1:8126`.
     
     By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4444
    diff --git a/.changesets/fix_bryn_improve_jwks_parse_error_handling.md b/.changesets/fix_bryn_improve_jwks_parse_error_handling.md
    index 77596b8d5c..ddc0800fa9 100644
    --- a/.changesets/fix_bryn_improve_jwks_parse_error_handling.md
    +++ b/.changesets/fix_bryn_improve_jwks_parse_error_handling.md
    @@ -1,15 +1,16 @@
     ### Improve JWKS parse error handling ([Issue #4463](https://github.com/apollographql/router/issues/4463))
     
    -When parsing a JWKS the Router should ignore any JWKs that fail to parse, rather than failing the entire JWKS parse. 
    -This can happen when the JWK is malformed, or when a JWK uses an unknown algorithm. When this happens a warning will be output to the logs, for example: 
    +When parsing a JSON Web Key Set (JWKS), the router now ignores any JWK that fails to parse rather than failing the entire JWKS parse.
    + 
    +This can happen when the JWK is malformed, or when a JWK uses an unknown algorithm. When this happens a warning is output to the logs, for example: 
     
     ```
     2024-01-11T15:32:01.220034Z WARN fetch jwks{url=file:///tmp/jwks.json,}  ignoring a key since it is not valid, enable debug logs to full content err=unknown variant `UnknownAlg`, expected one of `HS256`, `HS384`, `HS512`, `ES256`, `ES384`, `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `PS512`, `EdDSA` alg="UnknownAlg" index=2
     ```
     
     Log messages have the following attributes:
    -* `alg` The JWK algorithm if known or ``
    -* `index` The index of the JWK within the JWKS.
    -* `url` The URL of the JWKS that had the issue.
    +* `alg` - the JWK algorithm if known or ``
    +* `index` - the index of the JWK within the JWKS
    +* `url` - the URL of the JWKS that had the issue
     
     By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4465
    diff --git a/.changesets/fix_geal_update_router_bridge2.md b/.changesets/fix_geal_update_router_bridge2.md
    index 276ae8730f..d657bffc49 100644
    --- a/.changesets/fix_geal_update_router_bridge2.md
    +++ b/.changesets/fix_geal_update_router_bridge2.md
    @@ -1,7 +1,7 @@
    -### update router-bridge to v0.5.14+v2.6.3 ([PR #4468](https://github.com/apollographql/router/pull/4468))
    +### Update router-bridge to v0.5.14+v2.6.3 ([PR #4468](https://github.com/apollographql/router/pull/4468))
     
     This federation update contains query planning fixes for:
    -* invalid typename used when calling into a subgraph that uses `@interfaceObject`
    -* performance issue when generating planning paths for union members that use `@requires`
    +* Invalid typename used when calling into a subgraph that uses `@interfaceObject`
    +* A performance issue when generating planning paths for union members that use `@requires`
     
     By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4468
    \ No newline at end of file
    diff --git a/.changesets/fix_lb_requires_selection_set_abstract_types.md b/.changesets/fix_lb_requires_selection_set_abstract_types.md
    index df21d4e10b..c1cb3234d6 100644
    --- a/.changesets/fix_lb_requires_selection_set_abstract_types.md
    +++ b/.changesets/fix_lb_requires_selection_set_abstract_types.md
    @@ -1,5 +1,7 @@
    -### fix: build entity representations with inline fragments correctly ([PR #4441](https://github.com/apollographql/router/pull/4441))
    +### Fix building entity representations with inline fragments ([PR #4441](https://github.com/apollographql/router/pull/4441))
     
    -This uses a more flexible abstract type / concrete type check when applying a selection set to an entity reference before it's used in a fetch node. Previous to this change, we would drop data from the reference when it selected using an inline fragment (e.g. `@requires(fields: "... on Foo { a } ... on Bar { b }")`).
    +Previously, when applying a selection set to an entity reference before it's used in a fetch node, the router would drop data from the reference when it selected using an inline fragment, for example `@requires(fields: "... on Foo { a } ... on Bar { b }")`).
    +
    +This release uses a more flexible abstract type / concrete type check when applying a selection set to an entity reference before it's used in a fetch node. 
     
     By [@lennyburdette](https://github.com/lennyburdette) in https://github.com/apollographql/router/pull/4441
    diff --git a/.changesets/maint_garypen_m1_changes.md b/.changesets/maint_garypen_m1_changes.md
    index 6dbadae6a3..dbba285465 100644
    --- a/.changesets/maint_garypen_m1_changes.md
    +++ b/.changesets/maint_garypen_m1_changes.md
    @@ -5,7 +5,7 @@ Prior to this release, macOS binaries were produced on Intel build machines in o
     Our [CI provider has announced the deprecation of the macOS Intel build machines](https://discuss.circleci.com/t/macos-intel-support-deprecation-in-january-2024/48718) and we are updating our build pipeline to use the new Apple Silicon based machines.
     
     This will have the following effects:
    - - Older, Intel based, macOS systems will no longer be able to execute our macOS router binaries
    + - Older, Intel based, macOS systems will no longer be able to execute our macOS router binaries.
      - Newer, Apple Silicon based, macOS systems will get a performance boost due to no longer requiring Rosetta2 support.
     
     We have raised [an issue](https://github.com/apollographql/router/issues/4483) that describes options for Intel based macOS users. Please let us know in that issue if the alternatives we suggest (e.g., Docker, source build) don't work for you so we can discuss alternatives.
    
    From dddbbba4c0c774eaa63dfdd9aa2769c03c6ded3e Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Fri, 19 Jan 2024 16:07:43 +0200
    Subject: [PATCH 08/11] Apply suggestions from code review
    
    Co-authored-by: Edward Huang <18322228+shorgi@users.noreply.github.com>
    ---
     .changesets/fix_bnjjj_fix_4397.md | 9 ++++++---
     1 file changed, 6 insertions(+), 3 deletions(-)
    
    diff --git a/.changesets/fix_bnjjj_fix_4397.md b/.changesets/fix_bnjjj_fix_4397.md
    index 804a022239..613a74e466 100644
    --- a/.changesets/fix_bnjjj_fix_4397.md
    +++ b/.changesets/fix_bnjjj_fix_4397.md
    @@ -1,6 +1,8 @@
    -### Fix format_response for statically skipped root selection set ([Issue #4397](https://github.com/apollographql/router/issues/4397))
    +### Fix response format for statically skipped root selection set ([Issue #4397](https://github.com/apollographql/router/issues/4397))
     
    -If in your GraphQL operation you have a root selection set skipped by `@skip` or `@include` directive, before this fix the results you got if you hardcoded the value of the parameter in `@skip` directive like this for example:
    +Previously, the Apollo Router didn't return responses with the same format for some operations with a root selection set that were skipped by `@skip` or `@include` directives.  
    +
    +For example, if you hardcoded the parameter in a `@skip` directive:
     
     ```graphql
     {
    @@ -11,7 +13,7 @@ If in your GraphQL operation you have a root selection set skipped by `@skip` or
     }
     ```
     
    -or if you used a variable like this:
    +Or if you used a variable:
     
     ```graphql
     {
    @@ -22,6 +24,7 @@ or if you used a variable like this:
     }
     ```
     
    +
     The router returned responses with different formats.
     
     This release fixes the issue, and the router returns the same response for both examples:
    
    From 1232eff872ce73a0b9d2f8ae7dea3cc7a3758f10 Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Fri, 19 Jan 2024 20:11:14 +0200
    Subject: [PATCH 09/11] Update .changesets/fix_geal_expose_operationkind.md
    
    ---
     .changesets/fix_geal_expose_operationkind.md | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/.changesets/fix_geal_expose_operationkind.md b/.changesets/fix_geal_expose_operationkind.md
    index 1e30c0c635..78009b6631 100644
    --- a/.changesets/fix_geal_expose_operationkind.md
    +++ b/.changesets/fix_geal_expose_operationkind.md
    @@ -1,4 +1,4 @@
    -### make OperationKind public ([Issue #4410](https://github.com/apollographql/router/issues/4410))
    +### make `OperationKind` public ([Issue #4410](https://github.com/apollographql/router/issues/4410))
     
     `OperationKind` was already used in a public field but the type itself was still private.
     
    
    From a71c777f64adc7f2e0dda3b27457675d25a1dff7 Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Fri, 19 Jan 2024 20:36:45 +0200
    Subject: [PATCH 10/11] Apply suggestions from code review
    
    Co-authored-by: Edward Huang <18322228+shorgi@users.noreply.github.com>
    ---
     .changesets/fix_bnjjj_fix_log_level.md | 8 ++++----
     1 file changed, 4 insertions(+), 4 deletions(-)
    
    diff --git a/.changesets/fix_bnjjj_fix_log_level.md b/.changesets/fix_bnjjj_fix_log_level.md
    index 29a242dc97..93d06241df 100644
    --- a/.changesets/fix_bnjjj_fix_log_level.md
    +++ b/.changesets/fix_bnjjj_fix_log_level.md
    @@ -1,9 +1,9 @@
    -### Set log level to `info` by default for the entire application ([PR #4451](https://github.com/apollographql/router/pull/4451))
    +### Set application default log level to `info` ([PR #4451](https://github.com/apollographql/router/pull/4451))
     
    -By default the log level of the application if `RUST_LOG` is not set is `info` and if you provide `--log` or `APOLLO_RUST_LOG` value then it overrides the default `info` log level with `apollo_router=...` because it only impacts the `apollo_router` crate, not external custom plugin and so one.
    +This release sets the default log level to `info` for an entire application, including custom external plugins, when the [`RUST_LOG` environment variable](https://www.apollographql.com/docs/router/configuration/telemetry/exporters/logging/overview/#log-level) isn't set.
     
    -By doing this fix, by default if you have a custom plugin with info logs or metrics you won't have to enforce `RUST_LOG=info` everytime, it will work as expected.
    +Previously, if you set the `--log` command-line option or `APOLLO_RUST_LOG` environment variable, their log level setting impacted more than the `apollo_router` crate and caused custom plugins with `info` logs or metrics to have to manually set `RUST_LOG=info`.
     
    -> Note: it doesn't impact the behavior of `RUST_LOG` if you set it.
    +> Note: setting `RUST_LOG` changes the application log level.
     
     By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4451
    \ No newline at end of file
    
    From 9bf8834973505690eb8c918f5642a6305d9201aa Mon Sep 17 00:00:00 2001
    From: Jesse Rosenberger 
    Date: Fri, 19 Jan 2024 21:41:03 +0200
    Subject: [PATCH 11/11] prep release: v1.38.0
    
    ---
     .changesets/feat_bnjjj_feat_4346.md           |  19 --
     .changesets/feat_geal_redis_namespace.md      |   7 -
     .../feat_simon_http_max_request_bytes_ga.md   |  17 --
     .changesets/fix_bnjjj_fix_4397.md             |  36 ----
     .changesets/fix_bnjjj_fix_log_level.md        |   9 -
     .changesets/fix_bnjjj_fix_metric_name.md      |   5 -
     .../fix_bryn_fix_datadog_default_url.md       |   7 -
     ..._bryn_improve_jwks_parse_error_handling.md |  16 --
     .changesets/fix_bryn_jwks_logs.md             |  13 --
     .changesets/fix_geal_expose_operationkind.md  |   5 -
     .changesets/fix_geal_update_router_bridge2.md |   7 -
     ...b_requires_selection_set_abstract_types.md |   7 -
     .changesets/maint_garypen_m1_changes.md       |  13 --
     CHANGELOG.md                                  | 202 +++++++++++++++++-
     Cargo.lock                                    |   6 +-
     apollo-router-benchmarks/Cargo.toml           |   2 +-
     apollo-router-scaffold/Cargo.toml             |   2 +-
     .../templates/base/Cargo.toml                 |   2 +-
     .../templates/base/xtask/Cargo.toml           |   2 +-
     apollo-router/Cargo.toml                      |   2 +-
     .../tracing/docker-compose.datadog.yml        |   2 +-
     dockerfiles/tracing/docker-compose.jaeger.yml |   2 +-
     dockerfiles/tracing/docker-compose.zipkin.yml |   2 +-
     docs/source/federation-version-support.mdx    |  10 +-
     helm/chart/router/Chart.yaml                  |   4 +-
     helm/chart/router/README.md                   |   6 +-
     scripts/install.sh                            |   2 +-
     27 files changed, 219 insertions(+), 188 deletions(-)
     delete mode 100644 .changesets/feat_bnjjj_feat_4346.md
     delete mode 100644 .changesets/feat_geal_redis_namespace.md
     delete mode 100644 .changesets/feat_simon_http_max_request_bytes_ga.md
     delete mode 100644 .changesets/fix_bnjjj_fix_4397.md
     delete mode 100644 .changesets/fix_bnjjj_fix_log_level.md
     delete mode 100644 .changesets/fix_bnjjj_fix_metric_name.md
     delete mode 100644 .changesets/fix_bryn_fix_datadog_default_url.md
     delete mode 100644 .changesets/fix_bryn_improve_jwks_parse_error_handling.md
     delete mode 100644 .changesets/fix_bryn_jwks_logs.md
     delete mode 100644 .changesets/fix_geal_expose_operationkind.md
     delete mode 100644 .changesets/fix_geal_update_router_bridge2.md
     delete mode 100644 .changesets/fix_lb_requires_selection_set_abstract_types.md
     delete mode 100644 .changesets/maint_garypen_m1_changes.md
    
    diff --git a/.changesets/feat_bnjjj_feat_4346.md b/.changesets/feat_bnjjj_feat_4346.md
    deleted file mode 100644
    index b418cab2ac..0000000000
    --- a/.changesets/feat_bnjjj_feat_4346.md
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -### New configuration options for Redis username and password ([Issue #4346](https://github.com/apollographql/router/issues/4346))
    -
    -This release introduces new configuration options to set your Redis username and password.
    -
    -Example of configuration:
    -
    -```yaml title="router.yaml"
    -supergraph:
    -  query_planning:
    -    experimental_cache:
    -      redis: #highlight-line
    -        urls: ["redis://..."] #highlight-line
    -        username: admin/123 # Optional, can be part of the urls directly, mainly useful if you have special character like '/' in your password that doesn't work in url. This field takes precedence over the username in the URL
    -        password: admin # Optional, can be part of the urls directly, mainly useful if you have special character like '/' in your password that doesn't work in url. This field takes precedence over the password in the URL
    -        timeout: 5ms # Optional, by default: 2ms
    -        ttl: 24h # Optional, by default no expiration
    -```
    -
    -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4453
    \ No newline at end of file
    diff --git a/.changesets/feat_geal_redis_namespace.md b/.changesets/feat_geal_redis_namespace.md
    deleted file mode 100644
    index 1418da9a10..0000000000
    --- a/.changesets/feat_geal_redis_namespace.md
    +++ /dev/null
    @@ -1,7 +0,0 @@
    -### Support Redis key namespace ([Issue #4247](https://github.com/apollographql/router/issues/4247))
    -
    -This release introduces support for Redis key namespace. 
    -
    -The namespace, if provided, is prefixed to the key: `namespace:key`.
    -
    -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4458
    \ No newline at end of file
    diff --git a/.changesets/feat_simon_http_max_request_bytes_ga.md b/.changesets/feat_simon_http_max_request_bytes_ga.md
    deleted file mode 100644
    index da0a441b9b..0000000000
    --- a/.changesets/feat_simon_http_max_request_bytes_ga.md
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -### Promote HTTP request size limit from experimental to general availability ([PR #4442](https://github.com/apollographql/router/pull/4442))
    -
    -In this release, the router YAML configuration option to set the maximum size of an HTTP  request body is promoted [from experimental to general availability](https://www.apollographql.com/docs/resources/product-launch-stages/). The option was previously `experimental_http_max_request_bytes` and is now `http_max_request_bytes`.
    -
    -The previous `experimental_http_max_request_bytes` option works but produces a warning.
    -
    -To migrate, rename `experimental_http_max_request_bytes` to the generally available `http_max_request_bytes` option: 
    -
    -```yaml
    -limits:
    -  http_max_request_bytes: 2000000 # Default value: 2 MB
    -```
    -
    -By default, the Apollo Router limits the size of the HTTP request body it reads from the network to 2 MB. Before increasing this limit, consider testing performance in an environment similar to your production, especially if some clients are untrusted. Many concurrent large requests can cause the router to run out of memory.
    -
    -
    -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4442
    diff --git a/.changesets/fix_bnjjj_fix_4397.md b/.changesets/fix_bnjjj_fix_4397.md
    deleted file mode 100644
    index 613a74e466..0000000000
    --- a/.changesets/fix_bnjjj_fix_4397.md
    +++ /dev/null
    @@ -1,36 +0,0 @@
    -### Fix response format for statically skipped root selection set ([Issue #4397](https://github.com/apollographql/router/issues/4397))
    -
    -Previously, the Apollo Router didn't return responses with the same format for some operations with a root selection set that were skipped by `@skip` or `@include` directives.  
    -
    -For example, if you hardcoded the parameter in a `@skip` directive:
    -
    -```graphql
    -{
    -    get @skip(if: true) {
    -        id
    -        name
    -    }
    -}
    -```
    -
    -Or if you used a variable:
    -
    -```graphql
    -{
    -    get($skip: Boolean = true) @skip(if: $skip) {
    -        id
    -        name
    -    }
    -}
    -```
    -
    -
    -The router returned responses with different formats.
    -
    -This release fixes the issue, and the router returns the same response for both examples:
    -
    -```json
    -{ "data": {}}
    -```
    -
    -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4466
    diff --git a/.changesets/fix_bnjjj_fix_log_level.md b/.changesets/fix_bnjjj_fix_log_level.md
    deleted file mode 100644
    index 93d06241df..0000000000
    --- a/.changesets/fix_bnjjj_fix_log_level.md
    +++ /dev/null
    @@ -1,9 +0,0 @@
    -### Set application default log level to `info` ([PR #4451](https://github.com/apollographql/router/pull/4451))
    -
    -This release sets the default log level to `info` for an entire application, including custom external plugins, when the [`RUST_LOG` environment variable](https://www.apollographql.com/docs/router/configuration/telemetry/exporters/logging/overview/#log-level) isn't set.
    -
    -Previously, if you set the `--log` command-line option or `APOLLO_RUST_LOG` environment variable, their log level setting impacted more than the `apollo_router` crate and caused custom plugins with `info` logs or metrics to have to manually set `RUST_LOG=info`.
    -
    -> Note: setting `RUST_LOG` changes the application log level.
    -
    -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4451
    \ No newline at end of file
    diff --git a/.changesets/fix_bnjjj_fix_metric_name.md b/.changesets/fix_bnjjj_fix_metric_name.md
    deleted file mode 100644
    index 23422d90cd..0000000000
    --- a/.changesets/fix_bnjjj_fix_metric_name.md
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -### Rename batching metric for naming convention conformance ([PR #4424](https://github.com/apollographql/router/pull/4424))
    -
    -In this release, the `apollo_router.operations.batching` metric has been renamed to  `apollo.router.operations.batching` to conform to our naming convention of a `apollo.router.` prefix.
    -
    -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4424
    \ No newline at end of file
    diff --git a/.changesets/fix_bryn_fix_datadog_default_url.md b/.changesets/fix_bryn_fix_datadog_default_url.md
    deleted file mode 100644
    index 904014bd53..0000000000
    --- a/.changesets/fix_bryn_fix_datadog_default_url.md
    +++ /dev/null
    @@ -1,7 +0,0 @@
    -### Fix the Datadog default tracing exporter URL ([Issue #4415](https://github.com/apollographql/router/issues/4416))
    -
    -The default URL for the Datadog exporter was incorrectly set to `http://localhost:8126/v0.4/traces`. This caused issues for users running different agent versions.
    -
    -This is now fixed and matches the exporter URL of `http://127.0.0.1:8126`.
    -
    -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4444
    diff --git a/.changesets/fix_bryn_improve_jwks_parse_error_handling.md b/.changesets/fix_bryn_improve_jwks_parse_error_handling.md
    deleted file mode 100644
    index ddc0800fa9..0000000000
    --- a/.changesets/fix_bryn_improve_jwks_parse_error_handling.md
    +++ /dev/null
    @@ -1,16 +0,0 @@
    -### Improve JWKS parse error handling ([Issue #4463](https://github.com/apollographql/router/issues/4463))
    -
    -When parsing a JSON Web Key Set (JWKS), the router now ignores any JWK that fails to parse rather than failing the entire JWKS parse.
    - 
    -This can happen when the JWK is malformed, or when a JWK uses an unknown algorithm. When this happens a warning is output to the logs, for example: 
    -
    -```
    -2024-01-11T15:32:01.220034Z WARN fetch jwks{url=file:///tmp/jwks.json,}  ignoring a key since it is not valid, enable debug logs to full content err=unknown variant `UnknownAlg`, expected one of `HS256`, `HS384`, `HS512`, `ES256`, `ES384`, `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `PS512`, `EdDSA` alg="UnknownAlg" index=2
    -```
    -
    -Log messages have the following attributes:
    -* `alg` - the JWK algorithm if known or ``
    -* `index` - the index of the JWK within the JWKS
    -* `url` - the URL of the JWKS that had the issue
    -
    -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4465
    diff --git a/.changesets/fix_bryn_jwks_logs.md b/.changesets/fix_bryn_jwks_logs.md
    deleted file mode 100644
    index fc69570af0..0000000000
    --- a/.changesets/fix_bryn_jwks_logs.md
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -### Improve logging for JWKS download failures ([Issue #4448](https://github.com/apollographql/router/issues/4448))
    -
    -To enable users to debug JWKS download and parse failures more easily, we've added more detailed logging to the router. The router now logs the following information when a JWKS download or parse fails:
    -
    -```
    -2024-01-09T12:32:20.174144Z ERROR fetch jwks{url=http://bad.jwks.com/,}  could not create JSON Value from url content, enable debug logs to see content e=expected value at line 1 column 1
    -```
    -Enabling debug logs via `APOLLO_LOG=debug` or `--logs DEBUG` will show the full JWKS content being parsed:
    -```
    -2024-01-09T12:32:20.153055Z DEBUG fetch jwks{url=http://bad.jwks.com/,}  parsing JWKS data="invalid jwks"
    -```
    -
    -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4449
    diff --git a/.changesets/fix_geal_expose_operationkind.md b/.changesets/fix_geal_expose_operationkind.md
    deleted file mode 100644
    index 78009b6631..0000000000
    --- a/.changesets/fix_geal_expose_operationkind.md
    +++ /dev/null
    @@ -1,5 +0,0 @@
    -### make `OperationKind` public ([Issue #4410](https://github.com/apollographql/router/issues/4410))
    -
    -`OperationKind` was already used in a public field but the type itself was still private.
    -
    -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4489
    \ No newline at end of file
    diff --git a/.changesets/fix_geal_update_router_bridge2.md b/.changesets/fix_geal_update_router_bridge2.md
    deleted file mode 100644
    index d657bffc49..0000000000
    --- a/.changesets/fix_geal_update_router_bridge2.md
    +++ /dev/null
    @@ -1,7 +0,0 @@
    -### Update router-bridge to v0.5.14+v2.6.3 ([PR #4468](https://github.com/apollographql/router/pull/4468))
    -
    -This federation update contains query planning fixes for:
    -* Invalid typename used when calling into a subgraph that uses `@interfaceObject`
    -* A performance issue when generating planning paths for union members that use `@requires`
    -
    -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4468
    \ No newline at end of file
    diff --git a/.changesets/fix_lb_requires_selection_set_abstract_types.md b/.changesets/fix_lb_requires_selection_set_abstract_types.md
    deleted file mode 100644
    index c1cb3234d6..0000000000
    --- a/.changesets/fix_lb_requires_selection_set_abstract_types.md
    +++ /dev/null
    @@ -1,7 +0,0 @@
    -### Fix building entity representations with inline fragments ([PR #4441](https://github.com/apollographql/router/pull/4441))
    -
    -Previously, when applying a selection set to an entity reference before it's used in a fetch node, the router would drop data from the reference when it selected using an inline fragment, for example `@requires(fields: "... on Foo { a } ... on Bar { b }")`).
    -
    -This release uses a more flexible abstract type / concrete type check when applying a selection set to an entity reference before it's used in a fetch node. 
    -
    -By [@lennyburdette](https://github.com/lennyburdette) in https://github.com/apollographql/router/pull/4441
    diff --git a/.changesets/maint_garypen_m1_changes.md b/.changesets/maint_garypen_m1_changes.md
    deleted file mode 100644
    index dbba285465..0000000000
    --- a/.changesets/maint_garypen_m1_changes.md
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -### Pre-built binaries are only available for Apple Silicon ([Issue #3902](https://github.com/apollographql/router/issues/3902))
    -
    -Prior to this release, macOS binaries were produced on Intel build machines in our CI pipeline. The binaries produced would also work on Apple Silicon (M1, etc.. chips) through the functionality provided by [Rosetta2](https://support.apple.com/en-gb/HT211861).
    -
    -Our [CI provider has announced the deprecation of the macOS Intel build machines](https://discuss.circleci.com/t/macos-intel-support-deprecation-in-january-2024/48718) and we are updating our build pipeline to use the new Apple Silicon based machines.
    -
    -This will have the following effects:
    - - Older, Intel based, macOS systems will no longer be able to execute our macOS router binaries.
    - - Newer, Apple Silicon based, macOS systems will get a performance boost due to no longer requiring Rosetta2 support.
    -
    -We have raised [an issue](https://github.com/apollographql/router/issues/4483) that describes options for Intel based macOS users. Please let us know in that issue if the alternatives we suggest (e.g., Docker, source build) don't work for you so we can discuss alternatives.
    -
    -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4484
    \ No newline at end of file
    diff --git a/CHANGELOG.md b/CHANGELOG.md
    index b05e8a1dc8..5c10416337 100644
    --- a/CHANGELOG.md
    +++ b/CHANGELOG.md
    @@ -4,6 +4,190 @@ All notable changes to Router will be documented in this file.
     
     This project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec/v2.0.0.html).
     
    +# [1.38.0] - 2024-01-19
    +
    +## 🚀 Features
    +
    +### Promote HTTP request size limit from experimental to general availability ([PR #4442](https://github.com/apollographql/router/pull/4442))
    +
    +In this release, the router YAML configuration option to set the maximum size of an HTTP  request body is promoted [from experimental to general availability](https://www.apollographql.com/docs/resources/product-launch-stages/). The option was previously `experimental_http_max_request_bytes` and is now `http_max_request_bytes`.
    +
    +The previous `experimental_http_max_request_bytes` option works but produces a warning.
    +
    +To migrate, rename `experimental_http_max_request_bytes` to the generally available `http_max_request_bytes` option:
    +
    +```yaml
    +limits:
    +  http_max_request_bytes: 2000000 # Default value: 2 MB
    +```
    +
    +By default, the Apollo Router limits the size of the HTTP request body it reads from the network to 2 MB. Before increasing this limit, consider testing performance in an environment similar to your production, especially if some clients are untrusted. Many concurrent large requests can cause the router to run out of memory.
    +
    +
    +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4442
    +
    +### New configuration options for Redis username and password ([Issue #4346](https://github.com/apollographql/router/issues/4346))
    +
    +This release introduces new configuration options to set your Redis username and password.
    +
    +Example of configuration:
    +
    +```yaml title="router.yaml"
    +supergraph:
    +  query_planning:
    +    experimental_cache:
    +      redis: #highlight-line
    +        urls: ["redis://..."] #highlight-line
    +        username: admin/123 # Optional, can be part of the urls directly, mainly useful if you have special character like '/' in your password that doesn't work in url. This field takes precedence over the username in the URL
    +        password: admin # Optional, can be part of the urls directly, mainly useful if you have special character like '/' in your password that doesn't work in url. This field takes precedence over the password in the URL
    +        timeout: 5ms # Optional, by default: 2ms
    +        ttl: 24h # Optional, by default no expiration
    +```
    +
    +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4453
    +
    +### Support Redis key namespace ([Issue #4247](https://github.com/apollographql/router/issues/4247))
    +
    +This release introduces support for Redis key namespace.
    +
    +The namespace, if provided, is prefixed to the key: `namespace:key`.
    +
    +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4458
    +
    +## 🐛 Fixes
    +
    +### Fix the Datadog default tracing exporter URL ([Issue #4415](https://github.com/apollographql/router/issues/4416))
    +
    +The default URL for the Datadog exporter was incorrectly set to `http://localhost:8126/v0.4/traces`. This caused issues for users running different agent versions.
    +
    +This is now fixed and matches the exporter URL of `http://127.0.0.1:8126`.
    +
    +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4444
    +
    +### Set application default log level to `info` ([PR #4451](https://github.com/apollographql/router/pull/4451))
    +
    +This release sets the default log level to `info` for an entire application, including custom external plugins, when the [`RUST_LOG` environment variable](https://www.apollographql.com/docs/router/configuration/telemetry/exporters/logging/overview/#log-level) isn't set.
    +
    +Previously, if you set the `--log` command-line option or `APOLLO_RUST_LOG` environment variable, their log level setting impacted more than the `apollo_router` crate and caused custom plugins with `info` logs or metrics to have to manually set `RUST_LOG=info`.
    +
    +> Note: setting `RUST_LOG` changes the application log level.
    +
    +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4451
    +
    +### Fix response format for statically skipped root selection set ([Issue #4397](https://github.com/apollographql/router/issues/4397))
    +
    +Previously, the Apollo Router didn't return responses with the same format for some operations with a root selection set that were skipped by `@skip` or `@include` directives.
    +
    +For example, if you hardcoded the parameter in a `@skip` directive:
    +
    +```graphql
    +{
    +    get @skip(if: true) {
    +        id
    +        name
    +    }
    +}
    +```
    +
    +Or if you used a variable:
    +
    +```graphql
    +{
    +    get(: Boolean = true) @skip(if: ) {
    +        id
    +        name
    +    }
    +}
    +```
    +
    +
    +The router returned responses with different formats.
    +
    +This release fixes the issue, and the router returns the same response for both examples:
    +
    +```json
    +{ "data": {}}
    +```
    +
    +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4466
    +
    +### Fix building entity representations with inline fragments ([PR #4441](https://github.com/apollographql/router/pull/4441))
    +
    +Previously, when applying a selection set to an entity reference before it's used in a fetch node, the router would drop data from the reference when it selected using an inline fragment, for example `@requires(fields: "... on Foo { a } ... on Bar { b }")`).
    +
    +This release uses a more flexible abstract type / concrete type check when applying a selection set to an entity reference before it's used in a fetch node.
    +
    +By [@lennyburdette](https://github.com/lennyburdette) in https://github.com/apollographql/router/pull/4441
    +
    +### Improve logging for JWKS download failures ([Issue #4448](https://github.com/apollographql/router/issues/4448))
    +
    +To enable users to debug JWKS download and parse failures more easily, we've added more detailed logging to the router. The router now logs the following information when a JWKS download or parse fails:
    +
    +```
    +2024-01-09T12:32:20.174144Z ERROR fetch jwks{url=http://bad.jwks.com/,}  could not create JSON Value from url content, enable debug logs to see content e=expected value at line 1 column 1
    +```
    +Enabling debug logs via `APOLLO_LOG=debug` or `--logs DEBUG` will show the full JWKS content being parsed:
    +```
    +2024-01-09T12:32:20.153055Z DEBUG fetch jwks{url=http://bad.jwks.com/,}  parsing JWKS data="invalid jwks"
    +```
    +
    +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4449
    +
    +### Rename batching metric for naming convention conformance ([PR #4424](https://github.com/apollographql/router/pull/4424))
    +
    +In this release, the `apollo_router.operations.batching` metric has been renamed to  `apollo.router.operations.batching` to conform to our naming convention of a `apollo.router.` prefix.
    +
    +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/4424
    +
    +### Improve JWKS parse error handling ([Issue #4463](https://github.com/apollographql/router/issues/4463))
    +
    +When parsing a JSON Web Key Set (JWKS), the router now ignores any JWK that fails to parse rather than failing the entire JWKS parse.
    +
    +This can happen when the JWK is malformed, or when a JWK uses an unknown algorithm. When this happens a warning is output to the logs, for example:
    +
    +```
    +2024-01-11T15:32:01.220034Z WARN fetch jwks{url=file:///tmp/jwks.json,}  ignoring a key since it is not valid, enable debug logs to full content err=unknown variant `UnknownAlg`, expected one of `HS256`, `HS384`, `HS512`, `ES256`, `ES384`, `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `PS512`, `EdDSA` alg="UnknownAlg" index=2
    +```
    +
    +Log messages have the following attributes:
    +* `alg` - the JWK algorithm if known or ``
    +* `index` - the index of the JWK within the JWKS
    +* `url` - the URL of the JWKS that had the issue
    +
    +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4465
    +
    +### make `OperationKind` public ([Issue #4410](https://github.com/apollographql/router/issues/4410))
    +
    +`OperationKind` was already used in a public field but the type itself was still private.
    +
    +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4489
    +
    +### Update to Federation v2.6.3 ([PR #4468](https://github.com/apollographql/router/pull/4468))
    +
    +This federation update contains query planning fixes for:
    +* Invalid typename used when calling into a subgraph that uses `@interfaceObject`
    +* A performance issue when generating planning paths for union members that use `@requires`
    +
    +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4468
    +
    +## 🛠 Maintenance
    +
    +### Pre-built binaries are only available for Apple Silicon ([Issue #3902](https://github.com/apollographql/router/issues/3902))
    +
    +Prior to this release, macOS binaries were produced on Intel build machines in our CI pipeline. The binaries produced would also work on Apple Silicon (M1, etc.. chips) through the functionality provided by [Rosetta2](https://support.apple.com/en-gb/HT211861).
    +
    +Our [CI provider has announced the deprecation of the macOS Intel build machines](https://discuss.circleci.com/t/macos-intel-support-deprecation-in-january-2024/48718) and we are updating our build pipeline to use the new Apple Silicon based machines.
    +
    +This will have the following effects:
    + - Older, Intel based, macOS systems will no longer be able to execute our macOS router binaries.
    + - Newer, Apple Silicon based, macOS systems will get a performance boost due to no longer requiring Rosetta2 support.
    +
    +We have raised [an issue](https://github.com/apollographql/router/issues/4483) that describes options for Intel based macOS users. Please let us know in that issue if the alternatives we suggest (e.g., Docker, source build) don't work for you so we can discuss alternatives.
    +
    +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4484
    +
    +
    +
     # [1.37.0] - 2024-01-05
     
     ## 🚀 Features
    @@ -18,24 +202,24 @@ The subscription callback protocol feature is now generally available (GA).
     
     You must update your router configuration with the following steps:
     
    -1. Change the name of the option from `subscription.mode.preview_callback` to `subscription.mode.callback`. 
    +1. Change the name of the option from `subscription.mode.preview_callback` to `subscription.mode.callback`.
     
         Failure to use the updated option name when running the router will result in an error and the router won't start.
     
     
         In the example of the GA configuration below, the option is renamed as `callback`.
    -    
    +
     
     2. Update the `public_url` field to include the full URL of your callback endpoint.
     
         Previously in preview, the public URL used by the router was the automatic concatenation of the `public_url` and `path` fields. In GA, the behavior has changed, and the router uses exactly the value set in `public_url`. This enables you to configure your own public URL, for example if you have a proxy in front of the router and want to configure redirection with the public URL.
    -    
    +
         In the example of the GA configuration below, the path `/custom_callback` is no longer automatically appended to `public_url`, so instead it has to be set explicitly as `public_url: http://127.0.0.1:4000/custom_callback`.
     
    -3. Configure the new `heartbeat_interval` field to set the period that a heartbeat must be sent to the callback endpoint for the subscription operation. 
    +3. Configure the new `heartbeat_interval` field to set the period that a heartbeat must be sent to the callback endpoint for the subscription operation.
     
         The default heartbeat interval is 5 seconds. Heartbeats can be disabled by setting `heartbeat_interval: disabled`.
    -    
    +
     ```yaml
     subscription:
       enabled: true
    @@ -170,7 +354,7 @@ By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router
     
     Two new configuration options have been added to reduce the impact of complex queries on the planner:
     
    -- `experimental_plans_limit` limits the number of generated plans. (Note: already generated plans remain valid, but they may not be optimal.) 
    +- `experimental_plans_limit` limits the number of generated plans. (Note: already generated plans remain valid, but they may not be optimal.)
     
     - `experimental_paths_limit` stops the planning process entirely if the number of possible paths for a selection in the schema gets too large.
     
    @@ -211,8 +395,8 @@ apq:
             tls:
               certificate_authorities: ""
               client_authentication:
    -            certificate_chain: 
    -            key: 
    +            certificate_chain:
    +            key:
     ```
     
     By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4304
    @@ -278,7 +462,7 @@ The enhanced telemetry enables new benefits. They include:
     * Diagnosing network related issues with standard [Open Telemetry HTTP attributes](https://opentelemetry.io/docs/specs/semconv/http/http-metrics/).
     * Improving performance by avoiding the use of large attributes on spans such as `graphql.document`.
     
    -See the updated [telemetry documentation](configuration/telemetry/overview) for details on the new enhancements. 
    +See the updated [telemetry documentation](configuration/telemetry/overview) for details on the new enhancements.
     
     By [@bnjjj](https://github.com/bnjjj), [@bryncooke](https://github.com/bryncooke) and [Edward Huang](https://github.com/shorgi) in https://github.com/apollographql/router/pull/4102 and https://github.com/apollographql/router/pull/4129
     
    diff --git a/Cargo.lock b/Cargo.lock
    index d879b29578..bc1f4c0aaa 100644
    --- a/Cargo.lock
    +++ b/Cargo.lock
    @@ -258,7 +258,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router"
    -version = "1.38.0-rc.2"
    +version = "1.38.0"
     dependencies = [
      "access-json",
      "anyhow",
    @@ -411,7 +411,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router-benchmarks"
    -version = "1.38.0-rc.2"
    +version = "1.38.0"
     dependencies = [
      "apollo-parser",
      "apollo-router",
    @@ -427,7 +427,7 @@ dependencies = [
     
     [[package]]
     name = "apollo-router-scaffold"
    -version = "1.38.0-rc.2"
    +version = "1.38.0"
     dependencies = [
      "anyhow",
      "cargo-scaffold",
    diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml
    index c643753e8c..affbcf5781 100644
    --- a/apollo-router-benchmarks/Cargo.toml
    +++ b/apollo-router-benchmarks/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router-benchmarks"
    -version = "1.38.0-rc.2"
    +version = "1.38.0"
     authors = ["Apollo Graph, Inc. "]
     edition = "2021"
     license = "Elastic-2.0"
    diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml
    index 943c68f7ed..480ed45d65 100644
    --- a/apollo-router-scaffold/Cargo.toml
    +++ b/apollo-router-scaffold/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router-scaffold"
    -version = "1.38.0-rc.2"
    +version = "1.38.0"
     authors = ["Apollo Graph, Inc. "]
     edition = "2021"
     license = "Elastic-2.0"
    diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml
    index c0126141d2..d14ea1662c 100644
    --- a/apollo-router-scaffold/templates/base/Cargo.toml
    +++ b/apollo-router-scaffold/templates/base/Cargo.toml
    @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" }
     apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
     {{else}}
     # Note if you update these dependencies then also update xtask/Cargo.toml
    -apollo-router = "1.38.0-rc.2"
    +apollo-router = "1.38.0"
     {{/if}}
     {{/if}}
     async-trait = "0.1.52"
    diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    index b9fb83be1e..619577525a 100644
    --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml
    @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" }
     {{#if branch}}
     apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
     {{else}}
    -apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0-rc.2" }
    +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.38.0" }
     {{/if}}
     {{/if}}
     anyhow = "1.0.58"
    diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml
    index bf954e8227..b52b0e1f8c 100644
    --- a/apollo-router/Cargo.toml
    +++ b/apollo-router/Cargo.toml
    @@ -1,6 +1,6 @@
     [package]
     name = "apollo-router"
    -version = "1.38.0-rc.2"
    +version = "1.38.0"
     authors = ["Apollo Graph, Inc. "]
     repository = "https://github.com/apollographql/router/"
     documentation = "https://docs.rs/apollo-router"
    diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml
    index 4bfce466e5..5b7cd5cc53 100644
    --- a/dockerfiles/tracing/docker-compose.datadog.yml
    +++ b/dockerfiles/tracing/docker-compose.datadog.yml
    @@ -3,7 +3,7 @@ services:
     
       apollo-router:
         container_name: apollo-router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.2
    +    image: ghcr.io/apollographql/router:v1.38.0
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/datadog.router.yaml:/etc/config/configuration.yaml
    diff --git a/dockerfiles/tracing/docker-compose.jaeger.yml b/dockerfiles/tracing/docker-compose.jaeger.yml
    index 060f41bf66..664169e364 100644
    --- a/dockerfiles/tracing/docker-compose.jaeger.yml
    +++ b/dockerfiles/tracing/docker-compose.jaeger.yml
    @@ -4,7 +4,7 @@ services:
       apollo-router:
         container_name: apollo-router
         #build: ./router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.2
    +    image: ghcr.io/apollographql/router:v1.38.0
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/jaeger.router.yaml:/etc/config/configuration.yaml
    diff --git a/dockerfiles/tracing/docker-compose.zipkin.yml b/dockerfiles/tracing/docker-compose.zipkin.yml
    index 3ab761ce03..3c95e91983 100644
    --- a/dockerfiles/tracing/docker-compose.zipkin.yml
    +++ b/dockerfiles/tracing/docker-compose.zipkin.yml
    @@ -4,7 +4,7 @@ services:
       apollo-router:
         container_name: apollo-router
         build: ./router
    -    image: ghcr.io/apollographql/router:v1.38.0-rc.2
    +    image: ghcr.io/apollographql/router:v1.38.0
         volumes:
           - ./supergraph.graphql:/etc/config/supergraph.graphql
           - ./router/zipkin.router.yaml:/etc/config/configuration.yaml
    diff --git a/docs/source/federation-version-support.mdx b/docs/source/federation-version-support.mdx
    index ed4d32c3b4..1d555e034e 100644
    --- a/docs/source/federation-version-support.mdx
    +++ b/docs/source/federation-version-support.mdx
    @@ -35,7 +35,15 @@ The table below shows which version of federation each router release is compile
         
         
             
    -            v1.36.0 and later (see latest releases)
    +            v1.38.0 and later (see latest releases)
    +        
    +        
    +            2.6.3
    +        
    +    
    +    
    +        
    +            v1.36.0 - v1.37.0
             
             
                 2.6.2
    diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml
    index f2da350568..3152cff521 100644
    --- a/helm/chart/router/Chart.yaml
    +++ b/helm/chart/router/Chart.yaml
    @@ -20,10 +20,10 @@ type: application
     # so it matches the shape of our release process and release automation.
     # By proxy of that decision, this version uses SemVer 2.0.0, though the prefix
     # of "v" is not included.
    -version: 1.38.0-rc.2
    +version: 1.38.0
     
     # This is the version number of the application being deployed. This version number should be
     # incremented each time you make changes to the application. Versions are not expected to
     # follow Semantic Versioning. They should reflect the version the application is using.
     # It is recommended to use it with quotes.
    -appVersion: "v1.38.0-rc.2"
    +appVersion: "v1.38.0"
    diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md
    index 4e3b162433..73b0df2fc0 100644
    --- a/helm/chart/router/README.md
    +++ b/helm/chart/router/README.md
    @@ -2,7 +2,7 @@
     
     [router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation
     
    -![Version: 1.38.0-rc.2](https://img.shields.io/badge/Version-1.38.0--rc.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0-rc.2](https://img.shields.io/badge/AppVersion-v1.38.0--rc.2-informational?style=flat-square)
    +![Version: 1.38.0](https://img.shields.io/badge/Version-1.38.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.38.0](https://img.shields.io/badge/AppVersion-v1.38.0-informational?style=flat-square)
     
     ## Prerequisites
     
    @@ -11,7 +11,7 @@
     ## Get Repo Info
     
     ```console
    -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.2
    +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0
     ```
     
     ## Install Chart
    @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.2
     **Important:** only helm3 is supported
     
     ```console
    -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0-rc.2 --values my-values.yaml
    +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.38.0 --values my-values.yaml
     ```
     
     _See [configuration](#configuration) below._
    diff --git a/scripts/install.sh b/scripts/install.sh
    index 75ff21d06f..61e690338d 100755
    --- a/scripts/install.sh
    +++ b/scripts/install.sh
    @@ -11,7 +11,7 @@ BINARY_DOWNLOAD_PREFIX="https://github.com/apollographql/router/releases/downloa
     
     # Router version defined in apollo-router's Cargo.toml
     # Note: Change this line manually during the release steps.
    -PACKAGE_VERSION="v1.38.0-rc.2"
    +PACKAGE_VERSION="v1.38.0"
     
     download_binary() {
         downloader --check