Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for google.api.VisibilityRules annotations to hide APIs and fields #2578

Merged
merged 28 commits into from
Mar 15, 2022

Conversation

BCook98
Copy link
Contributor

@BCook98 BCook98 commented Mar 10, 2022

References to other Issues or PRs

#1791

Have you read the Contributing Guidelines?

Yes

Brief description of what is fixed or changed

This PR adds support for annotations to set the visibility restrictions of fields, services, methods and enum values. These rules can be used in combination with a new option visibility_restriction_selectors to hide fields and APIs from the generated API output.

Google's google.api.VisibilityRules are used as a standard annotation.

This is useful when generating documentation where protobuf APIs are used both internally and externally, where some fields may need to be hidden. Or if an API field isn't fully baked yet it can be tagged with BETA or PREVIEW and only generated to internal or private documentation.

Example

opt: visibility_restriction_selectors=PREVIEW will result in:

Input Example:

service Echo {
    rpc EchoInternal(VisibilityRuleSimpleMessage) returns (VisibilityRuleSimpleMessage) {
        option (google.api.method_visibility).restriction = "INTERNAL";
        option (google.api.http) = {
            get: "/v1/example/echo_internal"
        };
    }
    rpc EchoInternalAndPreview(VisibilityRuleSimpleMessage) returns (VisibilityRuleSimpleMessage) {
        option (google.api.method_visibility).restriction = "INTERNAL,PREVIEW";
        option (google.api.http) = {
            get: "/v1/example/echo_internal_and_preview"
        };
    }
}

message VisibilityRuleSimpleMessage {
     enum VisibilityEnum {
          UNSPECIFIED = 0;
          VISIBLE = 1;
          INTERNAL = 2 [(google.api.value_visibility).restriction = "INTERNAL"];
          PREVIEW = 3 [(google.api.value_visibility).restriction = "INTERNAL,PREVIEW"];
     }
     
     string internal_field = 1 [(google.api.field_visibility).restriction = "INTERNAL"];
     string preview_field = 2 [(google.api.field_visibility).restriction = "INTERNAL,PREVIEW"];
     VisibilityEnum an_enum = 3;
}

Output json:

{
    "paths": {
        "/v1/example/echo_internal_and_preview": {
            "get": {
                "summary": "EchoInternalAndPreview is a internal and preview API that should be visibile in the OpenAPI spec.",
                "operationId": "VisibilityRuleEchoService_EchoInternalAndPreview",
                "responses": {
                    "200": {
                        "description": "A successful response.",
                        "schema": {
                        "$ref": "#/definitions/examplepbVisibilityRuleSimpleMessage"
                        }
                    },
                    "default": {
                        "description": "An unexpected error response.",
                        "schema": {
                            "$ref": "#/definitions/rpcStatus"
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "previewField",
                        "in": "query",
                        "required": false,
                        "type": "string"
                    },
                    {
                        "name": "anEnum",
                        "in": "query",
                        "required": false,
                        "type": "string",
                        "enum": [
                            "UNSPECIFIED",
                            "VISIBLE",
                            "PREVIEW"
                        ],
                        "default": "UNSPECIFIED"
                    }
                ],
                "tags": [
                    "VisibilityRuleEchoService"
                ]
            }
        }
    }
}

Other comments

This PR doesn't add support for selectors in visibility rules, just using them as annotations. See https://github.com/googleapis/googleapis/blob/master/google/api/visibility.proto#L71 for more detail. This is useful if you want to provide an external list of rules.

Support is also missing for adding annotations to messages and enums, this was excluded due to complexity and potential edge cases when excluding a type that is required somewhere else in the OpenAPI Schema.

@google-cla
Copy link

google-cla bot commented Mar 10, 2022

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

For more information, open the CLA check for this pull request.

@johanbrandhorst
Copy link
Collaborator

This is very cool, I will need some time to review, but this is a commonly requested feature. Thanks!

@johanbrandhorst
Copy link
Collaborator

johanbrandhorst commented Mar 11, 2022

Closing and reopening to trigger CI runs

@johanbrandhorst
Copy link
Collaborator

Closing and reopening to trigger CI... not sure why this is happening 😬.

Copy link
Collaborator

@johanbrandhorst johanbrandhorst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a really top notch contribution, even including docs 😍. I have some initial questions:

  • It appears that the visibility labels themselves can be arbitrary strings, both in these examples and in the Google protobuf sources. Because of this, I think we need to make it clear that there is no implicit hierarchy in the labels (which it seemed like to me initially), and the visibility selector will only match those rules that are provided exactly.
  • Another consequence of this is that unless you intend to invoke the plugin with different options, you only really need the INTERNAL label, probably. Maybe we should have the example include an invocation without a selector, with INTERNAL and with PREVIEW respectively. We might also need an example with more than one selector. Maybe only one with more than one selector actually. What do you think?

docs/docs/mapping/customizing_openapi_output.md Outdated Show resolved Hide resolved
docs/docs/mapping/customizing_openapi_output.md Outdated Show resolved Hide resolved
protoc-gen-openapiv2/defs.bzl Outdated Show resolved Hide resolved
internal/descriptor/registry.go Outdated Show resolved Hide resolved
docs/docs/mapping/customizing_openapi_output.md Outdated Show resolved Hide resolved
protoc-gen-openapiv2/internal/genopenapi/template.go Outdated Show resolved Hide resolved
}

for _, restriction := range restrictions {
if reg.GetVisibilityRestrictionSelectorsMap()[strings.TrimSpace(restriction)] {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see us doing any case folding anywhere, which means that this matching is case sensitive, which I think makes sense, just wanted to check that this was intentional?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep this is intentionally case sensitive. Though there is no real justification for it being that way, I can't someone wanting internal and INTERNAL to mean different things.

But something doesn't feel right about making this case insensitive.

protoc-gen-openapiv2/internal/genopenapi/template.go Outdated Show resolved Hide resolved
@BCook98
Copy link
Contributor Author

BCook98 commented Mar 11, 2022

Thanks for your feedback, much appreciated 🙏

Let me take some time to revisit the docs and make it clear that these selectors are completely arbitrary and add some more examples around it!


I may need your help with Bazel and those imports... From what I can see I don't think I am doing the wrong thing with https://github.com/grpc-ecosystem/grpc-gateway/pull/2578/files#diff-c5fc7051bb345b50fbe0e92d76c0eadf61359cb387e689308ecc1ade85cf96c7R106. In fact bazel test //... requires them in that format over what it is suggesting, otherwise it fails.

@BCook98
Copy link
Contributor Author

BCook98 commented Mar 13, 2022

flag doesn't work, the last supplied flag is the one that is used. But using StringArray from https://github.com/spf13/pflag will allow for multiple flags to be supplied.

Happy to also use ; as a delimiter instead if you'd like to avoid adding additional dependencies.

diff --git a/examples/internal/proto/examplepb/visibility_rule_preview_and_internal_echo_service.buf.gen.yaml b/examples/internal/proto/examplepb/visibility_rule_preview_and_internal_echo_service.buf.gen.yaml
new file mode 100644
index 0000000..0a2a741
--- /dev/null
+++ b/examples/internal/proto/examplepb/visibility_rule_preview_and_internal_echo_service.buf.gen.yaml
@@ -0,0 +1,7 @@
+version: v1
+plugins:
+  - name: openapiv2
+    out: .
+    opt:
+      - visibility_restriction_selectors=PREVIEW
+      - visibility_restriction_selectors=INTERNAL
diff --git a/go.mod b/go.mod
index afa6531..1fc926f 100644
--- a/go.mod
+++ b/go.mod
@@ -16,6 +16,7 @@ require (
 )
 
 require (
+	github.com/spf13/pflag v1.0.5 // indirect
 	golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
 	golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
 	golang.org/x/text v0.3.7 // indirect
diff --git a/go.sum b/go.sum
index 71b3f14..881fa88 100644
--- a/go.sum
+++ b/go.sum
@@ -133,6 +133,8 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
 github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
+github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
diff --git a/internal/descriptor/registry.go b/internal/descriptor/registry.go
index 87a2cfe..7be4576 100644
--- a/internal/descriptor/registry.go
+++ b/internal/descriptor/registry.go
@@ -576,9 +576,12 @@ func (r *Registry) GetOmitEnumDefaultValue() bool {
 }
 
 // SetVisibilityRestrictionSelectors sets the visibility restriction selectors.
-func (r *Registry) SetVisibilityRestrictionSelectors(selectors string) {
+func (r *Registry) SetVisibilityRestrictionSelectors(selectors *[]string) {
 	r.visibilityRestrictionSelectors = make(map[string]bool)
-	for _, selector := range strings.Split(selectors, ",") {
+	if selectors == nil {
+		return
+	}
+	for _, selector := range *selectors {
 		r.visibilityRestrictionSelectors[strings.TrimSpace(selector)] = true
 	}
 }
diff --git a/protoc-gen-openapiv2/main.go b/protoc-gen-openapiv2/main.go
index 5a290f3..801c59a 100644
--- a/protoc-gen-openapiv2/main.go
+++ b/protoc-gen-openapiv2/main.go
@@ -1,7 +1,6 @@
 package main
 
 import (
-	"flag"
 	"fmt"
 	"os"
 	"strings"
@@ -10,6 +9,7 @@ import (
 	"github.com/grpc-ecosystem/grpc-gateway/v2/internal/codegenerator"
 	"github.com/grpc-ecosystem/grpc-gateway/v2/internal/descriptor"
 	"github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/internal/genopenapi"
+	flag "github.com/spf13/pflag"
 	"google.golang.org/protobuf/proto"
 	"google.golang.org/protobuf/types/pluginpb"
 )
@@ -37,7 +37,7 @@ var (
 	generateUnboundMethods         = flag.Bool("generate_unbound_methods", false, "generate swagger metadata even for RPC methods that have no HttpRule annotation")
 	recursiveDepth                 = flag.Int("recursive-depth", 1000, "maximum recursion count allowed for a field type")
 	omitEnumDefaultValue           = flag.Bool("omit_enum_default_value", false, "if set, omit default enum value")
-	visibilityRestrictionSelectors = flag.String("visibility_restriction_selectors", "", "comma separated list of `google.api.VisibilityRule` visibility labels to include in the generated output when a visibility annotation is defined. Elements without visibility annotations are unaffected by this setting.")
+	visibilityRestrictionSelectors = flag.StringArray("visibility_restriction_selectors", []string{}, "comma separated list of `google.api.VisibilityRule` visibility labels to include in the generated output when a visibility annotation is defined. Elements without visibility annotations are unaffected by this setting.")
 )
 
 // Variables set by goreleaser at build time
@@ -115,7 +115,7 @@ func main() {
 	reg.SetGenerateUnboundMethods(*generateUnboundMethods)
 	reg.SetRecursiveDepth(*recursiveDepth)
 	reg.SetOmitEnumDefaultValue(*omitEnumDefaultValue)
-	reg.SetVisibilityRestrictionSelectors(*visibilityRestrictionSelectors)
+	reg.SetVisibilityRestrictionSelectors(visibilityRestrictionSelectors)
 	if err := reg.SetRepeatedPathParamSeparator(*repeatedPathParamSeparator); err != nil {
 		emitError(err)
 		return

@johanbrandhorst
Copy link
Collaborator

Instead of adding a dependency, what about a custom flag variable like this: https://stackoverflow.com/a/28323276? I think it'll be important for us to emphasize how to use multiple values correctly (remove any mention of comma separation from all the docs).

WORKSPACE Show resolved Hide resolved
@@ -554,6 +577,30 @@ func renderMessagesAsDefinition(messages messageMap, d openapiDefinitionsObject,
return nil
}

// isVisible checks if a field/RPC is visible based on the visibility restriction
// combined with the `visibility_restriction_selectors`.
// Elements with an overlap on `visibility_restriction_selectors`, those without are not visible.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// Elements with an overlap on `visibility_restriction_selectors`, those without are not visible.
// Elements with no visibility rule or elements with an overlap on `visibility_restriction_selectors` are visible, while those with no overlap are not visible.

Copy link
Collaborator

@johanbrandhorst johanbrandhorst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Almost there, just a few nits left!

docs/docs/mapping/customizing_openapi_output.md Outdated Show resolved Hide resolved
docs/docs/mapping/customizing_openapi_output.md Outdated Show resolved Hide resolved
docs/docs/mapping/customizing_openapi_output.md Outdated Show resolved Hide resolved
protoc-gen-openapiv2/defs.bzl Outdated Show resolved Hide resolved
protoc-gen-openapiv2/defs.bzl Outdated Show resolved Hide resolved
utilities/string_array_flag.go Outdated Show resolved Hide resolved
Copy link
Collaborator

@johanbrandhorst johanbrandhorst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🎉

@BCook98
Copy link
Contributor Author

BCook98 commented Mar 14, 2022

Thanks for the feedback! I've addressed all of those comments.

Just running a quick manual test on our API protos to make sure it's all still working as expected.

@johanbrandhorst
Copy link
Collaborator

Looks like we need another generation after the master merge

@BCook98
Copy link
Contributor Author

BCook98 commented Mar 14, 2022

I believe I have fixed all of the test/lint failures.

Also a manual test across our APIs gives us the expected output 🎉.

@johanbrandhorst
Copy link
Collaborator

🤞🏻

@johanbrandhorst johanbrandhorst merged commit cecba55 into grpc-ecosystem:master Mar 15, 2022
@johanbrandhorst
Copy link
Collaborator

Thank you for this incredible contribution ❤️

BCook98 added a commit to SafetyCulture/grpc-gateway that referenced this pull request Mar 15, 2022
This was accidentally copy pasted in my last PR, breaking documentation generation.

grpc-ecosystem#2578
johanbrandhorst pushed a commit that referenced this pull request Mar 16, 2022
* Remove duplicated endraw statement for documentation generation

This was accidentally copy pasted in my last PR, breaking documentation generation.

#2578

* Remove proto3 reference for code block

* Fix code block format

* proto -> protobuf
oliverchang pushed a commit to google/osv.dev that referenced this pull request Sep 16, 2022
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[github.com/grpc-ecosystem/grpc-gateway/v2](https://togithub.com/grpc-ecosystem/grpc-gateway)
| require | minor | `v2.0.1` -> `v2.11.3` |
| [go](https://go.dev/) ([source](https://togithub.com/golang/go)) |
golang | minor | `1.15` -> `1.19` |
|
[google.golang.org/grpc/cmd/protoc-gen-go-grpc](https://togithub.com/grpc/grpc-go)
| require | minor | `v1.0.1` -> `v1.2.0` |
|
[google.golang.org/protobuf](https://togithub.com/protocolbuffers/protobuf-go)
| require | minor | `v1.25.0` -> `v1.28.1` |

---

### Release Notes

<details>
<summary>grpc-ecosystem/grpc-gateway</summary>

###
[`v2.11.3`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.11.3)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.11.2...v2.11.3)

This release adds signed release binaries with SLSA signatures. Please
see the
[README](https://togithub.com/grpc-ecosystem/grpc-gateway#download-the-binaries)
for more information.

#### What's Changed

- fix: unnecessary -e arg for echo command in dockerfile by
[@&#8203;MakDon](https://togithub.com/MakDon) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2840](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2840)
- Fix identifiers generated from snake-cased enums not matching pb.go
definitions by [@&#8203;jbaxx](https://togithub.com/jbaxx) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2826](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2826)
- switch ci build env version to 1.19 by
[@&#8203;MakDon](https://togithub.com/MakDon) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2845](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2845)
- Signed release binaries with SLSA signatures by
[@&#8203;laurentsimon](https://togithub.com/laurentsimon) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2847](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2847)
- protoc-gen-openapiv2 generating the wrong schema fixing the issue
[#&#8203;2635](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2635)
by [@&#8203;lakshkeswani](https://togithub.com/lakshkeswani) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2854](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2854)

#### New Contributors

- [@&#8203;jbaxx](https://togithub.com/jbaxx) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2826](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2826)
- [@&#8203;laurentsimon](https://togithub.com/laurentsimon) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2847](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2847)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.11.2...v2.11.3

###
[`v2.11.2`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.11.2)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.11.1...v2.11.2)

This fixes an issue with the openapiv2 generator if there is a colon in
the verb, and updates the minimum supported Go version to Go 1.17.

#### What's Changed

- Fix openapiv2 path parameter parsing when colon in verb by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2825](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2825)
- Update minimum supported Go version to 1.17 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2831](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2831)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.11.1...v2.11.2

###
[`v2.11.1`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.11.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.11.0...v2.11.1)

This release fixes a crash in the grpc-gateway handling of requests
containing invalid an `Grpc-Timeout` or `Grpc-Metadata-Bin` header
([#&#8203;2822](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2822)).
It is strongly recommended that users upgrade both the runtime and
generator versions.

#### What's Changed

- Default allow_repeated_fields_in_body option to true and deprecate
option by [@&#8203;armsnyder](https://togithub.com/armsnyder) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2813](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2813)
- Fix timeout panic by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2823](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2823)

#### New Contributors

- [@&#8203;armsnyder](https://togithub.com/armsnyder) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2813](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2813)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.11.0...v2.11.1

###
[`v2.11.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.11.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.10.3...v2.11.0)

##### What's Changed

- Set fetch depth for renovate actions by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2741](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2741)
- openapiv2: Field options are properly rendered for repeated fields
[#&#8203;2531](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2531)
by [@&#8203;lakshkeswani](https://togithub.com/lakshkeswani) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2742](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2742)
- Set version for gorelease by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2749](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2749)
- Disable renovate on v1 by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2781](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2781)
- feat: add support for oneof fields in request bodies by
[@&#8203;aesadde](https://togithub.com/aesadde) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2739](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2739)
- Bugfix/issue 2681 by
[@&#8203;olegvelikanov](https://togithub.com/olegvelikanov) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2773](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2773)
- chore: Included githubactions in the dependabot config by
[@&#8203;naveensrinivasan](https://togithub.com/naveensrinivasan) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2673](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2673)
- Change renovate branch trigger by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2791](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2791)
- fix: extensions in YAML format
\[[#&#8203;2795](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2795)]
by [@&#8203;hedhyw](https://togithub.com/hedhyw) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2797](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2797)
- fix: yaml indent
\[[#&#8203;2645](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2645)]
by [@&#8203;hedhyw](https://togithub.com/hedhyw) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2801](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2801)
- Fix buf plugin's library version by
[@&#8203;AlmogBaku](https://togithub.com/AlmogBaku) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2800](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2800)

##### New Contributors

- [@&#8203;lakshkeswani](https://togithub.com/lakshkeswani) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2742](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2742)
- [@&#8203;aesadde](https://togithub.com/aesadde) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2739](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2739)
- [@&#8203;olegvelikanov](https://togithub.com/olegvelikanov) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2773](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2773)
- [@&#8203;AlmogBaku](https://togithub.com/AlmogBaku) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2800](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2800)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.10.3...v2.11.0

###
[`v2.10.3`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.10.3)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.10.2...v2.10.3)

#### What's Changed

- protoc-gen-openapiv2: Fix schema types for `Value` and `Empty`
well-known types by [@&#8203;haines](https://togithub.com/haines) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2719](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2719)
- Use custom token secret for pushes by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2725](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2725)
- chore: renovate bot setting to pin actions to a full length commit SHA
by [@&#8203;naveensrinivasan](https://togithub.com/naveensrinivasan) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2724](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2724)
- protoc-gen-openapiv2: Support all HTTP methods supported in OpenAPI v2
by [@&#8203;mnito](https://togithub.com/mnito) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2726](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2726)
- Fix overriding path parameter with custom verbs by
[@&#8203;oyvindwe](https://togithub.com/oyvindwe) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2727](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2727)
- Update git push to use full username by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2732](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2732)
- Lets try using the checkout token setting by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2733](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2733)
- Add old style build tag by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2734](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2734)
- Update gopkg.in/yaml.v3 by
[@&#8203;sousandrei](https://togithub.com/sousandrei) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2729](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2729)

#### New Contributors

- [@&#8203;haines](https://togithub.com/haines) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2719](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2719)
- [@&#8203;sousandrei](https://togithub.com/sousandrei) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2729](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2729)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.10.2...v2.10.3

###
[`v2.10.2`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.10.2)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.10.1...v2.10.2)

#### What's Changed

- Fix node tests by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2704](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2704)
- Fix panic in parsing null time/duration in query by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2703](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2703)
- Migrate to Github Actions by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2700](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2700)
- Add protobuf and grpc runtime versions to buf plugins by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2702](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2702)
- Fix readme display error by
[@&#8203;lanlyhs](https://togithub.com/lanlyhs) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2706](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2706)
- openapiv2: fix comment by
[@&#8203;kurochan](https://togithub.com/kurochan) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2701](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2701)

#### New Contributors

- [@&#8203;lanlyhs](https://togithub.com/lanlyhs) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2706](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2706)
- [@&#8203;kurochan](https://togithub.com/kurochan) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2701](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2701)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.10.1...v2.10.2

###
[`v2.10.1`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.10.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.10.0...v2.10.1)

#### What's Changed

- protoc-gen-openapiv2: Use the canonical camelCase converter for
protobuf by [@&#8203;oyvindwe](https://togithub.com/oyvindwe) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2599](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2599)
- Revert gazelle dependency to original repository by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2605](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2605)
- Use Bytes from convert.go to unmarshal byte value by
[@&#8203;HubertZhang](https://togithub.com/HubertZhang) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2603](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2603)
- correct generate field mask for google.protobuf.struct field by
[@&#8203;marsianin](https://togithub.com/marsianin) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2619](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2619)
- Update golangci-lint to 1.45 for Go 1.18 support by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2631](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2631)
- Turn on dependabot updates for documentation by
[@&#8203;achew22](https://togithub.com/achew22) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2604](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2604)
- build(deps-dev): bump github-pages from 209 to 225 in /docs by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2633](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2633)
- support google.protobuf.Value by
[@&#8203;wclssdn](https://togithub.com/wclssdn) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2628](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2628)
- fix: Correct typos in error messages from loading OpenAPI
Configuration by [@&#8203;joonas](https://togithub.com/joonas) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2636](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2636)
- Set permissions for GitHub actions by
[@&#8203;naveensrinivasan](https://togithub.com/naveensrinivasan) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2641](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2641)
- Field and schema extensions by
[@&#8203;james-o-johnstone](https://togithub.com/james-o-johnstone) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2418](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2418)
- chore(deps): update dependency com_github_bazelbuild_buildtools to
v5.1.0 (master) by [@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2645](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2645)
- fix(deps): update google.golang.org/genproto digest to
[`2d67ff6`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/2d67ff6)
(master) by [@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2646](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2646)
- Format protobuf files with buf by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2650](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2650)
- build(deps): bump nokogiri from 1.13.3 to 1.13.4 in /docs by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2638](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2638)
- Add git blame ignore by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2652](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2652)
- Export `defaultQueryParser` struct for custom query parsers by
[@&#8203;MikeSouza](https://togithub.com/MikeSouza) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2651](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2651)
- Fix typo in "uannotated" file links by
[@&#8203;srowles](https://togithub.com/srowles) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2658](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2658)
- fix: Content-Type and Grpc-Metadata-Content-Type headers with the
health endpoint by [@&#8203;GreyXor](https://togithub.com/GreyXor) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2634](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2634)
- protoc-gen-openapiv2: Remove path parameters from body when body is a
snake_case field by [@&#8203;oyvindwe](https://togithub.com/oyvindwe) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2600](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2600)
- Fixed \[]byte unmarshaling for non proto structs by
[@&#8203;gknw](https://togithub.com/gknw) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2693](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2693)
- protoc-gen-openapiv2: Document and warn about path parameters
containing "/" by [@&#8203;oyvindwe](https://togithub.com/oyvindwe) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2697](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2697)

#### New Contributors

- [@&#8203;HubertZhang](https://togithub.com/HubertZhang) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2603](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2603)
- [@&#8203;marsianin](https://togithub.com/marsianin) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2619](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2619)
- [@&#8203;wclssdn](https://togithub.com/wclssdn) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2628](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2628)
- [@&#8203;joonas](https://togithub.com/joonas) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2636](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2636)
- [@&#8203;naveensrinivasan](https://togithub.com/naveensrinivasan) made
their first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2641](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2641)
- [@&#8203;james-o-johnstone](https://togithub.com/james-o-johnstone)
made their first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2418](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2418)
- [@&#8203;MikeSouza](https://togithub.com/MikeSouza) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2651](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2651)
- [@&#8203;srowles](https://togithub.com/srowles) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2658](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2658)
- [@&#8203;GreyXor](https://togithub.com/GreyXor) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2634](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2634)
- [@&#8203;gknw](https://togithub.com/gknw) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2693](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2693)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.10.0...v2.10.1

###
[`v2.10.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.10.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.9.0...v2.10.0)

This release contains a new annotation that allows you to configure the
path parameter names generated in your swagger.json, which can be useful
in some circumstances. Please see
https://grpc-ecosystem.github.io/grpc-gateway/docs/mapping/customizing_openapi_output/#path-parameters
for documentation on how to use this new capability.

Note that in order to take advantage of the new annotation, you will
need to update your vendored dependency, or update your
`buf.build/grpc-ecosystem/grpc-gateway` dependency to at least
[f85c60ac38544f2d8f346491c9d916e5](https://buf.build/grpc-ecosystem/grpc-gateway/tree/f85c60ac38544f2d8f346491c9d916e5).
This can be accomplished by running `buf mod update` in the folder where
you have your `buf.yaml`.

#### What's Changed

- Add delimiter after response stream error message
([#&#8203;2591](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2591))
by [@&#8203;stelcodes](https://togithub.com/stelcodes) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2596](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2596)
- protoc-gen-openapiv2: support overriding path parameter names by
[@&#8203;oyvindwe](https://togithub.com/oyvindwe) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2562](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2562)

#### New Contributors

- [@&#8203;stelcodes](https://togithub.com/stelcodes) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2596](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2596)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.9.0...v2.10.0

###
[`v2.9.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.9.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.8.0...v2.9.0)

This release adds the ability to filter properties (Services, RPCs,
Fields, Enum values) from being rendered in the OpenAPI v2 spec
generated by `protoc-gen-openapiv2`. See
https://grpc-ecosystem.github.io/grpc-gateway/docs/mapping/customizing_openapi_output/#hiding-fields-methods-services-and-enum-values
for more information about this new exciting capability!

Other new features:

-   A new option to generate the OpenAPI v2 spec in YAML format
- Allow serving a health endpoint at an arbitrary path with the new
`WithHealthEndpointAt` `ServeMux` option

#### What's Changed

- Annotate incoming and outgoing context by
[@&#8203;rogchap](https://togithub.com/rogchap) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2574](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2574)
- protoc-gen-openapiv2: support YAML OpenAPI/Swagger v2 definition
generation by [@&#8203;hedhyw](https://togithub.com/hedhyw) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2579](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2579)
- Add support for `google.api.VisibilityRule`s annotations to hide APIs
and fields by [@&#8203;BCook98](https://togithub.com/BCook98) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2578](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2578)
- feature/custom HTTP health check endpoint by
[@&#8203;antonioiubatti93](https://togithub.com/antonioiubatti93) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2587](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2587)

#### New Contributors

- [@&#8203;rogchap](https://togithub.com/rogchap) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2574](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2574)
- [@&#8203;hedhyw](https://togithub.com/hedhyw) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2579](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2579)
- [@&#8203;BCook98](https://togithub.com/BCook98) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2578](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2578)
- [@&#8203;antonioiubatti93](https://togithub.com/antonioiubatti93) made
their first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2587](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2587)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.8.0...v2.9.0

###
[`v2.8.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.8.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.7.3...v2.8.0)

#### Overview

This release introduces the new `WithHealthzEndpoint` which makes it
easy to forward your gRPC health check endpoint to your gRPC-gateway
server, and fixes a long standing bug in `protoc-gen-openapiv2` where
path parameters were included in both the path and the body of the
generated spec
([#&#8203;1670](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1670)
and
[#&#8203;1015](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1015)).

#### What's Changed

- Include Package in Service Tags when Option is Enabled by
[@&#8203;dkiswanto](https://togithub.com/dkiswanto) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2519](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2519)
- Add `WithHealthzEndpoint` as `ServeMuxOption` to register a
`/healthz`endpoint by [@&#8203;brumhard](https://togithub.com/brumhard)
in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2319](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2319)
- protoc-gen-openapiv2: remove path parameters from body parameters by
[@&#8203;oyvindwe](https://togithub.com/oyvindwe) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2553](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2553)

#### New Contributors

- [@&#8203;dkiswanto](https://togithub.com/dkiswanto) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2519](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2519)
- [@&#8203;brumhard](https://togithub.com/brumhard) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2319](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2319)
- [@&#8203;oyvindwe](https://togithub.com/oyvindwe) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2553](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2553)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.7.3...v2.8.0

###
[`v2.7.3`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.7.3)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.7.2...v2.7.3)

##### What's Changed

- Update gorelease base to v2.7.2 by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2467](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2467)
- Fix README typo about manuall generation by
[@&#8203;baryluk](https://togithub.com/baryluk) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2471](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2471)
- Use insecure.NewCredentials instead of grpc.WithInsecure by
[@&#8203;jxlwqq](https://togithub.com/jxlwqq) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2470](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2470)
- fix typos by [@&#8203;haiker2011](https://togithub.com/haiker2011) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2474](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2474)
- docs: specify invalid cases for FieldMask by
[@&#8203;hhhapz](https://togithub.com/hhhapz) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2477](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2477)
- typo in mux.go by [@&#8203;gabroo](https://togithub.com/gabroo) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2479](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2479)
- Add omit-enum-default-value option to protoc-gen-openapiv2 by
[@&#8203;hiroyoshii](https://togithub.com/hiroyoshii) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2480](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2480)
- update plugin option of customizing_openapi_output docs by
[@&#8203;hiroyoshii](https://togithub.com/hiroyoshii) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2490](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2490)
- embedding UnimplementedGreeterServer to creating_main.go.md server
struct by [@&#8203;mkusaka](https://togithub.com/mkusaka) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2502](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2502)
- Fixes additional paths generated when many methods have the same
resource path by [@&#8203;aethanol](https://togithub.com/aethanol) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2496](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2496)

##### New Contributors

- [@&#8203;baryluk](https://togithub.com/baryluk) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2471](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2471)
- [@&#8203;jxlwqq](https://togithub.com/jxlwqq) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2470](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2470)
- [@&#8203;haiker2011](https://togithub.com/haiker2011) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2474](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2474)
- [@&#8203;hhhapz](https://togithub.com/hhhapz) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2477](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2477)
- [@&#8203;gabroo](https://togithub.com/gabroo) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2479](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2479)
- [@&#8203;hiroyoshii](https://togithub.com/hiroyoshii) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2480](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2480)
- [@&#8203;mkusaka](https://togithub.com/mkusaka) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2502](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2502)
- [@&#8203;aethanol](https://togithub.com/aethanol) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2496](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2496)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.7.2...v2.7.3

###
[`v2.7.2`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.7.2)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.7.1...v2.7.2)

##### What's Changed

- Log warning if HeaderMatcherFunc passes malformed HTTP headers to grpc
server by [@&#8203;MakDon](https://togithub.com/MakDon) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2455](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2455)
- Fixes
[#&#8203;407](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/407)
and
[#&#8203;1700](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1700)
- google.api.http path parameter constraints and multiple HTTP
path/method endpoint support by
[@&#8203;betmix-matt](https://togithub.com/betmix-matt) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2461](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2461)
This fixes a long standing issue with OpenAPI spec generation in the
face of complex path parameter use

##### New Contributors

- [@&#8203;MakDon](https://togithub.com/MakDon) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2455](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2455)
- [@&#8203;betmix-matt](https://togithub.com/betmix-matt) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2461](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2461)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.7.1...v2.7.2

###
[`v2.7.1`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.7.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.7.0...v2.7.1)

##### What's Changed

- Replace "github.com/ghodss/yaml" with "sigs.k8s.io/yaml" by
[@&#8203;slntopp](https://togithub.com/slntopp) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2436](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2436)
- build: upgrade `go` directive in `go.mod` to 1.17 by
[@&#8203;Juneezee](https://togithub.com/Juneezee) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2443](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2443)
- Revert "support grpc.ClientConnInterface in RegisterXXXHandler
([#&#8203;2398](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2398))"
by [@&#8203;shane-kerr](https://togithub.com/shane-kerr) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2444](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2444)

##### New Contributors

- [@&#8203;slntopp](https://togithub.com/slntopp) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2436](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2436)
- [@&#8203;Juneezee](https://togithub.com/Juneezee) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2443](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2443)
- [@&#8203;shane-kerr](https://togithub.com/shane-kerr) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2444](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2444)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.7.0...v2.7.1

###
[`v2.7.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.7.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.6.0...v2.7.0)

#### What's Changed

- Decode path-encoded URL components by
[@&#8203;v3n](https://togithub.com/v3n) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2332](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2332)
- Add docs for merging OpenAPI into a single file by
[@&#8203;alee792](https://togithub.com/alee792) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2354](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2354)
- Fix timestamp string conversion by
[@&#8203;momom-i](https://togithub.com/momom-i) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2367](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2367)
- Upgrade bazel toolchain by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2390](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2390)
- Log zero property as warning instead of error by
[@&#8203;JungWinter](https://togithub.com/JungWinter) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2387](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2387)
- support grpc.ClientConnInterface in RegisterXXXHandler by
[@&#8203;defool](https://togithub.com/defool) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2398](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2398)
- Allow OpenAPI query parameters to be generated for all HTTP methods,
regardless of body by [@&#8203;alee792](https://togithub.com/alee792) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2402](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2402)

#### New Contributors

- [@&#8203;v3n](https://togithub.com/v3n) made their first contribution
in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2332](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2332)
- [@&#8203;alee792](https://togithub.com/alee792) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2354](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2354)
- [@&#8203;0rax](https://togithub.com/0rax) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2386](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2386)
- [@&#8203;JungWinter](https://togithub.com/JungWinter) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2387](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2387)
- [@&#8203;defool](https://togithub.com/defool) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2398](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2398)
- [@&#8203;AdamKorcz](https://togithub.com/AdamKorcz) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2405](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2405)
- [@&#8203;jzelinskie](https://togithub.com/jzelinskie) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2413](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2413)
- [@&#8203;aronrichter](https://togithub.com/aronrichter) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2412](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2412)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.6.0...v2.7.0

###
[`v2.6.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.6.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.5.0...v2.6.0)

[Changes in this
release](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.5.0...v2.6.0)

Major features in this release include:

- The ability to auto-generate the `x-nullable` field from proto3
optional in openapiv2 contributed by Ken Brownfield
([@&#8203;irridia](https://togithub.com/irridia)) in
[#&#8203;2215](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2215)
- More comprehensive openapiv2 name generation options contributed by
[@&#8203;alperengozeten](https://togithub.com/alperengozeten) and Malte
Isberner ([@&#8203;misberner](https://togithub.com/misberner)) in
[#&#8203;2310](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2310)

As well as various bug fixes, including the auto generation of the
`Www-Authenticate` header when returning an 401 Unauthorized error
([#&#8203;2314](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2314)),
better `google.protobuf.Any` representation in openapiv2 files
([#&#8203;2292](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/2292))
and much more.

This is also the first release to automatically publish the Protobuf
plugins to the [Buf Schema Registry](https://buf.build/explore). See
https://buf.build/grpc-ecosystem/plugins. These can be used together
with the new `buf generate` remote plugins feature:
https://docs.buf.build/configuration/v1/buf-gen-yaml#name-or-remote. An
example `buf.gen.yaml` using these new plugins looks like this:

```yaml
version: v1
plugins:
  - remote: buf.build/library/plugins/go:v1.27.1-1
    out: gen/go
    opt: paths=source_relative
  - remote: buf.build/library/plugins/go-grpc:v1.1.0-2
    out: gen/go
    opt: paths=source_relative
  - remote: buf.build/grpc-ecosystem/plugins/grpc-gateway:v2.6.0-1
    out: gen/go
    opt: paths=source_relative
  - remote: buf.build/grpc-ecosystem/plugins/openapiv2:v2.6.0-1
    out: gen/openapiv2
```

###
[`v2.5.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.5.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.4.0...v2.5.0)

[Changes in this
release](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.4.0...v2.5.0)

This release adds support for [extracting the HTTP path for an incoming
request through the request
context](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2195).
Thanks to [@&#8203;0daryo](https://togithub.com/0daryo) for the
contribution!

Note that this release slightly changes the behavior of the generator,
so you *must* ensure that you are using the new version of the runtime
library after updating the generator to this new version.

###
[`v2.4.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.4.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.3.0...v2.4.0)

This release adds support for [customizing routing error HTTP status
codes](https://grpc-ecosystem.github.io/grpc-gateway/docs/mapping/customizing_your_gateway/#customizing-routing-errors).
Thanks to [@&#8203;electrofelix](https://togithub.com/electrofelix) for
the contribution!

#### Other changes

- implements a max recursive depth check by
[@&#8203;drewwells](https://togithub.com/drewwells) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2022](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2022)
- Fix typo in README.md by [@&#8203;cxmcc](https://togithub.com/cxmcc)
in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2047](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2047)
- Add doc with info about binary upload a custom route, for
[#&#8203;500](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/500)
by [@&#8203;jonathanbp](https://togithub.com/jonathanbp) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2063](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2063)
- Fix path params being in the body by
[@&#8203;stijndehaes](https://togithub.com/stijndehaes) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2078](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2078)
- Update CI to use 1.16 and latest release by
[@&#8203;johanbrandhorst](https://togithub.com/johanbrandhorst) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2099](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2099)
- Patcher for fields of type google.protobuf.Any by
[@&#8203;veith](https://togithub.com/veith) in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2103](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2103)

#### New Contributors

- [@&#8203;drewwells](https://togithub.com/drewwells) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2022](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2022)
- [@&#8203;cxmcc](https://togithub.com/cxmcc) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2047](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2047)
- [@&#8203;jonathanbp](https://togithub.com/jonathanbp) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2063](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2063)
- [@&#8203;stijndehaes](https://togithub.com/stijndehaes) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2078](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2078)
- [@&#8203;veith](https://togithub.com/veith) made their first
contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2103](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2103)
- [@&#8203;electrofelix](https://togithub.com/electrofelix) made their
first contribution in
[https://github.com/grpc-ecosystem/grpc-gateway/pull/2101](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/2101)

**Full Changelog**:
https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.3.0...v2.4.0

###
[`v2.3.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.3.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.2.0...v2.3.0)

##### This release migrates our internal generation strategy to using
[buf](https://togithub.com/bufbuild/buf), and also updates the
installation instructions to instruct users how to use `buf` to manage
the googleapis dependencies in their own projects. If you are used to
copying the third_party folder for your dependencies, you are now
encouraged to check out the [usage
instructions](https://togithub.com/grpc-ecosystem/grpc-gateway#usage)
again to see how to use `buf` to manage your dependencies instead.

##### The [boilerplate
repo](https://togithub.com/johanbrandhorst/grpc-gateway-boilerplate)
contains an example.

####
[v2.3.0](https://togithub.com/grpc-ecosystem/grpc-gateway/tree/v2.3.0)
(2021-02-25)

[Full
Changelog](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.2.0...v2.3.0)

**Implemented enhancements:**

- Support optional annotation in proto3 files in generators
[#&#8203;1278](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1278)

**Fixed bugs:**

- grpc-gateway v2 misreads grpc protobuf field_mask behavior, breaks
existing valid behavior
[#&#8203;1766](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1766)

**Closed issues:**

- grpc-gateway service run error
[#&#8203;1996](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1996)
- ../proto/api/proto/service.pb.gw.go:129:95: cannot use \*StringMessage
value as type protoreflect.ProtoMessage in return argument:
\*StringMessage does not implement protoreflect.ProtoMessage (missing
ProtoReflect method)
[#&#8203;1989](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1989)
- Grpc healthcheck docs are unclear
[#&#8203;1977](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1977)
- Gateway protoc does not generate protoreflect.ProtoMessage messages
[#&#8203;1959](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1959)
- \[bazel] Got "missing strict dependencies" when use
protoc-gen-grpc-gateway as bazel-gazelle grpc compiler
[#&#8203;1941](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1941)
- Non official implementation
[#&#8203;1940](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1940)
- Empty fields included in response.
[#&#8203;1871](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1871)

**Merged pull requests:**

- fix(deps): update module google.golang.org/grpc to v1.36.0 (master)
[#&#8203;1999](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1999)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update google.golang.org/genproto commit hash to
[`063164c`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/063164c)
(master)
[#&#8203;1998](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1998)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update dependency com_google_protobuf to v3.15.2 (master)
[#&#8203;1995](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1995)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update bufbuild/buf docker tag to v0.37.1 (master)
[#&#8203;1994](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1994)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update google.golang.org/genproto commit hash to
[`22b48be`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/22b48be)
(master)
[#&#8203;1993](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1993)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update google.golang.org/genproto commit hash to
[`3e1e516`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/3e1e516)
(master)
[#&#8203;1991](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1991)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update google.golang.org/genproto commit hash to
[`aa3ee6e`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/aa3ee6e)
(master)
[#&#8203;1990](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1990)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update dependency com_google_protobuf to v3.15.1 (master)
[#&#8203;1987](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1987)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update golang.org/x/oauth2 commit hash to
[`9bb9049`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/9bb9049)
(master)
[#&#8203;1986](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1986)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update google.golang.org/genproto commit hash to
[`d891e3c`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/d891e3c)
(master)
[#&#8203;1985](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1985)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update dependency com_google_protobuf to v3.15.0 (master)
[#&#8203;1984](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1984)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update golang.org/x/oauth2 commit hash to
[`ba52d33`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/ba52d33)
(master)
[#&#8203;1983](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1983)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- fix(deps): update google.golang.org/genproto commit hash to
[`fe80b38`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/fe80b38)
(master)
[#&#8203;1982](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1982)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update google.golang.org/genproto commit hash to
[`c185827`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/c185827)
(master)
[#&#8203;1979](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1979)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Use base64.URLEncoding for \[]byte parameters in query
[#&#8203;1978](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1978)
([tvoll](https://togithub.com/tvoll))
- chore(deps): update golang docker tag to v1.16.0 (master)
[#&#8203;1976](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1976)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update golang.org/x/oauth2 commit hash to
[`16ff188`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/16ff188)
(master)
[#&#8203;1974](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1974)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- adding UnimplementedGreeterServer to server struct
[#&#8203;1973](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1973)
([nwandabridges](https://togithub.com/nwandabridges))
- \[Bazel] Update protobuf, rules_go and gazelle
[#&#8203;1972](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1972)
([aaliddell](https://togithub.com/aaliddell))
- Migrate generation, linting to buf
[#&#8203;1971](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1971)
([johanbrandhorst](https://togithub.com/johanbrandhorst))
- chore(deps): update google.golang.org/genproto commit hash to
[`e7f2df4`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/e7f2df4)
(master)
[#&#8203;1970](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1970)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update google.golang.org/genproto commit hash to
[`4ccc9a5`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/4ccc9a5)
(master)
[#&#8203;1969](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1969)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Bump nokogiri from 1.10.10 to 1.11.1 in /docs
[#&#8203;1967](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1967)
([dependabot\[bot\]](https://togithub.com/apps/dependabot))
- docs/Gemfile.lock: Fix dependabot security warning
[#&#8203;1966](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1966)
([ivucica](https://togithub.com/ivucica))
- chore(deps): update google.golang.org/genproto commit hash to
[`3a9a48d`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/3a9a48d)
(master)
[#&#8203;1965](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1965)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- chore(deps): update golang.org/x/oauth2 commit hash to
[`6667018`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/6667018)
(master)
[#&#8203;1964](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1964)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Update CONTRIBUTING.md on release description
[#&#8203;1960](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1960)
([adambabik](https://togithub.com/adambabik))
- gen-grpc-gateway, gen-openapiv2: add support for proto3 optional
[#&#8203;1951](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1951)
([adambabik](https://togithub.com/adambabik))
- FAQ Adding related projects to the documentation
[#&#8203;1946](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1946)
([rodoufu](https://togithub.com/rodoufu))

###
[`v2.2.0`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.2.0)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.1.0...v2.2.0)

#####
[v2.2.0](https://togithub.com/grpc-ecosystem/grpc-gateway/tree/v2.2.0)
(2021-02-09)

[Full
Changelog](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.1.0...v2.2.0)

**Fixed bugs:**

- \[protoc-gen-openapiv2] \[BUG] Incorrect handling of non-wildcard
google.api.http.body when using field_behaviour annotation
[#&#8203;1937](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1937)
- Duplicate tags seen in Swagger Specification
[#&#8203;1913](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1913)
- Poor error message when using message in path parameter
[#&#8203;1863](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1863)

**Closed issues:**

- can we add HTTPStatusFromCode to mux?
[#&#8203;1954](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1954)
- Missing types in generated gw.go file for C++ server
[#&#8203;1942](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1942)
- What is the recommend way to bind 3rd party APIs (e.g. Health/Check to
/healthzf
[#&#8203;1931](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1931)
- Patch request with field_masks
[#&#8203;1930](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1930)
- Working from the helloworld example but getting an error on HTTP
requests: grpc: the client connection is closing. Would like to improve
the docs.
[#&#8203;1924](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1924)
- Action Required: Fix Renovate Configuration
[#&#8203;1918](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1918)
- F
[#&#8203;1917](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1917)
- Is any method to access the raw request body in metadata?
[#&#8203;1908](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1908)
- Custom incoming header matcher isn't working as expected
[#&#8203;1902](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1902)
- README.md links to
https://pkg.go.dev/github.com/golang/protobuf/jsonpb which does not
exist
[#&#8203;1901](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1901)
- Is it possible to setup CORS?
[#&#8203;1889](https://togithub.com/grpc-ecosystem/grpc-gateway/issues/1889)

**Merged pull requests:**

- Add documenation for standalone gateway generation
[#&#8203;1955](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1955)
([dgparker](https://togithub.com/dgparker))
- Update google.golang.org/genproto commit hash to
[`bba0dbe`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/bba0dbe)
(master)
[#&#8203;1953](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1953)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Make fieldmask parser output deterministic
[#&#8203;1950](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1950)
([johanbrandhorst](https://togithub.com/johanbrandhorst))
- Update golang Docker tag to v1.15.8 (master)
[#&#8203;1949](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1949)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Fix verb parsing
[#&#8203;1947](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1947)
([jefferai](https://togithub.com/jefferai))
- Update google.golang.org/genproto commit hash to
[`deb8283`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/deb8283)
(master)
[#&#8203;1945](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1945)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Fix malformed Schema Reference during field_behavior generation
[#&#8203;1944](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1944)
([gganley](https://togithub.com/gganley))
- Update dependency com_github_bazelbuild_buildtools to v4 (master)
[#&#8203;1939](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1939)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Update google.golang.org/genproto commit hash to
[`3206188`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/3206188)
(master)
[#&#8203;1936](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1936)
([renovate\[bot\]](https://togithub.com/apps/renovate))
- Update google.golang.org/genproto commit hash to
[`646a494`](https://togithub.com/grpc-ecosystem/grpc-gateway/commit/646a494)
(master)
[#&#8203;1934](https://togithub.com/grpc-ecosystem/grpc-gateway/pull/1934)
([renovate\[bot\]](https://togithub.com/apps/renovate))
-   Update golang.org/x/oauth2 commit hash to [`0101308

</details>

---

### Configuration

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

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

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

---

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

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://app.renovatebot.com/dashboard#github/google/osv.dev).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xOTUuNSIsInVwZGF0ZWRJblZlciI6IjMyLjE5NS41In0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants